§ 39. WoodmanUSB. Компьютерный осциллограф на 48 МГц. (Часть 2)
|
Дмитрий Иванов, 10 Декабря 2013
|
|
Файлы к статье скачать
|
Имя: KA039.zip (ZIP архив) |
Размер: 171 КБ |
|
Уважаемые читатели, Вашему вниманию представляется практическая схема USB осциллографа с частотой дискретизации 48 МГц на основе модуля WoodmanUSB.С принципиальными особенностями подобного осциллографа мы познакомились в предыдущей статье, где рассмотрели аппаратную и программуную реализацию анализатора логического уровня. Принципы построения остаются абсолютно аналогичными, только теперь на вход порта PORTB модуля мы будем подавать оцифрованный сигнал с быстродействующего АЦП.
Схема блока АЦП представлена на рисунке ниже. Итак, что мы здесь видим - это во-первых, собственно сам АЦП - микросхема AD9057 от Analog Devices. Был проведен анализ возможных кандидатов на данную позицию, рассматривались изделия от MAXIM, TI но в итоге был приныт имеено AD9057. Он относительно прост, удовлетворяет требованиям по частоте дискретизации, более менее доступен в продаже. Этот АЦП в продаже попадется в нескольких модификациях, отличающихся максимальной частотой дискретизации. Обозначается она так: AD9057BRS80 - т.е. этот образец может разгоняться до 80 МГц. Они также бывают на 40 и 60 МГц. Соответственно, желательно брать на 60 или 80 чтобы возможности WoodmanUSB зря не пропадали.
![АЦП AD9057](img/KA039/ad9057.jpg)
Далле обратим внимание на операционный усилитель AD828. Если его под рукой нет, то можно использовать любой другой, это не критично. Главное чтобы этот ОУ уверенно работал от однополярного напряжения и обеспечивал необходимую полосу пропускания (мегагерц этак 50 и более).
Теперь внимательней посмотрим на саму схему. Она очень простая. Как видно здесь использется только один ОУ без применения двупорных схем питания. Однако простота требует жертв. Схему придется настраивать с помощью подстроечных резисторов R1, R2 для установки оптимального режима.
Пару замечаний по схеме. Куча стрелочек с номерами выходящих из AD9057 соответственно должны подключаться к соответствующим выводам модуля WoodmanUSB. Далее, на вход схемы можно подвать напряжение от 0 до +5 В (больше не нужно - схему можно сжечь).
![нажмите для увеличения](img/KA039/wusb_adc_s.gif)
Обратим свое внимание на софт. Я решил для этой статьи оставить "движок" программы из прошлой статьи. Они почти полностью совпадают, за исключением того что теперь на отрисовку идут полноценные 8 бит данных а не 1 как было раньше в анализаторе. Как уже сказал - там ничего принципиально нового нет, поэтому рассматривать код не будем.
Итак, настало время первого запуска. Соединяем блок АЦП с модулем WoodmanUSB, подключаем все это к компьютеру. Для тестового анализа предлагаю использовать генератор прямоугольных импульсов - так проще будет настроить схему. Я использую микроконтроллер из предыдущей статьи. Запускаем программу. С очень большой степенью вероятности Вы должны увидеть нечто вот такое как на рисунке ниже, т.е. нечто весьма далекое от правды.
Рис. 1. Вид осциллограммы при расстроенном АЦП |
Чтобы исправить положение, необходимо с помощью подстроечных резисторов добиться оптимального режима работы блока АЦП, путем подбора таких значений сопротивлений, при которых полученная осциллограмма совпадает с входным аналоговым сигналом. По теории сопротивление R1 должно быть порядка 50 КОм, R2 - 10 КОм. Если все настроено верно, то в итоге должны получить вот такую картинку как на рисунке 2. Разумеется, если Вы используете в качестве тестового сигнала контроллер из прошлой статьи. Если у Вас свой источник опорного сигнала - должны увидеть то что подаете.
Рис. 2. Вид осциллограммы при настроенном АЦП |
Вот собственно и все - у Вас на руках вполне работоспособная версия цифрового USB осциллографа с частотой дискретизации 48 МГц. Согласитесь, внушительная цифра. Однако если нет необходимости в промышленной дорогостоящей установке, вполне можно использовать конструкцию, рассмотренную на этой странице.
Что еще необходимо сказать. Вернее, напомнить - данный осциллограф не обечспечивает непрерывной дескритизации! 48-ми мегагерцовый шаг будет обеспечен только в каждых 512 отсчетах внутри буфера данных, прочтенных из модуля, а между пакетами по 512 точек временное расстояние не известно. Поясним на примере. В идеале должно быть следующее: берем отрезок сигнала длительностью 1 сек. Получаем 48 миллионов отсчетов, причем временное расстояние между любыми двумя точками строго равно 1/48*106 сек. В связи с особенностями USB шины на таких скоростях мы не можем обеспечить непрерывный поток данных, при котором скорость передачи будет одинаковой для любого момента времени. В шине USB мгновенная скорость сильно "плавает", если такой термин вообще применим. Итого, точную временную синхронизацию можно гарантировать только для пакета данных размером равным размеру контрольной точки USB модуля, в данном случае 512 байт. Другой вопрос что модуль может обеспечить порядка 20000 таких пакетов по 512 байт за одну секунду. Итого, в данном случае мы имеем дело с ~20 тыс. выборок входного сигнала в секунду по 512 байт каждая, причем внутри каждых этих 512 байт времеменное расстояние между отсчетами четко равно 1/48*106 сек. Подобные особенности не помешают нам, если мы анализируем переодические или медленно меняющиеся процессы.
© Дмитрий Иванов
10 Декабря 2013 года
http://www.kernelchip.ru