Да, у всех микроконтроллеров есть какой-то способ генерировать сигналы напряжения, управляемые прошивкой. Метод грубой силы для микро включает цифро-аналоговый преобразователь (ЦАП). Микропрограмма записывает число в ЦАП и выдает напряжение, пропорциональное этому числу.
Одна важная спецификация D / As - сколько битов имеет число. Это определяет его разрешение. ЦАП может выдавать 2 N разных значений, если в числе N битов. Например, 8-разрядный ЦАП может выдавать 256 различных уровней напряжения. Обратите внимание, что обычный вывод цифрового выхода можно рассматривать как 1-битный ЦАП. Число имеет два состояния, 0 и 1, а выходное напряжение высокое или низкое.
Большинство микросхем не поставляются со встроенным мультиразрядным D / As, потому что на это мало спроса. Обычно мы пытаемся преобразовать аналоговые значения в цифровые как можно раньше, выполняем манипуляции цифровым способом, а затем контролируем их с помощью импульсов. Необычно хотеть, чтобы микро производило аналоговое напряжение. Даже в таких приложениях, как аудио, о которых вы можете думать как об аналоговых сигналах, вещи часто обрабатываются цифровым способом или с импульсами в конце. Это в основном то, что усилитель класса D.
Если вы не хотите использовать один из ограниченных наборов микросхем со встроенным ЦАП, вы можете добавить его извне. Есть много доступных D / As, что микро может, например, управлять шиной SPI.
Однако, если вам не нужен высокоскоростной выход, низкочастотная фильтрация ШИМ-выхода микро дает хороший аналоговый сигнал. Микросхемы хороши в создании хорошо контролируемых последовательностей импульсов, и многие из них имеют встроенное оборудование для этой цели. Например, рассмотрим цифровой выход, который можно менять каждые 1 мкс (с частотой 1 МГц). Предположим, вы сгруппировали временные срезы длительностью 1 мкс в блоки по 1023. Для каждого блока вы можете иметь от 0 до 1023 срезов, имеющих высокий уровень. Если бы вы усреднили это, вы бы получили аналоговое значение с 1024 возможными уровнями, то есть то, что вы получили бы из 10-битного Ц / А. Необработанный сигнал будет содержать желаемое среднее значение плюс высокие частоты, начиная с 1 МГц / 1023 = 978 Гц. Применяя несколько полюсов фильтрации нижних частот (один резистор и конденсатор на полюс),
Этот тип АЦП обладает некоторыми приятными свойствами: он очень линейный, монотонный и не имеет мощности двух выходов с глюками. Единственным недостатком обычно является пропускная способность. Для нескольких простых резисторов и конденсаторов, образующих фильтр нижних частот, вы, вероятно, не сможете получить аналоговый сигнал быстрее, чем несколько десятков Гц.
Обратите внимание, что использование 1023 фрагментов на блок было произвольным выбором, который вы сделали. Если вам нужно большее разрешение, увеличьте блоки, но тогда фильтруемый выход должен будет меняться медленнее. Тем не менее, многие микросхемы могут осуществлять генерацию ШИМ в аппаратном обеспечении со скоростью, значительно превышающей частоту среза 1 МГц.
Я бы попытался проверить, можно ли заставить работать метод ШИМ, прежде чем переходить к внешнему Ц / Д.
То, что вы пытаетесь создать, - это система сбора данных
Если он имеет цифро-аналоговый (ЦАП) преобразователь, то вы можете это сделать. В противном случае получите внешний ЦАП и попросите микроконтроллер связаться с ним через все, что он может (I2C, SPI, UART и т. Д.)
Заметил, что вы пометили микрочип, у них есть микроконтроллеры с ЦАП от простых (pic12f752, pic16f753,782) до передовых (dsPIC33fj16GS504,502,302) и еще несколько. вы можете найти их здесь http://www.microchip.com/maps/microcontroller.aspx
источник
В зависимости от тока, потребляемого системой, вы можете сделать это с помощью резисторной лестницы в качестве ЦАП: http://en.wikipedia.org/wiki/Resistor_ladder
Если вам нужно небольшое количество конкретных значений напряжения, вы можете даже разработать резисторную лестницу, которая будет излучать их точно, а не в обычной системе из 2 ^ n равномерно распределенных значений.
Если он потребляет нетривиальный ток, вам понадобится операционный усилитель на выходе, настроенный как буфер. Убедитесь, что ваш операционный усилитель работает с подходящей линейностью около 0 В; вам может понадобиться отрицательный источник питания для этого.
источник
В дополнение к другим ответам, большинство микроконтроллеров имеют функцию ШИМ (и если нет, вы всегда можете использовать функцию побитового удара). Если вы подаете ШИМ в простой RC-фильтр, вы можете сделать примитивный ЦАП без множества дополнительных компонентов или затрат.
источник
Если у вас все в порядке с ШИМ, то аналоговый выход Arduino отлично справится с этой задачей. Вы также можете рассмотреть возможность добавления фильтра низких частот, так как импульсы могут быть очень шумными.
Если вам нужно более чистое решение, найдите микроконтроллеры, которые поставляются с модулями ЦАП. Некоторые из микроконтроллеров MSP430 имеют ЦАП ( см. Стр. 23 ), который вы можете использовать. Вам нужно заглянуть в их таблицы.
Если вы оказались ограничены микроконтроллером без ЦАП, вы можете рассмотреть возможность получения микросхемы ЦАП. Этими чипами можно легко управлять через SPI или I2C, и они дешевы. Вот 12-битный ЦАП, который стоит чуть больше доллара.
Надеюсь это поможет.
источник