Sensore di temperatura+relè+motore

Ciao a tutti, sono alle prime armi con Arduino e vi chiedo gentilmente di aiutarmi a risolvere questo dubbio, che per voi sarà banale :cold_sweat: ...
Il mio obiettivo è di avviare e fermare un motorino (che poi verrà sostituito da una piastra elettrica che farà da drive per un processo termico) con un relè in base alla temperatura controllata dal sensore MAX31850.
Ho collegato il relè ai 5V, al GND e al pin 7 di arduino. In uscita ho 2 cavi, uno collegato tramite breadbord al + di una batteria da 9V e l'altro è quello che deve dare corrente al motorino quando il relè si attiva. La terza uscita è quella normalmente chiusa del relè.
Il sensore di temperatura funziona (collegato al gnd,5V e pin 2).
ALLEGO lo schema per chiarezza.
Il problema penso sia a monte del relè, in quanto non mi switcha il contatto.

riporto qua sotto il codice utilizzato:

#include <LiquidCrystal.h>
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS_1 2
OneWire oneWire_1(ONE_WIRE_BUS_1);
DallasTemperature sensor1(&oneWire_1);
const float baselineTemp = 24.0; //temperatura impostata
int relayPin = 7;

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(relayPin, OUTPUT);
//digitalWrite(relayPin,HIGH);
delay(500);
sensor1.begin();
}

void loop() {
// put your main code here, to run repeatedly:

sensor1.requestTemperatures(); // Send the command to get temperatures
float temp_meas=sensor1.getTempCByIndex(0);
Serial.println(temp_meas);

if(temp_meas<=baselineTemp){
digitalWrite(relayPin,HIGH);
Serial.print(temp_meas);
Serial.println("ACCENDI");
delay(500);
}
else if(temp_meas>baselineTemp){
digitalWrite(relayPin,LOW);
delay(500);
}

}

Cattura.PNG

Buonasera,
prima di tutto, essendo il tuo primo post, nel rispetto del regolamento (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ...

... poi, in conformità al suddetto regolamento, punto 7, devi editare il tuo post (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More -> Modify che si trova in basso a destra del tuo post) e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

Grazie,

Guglielmo

ciao :slight_smile:

dici che il problema sta nel blocco relè .... ci sono delle prove che puoi fare per capirlo :slight_smile:

  1. quando il relè è eccitato senti un piccolo clic (poi dipende dal relè)
  2. usa il tester per vedere se effettivamente il relè chiude il contatto
  3. sostituisci il relè temporaneamente con un led per vedere che non ci siano problemi nel codice
    3b) senza sostituire il relè con un led prova questo sketch
void setup() {
  pinMode(PIN_RELE, OUTPUT);
  

}

void loop() {
  digitalWrite(PIN_RELE,HIGH);
  delay(10000);
  digitalWrite(PIN_RELE,LOW);
  delay(10000);

}

compilando il motore dovrebbe girare per 10 secondi, e stare fermi per 10 secondi

facci sapere :slight_smile:

PS comunque il codice da postato va poi modificato sugli IF ... ma facciamo un passo alla volta :slight_smile:

MD