Как преобразовать цифровой сигнал в аналоговое значение

У меня есть вывод spwm от arduino, и когда я читаю на аналоговом чтении, он показывает только 1023 и 0, потому что это цифровой сигнал. Есть ли способ преобразовать эти значения spwm в показания аналоговых значений

, 👍1

Обсуждение

У Arduino был 10-битный АЦП, что означает, что максимальное значение, которое вы можете прочитать, составляет 0–1023. Это аналоговый сигнал. или если вы хотите преобразовать цифровое значение в аналоговое, используйте микросхему ЦАП, легко доступную на рынке., @Vaibhav

Спасибо, попробую поискать, @rahul


1 ответ


4

Проблема кажется вам ясной: для медленных систем сигнал ШИМ можно считать аналоговым, но измерения на более высоких скоростях и без фильтра выявляют цифровую природу ШИМ, и все, что вы видите, это либо высокий логический уровень (1023), либо низкий (0). Возможные решения:

  1. применить аппаратный фильтр (LC low-pass)
  2. применить фильтр в программном обеспечении (например, вычислив скользящее среднее)
  3. прикрепите прерывания к переднему/заднему фронту вашего сигнала и измерьте время высокого/низкого уровня для расчета рабочего цикла

Какой из этих вариантов выбрать, в основном зависит от частоты ШИМ, которую вы хотите измерить. Для низких частот я рекомендую вариант 3 (особыми случаями являются рабочие циклы около 0% и 100%, так как нет фронтов), для более высоких частот я бы использовал вариант 1/2.

,

Спасибо очень помогло, @rahul