Sari la conținut
ELFORUM - Forumul electronistilor

Cod pompe centrala termica (circulare apa)


zahariaiulian

Postări Recomandate

@zahariaiulian: n-ai inteles, nu tu trebuie sa faci ce vrea releul, ci releul trebuie sa faca ce vrei tu. Cu alte cuvinte, desi ai dreptate referitor la semnificatia pinilor, nu esti obligat sa folosesti releul asa. Daca tie iti place mai mult sa opresti releul cand faci pinul LOW, nu e nici o problema *) daca ignori semnificatia pinilor si conectezi releul sa functioneze cum iti trebuie tie.

Tu esti sefu'.

 

*) Singura problema ar putea fi consumul de curent mai mare, daca inversand logica releul va fi alimentat mai mult timp.

 

Stiu foarte bine ce este un releu si ce face. De ce la un sistem de alarma ( detectorul de miscare IR) ai pe el NC / C / NO sau control acces folosesti releul cand nu este alimentat. Iti zic eu.... din motive de securitate. Poate se "buleste bobina" si iti deschide releul. Si, DA, ai dreptate il poti folosi cum vrei. Dar eu o tin pe a mea :))

Link spre comentariu
  • Răspunsuri 26
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Poza schema display, exact asa l-am montat.Ce mai am in plus este pe pinul 10 un buzzer si pe 2 senzorul de temperatura.

Posted Image

 

Aici aveti codul:

// include the library code:#include <LiquidCrystal.h>#include <OneWire.h>#define TEMP_ACTIVARE_POMPA 35  /*pragul la care activezi pompa*/boolean bNevoieSaPompez = false; //memoreaza starea pompei int DS18S20_Pin = 6; //DS18S20 Signal pin on digital 2int P1 = 7; // pompa1int P2 = 8; // pompa2int P3 = 9; // backupint buzzer = 10; // buzzer //Temperature chip i/oOneWire ds(DS18S20_Pin);  // on digital pin 2// initialize the library with the numbers of the interface pinsLiquidCrystal lcd(12, 11, 5, 4, 3, 2);void setup() {  Serial.begin(9600);   pinMode(P1, OUTPUT);   pinMode(P2, OUTPUT);   pinMode(P3, OUTPUT);   pinMode(buzzer, OUTPUT);  // set up the LCD's number of columns and rows:  lcd.begin(16, 2);  // Print a message to the LCD.  }void loop() {  float temperature = getTemp();  Serial.println(temperature); lcd.setCursor(0,0);lcd.print("Temp:");lcd.print(temperature);lcd.setCursor(0,1);lcd.print("P1:");lcd.setCursor(6,1);lcd.print("P2:");lcd.setCursor(12,1);lcd.print("BK:"); //////////////////////////////////////////////// Pompa 1  ////////////////////////////////////////////////////////////// /*                        Pompa 1 porneste la 60 grade si se opreste la 55 grade                                       */ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////if (temperature > 60 ) // Activeaza pompa 1 peste temperatura de 60 grade              {        digitalWrite(P1, LOW);          lcd.setCursor(3,1);        lcd.print("1");       } if (temperature < 55 )  // Dezactiveaza pompa 1 sub temperatura de 55 grade              {        lcd.setCursor(3,1);        lcd.print("0");        digitalWrite(P1, HIGH);          }//-----------------------------------------------Sfarsit cod-----------------------------------------------------------////////////////////////////////////////////////// Pompa 2  ///////////////////////////////////////////////////////////////if((temperature < TEMP_ACTIVARE_POMPA) && (bNevoieSaPompez == false)){   bNevoieSaPompez = true;}if ((temperature >= 35) && bNevoieSaPompez){  digitalWrite(P2, LOW);   // Activeaza pompa 2  lcd.setCursor(9,1);  lcd.print("1");}if (temperature >= 65 ) {   digitalWrite(P2, HIGH);   // Opreste pompa 2   lcd.setCursor(9,1);   lcd.print("0");   bNevoieSaPompez = false; //deactiveaza pompa pana scade temperatura suficient.}     if (temperature < 35){  digitalWrite(P2, HIGH);   // Opreste  lcd.setCursor(9,1);  lcd.print("0");}//-----------------------------------------------Sfarsit cod-----------------------------------------------------------////////////////////////////////////////////////// backup ///////////////////////////////////////////////////////////////if (temperature > 0 )      {      digitalWrite(P3, LOW);   // Activeaza backup      lcd.setCursor(15,1);      lcd.print("1");     }//-----------------------------------------------Sfarsit cod-----------------------------------------------------------////Aici introducem codul pentru buzzer     if (temperature >95 && temperature <100) // Wen a frequency sound    {      digitalWrite (buzzer, HIGH) ;// send voice      delay (400) ;// Delay 1ms      digitalWrite (buzzer, LOW) ;// do not send voice      delay (2000) ;// delay ms    }     if (temperature >101) // Wen a frequency sound    {      digitalWrite (buzzer, HIGH) ;// send voice      delay (200) ;// Delay 1ms      digitalWrite (buzzer, LOW) ;// do not send voice      delay (200) ;// delay ms    }  }  float getTemp(){  //returns the temperature from one DS18S20 in DEG Celsius   byte data[12];  byte addr[8];   if ( !ds.search(addr)) {      //no more sensors on chain, reset search      ds.reset_search();      return -1000;  }   if ( OneWire::crc8( addr, 7) != addr[7]) {      Serial.println("CRC is not valid!");      return -1000;  }   if ( addr[0] != 0x10 && addr[0] != 0x28) {      Serial.print("Device is not recognized");      return -1000;  }   ds.reset();  ds.select(addr);  ds.write(0x44,1); // start conversion, with parasite power on at the end   byte present = ds.reset();  ds.select(addr);     ds.write(0xBE); // Read Scratchpad    for (int i = 0; i < 9; i++) { // we need 9 bytes    data[i] = ds.read();  }   ds.reset_search();   byte MSB = data[1];  byte LSB = data[0];   float tempRead = ((MSB << 8) | LSB); //using two's compliment  float TemperatureSum = tempRead / 16;   return TemperatureSum;}

Problema asta ma depaseste. Daca aprind o lampa ( veioza ) langa arduino o ia razna displayul. Daca pornesc uscatorul de par l-a fel face..... Nu inteleg ce treaba are chestia asta..... Am facut fel si fel de teste. Nu stiu ce sa ii fac!

Editat de zahariaiulian
Link spre comentariu

incearca si cu un cond de 0,1 micro direct pe alimentarea lcd-ului

Degeaba.

Poate decuplezi alimentarea de pe breadboard cu un condensator de 10uF ... 100uF si unul de 100nF.

Alimentarea ansamblului cu ce o faci?

Poti fii mai explicit? 

Alimentearea o dau dintr-o sursa sau din baterie si cum aprind o lampa langa imi crapa display-ul.

Link spre comentariu

da, as putea fi mai explicit.

Pe breadboard, intre barele de + si - montezi in paralel un condensator de 100nf si unul de 100uF. Mai poti monta o bobina de 100uH intre sursa de alimentare si breadboard, flancata de 2 condensatori de 10uF (asta se constituie intr-un filtru trece-jos) si ar mai fi si alte solutii. Aplica una din cele doua de mai sus si spune ce rezultate ai.

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări