Почему Arduino Nano отправляет неправильное напряжение на пин цифрового выхода?
Adruino nano питается от 12 В через разъем VIN.
Обычно я ожидаю ~ 12 В на цифровом выходе, когда я записываю ВЫСОКИЙ на этот контакт, и ~ 0 В, когда я записываю НИЗКИЙ. Но что у меня вместо
digitalWrite(pin, HIGH); // у меня 1,5В на выводе
digitalWrite(pin, LOW); // у меня 0,5В
Алгоритм довольно прост - при нажатии кнопки переключается состояние выходного вывода. Подключения:
- VIN – +12 В
- GND — земля
- d2 - входной контакт (0 0, 12 - 1, кнопка);
- d3 - выходной пин (мы меняем состояние этого пин)
Ввод работает должным образом.
@, 👍2
Обсуждение3 ответа
Arduino питается от 12 В, но может регулироваться до 5 В или 3 В для микроконтроллера. Тогда важен ток вашего выходного вывода. Все, что превышает 20 мА, приведет к большому падению напряжения из-за ESR контакта. Сильно зависит от вашей схемы и вашего полного кода.
Микроконтроллер в Arduino работает от 5 вольт (или, возможно, 3,3 вольта). Встроенный регулятор напряжения снижает входное напряжение 12 В до 5 В для интегральных схем на плате.
Подключение подтягивающего резистора (R1 на вашем рисунке) к напряжению 12 В может привести к повреждению микроконтроллера (особенно если оно действительно составляет 100 Ом, как показано на вашем рисунке). Подтягивающий резистор должен быть подключен к контакту 5 Вольт на плате Arduino.
Выходное напряжение на контакте Arduino должно быть около 5 В, но может быть меньше, если на него подается большая (сильноточная) нагрузка.
Как уже говорили другие, не стоит тянуть d2 на 12 V. Ты посылка около (12 В - 5 В) ÷ 100 Ом = 70 мА в диод верхнего плеча, который защищает этот входной контакт. Этот диод рассчитан только на 1 мА, поэтому вы, скорее всего, поджарите его в короткое время.
Чтобы избежать повреждений, вы можете увеличить значение R1, чтобы снизить этот ток до безопасного значения, но было бы проще и безопаснее полностью удалите резистор и используйте вместо него внутренний подтягивающий резистор, т.к. в
pinMode(2, INPUT_PULLUP);
Что касается измеренного выхода на d3, вы ожидаете 5 В, когда контакт
написано HIGH
. Ваши показания 1,5 В подозрительны. Я предполагаю, что
ты забыл
pinMode(3, OUTPUT);
В этом случае запись вывода в HIGH
не дает ожидаемого результата.
эффект. Вместо этого он активирует внутреннюю подтяжку, которая должна сделать
пин читал 5В, но тут даже очень маленькая нагрузка (около 0,1мА)
может привести к падению напряжения до 1,5 В.
Если вы действительно получаете 1,5 В при установленном режиме вывода
OUTPUT
, то вы действительно потребляете слишком много тока от вывода.
Я предполагаю, что это будет около 130 мА (выходное сопротивление 26 Ом равно
типичный). Абсолютный максимальный ток для контакта составляет 40 мА, поэтому
опять будешь что-то жарить.
- avrdude ser_open() can't set com-state
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Какое максимальное энергопотребление Arduino Nano 3.0?
- Как навсегда изменить скорость передачи данных ESP8266 (12e)?
- Питание светодиодной ленты - Сколько ампер?
- Arduino nano как клавиатура HID
- Как я могу запитать Arduino Nano от батареи LiPo, желательно 3,7 В
- В чем разница между библиотеками Software Serial? Какая из них совместима с Arduino Nano?
Вы подали 12 В на входной контакт? Вы, наверное, что-то жарили. ATMega - это устройства с максимальным напряжением 5 В., @cde
С 47k в качестве подтягивания к 12 В вы, вероятно, не поджарили свой AVR. На защитные диоды процессора уходит всего 100 мкА. Но вам нужно изменить это .... это определенно нехорошо. Вы можете либо включить внутреннюю подтяжку, либо добавить ее к шине 5 В (скажем, 1 кОм или выше). Что касается выходного контакта, я бы предположил, что у вас есть нагрузка, которую вы ведете, и она слишком тяжелая для порта. Ограничьте выходной ток до 20 мА или меньше (источник или приемник). Процессор хорошо выдерживает слишком высокий потребляемый ток, но вы можете повредить внутренние шины чипа, если вы подаете слишком большой ток., @Jack Creasey
почему бы просто не использовать
INPUT_PULLUP
на D2 и полностью удалить 12-вольтовые подтягивающие части?, @dandavis@Neka _"R1 составляет 47k BTW"_ - Если это 47kΩ, то укажите его на диаграмме как 47kΩ, а не 100Ω! Как вы ожидаете, что люди будут давать полезные ответы с такой дезинформацией?, @marcelm