Go Down

Topic: pilotare relè mediante uln2803 (Read 12850 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


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);

Go Up