atmega328P-PU 1.8v nrf24L01+

To
Offline
Зарегистрирован: 21.02.2015

Проблема такова:

CR2032 питает аtmega328P с  nrf24L01+ модулем. Brown-out detection настроен на 1.8 в. Насколько я помню nrf питается от 1.8 - 3.3 в. Однако при уменьшении напряжения до 2.8 в радиосигнал перестает генериться. аtmega328P работает нормально. Фьюзы прошиты L:62 H:DB E:06.

Куда копать?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

а ничо, что nrf24l01 в режиме передачи до 100мА жрёть?  ни на какие мысли не наводит по поводу емкости батареи и времени работы от нее?

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

nRF24l01 PA LNA на максимальной мощности может и жрёт, а обычный не должен.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

ну ОК.  Значит он святым эфиром питается. 

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Давайте к словам попридираемся. Вы же поняли - обычный nRF24l01 без усилителя в режиме передачи такой ток не должен есть.

Kunzo
Offline
Зарегистрирован: 22.06.2017

To пишет:
CR2032 питает аtmega328P с  nrf24L01+ модулем. Brown-out detection настроен на 1.8 в. Насколько я помню nrf питается от 1.8 - 3.3 в. Однако при уменьшении напряжения до 2.8 в радиосигнал перестает генериться. Куда копать?

Копайте под точность измерения напряжения питания, а нижнее для NRF другое: Power supply range: 1.9 to 3.6 V   и какое напряжение при таком питании выдает атмега при высоком уровне выхода?

To
Offline
Зарегистрирован: 21.02.2015

Обычный nrf.. жрет 15 мА. Я гдето читал, что при 1.8 в питании у atmegи 0.2 - низкий, 0.6 высокий. Но у меня 2.8 в.должно быть больше. Вот какие входные уровни у nrf.. не знаю. А что значит "под точность"?.

Kunzo
Offline
Зарегистрирован: 22.06.2017

To пишет:
Обычный 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 ?

To
Offline
Зарегистрирован: 21.02.2015

"напряжения на входных резисторах модуля не забывайте"

Это как? На сколько я помню входной ток здесь ни при чем, поэтому по как логика согласована и если входные уровни в норме, то остальное не учитывается. Надо будет скеч написать и померить выход атмеги в статике. Только что делать дальше? Вот на низкую частоту 128 кHz я не настраивал . Только на 1 MHz. Надо?

Kunzo
Offline
Зарегистрирован: 22.06.2017

To пишет:
"напряжения на входных резисторах модуля не забывайте" Это как? На сколько я помню входной ток здесь ни при чем, поэтому по как логика согласована и если входные уровни в норме, то остальное не учитывается.
Были версии печатный плат с резисторами на входах. Если у Вас не такая - можно не учитывать.

To пишет:
Надо будет скеч написать и померить выход атмеги в статике.

To пишет:
"напряжения на входных резисторах модуля не забывайте" Это как? На сколько я помню входной ток здесь ни при чем, поэтому по как логика согласована и если входные уровни в норме, то остальное не учитывается. Надо будет скеч написать и померить выход атмеги в статике.

 pinMode(PinNum, OUTPUT);
 digitalWrite(PinNum,HIGH); 

Но лучше смотреть в динамике осциллографом

To пишет:
Только что делать дальше
Ставнивать напряжение, которое выдает атмега и что требуется NRF. Еще можно пытаться понизить частоту тактирования SPI (увеличить делитель),  тк при низком напряжении из-за  пологих фронтов вершина может не дотягивать до максимума.

To пишет:
Вот на низкую частоту 128 кHz я не настраивал . Только на 1 MHz. Надо?
Да, дайте пожалуйста полную инструкцию.

To
Offline
Зарегистрирован: 21.02.2015

Я шью через 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/

Kunzo
Offline
Зарегистрирован: 22.06.2017

To пишет:
Дальше грузите свой скеч и шейте через "загрузить через программатор". При этом компилятор учтет временные интервалы для 1 МГц из строки "nano1.build.f_cpu=1000000L". Настройки только для 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   - здесь с частотой все ясно

 

To
Offline
Зарегистрирован: 21.02.2015

Kunzo пишет:

To пишет:
Дальше грузите свой скеч и шейте через "загрузить через программатор". При этом компилятор учтет временные интервалы для 1 МГц из строки "nano1.build.f_cpu=1000000L". Настройки только для 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   - здесь с частотой все ясно

Мне кажется там кварцованая частота. Если только делитель?

Не буду вводить Вас в заблуждение, но я никогда не перепрограмировал готовые ардуино! В своих самоделках я програмирую только микрухи atmega8 и atmega328, которые заказываю в Китае. А готовые используются только для отладки каких-то кусков кода (например взоимодействие передатчиков или прерываний) и програматора. Я слышал о каких то переделанных загрузчиках, но все равно есть проблемы с портами T/X, WDT и внутренними счетчиками, которые я использую. Ну и потребление. Не смогу в этом помочь. Sorry....

Цопыч
Offline
Зарегистрирован: 27.06.2017

To пишет:
Проблема такова:
Не подскажете про nrf24L01+,  не удается использовать каналы 126 и 127. В архиве библиотеки RF24  и нашел ограничитель max до 125 включительно.

Но в  той версии, которая стоит на IDE как рабочая  ограничитель  на max 127, но  все равно 126 и 127 не работают.    Если не трудно ответить,  у Вас работают и в какой версии библиотеки ?

 

//**
void RF24::setChannel(uint8_t channel)
{
  const uint8_t max_channel = 125;
  write_register(RF_CH,rf24_min(channel,max_channel));
}
uint8_t RF24::getChannel() { return read_register(RF_CH);}

 

To
Offline
Зарегистрирован: 21.02.2015

Цопыч пишет:

To пишет:
Проблема такова:
Не подскажете про nrf24L01+,  не удается использовать каналы 126 и 127. В архиве библиотеки RF24  и нашел ограничитель max до 125 включительно.

Но в  той версии, которая стоит на IDE как рабочая  ограничитель  на max 127, но  все равно 126 и 127 не работают.    Если не трудно ответить,  у Вас работают и в какой версии библиотеки ?

 

//**
void RF24::setChannel(uint8_t channel)
{
  const uint8_t max_channel = 125;
  write_register(RF_CH,rf24_min(channel,max_channel));
}
uint8_t RF24::getChannel() { return read_register(RF_CH);}

У меня такая:

void RF24::setChannel(uint8_t channel)
{
  // TODO: This method could take advantage of the 'wide_band' calculation
  // done in setChannel() to require certain channel spacing.

  const uint8_t max_channel = 127;
  write_register(RF_CH,min(channel,max_channel));

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.

Цопыч
Offline
Зарегистрирован: 27.06.2017

To пишет:
Все работает (запускал scanner)

Сканер не гарантия ,  для проверки нужно явно задать в RX и TX  частях  XXX.setChannel(126);  /или 127/  и тогда можно понять работает или нет.

To
Offline
Зарегистрирован: 21.02.2015

Цопыч пишет:

To пишет:
Все работает (запускал scanner)

Сканер не гарантия ,  для проверки нужно явно задать в RX и TX  частях  XXX.setChannel(126);  /или 127/  и тогда можно понять работает или нет.

Так в скече оно так и есть. Там цикл до 127.  И я проверял обмен между 2 nrf модулями на этих каналах

toc
Offline
Зарегистрирован: 09.02.2013

Цопыч пишет:
Не подскажете про nrf24L01+, не удается использовать каналы 126 и 127. В архиве библиотеки RF24  и нашел ограничитель max до 125 включительно.

В даташите написано, что для скорости 2 мегабита в секунду используется полоса шириной в два канала. Вероятно, разработчик библиотеки думал об этом, и чуть ошибся.

Kunzo
Offline
Зарегистрирован: 22.06.2017

To пишет:
И я проверял обмен между 2 nrf модулями на этих каналах
Проблема известная. На этих двух каналах в RF24 работает только мониторинг, но не обмен данными. Возможно c MIRF иначе.

To
Offline
Зарегистрирован: 21.02.2015

Kunzo пишет:

To пишет:
Дальше грузите свой скеч и шейте через "загрузить через программатор". При этом компилятор учтет временные интервалы для 1 МГц из строки "nano1.build.f_cpu=1000000L". Настройки только для 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   - здесь с частотой все ясно

 

 

Вот как раз ваша тема, но без бутлоадера, правда его можно потом восстановить.

https://www.iot-experiments.com/arduino-pro-mini-1mhz-1-8v/

Kunzo
Offline
Зарегистрирован: 22.06.2017

To пишет:
Вот как раз ваша тема, но без бутлоадера, правда его можно потом восстановить. https://www.iot-experiments.com/arduino-pro-mini-1mhz-1-8v/

Спасибо, но не понял как восстановить bootloader, в какую папку его положить и как указать чтобы в 328P вместе с фьюзами  залился именно он ?

Цитата:

  • ATmegaBOOT (2kB), original Arduino bootloader [GitHub];
  • Optiboot (500 bytes), lighter bootloader, default with Arduino Uno [GitHub].

А что по Вашей теме - измерили напряжение высокого уровня на выходе атмеги ?

Altas
Offline
Зарегистрирован: 29.06.2017

To пишет:
CR2032 питает аtmega328P с  nrf24L01+ модулем. Brown-out detection настроен на 1.8 в.

Добрый вечер! При таком малоёмком  источнике питания уверен экономите энергию при помощи спячки МК. Покажите пожалуйста образец скетча для ввода в спячку и пробуждения.  Еще можно для экономии отключать АЦП и лишние таймеры.

To
Offline
Зарегистрирован: 21.02.2015

Kunzo пишет:

To пишет:
Вот как раз ваша тема, но без бутлоадера, правда его можно потом восстановить. https://www.iot-experiments.com/arduino-pro-mini-1mhz-1-8v/

Спасибо, но не понял как восстановить bootloader, в какую папку его положить и как указать чтобы в 328P вместе с фьюзами  залился именно он ?

Цитата:

  • ATmegaBOOT (2kB), original Arduino bootloader [GitHub];
  • Optiboot (500 bytes), lighter bootloader, default with Arduino Uno [GitHub].

А что по Вашей теме - измерили напряжение высокого уровня на выходе атмеги ?

1. Видимо как здесь в секции nano1.menu.cpu.atmega328.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex не уверен что с таймингами будет все правильно, т.к. он генерился под 16 MHz

2. Не успел пока. Однако про импульсные токи - правда. Поставил по питанию 200 мкФ и все наладилось. Просадку баттареи за 30 мС измерить не удается. Попробую сегодня-завтра.

 

To
Offline
Зарегистрирован: 21.02.2015

Altas пишет:

To пишет:
CR2032 питает аtmega328P с  nrf24L01+ модулем. Brown-out detection настроен на 1.8 в.

Добрый вечер! При таком малоёмком  источнике питания уверен экономите энергию при помощи спячки МК. Покажите пожалуйста образец скетча для ввода в спячку и пробуждения.  Еще можно для экономии отключать АЦП и лишние таймеры.

Не стоит. Потребление 4mkA достаточно. Просто измерения делаются очень часто. на прктике будет в 10 раз реже. Надо разобраться сейчас с уровнями между 328 и nrf при Uпит < 2.7 в

Kunzo
Offline
Зарегистрирован: 22.06.2017

To пишет:
Не успел пока. Однако про импульсные токи - правда. Поставил по питанию 200 мкФ и все наладилось. Просадку баттареи за 30 мС измерить не удается. Попробую сегодня-завтра

Что наладилось - NRF работает при питании атмеги < 2В ?

Не 30 мс, а менее 2.  Измерьте ток утечки электролитического конденсатора и огорчитесь. Достаточно керамического 10 мкф типоразмера 0805 непосредственно на NRF.

To
Offline
Зарегистрирован: 21.02.2015

Kunzo пишет:

А что по Вашей теме - измерили напряжение высокого уровня на выходе атмеги ?

И так. Собрал, померил! при 2.7 в питания  '0' - практически 0, а '1'- 2.6 в., для 2.0 в питания '0' - практически 0, '1' - 1.99в. Мерил так: закачал скеч Blink c паузой 2 сек и мерил.  Так что с уровнем порядок. Наверное всетаки просадка на несвежей баттарее, а кондер спасает. Ток во время передачи 30 мА возможно сажает ее ниже 1.8 в. Вот осциллографа нет померить импульс.

Kunzo
Offline
Зарегистрирован: 22.06.2017

To пишет:
Ток во время передачи 30 мА возможно сажает ее ниже 1.8 в. Вот осциллографа нет померить импульс.
АЦП внешней Атмеги и есть осциллограф

To пишет:
Наверное всетаки просадка на несвежей баттарее, а кондер спасает.
Спасает, но он растратчик за счет тока утечки.

 

To
Offline
Зарегистрирован: 21.02.2015

Kunzo пишет:

To пишет:
Ток во время передачи 30 мА возможно сажает ее ниже 1.8 в. Вот осциллографа нет померить импульс.
АЦП внешней Атмеги и есть осциллограф

Достаточно керамического 10 мкф типоразмера 0805 непосредственно на NRF.

 

Это как можно померить напряжение во время импульса передачи? Я измеряю , когда опрашиваю датчики - там 2.7 в. Это при 15 мА потреблении атмеги. А потом передаю в nrf. Это еще +15 мА , т.е  всего 30мА. Потом сразу всем спать. Как померить?

2. 10 mkF не хватает. При нормальной баттарее 3.3 в хватает. А при 2.7 в - нет. Вот и поставил 200

To
Offline
Зарегистрирован: 21.02.2015

Да. Последний эксперимент: запитал устройство с передатчиком без всяких конденсаторов 2.0 вольта. Работает на ура!!! Короче дело в севшей баттарейке!!!

Kunzo
Offline
Зарегистрирован: 22.06.2017

To пишет:
1. Это как можно померить напряжение во время импульса передачи? Я измеряю , когда опрашиваю датчики - там 2.7 в. Это при 15 мА потреблении атмеги. А потом передаю в nrf. Это еще +15 мА , т.е  всего 30мА. Потом сразу всем спать. Как померить?

2. 10 mkF не хватает. При нормальной баттарее 3.3 в хватает. А при 2.7 в - нет. Вот и поставил 200

1. Измерить дополнительным внешним контроллером. 15 мА слишком много для 1МГц 3,3В.

2. Какой ток собственной утечки конденсатора?

Kunzo
Offline
Зарегистрирован: 22.06.2017

To пишет:
Да. Последний эксперимент: запитал устройство с передатчиком без всяких конденсаторов 2.0 вольта. Работает на ура!!! Короче дело в севшей баттарейке!!
У истощенной литиевойй батареи есть нехорошая особенность - возрастание внутреннего сопротивления. Сколько часов она отрабатывает?

To
Offline
Зарегистрирован: 21.02.2015

Kunzo пишет:

У истощенной литиевойй батареи есть нехорошая особенность - возрастание внутреннего сопротивления. Сколько часов она отрабатывает?

Кто ж ее знает. Если если как сейчас  1 раз в минуту то месяцев 4-5, но это очень часто , думаю раз в10 мин хватит на год? Когда спит 4.5 мкА.

To
Offline
Зарегистрирован: 21.02.2015

</p> <p>[quote=Kunzo пишет:

Спасибо, но не понял как восстановить bootloader, в какую папку его положить и как указать чтобы в 328P вместе с фьюзами  залился именно он ?

http://homes-smart.ru/index.php/oborudovanie/arduino/avr-zagruzchik

Вот хорошее чтиво про загрузчик

Altas
Offline
Зарегистрирован: 29.06.2017

To пишет:
Когда спит 4.5 мкА.
Я просил у Вас пример программы ввода и вывода 328 на такой частоте из спячки, но в ответ получил что спячка не требуется.

 

To
Offline
Зарегистрирован: 21.02.2015

Altas пишет:

To пишет:
Когда спит 4.5 мкА.
Я просил у Вас пример программы ввода и вывода 328 на такой частоте из спячки, но в ответ получил что спячка не требуется.

Спячка конечно есть. И все кроме WDT отключается. Извините, я не понял.

Altas
Offline
Зарегистрирован: 29.06.2017

To пишет:
Спячка конечно есть. И все кроме WDT отключается. Извините, я не понял.
Дайте пожалуйста  пример кода как отключить все кроме WDR ,  войти в спячку и выйти из нее?

To
Offline
Зарегистрирован: 21.02.2015

Altas пишет:

To пишет:
Спячка конечно есть. И все кроме WDT отключается. Извините, я не понял.
Дайте пожалуйста  пример кода как отключить все кроме WDR ,  войти в спячку и выйти из нее?

Вот здесь на все случаи жизни это описано, как спать, как будить , чем будить

http://gammon.com.au/power

Все скечи рабочие. Обратите внимание - это для 328 меги! Для 8 меги многое работать не будет сходу, хоть и говорят , что это почти тоже самое только меньше. Режимы сна, внутренние прерывания и побудка - разные.