Jump to content
    

Генерация аналоговых сигналов на AVR

Здравствуйте! Необходимо на микроконтроллере Atmel AVR (имеется Atmega8, Atmega328P) реализовать 6-канальный генератор аналоговых сигналов. Просто "удерживать" 6 независимых аналоговых уровней от 0 до 10 вольт. Скорость смены значений не обязательно должна быть очень большой. Назначение - управление 6-канальным димером, который управляется 0-10 В.

С микроконтроллерной частью все более менее понятно. Не понятно как реализовать цифро-аналоговое преобразование. Вот если один канал - тут все более менее ясно, существуют разные способы. А вот что делать если каналов 6?

Edited by temich

Share this post


Link to post
Share on other sites

Обычно ЦАП можно выполнить с помощью ШИМ-сигнала и фильтра нижних частот.

Share this post


Link to post
Share on other sites

По таймеру производится счет циклов, например, от 0 до 255 (8-разрядов для ШИМ). Далее, для каждого канала сравнивается текущее значение счетчика циклов с заданным для каждого канала. При совпадении устанавливается вывод порта в соответствующее состояние. При обнулении счетчика - установить выводы портов в исходное состояние.

При тактовой частоте 8 МГц, например внутренний RC-генератор, частота прерываний 31250 Гц (для 8-разрядного таймера, f/1), частота импульсов на выводах портов 122 Гц. Если мало - поднять тактовую частоту.

Share this post


Link to post
Share on other sites

А вот что делать если каналов 6?

Вы не указали никаких технических характеристик сигналов, кроме амплитуды(

 

Рекомендую найти генераторы DDS уважаемого Ридико Леонида Ивановича. У него около пяти замечательных конструкций. Очень прекрасные описания алгоритмов и схемотехники.

 

Хотя, нет, понял, что вам требуется. Но статьи может быть всё равно окажутся полезными. Для вашего случая - ШИМ + усилитель (5 вольт от аврки к 10 вольтам) + ФНЧ.

Share this post


Link to post
Share on other sites

Здравствуйте! Необходимо на микроконтроллере Atmel AVR (имеется Atmega8, Atmega328P) реализовать 6-канальный генератор аналоговых сигналов. Просто "удерживать" 6 независимых аналоговых уровней от 0 до 10 вольт. Скорость смены значений не обязательно должна быть очень большой. Назначение - управление 6-канальным димером, который управляется 0-10 В.

С микроконтроллерной частью все более менее понятно. Не понятно как реализовать цифро-аналоговое преобразование. Вот если один канал - тут все более менее ясно, существуют разные способы. А вот что делать если каналов 6?

если диммер- то никаких проблем, делаем шим на 6 ногах по таймеру (диммеру вроде и 255 значений =0 должно хватить ), с частотой повторения герц этак 2-3к, с ног мк на 8канальный дарлингтон 2803 (если нужно быстрые есть 62083), выходы дарлингтонов через килоом на +10, потом фильтр второго порядка (хватает) и на диммер. Тут правда есть тонкость - нуль будет больше нуля. Чтобы был четко нуль, к ногам мк 6 мосфитов, работающих с ттл входными сигналами. Корпусов побольше но зато четко от 0 до 10 будет. После мосфитов опять же фильтр.

Share this post


Link to post
Share on other sites

Atmega328P ... реализовать 6-канальный генератор аналоговых сигналов. Просто "удерживать" 6 независимых аналоговых уровней от 0 до 10 вольт.

Уровни 6-ти выходов ШИМ трёх таймеров данного микроконтроллера преобразовать в 0...10 В одной CD4504, MC14504 и т.п., на выходах которой поставить 6 ФНЧ (RC-цепочек).

 

Или мы должны были догадаться, что задача куда заковыристей, потому что доступных таймеров ноль?

Share this post


Link to post
Share on other sites

У меги 48/88/168/328 на борту 6 выходов ШИМ, можно использовать их. Если 8 бит разрядности недостаточно, разрядность можно увеличить програмно.

 

У меги 8 только 3 выхода ШИМ, но поскольку требования к частоте невысокие - можно создать хоть двадцать независимых выходов, используя двоичную модуляцию и одно прерывание от таймера.

Share this post


Link to post
Share on other sites

Если скорость установки вообще никакая, то интегратор, два входа управления + и -, разряжающие-заряжающие интегратор и к выходу интегратора подключить АЦП.

Таймеры вообще не нужны.

Share this post


Link to post
Share on other sites

Да, тоже вариант, но 6 ОУ — это в среднем 2 корпуса. И для управления интегратором достаточно одного выхода МК.

Share this post


Link to post
Share on other sites

Всем спасибо за ответы, будем прорабатывать.

А может еще есть варианты микросхем, для которых на вход в цифровом виде подается "data", а на многоканальном выходе формируются аналоговые уровени?

Edited by temich

Share this post


Link to post
Share on other sites

Всем спасибо за ответы, будем прорабатывать.

А может еще есть варианты микросхем, для которых на вход в цифровом виде подается "data", а на многоканальном выходе формируются аналоговые уровени?

этих-то как грязи

вот, например

https://www.maximintegrated.com/en/products...rs/MAX5715.html

Share this post


Link to post
Share on other sites

ОУ все равно нужны, на выходе 0-10В.

Нет, не нужны — как сказано выше, уровни МК преобразованы одним корпусом CD4504 и на 6-ти её выходах ровно 0 и 10 В, поскольку входное сопротивление диммируемых входов бесконечно, потому что не указано.

Share this post


Link to post
Share on other sites

Всем спасибо за ответы, будем прорабатывать.

А может еще есть варианты микросхем, для которых на вход в цифровом виде подается "data", а на многоканальном выходе формируются аналоговые уровени?

 

Даже есть древняя

http://www.nxp.com/documents/data_sheet/TDA8444.pdf

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...