Большие часы - погодная станция

ales2k
Offline
Зарегистрирован: 25.02.2013

Желание сделать часы с большими цифрами, чтобы ночью без очков видеть - переросло в этот проект.

Размер всего устройства 230x310, видимая область A4

Сейчас реализовано:

Измерение внутренней температуры, влажности, внешней температуры и яркости солнца (с помощью беспроводного датчика про него ниже), давления, авто регулировка яркости (чтоб ночью не светили сильно),

возможность запрограммировать по bluetooth по времени с повторами 10 сообщений (весь русский алфавит), 3 вида бегущей строки,

сохранение истории внешней температуры и давления за 2 недели,

питание как внешнее, так и от внутренней батареи примерно на 8 часов.

Из чего сделан основной блок:

1. Контроллер Atmega 328 PU на внутреннем генераторе для простоты

2. Самодельный светодиодный индикатор для часов на max7219

3. 9 матриц 8x8, каждая на max7219 как единый матричный дисплей

4. Часовой модуль на RTC DS1307 с 4кб памяти AT24C32 

5. Модуль с датчиком давления на BMP085

6. Датчик влажности на DHT11, жду от китайцев DHT22

7. Датчик внутренней температуры DS18B20

8. Модуль с фотодиодом - какойто самый простой - данные снимаю прям с фотодиода.

9. Bluetooth модуль BTM-05 (HC05)

10. Радио nRF24L01+ (Жду из китая ещё такой же, но с усилителем и внешней антенной)

11. Импульсный преобразователь напряжения StepUp готовый китайсткий чтоб поднимать 3,7 до 5v

12. Микруха tp4056 контроля заряда на готовом модуле, зажата на 400ма

13. Li-Ion 3.7V UltraFire 18650 4500mAh(врут Реальных гдето 3000)

14. Блок питания 5V 1.2A

В работе

Про внешний модуль в сл посте.

ales2k
Offline
Зарегистрирован: 25.02.2013

Внешний модуль спрятался в цветах

 

Собран в контейнере для хранения 4х Lir123, следующий будет в 2 раза меньше

Функции

1 измерение внешней температуры датчиком на проводке

2 измерение яркости солнечного света (по V на солнечной батарее)

3 служебная передача вольтажа батареи и порядкового номера передачи для контроля качества канала.

Модуль работает только на передачу и передает данные раз в 18 секунд (2 цикла сна).

Собран на :

1. Контроллер Atmega 328 PU на внутреннем генераторе, прошита для работы до 2.7 вольта.

2. Радио nRF24L01+

3. Микруха tp4056 контроля заряда на готовом модуле.

4. Li-Ion EEMB Lir123 3.7V 750mAh

5. Солнечная батарея 66,9x39 mm V=5,5V I=70ma при 1000 ватт на м2

Заряжается от солнечной батарейки - 1 месяц полет нормальный напряжение на батарее стабильно 3.9v. Предусмотрена возможность внешнего заряда по USB, думаю не понадобится.

Как показывает опыт эксплуатации - одну стену датчик пробивает, потери пакетов не велики до 1%, две уже с трудом.

ales2k
Offline
Зарегистрирован: 25.02.2013

В планах:

0 Уже сделано - сделать функцию коррекции часов. отстают на 20 сек в сутки.

0 Уже сделано - дополнительное управление Яркостью для max7219 на отдельном ШИМе Мк заместо штатного резистора. Их внутреннее управление яркостью с 16 уровнями оказалось недостаточным.

1 Всетаки дождаться из китая два 4-х циферных индикатора для правого верхнего угла часов! Там будет давление и внешняя температура.

0 Сделано На часы поставить модуль nRF24L01+ с усилителем и внешней антенной.

0 Сделано Сделать красивую индикацию истории измерений давления и температуры

0 Сделано Вынести в отдельный комнатный радио модуль датчик влажности и внутренней температуры

0 Сделано Сделать второй уличный модуль в 2 раза меньше текущего на Ионисторе и приляпать его на дерево или на столб на улице.

6 Добавить Buzzer для подтверждения приема комманд

7 Сделать радиоудлинитель ком порта чтобы программировать основной блок не снимая со стены

Кода получилось реально много, несколько библиотек переправил по ходу решения задачи. Готов публиковать здесь по запросам форумчан.

Большое спасибо spa-sam заимствовал части кода из

http://arduino.ru/forum/proekty/peredacha-temperatury-s-datchikov-dht11-ds18b20-cherez-nrf24l01#comment-22978

(Только поправил чтобы в передатчике всегда каждые 9 секунд не включалось радио.)

Big thank

http://maniacbug.wordpress.com/2011/10/19/sensor-node/

