Как подать аналоговый выход 0-5В
Я пытаюсь запрограммировать Arduino для управления двигателем с разной интенсивностью, подавая опорное значение 0-5 В с платы. У меня есть некоторый опыт программирования, но очень мало знаний о работе с Arduino или об электричестве. Как я понял из этого, мне нужно вызвать функцию AnalogWrite для вывода сигнала, но как это сделать? Как я могу контролировать, когда напряжение (и, соответственно, интенсивность двигателя) увеличивается или уменьшается. Возможно ли сделать это без дополнительного оборудования?
Любая помощь будет оценена по достоинству, это не обязательно должен быть код. Я в основном хочу понять, как использовать Arduino, но код тоже очень помог бы в этом. Я использую Arduino Due, который, как я понимаю, имеет настоящий аналоговый выход.
@Nyra, 👍0
Обсуждение2 ответа
Вам действительно нужно будет использовать analogWrite для отправки сигнала ШИМ на двигатель. ШИМ будет включать и выключать питание на выводе очень быстро. Фактически, питание двигателя импульсами. Длина этих импульсов будет определять, сколько мощности получает двигатель.
У DUE также есть настоящий аналоговый выход, но вы не хотите использовать его для двигателей. Использование слова analogWrite
немного вводит в заблуждение, когда оно используется для генерации сигнала ШИМ.
analogWrite запросит значение от 0 до 255 для указания длительности импульса. 0 — ВЫКЛ, 255 — полное ВКЛ, 127 — ВКЛ в течение 50% времени.
Также обратите внимание, что большинству двигателей требуется больший ток, чем могут обеспечить контакты Arduino, поэтому вам необходимо использовать транзистор/MOSFET, чтобы «усилить» сигнал до более высокого тока.
Так есть ли способ контролировать выходное напряжение, а не длительность импульса?, @Nyra
@Gerben верно, я пропустил тег Due., @Michel Keijzers
не только усилить ток, но и перейти на 5 В, @Juraj
@Nyra, зачем тебе это? Как я уже сказал, для двигателя лучше использовать ШИМ., @Gerben
Вы не сможете сделать это без дополнительного оборудования, так как выход 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 для использования полного разрешения ЦАП.
- Самый быстрый способ считывания состояния цифрового контакта в Arduino Due
- Микросхема Arduino Due (микроконтроллер Atmel) нагревается и светодиод гаснет.
- Как сбросить или отформатировать Arduino?
- Разница между этими двумя платами NodeMCU?
- Arduino Due vs Mega 2560
- Управление дисководом гибких дисков с помощью Arduino
- Точность часов времени Arduino
- Регистры ввода-вывода SAM3X8E (Arduino Due)
Какой двигатель вы пытаетесь контролировать?, @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