Как написать программу для создания многоуровневого сигнала с помощью Arduino

Мне нужно сделать 5-уровневую многоуровневую (лестничную) форму сигнала для моего основного проекта с Arduino. Как я могу получить форму питания 24 В. Я пытался изменить ширину импульса с помощью ШИМ с помощью AnalogWrite(), но он может выдавать максимум 5 В или максимум 3,3 В. Пожалуйста, помогите мне!

Ваш вопрос выиграет от уточнения. Каких пяти уровней (шагов) вы ожидаете? Какое максимальное и минимальное напряжение вам нужно? Какой ток вам нужно подать?
Это для управления шаговым двигателем?

Ответы (1)

Если вам нужен сигнал 24 вольта, вам понадобится как минимум дополнительный транзистор, как показано на рисунке. Также обратите внимание, что базовый выход PWM будет давать только цифровое среднее значение «лестничного» сигнала. Добавление резистора/конденсатора к конечному выходу может привести к лучшему постоянному току, подобному лестнице, но может иметь медленную реакцию между шагами. В схеме выбранные значения R1 и C1 будут определять скорость изменения уровней лестницы. Кроме того, поскольку здесь используется NPN-транзистор, значение ШИМ создаст инвертированный выходной сигнал (например, 0–255 создает 24–0 В), поэтому вы можете инвертировать способ настройки сигнала ШИМ.

схематический

смоделируйте эту схему - схема, созданная с помощью CircuitLab

Другой метод может использовать 3 (или более) цифровых выхода и создавать гораздо более прямоугольную форму волны, используя только транзисторы и резисторы. В этом случае простой цифровой код включения/выключения определяет конечное выходное напряжение. (Транзисторы Mosfet также могут быть использованы здесь, поскольку транзистор BJT может иметь небольшое напряжение Vce, которое предотвращает полный выход 0v).

схематический

смоделируйте эту схему