Авторизация


...

Кто на сайте?

Сейчас один гость и 2 зарегистрированных пользователей на сайте

  • grisha3109
  • nyetrul

Статистика

-Посетители : 23869
-Материалы : 209

Пользователь сайта продает...

  Трансформатор

Пользователь сайта покупает...

Получение синусоидального сигнала с ЦАП микроконтроллера.

Автор: Николай Викторов Просмотров: 4071

 

Не раз сталкивался с необходимостью получить синусоидальный сигнал, но все рассмотренные методы получения оказались трудоемки и по различным причинам не подходили. В то же время под рукой оказалось несколько штук микроконтроллеров PIC12F1822 со встроенным модулем DAC. Разрядность позволяет сделать 32 значения на выходе модуля, хотелось бы по больше, но и этого оказалось достаточно для реализации некоторых проектов. Сам МК имеет всего 8 выводов и помимо генерации сигнала на выводе "a0"  может выполнять и  другие задачи.  Вот так выглядит сигнал  с вывода микроконтроллера PIC12F1822.

 

sinus 01

 

Здесь я не буду рассматривать саму методику и формулу для получения значений   цифро-аналоговый преобразователя, а сразу  обратимся  к странице расчета.

Для получения значений необходимо в предлагаемой форме указать количество шагов DACа и название будущей таблицы значений, можно перед названием указать сразу и тип. В данном случае при разрядности модуля 5 мы имеем 32 шага (при разрядности 8 будет соответственно 256 шагов). Указываем шаги и нажимаем кнопку «выполнить», в итоге получим таблицу (массив) значений для получения синусоидального сигнала в десятичном формате.

 

sinus 02

 

   PIC12F1822 работает на внутреннем генераторе с тактовой частоте 32 МГц, сам алгоритм формирования сигнала программы очень прост,  в прерывании от таймера TMR2  происходит  копирования в регистр DACCON1  одного из значений   таблицы Tablsinus, начиная  с 0 до 31.  Для получения частоты 50 Гц в регистр  T2CON  прописываем значение  0x25.

А вот и вся программа...

   if  (TMR2IE && TMR2IF) {
            TMR2IF = 0;
            TMR2   =  31;
            chetRaz++ ; //0-31
            if (chetRaz > 31) chetRaz = 0;
            DACCON1 = TablSinus[chetRaz];
       } 

  Как видим ресурсов программа  практически  не занимает. И ее легко можно адаптировать в свой проект. Можно получить  и другие сигналы, к примеру мне нужно было для инвертора сформировать положительные полупериоды и выдать с др. вывода сигнал синхронизации (на фото не показан).

 

sinus 02

 

 Причем при формировании   полупериода частота дискретизации возрастает в 2 раза, т.к. все 32 отчета задействованы на полупериода не на период, как при синусоидальном сигнале.

Для других микроконтроллеров, как и с внешним АЦП методика расчета и алгоритм тот же, только необходимо  учитывать, что с увеличением частоты выходного сигнала и разрядности АЦП понадобится микроконтроллер с большой тактовой частой генератора, что бы хватили и под другие задачи.

 

 

Случайные статьи....

Prev Next

sPlan – удобная программа для вычерчивания принципиальных схем (ч. 1)

25-08-2012 Игорь Безверхний

sPlan – удобная программа для вычерчивания принципиальных схем (ч. 1)

  Практически каждому радиолюбителю и радиоспециалисту приходится хотя бы иногда чертить принципиальные схемы или их фрагменты. Что бы вычертить их аккуратно, можно использовать графические редакторы. Ну, а польза от применения этих программ студентами, учащимися ПТУ и различных курсов очевидна. В...

Моторизованный регулятор громкости + селектор входов + пульт ДУ

02-02-2017 Александр Беглецов

Моторизованный регулятор громкости + селектор входов + пульт ДУ

  Данный регулятор разработан для использования в ламповом усилителе. Позволяет управлять громкостью, выбором входа и вкл/откл питания усилителя с любого пульта ДУ, а так же реализована задержка подачи анодного напряжения. Все установки и коды пульта ДУ сохраняются в энергонезависимой памяти.    

ПП перекодировки шрифта для вывода русских символов на ЖК индикатор…

04-06-2012 Super User

 Вывод русского текста в ЖК индикатор  (контроллера HD44780) имеет ряд особенностей,  в связи с тем, что коды русского шрифта ASCII, не соответствует таблице символов прошитых в ЖК дисплее,  до передачи в ЖКИ  кода символа его необходимо перекодировать. Здесь показан один из...

Таймер - термометр вытяжного вентилятора.

01-04-2014 Александр Милевский

Таймер - термометр вытяжного вентилятора.

Делал капитальный ремонт ванной комнаты. Возник вопрос, как управлять вентилятором вытяжки? Просто поставить выключатель, как-то слишком просто и неудобно. Конструкции в интернете или готовые решения от производителей подобных устройств не понравились. Особенно возмутил вариант работы вентилятора от выключателя света. Моя ванна...


Все права принадлежат ChipMK.ru. При копировании материала ссылка обязательна. 2011-2017 © ChipMK.ru

ChipMk.ru Яндекс.Метрика
PRCY.ru