Энергосбережение и делитель напряжения

Туцик
Туцик аватар
Offline
Зарегистрирован: 31.03.2020

Делаю беспроводной датчик на улицу. К ардуино подключен датчик DHT22, NRF24 и делитель напряжения для замера заряда аккумуляторов. Датчик и нрф работают нормально, но делитель показывает какое то фуфло.

Код прилагаю.



#include <avr/wdt.h>
#include <avr/sleep.h>
#include <SPI.h>
#include <RF24.h>
#include <SimpleDHT.h>

int pinDHT22 = 2;
SimpleDHT22 dht22(pinDHT22);

RF24 radio(7, 8); 

const uint32_t pipe = 123456789; 

void setup() {
  pinMode(0, INPUT);
  
  radio.begin();                
  delay(2000);
  radio.setDataRate(RF24_1MBPS); 
  radio.setCRCLength(RF24_CRC_16);
  radio.setPALevel(RF24_PA_MAX);                    
  radio.setChannel(81);         
  radio.setAutoAck(false);       
  radio.powerUp();               
  radio.openWritingPipe(pipe);   
}

void loop() {
//------------------------------------- ЗАМЕРЫ ------------------------------------------------
  float R1 = 30180.0; 
  float R2 = 24300.0; 
  int value = 0;
  float vout = 0.0;
  float vin = 0.0;

  float temperature = 0;
  float humidity = 0;
  
  float data[3];

  dht22.read2(&temperature, &humidity, NULL);
  
   value = analogRead(0);
   vout = (value * 3.362) / 1024.0;
   vin = vout / (R2/(R1+R2));
   if (vin<0.09) {
   vin=0.0;}
  
 //------------------------------------- ПОДГОТОВКА И ОТПРАВКА ПАКЕТОВ ----------------------------------- 
  data[0] = ((float)temperature);
  data[1] = ((float)humidity);
  data[2] = (vin);
  
  radio.write(&data, sizeof(data));
  
 //-------------------------------------- СОН ------------------------------------------------------------
  wdt_enable(WDTO_1S); 
  WDTCSR |= (1 << WDIE); 
  ADCSRA &= ~(1 << ADEN);
  set_sleep_mode(SLEEP_MODE_PWR_DOWN); 
  sleep_mode(); 

  
}

ISR (WDT_vect) {
  wdt_disable();
  f = !f;
}

 

svm
Offline
Зарегистрирован: 06.11.2016

В строке 45 вместо первой  / поставьте *

Туцик
Туцик аватар
Offline
Зарегистрирован: 31.03.2020

Поставил, но стало еще сильнее занижать. Без спячек все верно дудит, но со спячкой показывает 3,5в вместо 5. Заменил на *, стало 0.57.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, формула, то всё равно неправильная скорее всего. Схему Вы не приложили, так что хрен Вас знает. что там за делитель, но если Вы читаете свою vout со средней точки делителя, а пытаетесь посчитать vin в верхней точке делителя, то формула не такая.

Uв = Uср * (R1+R2) / R2

Хотя, без схемы - это пальцем в небо.

Только что Вы собрались таким образом измерить? Кто Вам сказал, что напряжение питания у Вас именно 3.362 и оно будет оставаться таким всегда, даже по мере просадки батареи? Или у Вас там стабилизатор? Опять же ... без схемы ...

Вообще-то в таких случаях люди не используют левые константы типа 3.362, а измеряют напряжение своего питания здесь и сейчас, прямо во время работы. И уже от этого измеренного напряжения считают.

Ну, а про схему ... охреневаю, когда новички научатся задавать вопросы? Ну, ведь писали же в песочнице как это правильно делать. Кому писали? :-(

Гриша
Offline
Зарегистрирован: 27.04.2014

ЕвгенийП пишет:

 но если Вы читаете свою vout со средней точки делителя, а пытаетесь посчитать vin в верхней точке делителя, то формула не такая.

Uв = Uср * (R1+R2) / R2

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

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

Туцик
Туцик аватар
Offline
Зарегистрирован: 31.03.2020

Напряжение делителем меряю на аккумах. С акуммов питание идет на MCP1700 3v3. Опорное меряю на ноге vin атмеги. Опять же повторюсь, без спячки все показывает верно.

Гриша
Offline
Зарегистрирован: 27.04.2014

как вариант (не совсем уверен):  RF24 еще не проснулся и сильно гадит вам в сеть - сделайте задержку после пробуждения более 5 сек лучше 10сек, а потом смотрите на результат

Туцик
Туцик аватар
Offline
Зарегистрирован: 31.03.2020

Спасибо, разобрался. На делителе контакт говенний бил.

Гриша
Offline
Зарегистрирован: 27.04.2014

Туцик пишет:

Спасибо, разобрался. На делителе контакт говенний бил.

ГЫЫЫЫЫЫ :)))))))))))))))