Генератор пилообразного напряжения. Пример.

Обещался как-то привести пример на компаратор AVR, покапался по своему архиву и нашел генератор пилообразного напряжения. Вообще для реализации в железе этот генератор не из удачных, хотя если его доработать, то получится вполне приличный генератор. В свое время он был заброшен и, в итоге, так и остался в сыром виде. Но эта схема мне понравилась тем, что она хорошо подходит в качестве примера для работы с АЦП, Аналоговым Компаратором, SPI и внешними прерываниями в МК AVR . Вся эта периферия работает здесь самым простым образом, но при этом  связана друг с другом. Программу и пример в Proteus'e можно скачать в конце статьи, поэтому не буду приводить здесь куски этой программы, а приведу только схему и кратко опишу как это все реализовано и для чего используется в схеме. Но начну с того, что опишу какие возможности закладывались в этот генератор.
  1. Непрерывная генерация.
  2. Генерация пачек импульсов. Запуск пачки по синхроимпульсу.
  3. Регулировка частоты выходного сигнала (напряжение 0..5В).
  4. Регулировка длины пачки импульсов (напряжение 0..5В).
Схема
Обвязка микроконтроллера по питанию не показана.
Сам генератор представляет из себя интегратор, собранный на операционном усилителе, в котором конденсатор периодически разряжается. Микроконтроллер устанавливает частоту сброса конденсатора, а в итоге и частоту импульсов пилообразного напряжения, а также отслеживает напряжение на выходе и в случае чего подстраивает его под конкретное напряжение. Для чего это сделано? Если собрать отдельно интегратор с полевым транзистором и подавать на транзистор импульсы для разрядки конденсатора с внешнего генератора, то окажется, что при изменении частоты следования импульсов изменяется и амплитуда выходного напряжения. Оно то и правильно, мы же либо раньше разряжаем конденсатор, либо позже.
Т.о. чтобы на выходе напряжение оставалось постоянным, нужно соответствующим образом изменять напряжение на входе интегратора. И вот тут возникла задачка - сделать отслеживание напряжения на выходе и в случае надобности изменять напряжение на входе интегратора. Заодно прицепил какую-то регулировку используя для этого АЦП микроконтроллера. Итак, какая периферия для чего используется:
  • Аналоговый компаратор. Используется для отслеживания выходного напряжения. В зависимости от опорного напряжения наш генератор формирует величину амплитуды выходного сигнала.
  • АЦП. Используется для регулировки каких-нибудь параметров. Например, частоты выходных импульсов. А сделано это так, что мы измеряем напряжение на входе АЦП и в зависимости от него выставляем частоту выходного сигнала.
  • SPI. Используется для управления ЦАПом, напряжение с которого подается на вход интегратора. Т.е. SPI используется для подстройки напряжения на входе интегратора.
  • Внешние прерывания. Используется для подачи синхроимпульса.
А теперь кратко, как работает программа.
  1. Включаем генератор. На входе интегратора напряжение равно нулю.
  2. Компаратор определяет что на одном из его входов напряжение ниже опорного и дает команду SPI увеличить напряжение.
  3. Увеличиваем напряжение на 1 (всего напряжение питание разбито на 256 частей). SPI дает команду ЦАПу и он преобразует цифровое значение в аналоговое напряжение.
  4. Повторяем п.2 и п.3 пока напряжение не дойдет до нужного (в данном случае амплитуда сигнала будет равна удвоенному опорному напряжению на входе компаратора).
  5. Если вдруг превысили напряжение, то будет команда уменьшить напряжение. Амплитуда регулируется только при непрерывной генерации (ну это просто так сделано в этом генераторе, но при желании можно переделать). Т.е. при включении генератора он должен быть в режиме непрерывной генерации (переключатель разомкнут).
  6. Если мы хотим изменить частоту тогда мы изменяем напряжение на входе ADC0. Здесь подойдет обычный делитель напряжения с переменным резистором.
  7. Если хотим изменить длину пачки импульсов изменяем напряжение на входе ADC1.
  8. Если работаем в режиме генерации пачек, то на вход INT0 МК подается синхроимпульс (само собой амплитуда не больше 5В).
Вот собственно и все. Думаю, разобраться с программой не составит никакого труда.

Комментариев: 2 RSS

1 Кот 03-09-2013 12:15

Хотелось бы поподробней узнать о вариации частоты?

Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Вы можете войти под своим логином или зарегистрироваться на сайте.

(обязательно)