Уменьшить потребление Arduino Mini Pro
- Войдите на сайт для отправки комментариев
Делаю приёмник ДУ для фотокамеры Nikon на основе платы Arduino Mini Pro 5V 16 Mhz на Atmega328P-au. В программе использую библиотеку IRemote. Программу отладил с фотокамерой, всё работает, но меня не устраивает потребление платы, тк питание производится от батарейки. Для снижения тока использую внутренний генератор, тактовая частота 1Мгц. Прошил фьюзы таким образом: Low F. x62, High F. xDE, Ext F. x05. Получаю следующие результаты: при 5В ток платы 6мА +3мА светодиод-индикатор- это много. При 3,3 В ток платы 1мА+1,5 мА светодиод -отлично , но не подходит, тк мне нужно 5В для питания фотоприёмника TSOP. Я думаю мне помогло бы отключение АЦП, читал , что используют сигнал ADEN по даташиту, но как это делается в Arduino IDE не представляю. Питание нужно 5В. Прошу подсказать , как отключить АЦП программно, тк в ДУ с фотоприемником он не используется. Лучше бы ссылку с примером, тк это у меня первая работа. Светодиод на плате отключу после отладки. На плате AVCC и VCC соединены.
Выключить АЦП: ADCSRA&=~(1<<ADEN); Компаратор можно заодно выключить ACSR|=1<<ACD;
ДУ подавляющую часть времени находится в режиме ожидания. Можно использовать библиотеку Narcoleptic которая "усыпляет" (потребление падает до микроампер) МК на заданное время, от 15 до 8000 миллисекунд.
Только сначала надо бутлоадер поменять на optiboot, иначе проблемы с ватчдогом будут...
У меня Narcoleptic работает без проблем на Nano со стандартным загрузчиком.
У меня Narcoleptic работает без проблем на Nano со стандартным загрузчиком.
Ну, что тут можно сказать... :) Счастливчик!
Но ТС-то спрашивал про ProMini, у которой эта проблема имеется и даже способы лечения известны.
Выключить АЦП: ADCSRA&=~(1<<ADEN); Компаратор можно заодно выключить ACSR|=1<<ACD;
Ув. dimax! Спасибо за помощь! Я понимаю, что Вы написали команды записи в регистр, но ...вопрос?
-это команды на языке Ардуино? Как объявить эти переменные? Эти команды будут в части void?
Признаюсь, что команды для работы с регистрами в описании языка я не нашёл. Новичок, что поделаешь.
ДУ подавляющую часть времени находится в режиме ожидания. Можно использовать библиотеку Narcoleptic которая "усыпляет" (потребление падает до микроампер) МК на заданное время, от 15 до 8000 миллисекунд.
Я считаю, что засыпание здесь не подойдёт , ведь ДУ не должно спать!
Sumatra, "языка ардуино" не существует. Ардуино - это аппаратно-программный комплекс, базирующийся на контроллерах AVR и специализированной версии компилятора языка СИ . Команды нигде объявлять не нужно, достаточно выполнить один раз. Для этого вставьте их в функцию void setup () { }
Спасибо dimax!Буду пробовать.
ДУ подавляющую часть времени находится в режиме ожидания. Можно использовать библиотеку Narcoleptic которая "усыпляет" (потребление падает до микроампер) МК на заданное время, от 15 до 8000 миллисекунд.
Я считаю, что засыпание здесь не подойдёт , ведь ДУ не должно спать!
Для ДУ достаточно раз 10 в секунду проверять есть ли управляющий сигнал, если нет - засыпать на 0,1с до следующей проверки. Кнопка на пульте ДУ меньше чем на 0,1с врядли окажется нажата, это скорее как помеха отфильтровываться должно. В результате в режиме ожидания энергопотребление можно сократить очень существенно, гораздо больше чем отключением АЦП.
Извиняюсь за то, что долго не отвечал - не получалось добавить нестандартный загрузчик в IDE для Mini Pro ( 1МГц внутр.генератор).
В результате выяснил, что :
Программа с библиотекой IRremote с внутр.генератором 1МГц и питанием 3,3В не хочет работать, работает только на 16Мгц и 5В, думаю из-за RC генератора.
Команды ADCSRA&=~(1<<ADEN); ACSR|=ACD , вставленные после void setup () { компилируются, программа работает, но потребление не снижается - 19,5 мА (включая диод питания в Mini Pro). Мне кажется , что команды не сработали, потребление уменьшить не удалось.
Дополнительно вопрос Andrey_Y_Ostan - как строится загрузчик для использования Narcoleptic ? известным конструктором Bootloader'a можно?
Sumatra, не очень понятно что всё таки вы делаете, приёмник ДУ или пульт ДУ ? Для дисташки никона есть полно готовых проектов на тини13, вот например. и Вот есть ещё варианты на PICах. Там уже реализован режим сна. А вот приёмнику ДУ врятли получится поспать, ему же нужно всегда быть наготове.
Ммм, вешаем TSOP на D2/D3 и делаем attachInterrupt(), не?
std, TSOP хоть и производит первичную фильтрацию, но делает это совсем не идеально. Другими словами из него периодически сыпется мусор не имеющий отношения к сигналам с пультов. (основные источники световых помех -люминесцентные и светодиодные лампы) Ну и потом он сам кушает несколько миллиампер :)
Я написал, что делаю приёмник ДУ для ф/камеры Никон. В моей камере нет приёмника, если бы он был, я бы купил ML-3 и не изобретал. Взялся за Ардуино из-за возможности самому сделать/отладить программу и наличия готовых плат. Большое потребление Mini Pro не связано с TSOP -такое же с любой программой (Blink)