Вот такая задача – изучение колебательного контура, построенного из конденсатора и катушки. Я подумал, что раз у нас на плате Марсоход2 стоит аналогово-цифровой преобразователь (АЦП), то измеряя с его помощью напряжение на конденсаторе контура можно увидеть собственно колебания.
В этом проекте плата Марсоход2 используется просто как инструмент, как «цифровой осцилограф».
Кажется, что задача на самом деле простая.
Первоначальный план был простой, вот такой, как на этом рисунке «Вариант 1».
В цепи колебательного контура установим кнопочку. В начале она разомкнута и через резисторы делителя конденсатор заряжается до напряжения питания. Потом нажимаю кнопочку, цепь контура замыкается и конденсатор начинает разряжаться через катушку.
Ток через катушку в начальный момент времени, когда кнопочка замыкает цепь, равен нулю, но потом растет и становится максимальным, когда конденсатор уже разряжен до нуля. Несмотря на то, что конденсатор разрядился, ток продолжает течь через катушку из-за явления самоиндукции. При этом конденсатор перезаряжается до отрицательного напряжения –VCC. Потом ток через катушку останавлявается и начинает течь в обратном направлении. Из-за потерь энергии в контуре колебания постепенно будут затухать.
Сопротивление резисторов делителя выбраны довольно большими – 15кОм, так чтобы потери в них были минимальными. Для чего вообще нужен делитель? Напряжение на конденсаторе меняется от +VCC до –VCC. Делитель «преобразует» этот диапазон, на АЦП уже поступает от +VCC до нуля. АЦП (это микросхема ADC1175) выдает 8-ми разрядный двоичный код с частотой ADC_CLK – этот сигнал мы будем генерировать в ПЛИС. Сами выборки с АЦП собираем в буффер SignalTap – инструмент для изучения сигналов внутри ПЛИС.
Несмотря на такой прекрасный план, он не работает.. Причина в том, что нам не удалось найти кнопочку, которая мгновенно и надежно замыкает контакты контура. Это явление называется «дребезг контактов».
Пришлось изменять схему эксперимента..
Было решено использовать кнопочку на плате Марсоход2. Она подключена к ПЛИС и схема в ПЛИС должна отфильтровать сигнал с кнопки, избавиться от «дребезга контактов», потом уже отфильтрованный сигнал управляет выходным элементом «TRI». Получается, что при замкнутой кнопочке выходной элемент «TRI» находится в высокоомном состоянии, то есть катушка колебательного контура оторвана от «земли», «болтается в воздухе». Конденсатор может заряжаться. Потом, когда кнопочка разомкнута, элемент «TRI» включается и передает на выход сигнал «ноль». То есть фактически катушка подключается к «земле» и должны начинаться колебания в контуре.
В принципе все так и происходит, однако, есть большое «НО». Сопротивление канала выходного элемента «TRI» оказалось довольно высоким; 18Ом. Потери в контуре получаются очень большими и фактически удается увидеть только одну полуволну колебаний.
Пришлось искать третий вариант. Будем коммутировать цепь контура внешним транзистором IRF3702. У него сопротивление канала довольно низкое.
Вот такой вариант работает довольно исправно.
Давайте теперь посмотрим на проект для ПЛИС в плате Марсоход2.
Сам проект кажется не очень сложным.
Входная частота 100Мгц с генератора платы Марсоход2 делится двоичным счетчиком.
С выхода q[2] счетчика сигнал идет на ADC_CLK. Таким образом, на АЦП получается подается частота 100 / 8 = 12,5 МГц.
Другая очень низкая частота со счетчика q[16] фиксирует сигнал с кнопочки. По сути состояние кнопочки просто очень редко опрашивается и фиксируется в триггере. Так мы избавляемся от дребезга контакта.
Выходной сигнал триггера идет на выход IO[6] платы, который управляет транзистором.
Заодно этот же сигнал поступает еще и на светодиод LED[0] – все же хоть какая-то индикация состояния схемы.
В этой схеме не видно пожалуй самого главного компонента – SignalTap. Этот компонент sld_signaltap:auto_signaltap_0 присутствует в проекте, его видно в Project Navigator (на рисунке слева). Он определяет, какие внутренние сигналы ПЛИС мы хотим рассмотреть.
Настроить эти сигналы можно из инструмента SignalTap, доступного через меню среды Altera Quartus II, пункт меню Tools => SignalTap II Logic Analyzer.
Вот собственно эти настройки:
Собственно инструмент SignalTap и превращает плату в подобие «цифрового осцилографа».
Весь проект для платы Марсоход2 для среды Altera Quartus II, вместе с настройками SIgnalTap, можно взять вот здесь:
Были исследованы две катушечки:
Первая – это катушка на головке жесткого диска, вторая самодельная, намотанная более толстым проводом, «на глазок».
По схеме «Вариант 3» был собран шилдик для платы Марсоход2, он просто присоединяется к разъему платы:
Далее:
- Подключаем плату кабелем USB к ПК.
- Запускаем SignalTap.
- Из среды SignalTap загружаем откомпилированный образ проекта cyclone3.sof в ПЛИС.
- Нажимаем кнопочку KEY[0] на плате – транзистор закрывается, катушка оторвана от «земли».
- Запускаем анализ сигналов в SignalTap и он начинает ждать события кнопочки.
- Отпускаем кнопочку – SignalTap загружает в ПК полученные данные об исследуемых сигналах:
Вот такие колебания видны при подключении катушки от жесткого диска:
А вот колебания в контуре при подключенной самодельной катушке.
Видно, что во втором случае колебаний гораздо больше, их частота выше, видимо индуктивность этой катушки меньше.
С помощью SignalTap можно примерно измерить частоту колебаний. Например, на первом графике от максимума до максимума волны примерно 564 выборок частоты ADC_CLK = 12,5МГц. Значит частота первого контура в 546 раз меньше и составляет всего 22,9 КГц.
С самодельной катушкой у меня частота получается где-то около 85,6КГц.
Теперь, зная емкость конденсатора (на нем написано) можно вычислить и индуктивность катушек из формулы:
Вот так, плата Марсоход2 может быть использована в качестве «цифрового осцилографа» для изучения аналоговых процессов.
Подробнее...