http://www.arduino.cc/en/Reference/Libraries

 

ustas
Offline
Зарегистрирован: 12.03.2012

а что за матрицы 8х8 используются? с общим катодом?

ales2k
Offline
Зарегистрирован: 25.02.2013

Да с общим катодом вот такие

http://www.ebay.com/itm/1PCS-MAX7219-Dot-matrix-module-MCU-control-Display-module-DIY-kit-Arduino-/251170570992?pt=LH_DefaultDomain_0&hash=item3a7aeec2f0

Яркие красные. Против солнца видны.

ustas
Offline
Зарегистрирован: 12.03.2012

Понятно. Скоро выложу свой подобный проект :) матрицы 8х8 биколор с общим анодом (соответственно, другая схемотехника, более "классическая")

ales2k
Offline
Зарегистрирован: 25.02.2013

3 Сделать красивую индикацию истории измерений давления и температуры - Сделано. 

Теперь думаю над заменой МК на ATMEGA1284P, так как почти совсем закончилась память. 

Оперативка еще чутка есть, а flash, под саму программу, уже совсем кончается.

И загрузчик уже поменял на поменьше. И часть библиотек упростил исправив в них пару косяков.  

А планов и идей для реализации в проекте еще гора.

 

ales2k
Offline
Зарегистрирован: 25.02.2013

Мож кому интересно

Прикинул во сколько денег все получилось - все элементы, кроме основного корпуса брал на ebay.

Основной модуль

Штук

Цена руб

Стоимость

1. Контроллер Atmega 328 PU

 

 

 

Atmega 328p

1

68,9

68,9

Макетная плата

1

9,04

9,04

Панелька

1

5,55

5,55

2. Самодельный светодиодный индикатор для часов на max7219

 

 

 

max7219

2

26,99

53,98

Пакет 100 Led Зеленые

1

80,97

80,97

Макетная плата

1

37,6

37,6

3. 9 матриц 8x8, каждая на max7219 как единый матричный дисплей

9

131,82

1186,38

4. Часовой модуль на RTC DS1307 с 4кб памяти AT24C32 

1

82,85

82,85

5. Модуль с датчиком давления на BMP085

1

177,32

177,32

6. Датчик влажности на DHT11, жду от китайцев DHT22

1

215,92

215,92

7. Датчик внутренней температуры DS18B20

1

29,75

29,75

8. Модуль с фотодиодом - какойто самый простой

1

103,57

103,57

9. Bluetooth модуль BTM-05 (HC05)

1

262,69

262,69

10. Радио nRF24L01+

1

53,825

53,825

11. Импульсный преобразователь StepUp готовый

1

109,85

109,85

12. Микруха tp4056 контроля заряда на готовом модуле,

1

46,76

46,76

13. Li-Ion 3.7V UltraFire 18650 4500mAh(врут Реальных гдето 3000)

1

69,67

69,67

14. Блок питания 5V 1.2A

1

115,81

115,81

15. Корпус

1

210

210

 

 

 

2920,43

 

 

 

 

Внешний датчик 1

 

 

 

1. Контроллер Atmega 328 PU

 

 

 

Atmega 328p

1

68,9

68,9

Макетная плата

1

9,04

9,04

Панелька

1

5,55

5,55

L78L33ACZ

1

15,59

15,59

2. Радио nRF24L01+

1

53,83

53,83

3. Микруха tp4056 контроля заряда на готовом модуле.

1

46,76

46,76

4. Li-Ion EEMB Lir123 3.7V 750mAh

1

58,85

58,85

5. Солнечная батарея 66,9x39 mm V=5,5V I=70ma при 1000 ватт на м2

1

194,90

194,90

6. Корпус

1

20,40

20,4

 

 

 

473,80

       
   

Итого

3394,23

Извиняйте таблица вставилась несколько кривовато.

P.S. Всякую мелкоту: пяток диодов, десяток резисторов, 10 метров мгтф, биполярный транзистор, пару конденсаторов не считал.

spa-sam
Offline
Зарегистрирован: 14.12.2012

По поводу включения nRF24L01+ позже тоже поправил))..... 

ales2k, подскажи, как ты подключал Lir123 3.7V ...какое у него  напряжение при полном заряде?...обычно у Li аккумуляторов при полном заряде выдает 4,2 вольта....отсюда затыка  по поводу nRF24L01+...max напруга на него должна быть не более 3,6 В...ставил резистор?..да и было бы интересно посмотреть полную схему питания с подзарядкой)

 

ales2k
Offline
Зарегистрирован: 25.02.2013

Li-ion при полном заряде 4.2 вольта. nRF24L01+ питается через стабилизатор L78L33ACZ. У nRF24L01+ по инструкции диапазон питающего напряжения 1.9-3.3в, если не допускать глубокого разряда LiIon, менее 2.8, то у него всегда с питанием ОК.

Видел схемы где nRF питают от ноги цифрового выхода МК, но у меня не так.

Схему питания вечерком набросаю. Но там все просто: Солнечная батарея (11 элементов по 0.5V = 5.5v, при освещении 1000вт на м2 ток 70ма) -> диод Шотки -> Микруха контроля заряда tp4056 -> Li-ion.

Минус такой схемы, что заряжает только при достаточно хорошем освещении, когда напряжение на солнечной батарее больше 4v. В моих условиях выходит максимум 1 час в не очень пасмурный день.

Из последнего что делал с внешним датчиком

1 включил автоматические повторы передачи, поставил значение на 15 повторов при не доставке. Не знаю как работает, на форуме рекомендовали.

2 выключил brown-out  детектор на МК. Экономия 20 мка. Итого во время сна МК сейчас потребляет 5.2 мка.

 

 

ales2k
Offline
Зарегистрирован: 25.02.2013

Прикинул на сколько должно хватить полностью заряженного Li-Ion 500mah без солнечной батареи.

По данным http://maniacbug.wordpress.com/2011/10/19/sensor-node/ время когда мк работает и не спит 0.03 сек - проверю вечером, при этом потребляет ток примерно 15 ма. У меня цикл передачи раз в 24 секунды.

Во время сна примем 6 мка. 

За час 0,025mAh!

У меня получилось 20000 часов!!! Больше 2-х лет! Может я где ошибся?

spa-sam
Offline
Зарегистрирован: 14.12.2012
 

Эх....в том то и затыка...я тоже хотел Li-Ion поставить....L78L33ACZ...его собственное потребление портит всю картину энергосбережения...порядка 6 мА

А может просто поставить резистор по питанию на nRF24L01+...?....где тут могут быть подводные камни?

 
ales2k
Offline
Зарегистрирован: 25.02.2013

Да с линейным регулятором лопухнулся.

По графику для 4 вольт гдето 1.5-2 ma, но все равно много. Проверю наживую вечерком, а то заменю банально на диод, или на пару - падение 1 вольт -> на входе 4.2 -> на выходе  3.2 -> все довольны доп потребления нет и ура :)

ales2k
Offline
Зарегистрирован: 25.02.2013

Итак на старте доработки было 1.35ma во сне и 6ma при передаче

Убрал линейный регулятор, заменил на 2 диода - общее падение на них 0,7 вольта (0,5+0,2).

Стало во сне  52мка при передаче 4,7ma

Оказалось что та библиотека которую мы используем вместе с spa-sam криво кладет в сон nRF24L01+

Запитал nRF24L01+ от цифрового пина МК на digitalout, отключаю от него питание насовсем на время сна.

Стало во сне  6мка при передаче 4,7ma - цель достигнута.

По моим прикидкам получилось, что от полностью заряженого Li-ion на 500 mah должно работать 658 суток.

spa-sam
Offline
Зарегистрирован: 14.12.2012
 

Нужно опробовать будет...вот только это покатит  с обычным модулем nRF24L01+, а тот который + PA на ногу МК не посадить, там потребление может достигать  115mA ...и в случае модернизации модуля можно попасть в неловкое положение)

ales2k
Offline
Зарегистрирован: 25.02.2013

Можно через транзистор на ногу посадить. Кстати на биполярном падение примерно 1 вольт - можно без диодов обойтись.

ales2k
Offline
Зарегистрирован: 25.02.2013

Фьюзы и параметры прошивки МК  для внешнего датчика

myuno.name=MyArduino Uno
myuno.upload.protocol=arduino
myuno.upload.maximum_size=32256
myuno.upload.speed=57600
myuno.bootloader.low_fuses=0xE2
myuno.bootloader.high_fuses=0xde
myuno.bootloader.extended_fuses=0x07
myuno.bootloader.path=optiboot
myuno.bootloader.file=optiboot_atmega328.hex
myuno.bootloader.unlock_bits=0x3F
myuno.bootloader.lock_bits=0x0F
myuno.build.mcu=atmega328p
myuno.build.f_cpu=8000000L
myuno.build.core=arduino
myuno.build.variant=standard
 
Привожу код внешнего датчика температуры. Он частично списан у spa-sam
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include <avr/sleep.h>
#include <avr/wdt.h>
#include <Wire.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 3
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

int count;    //переменная для счётчика циклов

volatile boolean wdt_tripped=1;

RF24 radio(8,7); 
const uint64_t pipes[2] = { 
  0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };

