Warmtekast Arduino Nakijken

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 1
Geregistreerd: 05 Mrt 2016, 12:17

Warmtekast Arduino Nakijken

Berichtdoor JoostDingemans » 05 Mrt 2016, 12:26

Hoi allemaal!

Ik ben vorige week gestart met mijn eerste Arduino project samen met een collega-arduino-beginner. We zijn bezig met een box gemaakt van MDF die warm gemaakt wordt doormiddel van een strijkijzer zodat we met verschillende lijmsoorten kunnen werken die met hele specifieke temperaturen werken tussen de 60 en 80 graden. Het strijkijzer zit aan een relay en in de box hangt een ventilator voor luchtcirculatie met daarbij een LM36 temperatuurmetertje die het relay aan en uit zet. Heel leuk om aan te werken! We hebben alleen het probleem dat wanneer de warmtekast warm genoeg is de stralingswarmte van het strijkijzer het daar binnen nog 10 graden omhoogpompt ook al staat ie uit. We hebben hiervoor een code geschreven waarbij hopelijk het strijkijzer eerst wat heftiger de ruimte verwarmt en dit steeds geleidelijker aan doet met if/else commands. We hebben dit programma nog niet gerund omdat we maandag pas weer bij ons strijkijzer kunstwerkje kunnen en ik hoopte dat iemand even naar onze code zou kunnen kijken of deze klopt. (als ik op Verifiëer druk vind Arduino het allemaal prima maar bij zijn computer niet terwijl het de zelfde code is). Tips en tricks zijn altijd welkom en zou het erg waarderen!

Hier is de code:
cpp code
const int temperaturePin = 0;
#define relay 2
#define TEMPTRIGGER1 45
#define TEMPTRIGGER2 50
#define TEMPTRIGGER3 55
#define TEMPTRIGGER4 60

void setup()
{ Serial.begin(9600);
pinMode(relay,LOW);}

void loop()
{ float voltage, degreesC, degreesF;
voltage = getVoltage(temperaturePin);
degreesC = (voltage - 0.5) * 100.0;

Serial.print("voltage: "); Serial.print(voltage);
Serial.print(" deg C: "); Serial.println(degreesC);

if(degreesC>=TEMPTRIGGER1){
digitalWrite(relay, LOW);}//low=uit

else{
digitalWrite(relay, HIGH);//low=uit
delay(1000);
digitalWrite(relay, LOW);//high=aan
delay(3000);}

delay(100);

voltage = getVoltage(temperaturePin);
degreesC = (voltage - 0.5) * 100.0;

Serial.print("voltage: "); Serial.print(voltage);
Serial.print(" deg C: "); Serial.println(degreesC);

if(degreesC>=TEMPTRIGGER2){
digitalWrite(relay, LOW);}//high=uit

else{
digitalWrite(relay, HIGH);//low=uit
delay(750);
digitalWrite(relay, LOW);//high=aan
delay(3000);}

delay(100);

voltage = getVoltage(temperaturePin);
degreesC = (voltage - 0.5) * 100.0;

Serial.print("voltage: "); Serial.print(voltage);
Serial.print(" deg C: "); Serial.println(degreesC);

if(degreesC>=TEMPTRIGGER3){
digitalWrite(relay, LOW);}//high=uit

else{
digitalWrite(relay, HIGH);//low=uit
delay(500);
digitalWrite(relay, LOW);//high=aan
delay(4000);}

delay(100);

voltage = getVoltage(temperaturePin);
degreesC = (voltage - 0.5) * 100.0;

Serial.print("voltage: "); Serial.print(voltage);
Serial.print(" deg C: "); Serial.println(degreesC);

if(degreesC>=TEMPTRIGGER4){
digitalWrite(relay, LOW);}//high=uit

else{
digitalWrite(relay, HIGH);//low=uit
delay(50);
digitalWrite(relay, LOW);//high=aan
delay(500);}

delay(1000);}

float getVoltage(int pin)
{ return (analogRead(pin) * 0.004882814);}


Probeer eens CTRL-T in te toetsen. Maakt de code beter leesbaar.

Advertisement

Berichten: 4068
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Warmtekast Arduino Nakijken

Berichtdoor shooter » 07 Mrt 2016, 11:17

pinmode is fout,
en eigenlijk moet je zoeken naar een regel functie ofwel PI of PID.
met een solid state relais kun je dan PWM gaan sturen.
met een gewoon relais is het beter om met een periode te werken van een 10 seconden.
dan staat de regeling bijv op 35 % en dan heb je dus 3.5 seconden aan en 6.5 uit.

als beginnetje (eigen P regeling)
setpoint = 63
input=degreesC;

uitgang=50+((setpoint-input)*10) is procenten
digitalWrite(uitpin,high);
delay (uitgang*100)
digitalWrite(uitpin,low);
delay(100-uitgang)*100);

beetje cryptisch, maar daar leer je het beste van.
en ja het is niet mooi en delay is ook niet slim, maar het geeft jullie idee.

opdrachten: Haal de delay eruit en vervang door timers.
voeg een I actie toe.
paul deelen
shooter@home.nl

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 6 gasten