Sonde de température complète
Prérequis :
- Savoir programmer un Attiny85. (Voir l'article comment programmer un Attiny85)
Le schéma :
Notre montage sera alimenté par une pile 9V. Un régulateur de voltage abaisse cette tension à 5V. Le régulateur est accompagné de 2 condensateur (C3 et C1) comme préconisé dans la datasheet. Le condensateur C2 sert de condensateur de découplage à l'Attiny85.
Notre sonde sera branché sur la broche 3 (D4) de l'Attiny85 avec une résistance de tirage (R4).
L'afficheur LCD sera branché sur la broche 7 (SCL) et 5 (SDA) de l'Attiny85.
Branchement :
Notre montage sera installé sur une plaque de prototypage 3x7cm.
Voici un exemple d'implantation des composants :
Attention au sens de branchement de la pile 9V. Il n'y a pas de protection contre l'inversion de polarité.
Vous pouvez souder directement les fils du connecteur de batterie, lcd et sonde de température ou utiliser des connecteurs.
Programme.
Le programme va être sensiblement le même que l'article 9/ L'afficheur LCD
Pour fonctionner le programme a besoin de 2 librairies :
- LiquidCrystal_I2C (modifié pour prendre en compte l'attiny85)
- TinyWireM-master
Il faudra également connaitre l'adresse I2C de votre afficheur. Pour cela je vous invite à consulter l'article : 9/ L'afficheur LCD
#include
#include "OneWire.h"
#include "DallasTemperature.h"
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x3f, 16, 2);
#define ONE_WIRE_BUS 4
// On définit le OneWire
OneWire oneWire(ONE_WIRE_BUS);
// Et on le passe en réfence de la librairie Dallas temperature
DallasTemperature sensors(&oneWire);
// On définit les variables
float tmin,tmax,tnow,tlast;
// Flèche haut
byte upArrow[8]={
B00100,
B01110,
B10101,
B00100,
B00100,
B00100,
B00100,
B00100
};
// Flèche bas
byte downArrow[8]={
B00100,
B00100,
B00100,
B00100,
B00100,
B10101,
B01110,
B00100
};
void setup() {
// On initialise le LCD
lcd.begin();
// On allume le rétroéclairage
lcd.backlight();
lcd.clear();
lcd.createChar(0, upArrow);
lcd.createChar(1, downArrow);
// on initialise la librairie Dallas
sensors.begin();
// on initialise la température max et min.
tmin = 125;
tmax = -55;
tlast = 0;
}
void loop() {
//On demande la température
sensors.requestTemperatures();
tnow = sensors.getTempCByIndex(0);
if(tnow!=tlast) {
tlast=tnow;
if(tnow<tmin)
tmin=tnow;
if(tnow>tmax)
tmax=tnow;
// On affiche le résultat sur le LCD.
lcd.clear();
lcd.print(" ");
lcd.print(tnow);
lcd.write(223);
lcd.print("C");
// Température mini
lcd.setCursor(0,1);
lcd.write(1);
lcd.print(tmin);
lcd.write(223);
lcd.print(" ");
// Température maxi
lcd.write(0);
lcd.print(tmax);
lcd.write(223);
}
// on attend 1 seconde
delay(1000);
}
Mise en boitier.
Si vous avez une imprimante 3D, je met à votre disposition les fichiers STL du boitier.
Télécharger l'archive en cliquant ici.
L'archive contient 4 fichiers STL :
Base.stl
Chapeau.stl
Face.stl
Lcd.stl
Et voici le résultat :
J'ai besoin de :
1 X Plaque de prototypage 3x7
3 X Condensateur électrolytique
0,1 uF - 1 uF - 10 uF
1 X Connecteur Broche mâle (Pin header)
1 X Résistances
4k7 (Rouge - Violet - Jaune)
1 X ATTINY85
1 X Régulateur 5V
1 X Connecteur pile 9V
1 X LCD 16X2 - I2C
1 X Sonde de température Dallas DS18B20