Gestire la temperatura di 4 MK2B su MendelMax 400x400 January 08, 2015 02:33PM |
Registered: 9 years ago Posts: 14 |
#include #include #define RELAY1 6 #define RELAY2 7 #define RELAY3 8 #define RELAY4 9 LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2); int backLight = 13; const float baselineTemp = 100.0; // set temperatura da mantenere void setup() { pinMode(backLight, OUTPUT); pinMode(RELAY1, OUTPUT); pinMode(RELAY2, OUTPUT); pinMode(RELAY3, OUTPUT); pinMode(RELAY4, OUTPUT); digitalWrite(backLight, HIGH); lcd.begin(16, 2); lcd.clear(); lcd.setCursor(0,0); } double NTC1(int RawADC) { double T1; T1 = log(((10240000/RawADC) - 10000)); T1 = 1 / (0.001129148 + (0.000234125 * T1) + (0.0000000876741 * T1 * T1 * T1)); T1 = T1 - 273.15; return T1; } double NTC2(int RawADC) { double T2; T2 = log(((10240000/RawADC) - 10000)); T2 = 1 / (0.001129148 + (0.000234125 * T2) + (0.0000000876741 * T2 * T2 * T2)); T2 = T2 - 273.15; return T2; } double NTC3(int RawADC) { double T3; T3 = log(((10240000/RawADC) - 10000)); T3 = 1 / (0.001129148 + (0.000234125 * T3) + (0.0000000876741 * T3 * T3 * T3)); T3 = T3 - 273.15; return T3; } double NTC4(int RawADC) { double T4; T4 = log(((10240000/RawADC) - 10000)); T4 = 1 / (0.001129148 + (0.000234125 * T4) + (0.0000000876741 * T4 * T4 * T4)); T4 = T4 - 273.15; return T4; } void loop() { double t1 = NTC1(analogRead(0)); double t2 = NTC2(analogRead(1)); double t3 = NTC3(analogRead(2)); double t4 = NTC4(analogRead(3)); lcd.clear(); lcd.setCursor(0,0); lcd.print("T1:"); lcd.print(t1); lcd.setCursor(7,0); lcd.print(" T2:"); lcd.print(t2); lcd.setCursor(15,0); lcd.print(" "); lcd.setCursor(0,1); lcd.print("T3:"); lcd.print(t3); lcd.setCursor(7,1); lcd.print(" T4:"); lcd.print(t4); lcd.setCursor(15,1); lcd.print(" "); if(t1 > baselineTemp){ digitalWrite(RELAY1,HIGH); } if(t1 < baselineTemp){ digitalWrite(RELAY1,LOW); } if(t2 > baselineTemp){ digitalWrite(RELAY2,HIGH); } if(t2 < baselineTemp){ digitalWrite(RELAY2,LOW); } if(t3 > baselineTemp){ digitalWrite(RELAY3,HIGH); } if(t3 < baselineTemp){ digitalWrite(RELAY3,LOW); } if(t4 > baselineTemp){ digitalWrite(RELAY4,HIGH); } if(t4 < baselineTemp){ digitalWrite(RELAY4,LOW); } delay(5000); }
Re: Gestire la temperatura di 4 MK2B su MendelMax 400x400 January 16, 2015 03:34AM |
Registered: 9 years ago Posts: 14 |
Re: Gestire la temperatura di 4 MK2B su MendelMax 400x400 January 18, 2015 02:08PM |
Registered: 9 years ago Posts: 484 |
Re: Gestire la temperatura di 4 MK2B su MendelMax 400x400 January 18, 2015 02:36PM |
Registered: 10 years ago Posts: 6,409 |
Re: Gestire la temperatura di 4 MK2B su MendelMax 400x400 January 18, 2015 03:26PM |
Registered: 9 years ago Posts: 14 |
Re: Gestire la temperatura di 4 MK2B su MendelMax 400x400 January 18, 2015 03:39PM |
Registered: 9 years ago Posts: 14 |
Quote
MagoKimbra
Grande... Allora facciamo un bel giochino visto che hai delle ottime capacità di programmazione. Proviamo a fare un comando Tx-Rx in modo che la scheda master Arduino mega, dica alla scheda figlia arduino uno che hai, la temperatura che deve arrivare il bed. A questo punto la figlia si smazza la gestione dei 4 bed e restituisca alla madre la temperatura media dei 4. Aggiungendo questo comandino possiamo applicare a qualsiasi scheda la tua soluzione per pilotare 2 o più bed.....
Che ne dici??
Io ti posso aiutare a livello software su marlin, o meglio Marlinkimbra...
Re: Gestire la temperatura di 4 MK2B su MendelMax 400x400 January 18, 2015 04:36PM |
Registered: 9 years ago Posts: 14 |
#include #include #define RELAY1 6 #define RELAY2 7 #define RELAY3 8 #define RELAY4 9 LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2); int backLight = 13; // pin 13 controllo retroilluminazione const float baselineTemp = 25.0; //set temperatura void setup() { pinMode(backLight, OUTPUT); pinMode(RELAY1, OUTPUT); pinMode(RELAY2, OUTPUT); pinMode(RELAY3, OUTPUT); pinMode(RELAY4, OUTPUT); digitalWrite(backLight, HIGH); // accende retroilluminazione. Sostituire 'HIGH' con 'LOW' per spegnerla lcd.begin(16, 2); // righe, colonne. utilizzare 20,4 per 20x4 LCD, etc. lcd.clear(); // iniziare con uno schermo in bianco lcd.setCursor(0,0); // set cursore colonna 0, riga 0 } double NTC(int RawADC) { double T; T = log(((10240000/RawADC) - 10000)); T = 1 / (0.001129148 + (0.000234125 * T) + (0.0000000876741 * T * T * T)); T = T - 273.15; // Conversione Gradi Kelvin in Celcius return T; } void loop() { double t1 = NTC(analogRead(0)); // ingresso sensore 1 double t2 = NTC(analogRead(1)); // ingresso sensore 2 double t3 = NTC(analogRead(2)); // ingresso sensore 3 double t4 = NTC(analogRead(3)); // ingresso sensore 4 lcd.clear(); lcd.setCursor(0,0); lcd.print("T1:"); lcd.print(t1); lcd.setCursor(7,0); lcd.print(" T2:"); lcd.print(t2); lcd.setCursor(15,0); lcd.print(" "); lcd.setCursor(0,1); lcd.print("T3:"); lcd.print(t3); lcd.setCursor(7,1); lcd.print(" T4:"); lcd.print(t4); lcd.setCursor(15,1); lcd.print(" "); if(t1 > baselineTemp){ digitalWrite(RELAY1,HIGH); } if(t1 < baselineTemp){ digitalWrite(RELAY1,LOW); } if(t2 > baselineTemp){ digitalWrite(RELAY2,HIGH); } if(t2 < baselineTemp){ digitalWrite(RELAY2,LOW); } if(t3 > baselineTemp){ digitalWrite(RELAY3,HIGH); } if(t3 < baselineTemp){ digitalWrite(RELAY3,LOW); } if(t4 > baselineTemp){ digitalWrite(RELAY4,HIGH); } if(t4 < baselineTemp){ digitalWrite(RELAY4,LOW); } delay(1000); }