Официальный сайт компании Arduino по адресу arduino.cc
Глюк с функцией analogRead.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Всем добрый день/вечер/ночь/утро.
Проектирую малюсенькое устройство на базе Arduino Pro Mini 5V. Для ввода настроек и навигации использую "клавиатуру" - +5V как общая шина - на кнопки, с кнопок через резистры на аналоговый вход A0. Использую подтяжку к земле через 10kOm.
Далее смотрю какое значение прочитала функция analogRead с пина A0 и определяю какая кнопка нажата.
При программировании и отладке (девайс подключен к буку через усбасп) - все работало отлично. Когда настал черед запихивать все в коробочку - был подсоединен зарядник от телефона (5В, 500 мА) к пинам GND и VCC. После подачи питания - ничего не заработало - дисплейчик начал периодически моргать.
замерил питание - оказалось 6 Вольт - переподключил с VCC на RAW.
все равно не завелось - методом исключения определил что как программа доходит до строки :
int raw = analogRead(A0);
и происходит ребут.
Кто нибудь может объяснить происходящее и как исправить ?
Спасибо.
А, не может возникать проблема из-за опорного напряжения для AnalogRead? Посмотрите пожалуйста функцию AnalogReference()? Мне с таким не приходилось сталкиваться. Я с Pro Mini не сталкивался, но на других у меня такого не бывало.
у меня вся схема разработана на +5В, и опорное тоже +5В (это DEFAULT у AnalogReference).
6 для VCC - много , для RAW - мало.....
+ зарядника через 4...5 диодов 1N4001 на VCC....
зарядник и должен выдавать больше :) , в отличие от блока питания
А, напряжение с адаптера идет без "всплесков" - в адаптере есть хоть какой нибудь сглаживающий выходной электролитический конденсатор? С другим адаптером пробовали? Попробуйте подать постоянное напряжение с 4 пальчиковых батареек (те же 6 вольт или около того). Там точно будет напряжение без импульсов. Просто адаптеры бывают разные - стандартные на базе понижающего трансформатора и причудливые на базе RC (сопротивления + неэлектролитические конденсаторы) цепочки ("жрут" крайне мало, но на выходе идет не ровный уровень напряжения) как в светодиодных лампах.
у меня вся схема разработана на +5В, и опорное тоже +5В (это DEFAULT у AnalogReference).
вот и используйте БП , а не ЗУ :)
А, напряжение с адаптера идет без "всплесков" - в адаптере есть хоть какой нибудь сглаживающий выходной электролитический конденсатор? С другим адаптером пробовали? Попробуйте подать постоянное напряжение с 4 пальчиковых батареек (те же 6 вольт или около того). Там точно будет напряжение без импульсов. Просто адаптеры бывают разные - стандартные на базе понижающего трансформатора и причудливые на базе RC (сопротивления + неэлектролитические конденсаторы) цепочки ("жрут" крайне мало, но на выходе идет не ровный уровень напряжения) как в светодиодных лампах.
в ЗУ сильно сглаживать нет надобности.... в телефоне есть контроллер зарядки и сама АКБ - это большоооооой электролит , типа
У меня бывало так, что по ошибке, подавал вместо 5 вольт 8 вольт, ничего всё потом работало! Вероятнее вся проблема из-за адаптера.
И я о том же - адаптер и зарядник - разные схемы.
8 на VСС ?????????????! какой стойкий у вас МК :)
Nano. Я вначале мысленно с ним распрощался, а переподключил, все работает до сих пор!
Я 5 вольт подал не на VCC на на 5В. Вот в чем чудо!
Ошибся, имею в виду 8 вольт
как это связано с тем что если закомментировать строку analogRead -то все прекрасно работает?
от батареек - тоже самое.
Ого! Вот это вопрос! Помяряйте тестером выходное напряжение с клавиатуры на входе A0 и если потребуется поставьте делитель напряжения на сопротивлениях (понизьте напряжение на входе A0 в половину).
А, контакт GND не отскочил на клавиатуре?
Попробуйте подключить к клавиатуре выход с платы 5 или 3,3 вольта
а от программатора-то - работает ? и дайте код сюда, чё на пальцах рассуждать ?
"зарядник" - проверенный (работал в другом проекте более полугода - без нареканий).
выход "зарядника" идет только на RAW и GND ардуины. все остальные подключены к VCC и GND. напряжение между VCC и GND - 5 - 5.1 В.
код :
весь код нужен !
а от программатора-то - работает ?
А с другого пина считать (не с А0) - тоже самое будет?
ну сложно представить чтобы именно из за analogRead МК рестартовывал, эта операция никак не влияет на состояние выходов и не меняет энергопотребление в такой степени
что-то здесь не так как понимает автор. Конечно после экзекуции 8-мью вольтами МК может вести себя совершенно обиженно и не так как должен, но тем не менее, надо изучить ситуацию. Закоментировать analogRead и прогнать разные тесты с миганием светодиодами и выводом данных в Serial чтобы убедиться что МК работает. Лучше под это дело сделать совершенно новый скетч. Еще как вариант взять из примеров скетч по работе с analogRead и проверить как он работает
Нет, мой Nano МК после 8 вольт чудненько работает!!!
Тогда о чем речь, если все работает?
axil, вы вероятно путаете меня с пользователем "apix05". Это у него проблема, а у меня ее нет
Зачем отвечаете?) вам с 8 вольтами повезло, но это не значит, что ему с 6 повезло
представить конечно сложно - но именно так и происходит.
контроллер уходит в перезагрузку именно на строке analogRead(A0);
если с порта А0 не считывать - то контроллер ведет себя как живой (отрабатывает всю программу: выводит на ЖК температуру и влажность, и от их зависимости включает/выключает релюшки).
думаю проблема в том что портик A0 выгорел (при первом подключении к внешнему питанию + запаял на VCC, а там 6В оказалось. перепаял на RAW), нужно попробовать на другом аналоговом входе.
Я это выше и спрашивал...
блин, но от питания USB все работает то как нужно ..., значит порт живой...
apix05, в вашем вопросе из 1 поста уже содержалось 90% ответа. Сколько вам нужно ещё сделать экспериментов, что бы понять, что БП неисправен? ))
как влияет строка analogRead на блок питания - с ней не работает, а с закоменченой все работает исправно.
этот блок питания трудился более полугода, питая атмегу 328 и 20 RGB светодиодов...
с батарейкой (кроной) тоже самое происходит...
АЦП при чтении пина из-за плохого питания сходит с ума и тянет за собой весь камень.... Питание решает всё !
ПроМини и Наны - особенно привередливые в плане питания...
АЦП при чтении пина из-за плохого питания сходит с ума и тянет за собой весь камень.... Питание решает всё !
ну это врядли, только если камень уже полумертвый
что то автор от нас скрывает) если исключить убитый камень то analogRead вообще не при чем. Стоит попробовать другой аналоговый пин, стоит попробовать стандартный пример с analgRead. Впрочем я уже повторяюсь, я об этом писал
apix05, просто попробуйте с другим исправным БП. Конечно сам ацп потребляет меньше миллиампера, но если например у него поджарился mux(мультиплексор), то при включении ацп потребление может вырастать в разы. Напряжение просядет, а Brown-out Detector запустит перезагрузку. Это как вариант объяснения природы глюка. Осциллографом тут на 5 минут диагностики...
поменял блок питания (использовал +5В от компьютерного блока питания). результат тот же. перезагрузка на analogRead. при том что при подключении через usb - работает... попробовал другой аналоговый вход - не работает. осциллографа к сожалению нет.
решил проблему путем замены платы :)