//создаём структуру для передачи значений
typedef struct{         
  int W;
  int X;
  float Y;
  int Z;
  long U;
}
B_t;
B_t duino2; 

//режим сна для МК
void system_sleep(byte t) {
  delay(2);                            // Wait for serial traffic
  _SFR_BYTE(ADCSRA) &= ~_BV(ADEN);     // Switch ADC off
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);
  sleep_enable();
  sleep_mode();                        // System sleeps here
  sleep_disable();
  _SFR_BYTE(ADCSRA) |= _BV(ADEN);      // Switch ADC on
}

void wdt_interrupt_mode() {
  wdt_reset();
  WDTCSR |= _BV(WDIE); // Restore WDT interrupt mode
}

ISR(WDT_vect) {
  wdt_tripped=1;  // set global volatile variable
}


void setup()
{ 
  wdt_disable();
  wdt_reset();
  wdt_enable(WDTO_8S);   //пробуждение каждые 8 сек
  count = 0;
  
  pinMode(2, OUTPUT); //Пин на который подключено питание радио модуля
  digitalWrite(2,HIGH); 

  sensors.begin();
  sensors.setWaitForConversion(false); //Без ожидания конверсии температуры
  sensors.requestTemperatures();  //Запросить температуру
  delay(1000); // Подождать первой конверсии
}

void loop(void)
{
  wdt_interrupt_mode();
  if (wdt_tripped) 
  { 
    count++;
    wdt_tripped = 0;
    if (count == 3) //тут можно увеличить интервал времени между отправками данных по RF24 за счёт счётчика циклов 8*3
    { 
      count = 0;
      float t = sensors.getTempCByIndex(0); //Читаем температуру
      sensors.requestTemperatures(); //Запрашиваем подготовку температуры для следующего раза
      //записываем в структуру данные для передачи
      duino2.W = 11;  // этот номер передатчика для идентификации в принятом пакете данных
      duino2.X = getBandgap ();  // передаём напряжение батареи
      duino2.Y = t;    // передаём температуру
      duino2.Z = (int)(1.48* analogRead(A2));   // Солнышко - читаем освещенность солнечной батареи
      duino2.U++;      // счетчик передач используется для контроля качества канала
 
      digitalWrite(2,HIGH); //подаём питание на NRF24, затем готовим канал
      radio.begin();
      radio.setRetries(10,15);
      radio.openWritingPipe(pipes[0]);
      radio.powerUp();  
      radio.stopListening(); // отключаем режим приёма

      bool ok = radio.write( &duino2, sizeof(duino2) ); //отправляем данные по RF24
      delay (20); 
      radio.powerDown(); // гасим штатно RF24
      digitalWrite(2,LOW); // отключаем питание RF24
    }
  }
  system_sleep(WDTO_8S);   //МК засыпает
}

//внутренний контроль напряжения на батарее 
const long InternalReferenceVoltage = 1062; 
int getBandgap () 
{
  // REFS0 : Selects AVcc external reference
  // MUX3 MUX2 MUX1 : Selects 1.1V (VBG)  
  ADMUX = _BV (REFS0) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1);
  ADCSRA |= _BV( ADSC );  // start conversion
  while (ADCSRA & _BV (ADSC))
  { 
  }  // wait for conversion to complete
  int results = (((InternalReferenceVoltage * 1024) / ADC) + 5) / 10; 
  return results;
} // end of getBandgap

По сегодняшним замерам работы всего устройства вышло потребление во сне 5.8мка, max потребление в работе 4,7ma длительность рабочего цикла 62 микросекунды. На батарее 500mah протянет 860 дней. 

 
spa-sam
Offline
Зарегистрирован: 14.12.2012
 

Столкнулся с непонятной траблой...тестирую два внешних датчика...один на DS18B20...работает отлично....второй на DHT22...так вот с ним вся загвоздка....пока на батарейках 2.8 -2.75 В, то вроде нормально, но как ниже сползает, то начинает врать (завышать) влажность...температура показывает нормально...в этом плане хорошо LI-Ion...там кривая разряда отличная...как писал выше, было бы неплохо использовать именно аккумулятор на Li-Ion, но полный заряд в 4.2 В портит всю картину...попробовал я через два диода...да...вольтаж падает, но не пойму почему при одинаковом напряжении на Li  аккумуляторе (от моб. телефона) и батарейках...разница в 10% не в пользу  аккумулятора... При этом заметил, что в момент отправки данных на аккумуляторе с диодами идет довольно сильная просадка напруги (порядка 0.5 В)...на батарейках такого нет...мож аккумулятор не тянет?

Решил попробовать cтабилизаторы напряжения, но с очень низким потреблением...заказал вот такой

MCP1701AT-3302I/CB    Uвх: 2.8...10 В ...Uвых: 3.234...3.366 В...Iвых: 150 мА: Iпотр: 2 мкА

 

 
ales2k
Offline
Зарегистрирован: 25.02.2013

В серии DHT, насколько я в курсе, внутри стоит свой микроконтроллер для обсчета датчиков влажности и температуры и он довольно нежный по питанию. Просадку на диодах надо смотреть под твоей нагрузкой. Может диод не удачный попался, у меня получился FR107 0.5v + N5819 0.2v и падение напряжения на них стабильно на моем токе потребления до 10ma. В pdf есть график падения прямого вольтажа от тока нагрузки.

MCP1701AT-3302I/CB - прикольный регулятор но на ebay их нет а до магаза мне будет лениво тащиться.

До меня еще DHT22 пока не доехал... Я в добавок взял еще HS1101 - может его приручить удастся.

У DHT ток потребления 1.5ma, время измерения 2 сек. Можно конечно влажность реже мерять раз в 10 минут например...

spa-sam
Offline
Зарегистрирован: 14.12.2012
 

На ebay я заказал этот регулятор...не хуже того)

http://www.ebay.com/itm/140790390510?ssPageName=STRK:MEWNX:IT&_trksid=p3...

ales2k
Offline
Зарегистрирован: 25.02.2013

Спасибо, заказал таких же.

spa-sam
Offline
Зарегистрирован: 14.12.2012
 

Пришли мне сегодня MCP1701AT...собрал небольшую платку  с регулятором и сразу опробовал...одним словом, замечательная штука...держит отлично 3.3 В, ток потребления как и обещали в пределах 2 мкА...теперь буду свой DHT22  тестировать с аккумулятором) Единственное, что прийдется схему внешнего датчика менять, дабы был контроль по напряжению на аккумуляторе...

ales2k
Offline
Зарегистрирован: 25.02.2013

У тебя в коде есть измерение напяжения питания МК, чем оно не подходит?

А сколько потребляет DHT22 в реальности а не по описанию?

spa-sam
Offline
Зарегистрирован: 14.12.2012

Код изменил немного, но дело не в нем, а в схеме....я делал отдельным модулем стабилизатор на MCP1701AT и ставил его сразу после аккумулятора....поэтому на МК всегда было бы 3.3 В.  В итоге  пока временно припаял к разрезанным дорожкам между питанием nRF24L01+ и аккумулятором.

Потребление DHT22 ....в режиме ожидания 10 мкА и 1.5 мА в активном





//внутренний контроль напряжения на батареи ...измеренное множим на поправку 1.05

int getBandgap(void) // Returns actual value of Vcc (x 100)
    {
        
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
     // For mega boards
     const long InternalReferenceVoltage = 1115L;  // Adjust this value to your boards specific internal BG voltage x1000
        // REFS1 REFS0          --> 0 1, AVcc internal ref. -Selects AVcc reference
        // MUX4 MUX3 MUX2 MUX1 MUX0  --> 11110 1.1V (VBG)         -Selects channel 30, bandgap voltage, to measure
     ADMUX = (0<<REFS1) | (1<<REFS0) | (0<<ADLAR)| (0<<MUX5) | (1<<MUX4) | (1<<MUX3) | (1<<MUX2) | (1<<MUX1) | (0<<MUX0);
  
#else
     // For 168/328 boards
     const long InternalReferenceVoltage = 1056L;  // Adjust this value to your boards specific internal BG voltage x1000
        // REFS1 REFS0          --> 0 1, AVcc internal ref. -Selects AVcc external reference
        // MUX3 MUX2 MUX1 MUX0  --> 1110 1.1V (VBG)         -Selects channel 14, bandgap voltage, to measure
     ADMUX = (0<<REFS1) | (1<<REFS0) | (0<<ADLAR) | (1<<MUX3) | (1<<MUX2) | (1<<MUX1) | (0<<MUX0);
       
#endif
     delay(50);  // Let mux settle a little to get a more stable A/D conversion
        // Start a conversion  
     ADCSRA |= _BV( ADSC );
        // Wait for it to complete
     while( ( (ADCSRA & (1<<ADSC)) != 0 ) );
        // Scale the value
     int results = (((InternalReferenceVoltage * 1023L) / ADC) + 5L) / 10L; // calculates for straight line value 
     return results;
 
    }
 
 
 
ales2k
Offline
Зарегистрирован: 25.02.2013

Пришли ко мне новые модули из китая nRF24L01+. Подключил на готовящийся датчик - не работает, всю голову сломал в чем дело. Оказалось если на питание самого модуля, прямо на плату припаять конденсатор 100 мкф устойчивость работы резко возрастает. Очень рекомендую. Может это вариант питания от ноги контроллера так работает, но не я такой один http://arduino.ru/forum/programmirovanie/nrf24l01?page=2#comment-31054

 

