ЦАП на Arduino Leonardo

Я новичок в Arduino. Для начала я пытаюсь собрать ЦАП с помощью Arduino Leonardo. У меня есть цифровой сигнал, поступающий от моего двойного дифференциального компаратора. Я хочу преобразовать это в аналоговый сигнал.

Во-первых, я прочитаю цифровой сигнал на цифровом выводе (может кто-нибудь указать мне, какой из них подходит? Их так много. Я был ошеломлен). Затем я посылаю сигнал ШИМ (опять перепутал с выводом). Затем я использую простую RC-цепь, чтобы отфильтровать ШИМ-сигнал и получить простую синусоиду.

Я иду в правильном направлении? Если нет, пожалуйста, любое предложение будет полезно.

, 👍0

Обсуждение

Какой двойной дифференциальный компаратор вы используете. Было бы здорово, если бы вы добавили свою схему и какие-либо подробности о том, что вы пробовали и что не сработало., @sa_leinad

Двойной дифференциальный компаратор — это тип компаратора, который выдает цифровой сигнал на выходе., @Jack

@sa_leinad LM2903, @Jack

пожалуйста, опишите сигналы на входах компаратора и как они соотносятся с конечным аналоговым выходом, @jsotola

@sa_leinad: пожалуйста, проверьте отредактированное изображение. Добавил свою схему. У меня есть датчик Холла, который изменяет свое выходное напряжение в зависимости от магнитного поля. Этот выход подключен к компаратору. который выводит цифровой сигнал., @Jack

Как вы пришли к этой схеме? Я не думаю, что вижу, как резистор обратной связи 100 кОм что-то делает., @sa_leinad

Вы хотите преобразовать вход в синусоиду? Довольно просто преобразовать ШИМ-сигнал в переменное напряжение, но получить из него переменную синусоидальную волну может быть слишком сложно. Вы хотите изменить частоту выходной волны с помощью входной, амплитуды или того и другого? И какую частоту синусоиды вы надеетесь получить?, @Duncan C


1 ответ


1

Да, вы идете в правильном направлении.

Компараторы
Вы еще не описали, как вы планируете подключить 2 компаратора к Arduino, но я думаю, что это будет что-то похожее на это:

схема

В приведенной выше схеме X и Y являются либо высокими, либо низкими в зависимости от аналоговых напряжений A, B, C & D. Ниже я создал таблицу истинности с некоторыми произвольными выходными напряжениями. Столбец value соответствует значению, необходимому для функция AnalogWrite().

таблица истинности

Примечание. Если вам нужно, чтобы аналоговый выход мог подавать некоторый ток, вы можете добавить операционный усилитель в единичное усиление на выходе RC-фильтра.


Примеры для чтения
Для вывода аналогового значения лучше всего подходят 4 встроенных примера/учебника:

Диммер: отправка последовательных значений для изменения яркости светодиода.
Затухание: используйте аналоговый выход (вывод ШИМ) для затухания светодиода.
AnalogInOutSerial">AnalogInOutSerial: считывание аналогового входного контакта, отображение результата, а затем использование этих данных для затемнения или увеличения яркости. светодиод.
Прочитать строку ASCII: проанализируйте строку целых чисел, разделенных запятыми, чтобы погасить светодиод.

Общим для всех этих примеров является функция analogWrite(). функция:

// записывает аналоговое значение (диапазон от 0 до 255):
analogWrite(pin, value);

Диммер – это простой пример, когда последовательное значение считывается, а затем выводится на один из контактов ШИМ.
Затухание — вероятно, самый простой пример использования analogWrite( ) (выход ШИМ).
Я включил Analog In Out Serial, так как он использует map() команда.
Я включил Прочитать строку ASCII, так как она показывает, как анализировать несколько значений последовательной строки.


Выводы ШИМ
Вы можете использовать контакты 3, 5, 6, 9, 10, 11 и 13 на Arduino Leonardo для вывода ШИМ с помощью <code>analogWrite()</code>.


Управление
Я рекомендую следующие учебники для вашего контроля. Вы можете использовать либо if-else или switch-case.

,

Спасибо за ваш подробный ответ. Но у меня есть только 1 компаратор, как мне изменить его под свои нужды?, @Jack

Какие аналоговые напряжения вам нужны? (Один для вашего НИЗКОГО сигнала и один для вашего ВЫСОКОГО). Что вы пробовали и что не сработало?, @sa_leinad