Go Down

Topic: pilotare relè mediante uln2803 (Read 5111 times) previous topic - next topic

PaoloP

Sono giusti.
Pubblica lo sketch. L'errore potrebbe essere lì.

pajehali

#31
Apr 08, 2013, 08:08 pm Last Edit: Apr 08, 2013, 10:33 pm by UweFederer Reason: 1

Code: [Select]
#include <OneWire.h>
#include <DallasTemperature.h>

int LED=13;                //Pin7 = LED
int setPoint=20;                 //setpoint
int rele_1 = 7;              //uscita relè 1 sul pin 7 di arduino

// Data wire is plugged into pin 2 on the Arduino
#define ONE_WIRE_BUS 2

// Setup a oneWire instance to communicate with any OneWire devices
// (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);

void setup(void)
{
 // start serial port
 Serial.begin(9600);
 Serial.println("Dallas Temperature IC Control Library Demo");

 // Start up the library
 sensors.begin();
}


void loop(void)
{
 if (sensors.getTempCByIndex(0) >= setPoint)                        //temperatura maggiore o uguale a 20 led acceso
 {
   digitalWrite (LED, LOW);        //led spento
   digitalWrite(rele_1, LOW);       // relè spento
 }
 else                                                              //temperatura minore o uguale a 20 led spento
 {
   digitalWrite (LED, HIGH);      //led acceso
   digitalWrite(rele_1, HIGH);       // relè acceso
 }
 

 // call sensors.requestTemperatures() to issue a global temperature
 // request to all devices on the bus
 Serial.print(" Requesting temperatures...");
 sensors.requestTemperatures(); // Send the command to get temperatures
 Serial.println("DONE");

 Serial.print("Temperature for Device 1 is: ");
 Serial.print(sensors.getTempCByIndex(0)); // Why "byIndex"?
   // You can have more than one IC on the same bus.
   // 0 refers to the first IC on the wire
  delay (3000);            //aspetta 3secondi
 
}

erpomata

http://www.paologiammarco.it
http://www.valentinamagni.it

PaoloP

Il primo sensors.getTempCByIndex(0) non credo funzioni senza il request che fai dopo.
Poi l'IF fa un confronto tra un float e un int. Forse fa il cast in automatico, forse no.

pajehali


Il primo sensors.getTempCByIndex(0) non credo funzioni senza il request che fai dopo.
Poi l'IF fa un confronto tra un float e un int. Forse fa il cast in automatico, forse no.


paolo come correggeresti lo sketch?
ho rismontato e rimontato tutto il circuito escludendo quindi problemi di natura hardware.
tieni presente che la logica "gira" nel senso che monitorando il tutto con il serialmonitor, quando la temperatura è inferiore a quella di soglia il led si accende e l'uln mi eroga i 12V ai capi della bobina viceversa quando la temperatura è superiore il led si spegne ed ai capi della bobina ho 0V.
Ho fatto caso al fatto che la lucina del led è molto flebile nonostante la resistenza sottodimensionata e questo potrebbe significare in qualche modo che non ho un uscita "vera" cioè tale da alimentare correttamente il led e quindi anche darmi i circa 45mA necessari all'eccitazione della bobina.
ma queste sono solo considerazioni di un nubbio che ormai le ha già provate tutte ed inizia a dubitare di tutto...

PaoloP

Azz!  :smiley-eek:
Hai dimenticato il pinmode.  :smiley-mr-green:

Nel setup()
pinmode(LED, OUTPUT);
pinmode(rele_1, OUTPUT);

pajehali

ok, con i pinMode funziona tutto!!
grazie a tutti quelli che sono intervenuti e che mi hanno aiutato con un particolare ringraziamento a PaoloP che ha scoperto l'inghippo!
abbiate pazienza ma non accendevo un arduino da più di un anno ed il fatto che rispondesse alla logica mi aveva fatto escludere problematiche di natura software...

vado a collegare il termostato!!! a presto!!

Go Up