Как подать аналоговый выход 0-5В

Я пытаюсь запрограммировать Arduino для управления двигателем с разной интенсивностью, подавая опорное значение 0-5 В с платы. У меня есть некоторый опыт программирования, но очень мало знаний о работе с Arduino или об электричестве. Как я понял из этого, мне нужно вызвать функцию AnalogWrite для вывода сигнала, но как это сделать? Как я могу контролировать, когда напряжение (и, соответственно, интенсивность двигателя) увеличивается или уменьшается. Возможно ли сделать это без дополнительного оборудования?

Любая помощь будет оценена по достоинству, это не обязательно должен быть код. Я в основном хочу понять, как использовать Arduino, но код тоже очень помог бы в этом. Я использую Arduino Due, который, как я понимаю, имеет настоящий аналоговый выход.

, 👍0

Обсуждение

Какой двигатель вы пытаетесь контролировать?, @Majenko

Я постараюсь описать его как можно подробнее, но по сути это робот, у которого есть ряд регуляторов давления, которые подают воздух в пневматические трубки в сетке, которые действуют как мышцы при давлении. Регуляторы контролируют, какая группа получает давление. Arduino не будет питать двигатель, просто контролируя уровень давления, которое получают «мышцы» с интенсивностью 0-5 на основе того, что выводит плата. Я понимаю, что это немного отличается от того, что я написал в OP, но я объяснил это так для простоты., @Nyra

В этом случае имеет значение фактическое используемое оборудование. Если регулятор давления получает только «сигнал», а не потребляет свой рабочий ток от Arduino, то вам, возможно, не нужно возиться с MOSFET. Но это во многом зависит от фактического элемента, к которому подключен Arduino. Не могли бы вы предоставить ссылку на техническое описание регулятора давления или любого другого устройства, к которому будет подключен Arduino? Также может быть, что устройству действительно требуется настоящий аналоговый сигнал, а не среднее напряжение ШИМ., @jose can u c

https://create.arduino.cc/projecthub/ArduPic/how-to-modify-analog-output-range-of-arduino-due-6edfb5, @Majenko

Зачем вам настоящий ЦАП? ШИМ можно усилить с помощью MOSFET. Для аналогового нужен преобразователь напряжения., @Juraj


2 ответа


1

Вам действительно нужно будет использовать analogWrite для отправки сигнала ШИМ на двигатель. ШИМ будет включать и выключать питание на выводе очень быстро. Фактически, питание двигателя импульсами. Длина этих импульсов будет определять, сколько мощности получает двигатель.

У DUE также есть настоящий аналоговый выход, но вы не хотите использовать его для двигателей. Использование слова analogWrite немного вводит в заблуждение, когда оно используется для генерации сигнала ШИМ.

analogWrite запросит значение от 0 до 255 для указания длительности импульса. 0 — ВЫКЛ, 255 — полное ВКЛ, 127 — ВКЛ в течение 50% времени.

Также обратите внимание, что большинству двигателей требуется больший ток, чем могут обеспечить контакты Arduino, поэтому вам необходимо использовать транзистор/MOSFET, чтобы «усилить» сигнал до более высокого тока.

,

Так есть ли способ контролировать выходное напряжение, а не длительность импульса?, @Nyra

@Gerben верно, я пропустил тег Due., @Michel Keijzers

не только усилить ток, но и перейти на 5 В, @Juraj

@Nyra, зачем тебе это? Как я уже сказал, для двигателя лучше использовать ШИМ., @Gerben


0

Вы не сможете сделать это без дополнительного оборудования, так как выход Due составляет максимум 3,3 В. Вам нужно усилить ШИМ или аналоговый выход. ШИМ можно усилить с помощью MOSFET. Если вы новичок в электронике, я бы порекомендовал модуль Grove MOSFET. Я использую его для усиления ШИМ M0 до 5 В.

Для регулирования обычно используют ШИМ. Настоящий аналоговый выход используется для звука и подобных волн. Если вам действительно нужно настоящее аналоговое значение в 5 В с Due, вы должны использовать преобразователь напряжения, как в руководстве, на которое Majenko ссылается в комментариях.

Ядро Arduino также управляет ЦАП плат SAMD с помощью analogWrite().

Цитата из справочника AnalogWrite:

Arduino DUE поддерживает analogWrite() на контактах 2–13, а также на контактах DAC0 и DAC1. В отличие от выводов PWM, DAC0 и DAC1 являются цифровыми для Аналоговые преобразователи и действуют как настоящие аналоговые выходы.

И вы можете установить разрешение с помощью <code>analogWriteResolution()</code>:

Установив разрешение записи на 12, вы можете использовать analogWrite() с значения от 0 до 4095 для использования полного разрешения ЦАП.

,