Разные данные при подключении Arduino UNO R3 через USB/Внешнее питание
- Войдите на сайт для отправки комментариев
Сб, 23/11/2013 - 18:34
Доброго времени суток.
Делаю проект по колесному роботу на базе роутера TP-Link MR-3020 и Arduino UNO R3.
Для питания использовал Li Po Rider Pro. Выход с него идет в 5V и идет на Vin Arduino.
Плюс аккумулятора ( до li po rider'a ) идет на A0 Arduino (для считывания заряда).
AnalogReference стоит в DEFAULT.
При подключении через USB все работает как надо. При отключении USB и питании с li po rider'a идут другие данные с A0.
От чего такое может быть ?
судя по вашему описанию, плюс зарядника у вас подан на А0. так и задумывалось? и что вы считываете?
+ не с зарядника, а с аккумулятора ( одна банка LiPo ).
При подключенном USB - выдает напряжение на аккумуляторе ( 3,89 ). Если отключени и считать через UART на роутере - 4,67
От чего такое может быть ?
Вы читали это analogReference()?
В стандартной конфигурации платформ Arduino вывод AREF (вывод 21 Atmega) не задействован. В этом случае при настройке DEFAULT к выводу подключается внутреннее напряжение AVCC.
Что означает что вывод AREF подключен к питанию МК.
Напряжение, подключенное к выводу AREF, конвертируется АЦП и, затем, определяется значение напряжения, при котором АЦП выдает самое высокое цифровое значение, т.е 1023. Другие значения напряжения, поступающие в АЦП, конвертируются пропорционально. Таким образом, при настройке DEFAULT 5 В значение напряжения 2.5 В в АЦП будет конвертироваться в 512.
Это означает что напряжение на аналоговых входах измеряется относительно питания МК.
После того как дуина у вас начинает питаться не от УСБ (где 5 вольт), а от от того же аккумулятора, на котором вы и пытаетесь померить напряжение что вы фактически пытаетесь сделать? Правильно, это.
Есть два варианта решения этой задачи:
1. Мерить напряжение на самом МК, что реализовано аппаратно.
2. Настраивать AREF на внутренний источник (INTERNAL) и ставить делитель напряжения в цепь аккумулятора.
Ок, спасибо.
Разобрался.
В итоге, быть может кому интересно будет:
отсюда взял код readVcc и далее для получения верного значения: