Capteur de temperature Attiny

Bonsoir à tous,

Mon montage est actuellement fonctionnel, Attiny + ds18b20 + Nrf24l01, le tout alimenté par une pile ultrafire 18650.

Le problème est que le capteur de temperature DS18B20 ne fonctionne pas en dessous de 3V.

Je cherche donc un capteur de temperature, si possible 1Wire fonctionnant en dessous de 3V.
Quelqu'un a t-il un capteur à me conseiller ?

Merci d'avance

alb12:
Bonsoir à tous,

Mon montage est actuellement fonctionnel, Attiny + ds18b20 + Nrf24l01, le tout alimenté par une pile ultrafire 18650.

Le problème est que le capteur de temperature DS18B20 ne fonctionne pas en dessous de 3V.

Je cherche donc un capteur de temperature, si possible 1Wire fonctionnant en dessous de 3V.
Quelqu'un a t-il un capteur à me conseiller ?

Merci d'avance

Bonsoir
est tu sur d'avoir pris le probleme par le bon "bout" ? :grin:

un "vrai" DS18B20 s'alimente entre min 3 et max 5.5V

une ultrafire est donnée pour 3.7V

premiere question à te poser : par quelle "methode/mode" ton DS18B20 est il alimenté ?

  • alim locale ?
  • alim parasite (mode parasitic power) ?

Voila comment est branché le DS18B20 :

L'ultrafire alimente directement l'attiny

Je pense que tu suis une mauvaise piste. Il est déconseillé de faire chuter la tension d’une LITHIUM-ION en dessous de 3V.

Soit dit en passant les ULTRAFIRE de soit disant 6000mAH font en réalité moins de 1000mAH.

J’alimente avec une petite batterie 16340 de 225 mAH un ARDUINO PRO MINI 3.3V, un DS18b20 et un NRF24L01.
Ce thermomètre connecté est en service depuis le 10 décembre 2017 et la batterie est à encore à 69% de capacité, sans avoir été rechargée.

Avec un ATTINY cela doit être encore plus facile.
Tu dois avoir un problème hard ou logiciel quelque part.

Quel régulateur 3.3V utilises-tu pour le NRF24L01 ?

Je connais quelques capteurs fonctionnant en dessous de 3V, mais tous en I2C : RitonDuino: Les capteurs de température, humidité, pression & luminosité.

Je sais, I2C sur ATTINY :smiley_cat: mais cela ne doit pas être impossible.
L’ATTINY est-il une obligation ?

Mais encore une fois, LITHIUM-ION < 3V = mort assurée.

@+

L’attiny est surtout utilisé pour un gain de place et j’ai plusieurs modules qui tournent sous attiny .

Ok je remet en charge tout de suite les ultrafire car environ à 2.4V

Pour le capteur de température je n’utilise pas de régulateur de tension car l’alimentation ne dépasse pas 3.7V.

voici les branchements de la partie hard :

Soft:

#include <RF24.h>
#include <RF24Network.h>
#include <avr/sleep.h>
#include <avr/power.h>
#include <init_variable_attiny.h>

#include <OneWire.h>
#define ONE_WIRE_BUS 0

const byte this_node = 041;
const byte other_node = 0;

void enterSleep(void)
{
  radio.powerDown();
  sleep_mode();
}

void setup() {
  adc_disable(); // ADC uses ~320uA
  ac_disable();
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);
  radio.begin();
  radio.setDataRate(RF24_250KBPS);
  network.begin(1,this_node);
  wdt_count =255;
}

void getTemp()
{ 
 int temp, LowByte, HighByte;
 byte data[9], i;
 time = millis();
 if( time >= difference) 
 {
 oneWire.reset();       // reset one wire buss
 oneWire.skip();        // select only device
 oneWire.write(0x44,1);   // start conversion and wait end mesure // capteur.write(instruction,mode);     instruction : le code d'instruction à envoyer au capteur ( 1 octet).      mode : mode d'alimentation du capteur à utiliser après envoi de l'instruction. 0 par défaut. Mettre à 1 si alimentation par la broche de communication (mode "parasite").
 delay(850);
 oneWire.reset();
 oneWire.skip();
 oneWire.write(0xBE);   // Read Scratchpad
 for ( i = 0; i < 9; i++)      // 9 bytes
 { 
 data[i] = oneWire.read();
 }

 LowByte = data[0];
 HighByte = data[1];
 temp =  ((HighByte << 8) +LowByte);
 
 temp = (6 * temp) + temp / 4; 

 if (temp != -127 && temp != 8500 && LowByte != 250 && HighByte != 255)
 {
 SendDataRF24(ONE_WIRE_BUS, temp, 0,other_node,0); // Fonction permettant l'envoi des données
 }
 
 difference = time + 60500; 
 }
}

void loop() {
    radio.powerUp();
    getTemp();
    watchdog_start_interrupt(8);      // prescale of 8 ~= 4sec    
    while(wdt_count < 15)// Wait 15 watchdog interupts (~60secs)
    {
      enterSleep();
    }
    watchdog_stop();
}

Transmission des données toutes les minutes

Ok je remet en charge tout de suite les ultrafire car environ à 2.4V

AÏE ...

Pour le capteur de température je n'utilise pas de régulateur de tension car l'alimentation ne dépasse pas 3.7V.

C'est risqué pour le NRF24L01, car ta batterie chargée à bloc fera 4.2V, et d'après la datasheet, 3.6V est le maximum.

Personnellement j'utilise un LM2936. mais il y a encore mieux : RitonDuino: Les régulateurs LDO, HT7533-1 par exemple.

@+

alb12:
L'attiny est surtout utilisé pour un gain de place et j'ai plusieurs modules qui tournent sous attiny .

Ok je remet en charge tout de suite les ultrafire car environ à 2.4V

Pour le capteur de température je n'utilise pas de régulateur de tension car l'alimentation ne dépasse pas 3.7V.

voici les branchements de la partie hard :

Déjà pour moi , voir sur un dispo 1wire une R codée primairement rouge rouge marron , "çà le fait pas bien "
:sleeping:

Artouste:
Déjà pour moi , voir sur un dispo 1wire une R codée primairement rouge rouge marron , "çà le fait pas bien "
:sleeping:

En effet erreur de ma part.
Dans mon montage la resistance est correct 4.7Kohms jaune violet rouge

TLV1117 :

  • drop-out = 1.1V
  • quiescent current = 5mA

Pas étonnant que la batterie se décharge vite. Très mauvais choix.
De plus le drop-out de 1.1V te limite en décharge de batterie. Quand ta batterie ne fait plus que 3V, il te reste 1.9V de tension en sortie. Pas terrible.

LM2936 :

  • drop-out = 200mV
  • quiescent current = 15µA
  • boîtier TO92 ou CMS

HT7333-1 :

  • drop-out = 100mV
  • quiescent current = 2.5µA
  • boîtier TO92 ou CMS
  • le champion toute catégorie !

@+

Non je me suis mal exprimé je pense.
Sur le montage actuel du capteur de température, il n’y a pas de régulateur de tension.
Ce regulateur est utilisé sur des montages alimenté directement sur le courant domestique.

Du fait qu’il n’y ai pas de regulateur, je ne comprend pas comment cela peut viser la pile aussi rapidement.
Penses tu que mon code pose problème?
Quelle solution pour éviter que ultrafire descende en dessous de 3v ?

Alors il faudrait mesurer ta consommation.
Tu as peut-être un problème logiciel. L'ATTINY est-il en mode veille lorsqu'il ne fait pas de mesure ?

Il n'en reste pas moins que sans régulateur, la tension à pleine charge de 4.2V sera trop importante pour le NRF24L01.

Je te rejoins sur le 4,2V et je vérifie la tension avant de mettre la pile. Mais lorsque je referait le montage je verrai pour y intégrer un régulateur.
En attendant j'essaye de trouver la solution à mon problème, peut être augmentée le temps entre chaque envoi aussi.

Quelle solution pour éviter que ultrafire descende en dessous de 3v ?
En principe je passe l'attiny en veille, si tu peux regarde mon code pour me donner ton avis.
Toujours bon à prendre les conseils.

Merci

Quelle solution pour éviter que ultrafire descende en dessous de 3v ?

Je mesure la tension avec une pin analogique de l’ARDUINO, et un pont diviseur comme ici :

Ensuite les infos température et capacité batterie sont remontées sur un serveur DOMOTICZ.
Il faut que je surveille pour l’instant mais à terme il faut que j’envisage une autre solution : LED clignotante sur le serveur par exemple.

Mais pour mesurer la tension batterie, il faut une référence de tension autre que la tension d’alimentation.

L’ATTINY possède je crois une référence interne. 2.56V il me semble ?

@+

Je vais voir pour trouver ce qui peut poser problème dans mon code, peut être l'envoie toute les minutes ou la gestion du sleep.
Puis pourquoi pas changer pour autre chose que des batteries Li-Ion

peut être l'envoie toute les minute

J'utilise une période de 15 minutes. C'est bien suffisant.

Puis pourquoi pas changer pour autre chose que des batteries Li-Ion

Normalement une petite batterie de 200mAH pour deux ans devraient suffire.

il faut mesurer ta consommation en veille avant tout.

J'avais choisi toute les minutes car les stations météo du commerce transmettent toutes les minutes et durent dans le temps.

Je verrai pour mesurer la consommation en veille mais j'utilise la fonction sleep.

Pour moi une pile bouton type cr2032 devrait faire l'affaire pour ce type de montage et dans ce cas pas besoin de régulateur :wink:

cr2032 est suffisante.

Normalement le NRF24L01 doit consommer 10mA quand il émet.

Il est probable que le calibre µA du multimètre soit trop résistif pour autoriser le boot de l'ATTINY. La tension va chuter trop fortement.

Pour mesurer le courant, tu doit d'abord démarrer sur le calibre mA du multimètre, attendre le mode veille et basculer sur le calibre µA, rapidement pour éviter la coupure.
Mais tous les multimètres ne permettent pas ça.
Mais il est possible aussi que le calibre mA soit suffisant, si tu as vraiment un problème.

Personnellement j'utilise un micro-ampèremètre à base d'INA226. C'est plus facile.

Hello,

je viens d'effectuer les mesures.
Attiny alimenté via le 3V d'un arduino uno.

Consommation : 16mA
Ne passe pas en mode sleep apparemment

Il n'y a plus qu'à inspecter le code.
Je ne connais pas l'ATTINY, mais il y a peut-être du monde sur le forum qui connaît.

@+