J’ai créé un programme avec une sonde DS18B20 qui prend la température l’affiche sur un LCD. Un ventilateur d’ordinateur 12V est branché sur un LN298N ( deja sous la main donc pas mis de relai ). Dans mon programme tout fonctionne la température est bien affiché ect mais le ventilateur ne se lance pas quand la température dépasse 30 degré
Et pourtant le LCD indique aussi 30 degré on dirais qu’il n’y a pas assez de puissance pour lancer le ventilo.. j’ai ce même problème avec une porte de poule automatique
J’ai l’impression que le LN298N ne délivre pas ces 12 V peut être une erreur de programme ?
Une idée ?
#include <DallasTemperature.h>
#include <OneWire.h>
#include <LiquidCrystal_I2C.h>
const long interval = 1000;// variable delay sans arrêt du programme qui prevoit une lecture de 1 seconde par mesure
unsigned long previousMillis = 0;//variable delay sans arrêt du programme
//LiquidCrystal_I2C lcd(0x27, 20, 4);
//LiquidCrystal_I2C lcd(0x3F,20,4);
LiquidCrystal_I2C lcd(0x27, 16, 2);
int D2 = 2;//monté
int D3 = 3;//descente
OneWire oneWire(6); //PIN digital de la sonde sur la pin 2 de l'arduino
DallasTemperature sensors(&oneWire); //Utilistion du bus Onewire pour les capteurs
DeviceAddress sensorDeviceAddress; //Vérifie la compatibilité des capteurs avec la librairie
void setup()
{
Serial.begin(9600);
// démarrage la liaison série entre entrée analogique et ordi
sensors.begin(); //Sonde activée
sensors.getAddress(sensorDeviceAddress, 0); //Adresse de la sonde à 0
sensors.setResolution(sensorDeviceAddress, 12); //Résolutions
pinMode(D2, OUTPUT);
pinMode(D3, OUTPUT);
}
void loop()
{
delay(10000);
lcd.init();
lcd.backlight();
sensors.requestTemperatures(); //Demande la température aux capteurs
lcd.setCursor (0, 0);//au caractére 3 de la ligne 0
lcd.print (" Temperature ");
lcd.setCursor (2, 1); //au caractére 2 de la ligne 1
lcd.print(sensors.getTempCByIndex(0)); //Information récupérée sur l'adresse 0 de la sonde
lcd.setCursor (9, 1);//au caractére 9 de la ligne 1
lcd.print (" Degres");
Serial.print(sensors.getTempCByIndex(0));
int val;
val=sensors.getTempCByIndex(0);
if (val >30)
{
digitalWrite(D2, 0);
digitalWrite(D3, 1);
}
else
{
digitalWrite(D2, 0);
digitalWrite(D3, 0);
}}