Porteføljeopgave 1 – Solcellestyring
Navn på robotsystemet: Ilios (græsk for Sol)
Navne på gruppemedlemmerne: Ling Siu Chang, Katja Nanche Aagaard Christensen og Peter Gissel Christensen – 4. semester Lærings- og oplevelsesteknologi
Systemets udseende
Systemets opbygning
Systemet er opbygget kompakt. I bunden har vi breadBoarded, derefter har vi til højre Arduino Motor-Shield. Over breadBoarded sidder LEGO motoren, denne er placeret lodret for at gøre det svært for tandhjulene at “hoppe” når den køre. Over motoren sidder gearingen. Vi har en samlet gearing fra 1:5. Ledningerne fra breadBoarded fortsætter op gennem drejeskiven og op til fladen hvor LDR (Light dependent resistor) sensorerne er placeret. Vi har forlænget ledningerne på LDR, således at sensorerne kan sidde øverst på overfladen og breadBoarded sidder nedenunder således at det sidder stationært. Vi har valgt denne opbygning for at undgå en fjeder effekt, da ledningerne er stive. På fladen er der sat afskærmer mellem sensorerne for at skygge sensorerne for solen, hvis solen bevæger sig i en anden retning. Og en afskærmer foran en af sensorerne for når at solen står op vil den dens stråler ikke komme ind bagfra og aktivere begge sensor.
Systements hardware
Diagramtegning
Billeder af systemet med pile og beskrivelser på de enkelte delkomponenter
Problemområder
Vi har ændret vores system 4 gange under opbygningen af systemet.
1: Ved første opbygning placerede vi breadBoarded på fladen med sensorerne på, dette gjorde at toppen/fladen var for tung, at LEGO motoren kunne ikke klare det og den derfor ikke kunne rotere fladen.
2: Ved anden opbygning var der for meget modstand i ledningerne fordi de var for stive, hvilket gjorde at når vi slukkede lego motoren så ville fladen springe tilbage til den position den var til at starte med.
3: Vi løste forrige problem ved at sætte en gearing på, således at lego motoren blev mere kraftig og kunne klare de stive ledninger.
4: Efter forrige opbygning fandt vi ud af at LEGO motoren ikke passede ikke ind pga tandhjulene. Dette løste vi ved at vende LEGO motoren 90 grader.
De udfordringer der har været ift. at få koden til at virke var at kun at få motoren til at skulle køre i den rigtige retningen i forhold til sensorerne. I forhold til hvorvidt det skulle være HIGH og LOW, afhængeligt af input fra sensorerne.
Systemets opførsel
Systemets opførsel er implementeret efter ”if og else” statements alt efter hvad den skal gøre. Hvis arduino registrere en værdi der er under 200 så stopper LEGO motoren. Hvis den registrere en værdi over 200 så drejer motoren sig i den retning som lyset rammer en af sensorerne. Hvis begge er over 200 så stopper LEGO motoren.
Flow-diagram

Kode
const int motor1 = 9; //output pin for moterens bremser const int motor2 = 12; //output pin for moterens omdrejning const int redSensorPin = A0; // Rød sensor fra input A0 const int greenSensorPin = A1; //Grøn sensor fra input A1 int redValue = 0; // rød start værdi int greenValue = 0; // grøn start værdi int redSensorValue = 0; // rød sensor start værdi int greenSensorValue = 0; // grøn sensor start værdi void setup() { // put your setup code here, to run once: Serial.begin(9600); // opretter serielforbindelse pinMode(motor1, OUTPUT); // fortæller Arduino det er et output pinMode(motor2, OUTPUT); // fortæller Arduino det er et output } void loop() { // put your main code here, to run repeatedly: redSensorValue = analogRead(redSensorPin); // læser værdi fra rød sensor delay(100); // forsinker loop med 100 milisekunder. greenSensorValue = analogRead(greenSensorPin);//læser værdi fra grøn sensor delay(100); // forsinker loop med 100 milisekunder. // udskriver til serial monitor Serial.print(" Raw Red: "); Serial.print(redSensorValue); Serial.print(" Raw Green: "); Serial.println(greenSensorValue); redValue = redSensorValue; greenValue = greenSensorValue; Serial.print(" Mapped Red: "); Serial.print(redValue); Serial.print(" Mapped Green: "); Serial.println(greenValue); if (redValue >= 200 && greenValue >= 200) //bremser når der er lys på begge sensor { digitalWrite(12,HIGH); //Retning digitalWrite(9,HIGH); //Bremsen analogWrite(3,0); //Hastigheden } else if (redValue <= 200 && greenValue <= 200) //bremser når der ikke er lys på begge sensor { digitalWrite(12,HIGH); //Retning digitalWrite(9,HIGH); //Bremsen analogWrite(3,0); //Hastigheden } else if (redValue <= 200 && greenValue >= 200) // lys fra venstre - rød { digitalWrite(12,HIGH); //Retning digitalWrite(9,LOW); //Bremsen analogWrite(3,255); //Hastigheden } else if (redValue >= 200 && greenValue <= 200) // lys fra højre -grøn { digitalWrite(12,LOW); //Retning digitalWrite(9,LOW); //Bremsen analogWrite(3,255); //Hastigheden } }
Konklusion
Vi kan hermed konkludere at vi har opbygget en solcellestyring, der drejer efter solens lys med en motor for at optimere udnyttelsen af solens energi. Vi har benyttet os af to LDR-modstande, LEGO, en LEGO-motor og Arduino Motor-Shield. Robotten virker således at den rotere efter solens lys og stopper når solen er gået ned. Og når solen står op igen, rotere den sig i den retning solen står op.
Forbedringer
Forbedringerne vi kunne have lavet ved systemet er fx. at gøre systemet mere følsom for lys. Og at den skal kunne dreje 180 grader for at kunne følge solen mere når dagene er længere, Derudover kan gearingen geares mere ned så den er mere stabil og mere præcis.