atmega328P-PU 1.8v nrf24L01+
- Войдите на сайт для отправки комментариев
Втр, 27/06/2017 - 13:25
Проблема такова:
CR2032 питает аtmega328P с nrf24L01+ модулем. Brown-out detection настроен на 1.8 в. Насколько я помню nrf питается от 1.8 - 3.3 в. Однако при уменьшении напряжения до 2.8 в радиосигнал перестает генериться. аtmega328P работает нормально. Фьюзы прошиты L:62 H:DB E:06.
Куда копать?
а ничо, что nrf24l01 в режиме передачи до 100мА жрёть? ни на какие мысли не наводит по поводу емкости батареи и времени работы от нее?
nRF24l01 PA LNA на максимальной мощности может и жрёт, а обычный не должен.
ну ОК. Значит он святым эфиром питается.
Давайте к словам попридираемся. Вы же поняли - обычный nRF24l01 без усилителя в режиме передачи такой ток не должен есть.
Копайте под точность измерения напряжения питания, а нижнее для NRF другое: Power supply range: 1.9 to 3.6 V и какое напряжение при таком питании выдает атмега при высоком уровне выхода?
Обычный nrf.. жрет 15 мА. Я гдето читал, что при 1.8 в питании у atmegи 0.2 - низкий, 0.6 высокий. Но у меня 2.8 в.должно быть больше. Вот какие входные уровни у nrf.. не знаю. А что значит "под точность"?.
Это средний ток без учета пульсаций.
Входные уровни NRF по даташиту:
Digital Input pin Vih HIGH level input voltage min=VDD- 0.3 Volt , те от атмеги требуется >= 1,6 В и про падение напряжения на входных резисторах модуля не забывайте. Как точно и чем измеряете напряжение питания?
------
Разрешите прицепить вопрос сбоку темы: как настроить атмегу 328PU (нужна инструкция) на низкую частоту и питание 1,8V ?
"напряжения на входных резисторах модуля не забывайте"
Это как? На сколько я помню входной ток здесь ни при чем, поэтому по как логика согласована и если входные уровни в норме, то остальное не учитывается. Надо будет скеч написать и померить выход атмеги в статике. Только что делать дальше? Вот на низкую частоту 128 кHz я не настраивал . Только на 1 MHz. Надо?
Но лучше смотреть в динамике осциллографом
Я шью через UNO ISP
1.Фьюзы прошиты L:62 H:DB E:06. Если загрузить в калькулятор -увидите что они означают
2.В файле boards.txt добавить секцию
###############################################################
nano1.name=Arduino 328p 1MG
nano1.upload.tool=avrdude
nano1.upload.protocol=arduino
nano1.bootloader.tool=avrdude
nano1.bootloader.unlock_bits=0x3F
nano1.bootloader.lock_bits=0x0F
nano1.build.f_cpu=1000000L
nano1.build.board=AVR_NANO
nano1.build.core=arduino
nano1.build.variant=eightanaloginputs
## Arduino Nano w/ ATmega328p
## -------------------------
nano1.menu.cpu.atmega328=ATmega328
nano1.menu.cpu.atmega328.upload.maximum_size=30720
nano1.menu.cpu.atmega328.upload.maximum_data_size=2048
nano1.menu.cpu.atmega328.upload.speed=57600
nano1.menu.cpu.atmega328.bootloader.low_fuses=0x62
nano1.menu.cpu.atmega328.bootloader.high_fuses=0xBD
nano1.menu.cpu.atmega328.bootloader.extended_fuses=0x06
nano1.menu.cpu.atmega328.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex
nano1.menu.cpu.atmega328.build.mcu=atmega328p
3. Файла ATmegaBOOT_168_atmega328.hex у меня нет, поскольку bootloader я не загружаю, он мне не нужен.
4. Перезагрузить программу Arduino IDE! После всех этих приготовлений все как обычно - выбираем port - где UNO, выбираем плату - "Arduino 328p 1MG",который у Вас появится, программатор - Arduino as ISP (предварительно загрузив в UNO скеч ArduinoISP), далее пункт "записать загрузчик" (поскольку бута нет запишутся только фьюзы в данном случае int 8 MHz и делитель на 8). Все! Дальше грузите свой скеч и шейте через "загрузить через программатор". При этом компилятор учтет временные интервалы для 1 МГц из строки "nano1.build.f_cpu=1000000L". Настройки только для ATMEGA328 !!!
Вот есть статья, почему не надо програмировать на 128 КГц на ArduinoISP и как это исправить.
http://blog.kevmod.com/2013/09/rescuing-a-mis-programmed-atmega328/
Спавсибо. Я хочу изменить частоту для ATMEGA328 AU на Pro Mini (без встроенного USB-UART, исользует внешний). Есть у нее принципиальные отличия от Nano, которые не позволят запрограммировать с этими фьюзами ?
PS: Bootloader для меня большое удобство, не хочу расставаться с ним. Файл C:\Program Files\Arduino\hardware\arduino\bootloaders\atmega\ATmegaBOOT_168_atmega328.hex у меня есть, но не уверен что он рассчитан на частоту 1 МГц
Еще есть ATmegaBOOT_168_atmega328_pro_8MHz.hex - здесь с частотой все ясно
Спавсибо. Я хочу изменить частоту для ATMEGA328 AU на Pro Mini (без встроенного USB-UART, исользует внешний). Есть у нее принципиальные отличия от Nano, которые не позволят запрограммировать с этими фьюзами ?
PS: Bootloader для меня большое удобство, не хочу расставаться с ним. Файл C:\Program Files\Arduino\hardware\arduino\bootloaders\atmega\ATmegaBOOT_168_atmega328.hex у меня есть, но не уверен что он рассчитан на частоту 1 МГц
Еще есть ATmegaBOOT_168_atmega328_pro_8MHz.hex - здесь с частотой все ясно
Мне кажется там кварцованая частота. Если только делитель?
Не буду вводить Вас в заблуждение, но я никогда не перепрограмировал готовые ардуино! В своих самоделках я програмирую только микрухи atmega8 и atmega328, которые заказываю в Китае. А готовые используются только для отладки каких-то кусков кода (например взоимодействие передатчиков или прерываний) и програматора. Я слышал о каких то переделанных загрузчиках, но все равно есть проблемы с портами T/X, WDT и внутренними счетчиками, которые я использую. Ну и потребление. Не смогу в этом помочь. Sorry....
Но в той версии, которая стоит на IDE как рабочая ограничитель на max 127, но все равно 126 и 127 не работают. Если не трудно ответить, у Вас работают и в какой версии библиотеки ?
Но в той версии, которая стоит на IDE как рабочая ограничитель на max 127, но все равно 126 и 127 не работают. Если не трудно ответить, у Вас работают и в какой версии библиотеки ?
У меня такая:
25,4 КБ (26 031 байт) Все работает (запускал scanner) Как узнать версию не знаю, вижу что файл 2013 года
Вот сылка автора
See my blog post:
* <a href="http://maniacbug.wordpress.com/2011/11/02/getting-started-rf24/">Getting Started with nRF24L01+ on Arduino</a>
*
* @section hardware Where can I buy some hardware?
*
* @li iTeadStudio sells the basic <a href="http://iteadstudio.com/store/index.php?main_page=product_info&cPath=7&products_id=53">2.4G Wireless nRF24L01+ Module</a> for $4. Such a deal!
* @li MDfly.com sells the same unit, <a href="http://www.mdfly.com/index.php?main_page=product_info&cPath=8_52&products_id=81">2.4Ghz Wireless nRF24L01+ Transceiver Module</a> for $6.95, but it ships from the US so it gets there a lot faster. Great place to get a few units and get started quickly.
* @li MDfly.com also has the <a href="http://www.mdfly.com/index.php?main_page=product_info&cPath=8_52&products_id=433">nRF24L01 2.4GHz Transceiver Module w/ Power Amplifier</a> for $13.95, which increases range dramatically and uses a chip antenna
* @li MDfly.com also has the <a href="http://www.mdfly.com/index.php?main_page=product_info&cPath=8_52&products_id=583">2.4GHz Transceiver Module w/ Power Amplifier</a> with an external antenna for $19.95
*
* @section range What is the range of these units?
*
* Here are some results from measurements I have taken, using the basic $4 iTeadStudio units.
* I recommend that everyone take their own measurements in their particular circumstances.
*
* @li non-plus unit, 2MBps (worst case), 41+ ft line of sight indoors, immediate dropoff with any deviation from LOS. (41 ft is as far as I can go in my house without turning a corner)
* @li Plus unit, 250kbps (best case), 46 ft around two corners indoors, 49 ft around one corner. More importantly, at 250k, packet loss is almost negligible through almost all of that range.
* @li Both units at 1MBps, plus unit gets about 10% range improvement over non-plus in almost all situations.
*
* @section issues What should I do if I find a problem?
*
* Please <a href="https://github.com/maniacbug/RF24/issues/new">open an issue</a> on github if you find any problems using it with any version of Arduino or Maple.
*
* @section ram What is the RAM footprint of this library?
*
* 16 bytes. A single radio object consumes 16 bytes of RAM, and the library
* does not use any other RAM statically.
Сканер не гарантия , для проверки нужно явно задать в RX и TX частях XXX.setChannel(126); /или 127/ и тогда можно понять работает или нет.
Сканер не гарантия , для проверки нужно явно задать в RX и TX частях XXX.setChannel(126); /или 127/ и тогда можно понять работает или нет.
Так в скече оно так и есть. Там цикл до 127. И я проверял обмен между 2 nrf модулями на этих каналах
В даташите написано, что для скорости 2 мегабита в секунду используется полоса шириной в два канала. Вероятно, разработчик библиотеки думал об этом, и чуть ошибся.
Спавсибо. Я хочу изменить частоту для ATMEGA328 AU на Pro Mini (без встроенного USB-UART, исользует внешний). Есть у нее принципиальные отличия от Nano, которые не позволят запрограммировать с этими фьюзами ?
PS: Bootloader для меня большое удобство, не хочу расставаться с ним. Файл C:\Program Files\Arduino\hardware\arduino\bootloaders\atmega\ATmegaBOOT_168_atmega328.hex у меня есть, но не уверен что он рассчитан на частоту 1 МГц
Еще есть ATmegaBOOT_168_atmega328_pro_8MHz.hex - здесь с частотой все ясно
Вот как раз ваша тема, но без бутлоадера, правда его можно потом восстановить.
https://www.iot-experiments.com/arduino-pro-mini-1mhz-1-8v/
Спасибо, но не понял как восстановить bootloader, в какую папку его положить и как указать чтобы в 328P вместе с фьюзами залился именно он ?
А что по Вашей теме - измерили напряжение высокого уровня на выходе атмеги ?
Добрый вечер! При таком малоёмком источнике питания уверен экономите энергию при помощи спячки МК. Покажите пожалуйста образец скетча для ввода в спячку и пробуждения. Еще можно для экономии отключать АЦП и лишние таймеры.
Спасибо, но не понял как восстановить bootloader, в какую папку его положить и как указать чтобы в 328P вместе с фьюзами залился именно он ?
А что по Вашей теме - измерили напряжение высокого уровня на выходе атмеги ?
1. Видимо как здесь в секции nano1.menu.cpu.atmega328.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex не уверен что с таймингами будет все правильно, т.к. он генерился под 16 MHz
2. Не успел пока. Однако про импульсные токи - правда. Поставил по питанию 200 мкФ и все наладилось. Просадку баттареи за 30 мС измерить не удается. Попробую сегодня-завтра.
Добрый вечер! При таком малоёмком источнике питания уверен экономите энергию при помощи спячки МК. Покажите пожалуйста образец скетча для ввода в спячку и пробуждения. Еще можно для экономии отключать АЦП и лишние таймеры.
Не стоит. Потребление 4mkA достаточно. Просто измерения делаются очень часто. на прктике будет в 10 раз реже. Надо разобраться сейчас с уровнями между 328 и nrf при Uпит < 2.7 в
Что наладилось - NRF работает при питании атмеги < 2В ?
Не 30 мс, а менее 2. Измерьте ток утечки электролитического конденсатора и огорчитесь. Достаточно керамического 10 мкф типоразмера 0805 непосредственно на NRF.
А что по Вашей теме - измерили напряжение высокого уровня на выходе атмеги ?
И так. Собрал, померил! при 2.7 в питания '0' - практически 0, а '1'- 2.6 в., для 2.0 в питания '0' - практически 0, '1' - 1.99в. Мерил так: закачал скеч Blink c паузой 2 сек и мерил. Так что с уровнем порядок. Наверное всетаки просадка на несвежей баттарее, а кондер спасает. Ток во время передачи 30 мА возможно сажает ее ниже 1.8 в. Вот осциллографа нет померить импульс.
Достаточно керамического 10 мкф типоразмера 0805 непосредственно на NRF.
Это как можно померить напряжение во время импульса передачи? Я измеряю , когда опрашиваю датчики - там 2.7 в. Это при 15 мА потреблении атмеги. А потом передаю в nrf. Это еще +15 мА , т.е всего 30мА. Потом сразу всем спать. Как померить?
2. 10 mkF не хватает. При нормальной баттарее 3.3 в хватает. А при 2.7 в - нет. Вот и поставил 200
Да. Последний эксперимент: запитал устройство с передатчиком без всяких конденсаторов 2.0 вольта. Работает на ура!!! Короче дело в севшей баттарейке!!!
2. 10 mkF не хватает. При нормальной баттарее 3.3 в хватает. А при 2.7 в - нет. Вот и поставил 200
1. Измерить дополнительным внешним контроллером. 15 мА слишком много для 1МГц 3,3В.
2. Какой ток собственной утечки конденсатора?
У истощенной литиевойй батареи есть нехорошая особенность - возрастание внутреннего сопротивления. Сколько часов она отрабатывает?
Кто ж ее знает. Если если как сейчас 1 раз в минуту то месяцев 4-5, но это очень часто , думаю раз в10 мин хватит на год? Когда спит 4.5 мкА.
Спасибо, но не понял как восстановить bootloader, в какую папку его положить и как указать чтобы в 328P вместе с фьюзами залился именно он ?
http://homes-smart.ru/index.php/oborudovanie/arduino/avr-zagruzchik
Вот хорошее чтиво про загрузчик
Спячка конечно есть. И все кроме WDT отключается. Извините, я не понял.
Вот здесь на все случаи жизни это описано, как спать, как будить , чем будить
http://gammon.com.au/power
Все скечи рабочие. Обратите внимание - это для 328 меги! Для 8 меги многое работать не будет сходу, хоть и говорят , что это почти тоже самое только меньше. Режимы сна, внутренние прерывания и побудка - разные.