Solfångare & strålningsvärme controller (6 / 8 steg)
Steg 6: Programmera Arduino
Nästa steg är att lägga programkoden till Arduino. För detta behöver vi ladda ner några gratis IDE programvara från denna webbplats (http://arduino.cc/en/Main/Software). Ladda ner den mest aktuella IDE programvara som är tillgänglig på webbplatsen.
1. Hämta och installera programvara från platsen.
2. öppna programmet och sedan ansluta Arduino klustret till datorn Via USB-porten.
3. Välj verktyg/styrelse och Arduino som du använder.
3. Välj verktyg/Port och markera den port som är valbara.
4. Hämta och öppna filen nedan eller starta en ny fil och kopiera och klistra in koden nedan.
5. Tryck på högerpilen i programmet du vill ladda upp skissen till din Arduino.
Titel: Solfångare & strålningsvärme rutnät Controller
Datum: 12/01/14
Författare: Chris Biblis (min första Adruino projekt)
#include
LiquidCrystal lcd (8, 9, 4, 5, 6, 7);
definiera vissa värden används av panel och knappar
int lcd_key = 0;
int adc_key_in = 0;
#define btnRIGHT 0
#define btnUP 1
#define btnDOWN 2
#define btnLEFT 3
#define btnSELECT 4
#define btnNONE 5
Läs knapparna
int read_LCD_buttons() {
adc_key_in = analogRead(0);
knappar när läser är centrerade på dessa valies: 0, 144, 329, 504, 741
Vi lägger ca 50 till de värden och se efter om vi är nära
om (adc_key_in > 1000) return btnNONE;
om (adc_key_in < 50) återvänder btnRIGHT;
om (adc_key_in < 250) återvänder btnUP;
om (adc_key_in < 450) återvänder btnDOWN;
om (adc_key_in < 625) återvänder btnLEFT; Ändrade värdet till 625 gör att dubbla Läs från Välj knappen Standard är 650.
om (adc_key_in < 850) återvänder btnSELECT;
återvända btnNONE;
}
Setup relay sköld pin matris.
RELÄ SKÖLD PIN SWAPS, D7 = D3, D9 = D11, D10 = D12
int relayPin [] = {2, 3, 11, 12};
int pinCount = 4;
Ställa in på/av differentialer för samlare/tank temperaturer.
CONST int diffON = 5;
CONST int diffOFF = 2;
Ställ in standard termostat temperatur
int setTemp = 60.
Som används för kalibrering
int kompensera [] = {-2, -1, 0, 1, 2};
Knappen variabler.
int Välj = 0;
int upp = 0;
int ner = 0;
int bakgrundsbelysning = 10;
booleska BLbutton = false;
void setup() {
LCD.BEGIN (16, 2);
lcd.setCursor(0,0);
Införandet skärmen
LCD.Print ("Solar Collection");
lcd.setCursor(0,1);
LCD.Print ("& Radiant Värmare");
Delay(2000);
för (int thisPin = 0; thisPin < pinCount; thisPin ++)
{pinMode (relayPin [thisPin], produktionen);}
}
Läs genomsnittliga spänning från sensorer
int ReadSens(int x) {
int i;
int sval = 0;
för (jag = 0; jag < 10; i ++) {sval = sval + analogRead(x);}
sval = sval / 10;
returnera sval;
}
Beräkna temperatur i F från spänning av sensorer.
int getTemp (int y) {
Konvertera till Celcius
flyta a = (((y / 1024.0) * 5000) / 10)-273.15;
Konvertera grader Celsius till Fahrenheit
flyta b = en * 9.0 / 5.0 + 32,0;
returnera b;
}
void loop() {
Få genomsnittliga spänning
int amb = ReadSens(1);
int col = ReadSens(2);
int tk = ReadSens(3);
int tt1 = ReadSens(4);
int tt2 = ReadSens(5);
Få temperaturer & tillämpa OffSet {-2, -1, 0, 1, 2}
int omgivande = (getTemp(amb) + offSet[0]);
int collector = (getTemp(col) + offSet[0]);
int tank = (getTemp(tk) + offSet[0]);
int transferTemp = (getTemp(tt1) + offSet[0]);
int transferTemp1 = (getTemp(tt2) + offSet[0]);
Bakgrundsbelysning knappen urval...
om (BLbutton == true) {pinMode (bakgrundsbelysning, indata);} //turn bakgrundsbelysning av
Else{pinMode(backLight,output);} //turn bakgrundsbelysningen på
Bildskärmar
om (Välj == 3) {Välj = 0;}
om (Välj == 0) {
LCD.Clear(); lcd.setCursor(0,0);
LCD.Print ("omgivande Temp");
lcd.setCursor(6,1);
LCD.Print(ambient);
LCD.Print "F".
}
om (Välj == 1)
{
LCD.Clear(); lcd.setCursor(0,0);
LCD.Print ("Ange omgivande till:");
lcd.setCursor(6,1);
LCD.Print(setTemp);
LCD.Print "F".
}
om (Välj == 2)
{
LCD.Clear(); lcd.setCursor (0, 0);
LCD.Print ("C:");
LCD.Print(Collector);
LCD.Print("F");
lcd.setCursor (9, 0);
LCD.Print("tk:");
LCD.Print(tank);
LCD.Print("F");
lcd.setCursor (0, 1);
LCD.Print("T1:");
LCD.Print(transferTemp);
LCD.Print("F");
lcd.setCursor (9, 1);
LCD.Print("T2:");
LCD.Print(transferTemp1);
LCD.Print("F");
}
lcd_key = read_LCD_buttons(); Läs knapparna
växel (lcd_key) {
fall btnSELECT: {BLbutton =! BLbutton; Delay(100); bryta; }
fall btnUP: {setTemp ++; Markera = 1; delay(100); break;}
fall btnDOWN: {setTemp--; Markera = 1; delay(100); break;}
fall btnRIGHT: {Välj ++; delay(100); break;}
fall btnLEFT: {Välj--; delay(100); break;}
}
Driver cirkulationspump från samlare till tank.
om (collector > (tank + diffON))
{digitalWrite (relayPin [0], hög), digitalWrite (relayPin [1], hög);}
om (collector < = (tank + diffOFF))
{digitalWrite (relayPin [0], låg), digitalWrite (relayPin [1], låg);}
Driver cirkulationspump från tank till strålningsvärme rutnät.
om ((ambient < setTemp) & & (tank > = 100))
{digitalWrite (relayPin [2], hög);}
om (tank < = (setTemp + 10))
{digitalWrite (relayPin [2], låg);}
om (omgivande > (setTemp + 2))
{digitalWrite (relayPin [2], låg);}
Delay(500);
}