ales2k
Offline
Зарегистрирован: 25.02.2013

По документации DHT22 / AM2302 

Stand-by 40-50 мка     Measuring 1-1,5 ma

Измерение более 2-х секунд, выдача результатов по 250мс на каждый.

По факту получается хуже - отключал и проверял.

Stand-by 70-90 мка     Measuring 1-2 ma

Как у тебя вышло в режиме ожидания 10 мкА и 1.5 мА в активном? - делись.
ales2k
Offline
Зарегистрирован: 25.02.2013

Планирую попробовать на замену DHT22 -> SHT10 

http://www.dfrobot.com/image/data/DFR0066/Datasheet-humidity-sensor-SHT1x.pdf

Заказал из китая 14$.

Не дешево, но если это даст возможность работать только от солнца, то подойдет.

spa-sam
Offline
Зарегистрирован: 14.12.2012
 

Как получил 10 мкА?!...да фиг его знает....мож погрешность измерений))...ничего спецом не делал)...мож библиотеки разные...

 

ales2k
Offline
Зарегистрирован: 25.02.2013

4 Вынести в отдельный комнатный радио модуль датчик влажности и внутренней температуры

Сделано.

Столкнулся со странной ситуацией - при использовании 2-х каналов (pipe) на чтение, общая чуствительность приемника стала хуже!

Если работает 1 датчик то две стены пробивает замчательно, если оба, то дальний две стены пробивает через раз. Может я в доке чтото пропустил? На днях подключу третий и поменяю модуль в основном блоке на мощный, с антенной, возможно пройдет.

ales2k
Offline
Зарегистрирован: 25.02.2013

>> Столкнулся со странной ситуацией - при использовании 2-х каналов (pipe) на чтение, общая чуствительность приемника стала хуже! Решено настройкой модулей. 100 мкф обязательно

В моем случае оказалось оптимально

      digitalWrite(radiopwrpin,HIGH); //подаём питание на NRF24, затем готовим канал
      radio.begin();
      radio.setDataRate(RF24_2MBPS); // Скорость передачи 
      radio.setPayloadSize(16);
      radio.setChannel(97); // свободный
      radio.setRetries(10,15);
      radio.openWritingPipe(pipes[1]);
      radio.powerUp();  
      radio.stopListening(); // отключаем режим приёма

Далее передача

Также заменил в часах модуль 

Сделано 2 На часы поставить модуль nRF24L01+ с усилителем и внешней антенной.

axill
Offline
Зарегистрирован: 05.09.2011

интересная тема про батарейное питание

есть уже опыт эксплуатации lion аккумуляторов зимой? некоторые ставят setp-up преобразователи и питают от них, но это все равно потери минимум 10%. мне видится выгодней мк питать напрямую, но нужен подходящий источник. заряжается ли он реально от солнца?

кстати есть вот такие ldo с заявленнным потреблением 1мка и падением не более 250мв, правда хорошая цена идет за сотню http://www.aliexpress.com/item/XC6206P332MR-XC6206P252MR-SOT-23-SMD-trio...

функция в суктче system_sleep откуда она? В avr/sleep.h не могу найти

ales2k
Offline
Зарегистрирован: 25.02.2013
033 void system_sleep(byte t) {
034   delay(2);                            // Wait for serial traffic
035   _SFR_BYTE(ADCSRA) &= ~_BV(ADEN);     // Switch ADC off
036   set_sleep_mode(SLEEP_MODE_PWR_DOWN);
037   sleep_enable();
038   sleep_mode();                        // System sleeps here
039   sleep_disable();
040   _SFR_BYTE(ADCSRA) |= _BV(ADEN);      // Switch ADC on
041 }

На улице стоит ионистор. Как показала практика - Li-ion при +20 вполне заряжается от тока в 1ма :)

Сам не проверял, но по доке  -> Li-ion при -20 не заряжаются вообще,  а емкость падает в 5-10 раз.

С ионистором другая засада - емкость очень маленькая,даже не так страшен саморазряд Panasonic вполне долго держат.

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

Для стабилизации на модулях примерно 3,3 диод с замеренным падением.

axill
Offline
Зарегистрирован: 05.09.2011

спасибо за добавку кода! извиняюсь если ее пропустил

ионистор - очень интересно. он уже работал зимой? хватает ли его на ночь?

диод для стабилизации или вы имели в виду он для того чтобы погасить излишек напряжения, чтобы не превысить 3.6в которые положены радиомодулю?

ales2k
Offline
Зарегистрирован: 25.02.2013

Да на одну-две ночи ионистора хватает и темпратура ему не важна.

Ионистор нужен с малым саморазрядом, паралельно ему 2 светодиода - 1,8+1,8v. Когда напряжение превысит 3,6 они начнут светиться и скидывать излишек. Солнечная батарея с большим запасом по напржению - вольт на 8-10, в пасмурное время будет давать 3-4 вольта.

Диод вместо стабилизатора для падения напряжения. nRF24L01+ очень не любят линейные стабилизаторы, начинают глюкать.

spa-sam
Offline
Зарегистрирован: 14.12.2012
 

Насчет линейных стабилизаторов...работает в квартире одновременно 3 передатчика...все от  Li-ion с лин.стаб. никаких глюков, потери мощности не было замечено (единственная поправка - все они в спящем режиме и передают данные 1 раз в минуту, поэтому одновременная работа это очень условно)....работает как часы месяца 4 уже. Хочу попробовать перейти на Li-Fe там говорят рабочий режим до -20...думаю заказать и поставить на один из модулей (скоро зима...)),  проверим)

 
axill
Offline
Зарегистрирован: 05.09.2011

ales2k спасибо за разъяснение. Еще несколько вопросов. Ионистор на какую емкость? Если я правильно понял то основная харарктеристика ионистора это его емкость в фарадах. Саморазряд как-то указывается, нормируется? У вас я так понял ионистор фирмы филипс?

если солнечная батарея 10в, а на ионисторе со светодиодами 3.6в, то они напрямую соеденены или между солнечной батареей и ионичтором есть буфер типа резистора на котором падает излишек напряжения?

поясните что значит nrf24 не любят линейных стабилизаторов? Не понятна природа такой нелюбви. У меня несколько устройств на этих радио чипах и там как раз стоят линейные стабилизаторы из 5в в 3.3в

ales2k
Offline
Зарегистрирован: 25.02.2013

spa-sam - видимо те которые мы в теме обсуждали работают хорошо - обычные LM - реально плохо.

Характеристики ионистора - максимально напряжение, ёмкость, число циклов до потери 30% емкости, график разряда, график саморазряда, график заряда разными токами.

Ескость в фарадах, 1 фарад помоему примерно равен 0,07mah (если не перепутал ноли). Напруга садится примерно линейно заряду, как у конденсатора, в отличие от батареек.

Многие китайские саморазряжаются за несколько часов, отечественные, которые ко мне попадали за пол часа.

Панасоники - спец серия - дома буду номинал напишу - за 20 дней.

axill
Offline
Зарегистрирован: 05.09.2011

любой линейный стабилизатор надо подключать согласно даташиту. Если не те конденсаторы использовать что рекоменованы они могут самовозбуждаться. lm очень разные есть и врядли с ними есть какие-то проблемы. Я использую на которые ссылалася и более дешевые (для не батарейного питания, так как у них падение напряжение до 1в) - AMC1117

ales2k
Offline
Зарегистрирован: 25.02.2013

Да именно с AMC1117 и именно в момент передачи данных  nRF24L01+ чтото происходит - конденсаторы все стоят. Возможно у меня неудачная партия этих стабилизаторов.

Кроме того я за диод, потому что он не потребляет доп ma :)

 

P/S/ Пришла мысль - возможно конденсаторы полудохлые, нужно проверить, мож когда с платы феном сдувал - перегрел.

axill
Offline
Зарегистрирован: 05.09.2011

AMC весьма требовательны к конденсаторам,  рекомендуют ставить на выходе тантал на 22мкф или больше, XC6206P332MR о которых писал выше требуют всего два керамических на 1мкф.

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

разница между расходом энергии на диоде и на стабилизаторе только в токе, который течет через ту ногу, которая на землю

AMC1117 через ногу на землю потребляет порядка 5 ма, но они и не предназначены для батарейного питания. А вот XC6206P332MR предназначена и ее потребление 1мка

ales2k
Offline
Зарегистрирован: 25.02.2013

Про диод - Я о том что стабилизатор будет кушать постоянно, а диод только когда будет ток через него.

axill
Offline
Зарегистрирован: 05.09.2011

постоянно стабилизатор будет кушать только то, что течет через его ногу на землю, для вашего устройства для стабилизатора с потреблением 1мка увелиение тока потребления в относительных единицах будет не более 1/40. Это не так страшно, разве нет?

ales2k
Offline
Зарегистрирован: 25.02.2013

Именно для моего устройства, где радио питается с ноги и обесточивается совсем на время сна - правда так, но для других задач

MK во сне потребляет 4.7 мка и еще доп 1 мка - весомо.

Для сравнения, какой расход тока вызовет тот же диод с падением 0,6v - даже не знаю как посчитать.

axill
Offline
Зарегистрирован: 05.09.2011

согласен

диод не ток потребляет а ампер-часы - падение тока на нем умножаем на напряжение падающее на нем и на время

сравнить наверно можно с альтернативой - step-down с типичной эффективностью 90%. Но это в лоб справедливо при постоянной нагрузке. А если речь идет об устройстве которое засыпает - опять будет важен ток потребления в состоянии покоя. Не знаю есть ли такие step-up/step-dowm чтобы в состоянии покоя потребляли совершенный минимум? Опыта пока не имею, размышляю на эту тему, думаю как буду делать

axill
Offline
Зарегистрирован: 05.09.2011

что касается батарейного питания изучил какие есть микросхемы для этого и чот что получилось. основной ориентир в моем поиске был на питание от 1-2 батареек устройств с питанием 3.3в

есть два вида микросхем для этого:

- конденсаторные умножители (так называемые charge-pump), в свою очередь деляться на регулируемые и нет. Среди них есть устройства с малым потреблением. Особый интерес представляют mcp1256-1259, но почему-то их купить не так то просто. Они имеют стабилизацию выходного напряжения и режимы низкого потребления. Точнее 1256-1257 умеют переключаться в режим сна (сохраняя небольшой ток на выходе), а 1258-1259 имеют режим замыкания входа на выход с сильным снижением потребления - можно держать этот режим пока батарейка не разрядится настолько, что нужно будет включить умножение. Минимальное входное напряжение для таких схем что мне попались 1.5В, т.е. для питания от одной алкалиновой батарейки или одного nimh не подходит, минимум от двух или от одного lion. Чем интересны - минимумом компонентов, только конденсаторы, иногда диоды. Испытал такой max1044 для питания подсветки дисплея от нокия 1616 - там нужно 7в

вывод - для батарейного питания не очень применимы, в редких случаях, особенно из-за недоступности таких микросхем как 1256-1259, хотя эффективность преобраования конденсоторных доходит почти до 100%! ( в даташитах пишут >99%)

- индуктивные step-up. вот тут уже интереснее. Есть схемы которые запускаются при напряжениях меньше вольта (0.6-0.8) и могут работать до разрядки до 0.3в. Компонентов тоже не много - индуктивность, пара конденсаторов и пара резисторов (для задания выходного напряжения). Некоторые имеют режимы низкого потребления сохраняя выходное напряжение под низкой нагрузкой - самое то для батарейного питания. Из того недорого что мне удалось найти это mcp1640 от микрочипа, есть по цене 30р на chip-nn.ru. Очень хороший вариант мне видится. Второй вариант ncp1402. Они есть на алиэкспресс десятком от 20р за штуку. ncp1402 требует болшую индуктивность (47мкгн против 4.7мкгн для macp1640) и требует еще один диод шотки

вывод - единственный вариант для питания от одной батарейки, хороший вариант для питания батарейных устройств, особенно если есть режимы низкого потребления. эффективность преобразования ниже чем у первых - порядка 85%

буду пробовать индуктивные step-up. интересно как строить логику включения/выключения режима низкого потребления? при полном засыпании МК это наверно не получится сделать

ales2k
Offline
Зарегистрирован: 25.02.2013

Пробовал для StepUP L6920D Реально работает с 0.6V.

Я пытался на ней сделать преобразователь для подъема напряжения с Солнечной батареи для заряда Ионистора или Li-Ion

Столкнулся с проблемой импульсов потребления тока при которых напряжение на батарее просаживается ниже плинтуса и степап не запускается, накопительный конденсатор тоже не очень помогает.

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

 

axill
Offline
Зарегистрирован: 05.09.2011

L6920D тоже вариант, хотя дороже

поднятие напруги?)  напругой обычно ток называют, ток как раз снижается, поднимается напряжение. Видимо степапу нужен ток который солнечная батарея не смогла обеспечить.

axill
Offline
Зарегистрирован: 05.09.2011

кстати подробная статься про управление потреблением электроэнергии ардуино http://www.gammon.com.au/forum/?id=11497

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Напруга - от слова напряжение, а не от слова ток

axill
Offline
Зарегистрирован: 05.09.2011

понятна, я ни в автомобильном жаргоне ни в украинсокй мове не силен (http://dic.academic.ru/dic.nsf/dic_synonims/230366/%D0%BD%D0%B0%D0%BF%D1%80%D1%83%D0%B3%D0%B0)

в русском языке такого слова (согласно словарю Ожегова) нет

ales2k
Offline
Зарегистрирован: 25.02.2013

Поправился :)