Robotnavn:

The Mess

Gruppemedlemmer:

Mathias Grøn Paulsen & Simon Banke Uggerhøj

Hvordan ser systemet ud?

De gule cirkler viser hvor de 2 LDR sidder henne.

Den blå cirkel viser vores H-bro

1 markere hvor motoren er monteret

2 viser arduinoboardet

3 viser placeringen af de 2 spændingsdelere til LDR

4 viser placeringen af spændingsdeleren til potentiometeret

5 viser batteritilslutningen

6 viser ca. hvor potentiometeret er monteret. Den er påmonteret selve stangen der roterer efter solen.

Komponenter:

2 stk 10kohm resistor

1 stk 4kohm resistor

1 stk potentiometer Rotary 4,7kohm

2 stk FQP27P06 P-channel mosfets

2 stk IRL8113 N-Channel mosfets

2 stk LDR

1 Batteripakke 7,2v

1 stk arduino Uno

1 stk breadboard

1 stk legomotor

Diverse ledninger


Hvorfor er systemet/robotten opbygget som den er ift. at løse opgaven.

Systemet er bygget op med 2 LDR, hhv. en højre og venstre side. Disse bruges til at bestemme retningen motoren skal bevæge sig. De er så placeret i en “mast”, samt med en hvilken, så den er bedst muligt rettet mod solen. Disse LDR’er sidder begge i et spændingsdeler setup med en 10kohm resistor, der er valgt, da LDR’erne har en “hvile” modstand på 10kohm.

Der er benyttet et rotations potentiometer for at bestemme hvilken vinklen på motoren. Denne sidder også i et spændingsdeler setup, med en resistor på 4kohm, da den har en maksimal modstand på 4kohm.

Grunden til at der er valgt modstande der er tættest på de ovenstående “sensorer” er for at få den højeste mulige opløsning ind i systemet.

Der er lavet en H-bro med hhv. 2 stk, FQP27P06 P-channel mosfets og 2 stk IRL8113 N-Channel mosfets. Grunden til at der er benyttet både p og n channel mosfets, er for at kunne styre hvilken retning motoren bevæger sig i.

Der er brugt eksitationsstrøm i form af en batterypack på 7,2v, da arduino uno ikke kan leverer tilstrækkelig strøm til at drive motoren.

Selve opbygning i lego er lavet hvor motoren sidder på konstruktionen og er med i den bevægelige del af konstruktionen. Den har et mindre tandhjul, som så bevæger sig rundt om et større stationært tandhjul. Den gearing der er mellem de to tandhjul gør, at motoren skal arbejde en del for at give et bevægeudslag, hvilket også ses på videoen nedenfor.

Har det været problemfrit at opbygge robotten eller har den ændret form/sensor-placeringer flere gange?

Den endelig robot, er 7 iteration. Der har været en del problematikker i at få gearingen til at fungerer optimalt, samt at lave den elektroniske overgang mellem legoen og potentiometeret.

Digramtegning

Har der været nogle problemer ift. at få hardwaren til at virke?

Hardwaremæssigt har udfordringen været nogenlunde lige til, da det mest komplekse aspekt af kredsløbet var dannelsen af h-broen. Denne blev brugt i stedet for motorshieldet, da gruppen følte at det gav en større udfordring.

Hvordan er robottens opførsel implementeret

Kode:

Koden er bygget op således, at der benyttes ialt 3 analoge indgange, en til potmeter, og en til hver af LDR. Derudover bruges der 2 digital outputs til PWM styring af dc motor.

I vores første if loop, tjekkes der om reset parameterne er tilstede(hvis potmeter er < 310 og reset == false), hvis ikke forsættes der i loopet. Bemærk at de 310 er beregnet ud fra det maksimalet input der kan gives fra spændingsdeleren og potmeteret. Det maksimale input divideres med den maksimale bevægelse på potmeteret(300 grader +-), også ganges det op med 180 grader, hvilket gav 310. Herefter er der et nest if loop, som tjekker om lyspin1 er større end lyspin2, såfremt det er det, sendes der et signal via digitalwrite fra digitalpin 12. Der er et delay på 3ms, for at mindske bevægeudslaget. Så er der et else if loop, som kigger på om lyspin2 er større end 1, er den det, skal der ikke ske noget.

Reset loopet ses under med et if loop, hvor der først kontrolleres om potmeter > 310 samt om reset = false. Er den det, sættes reset til true og digitalwrite sender pwm signal til digital pin 12, som kører motoren retur til start positionen. Herefter er der et else if loop, som kontrollere om valpot < 10 og reset = true, som så slukker for digitalpin 12, og sætter reset til false. Nu er robotten klar til at kører fra start igen

const int PotMeter = A0;
const int PWMPin1 = 12;
const int PWMPin2 = 11;
const int Lyspin1 = A2;
const int Lyspin2 = A1;
int valpot = 0;
int lyspin1 = 0;
int lyspin2 = 0;
bool reset = false;


void setup() {
pinMode(PotMeter, INPUT);
pinMode(PWMPin1, OUTPUT);
pinMode(PWMPin2, OUTPUT);
pinMode(Lyspin1, INPUT);
pinMode(Lyspin2, INPUT);
Serial.begin(9600);

}

void loop() {


  valpot = analogRead(PotMeter);  // read the input pin
  Serial.println(valpot);

lyspin1 = analogRead(Lyspin1); // read input lyspin1
//Serial.println(lyspin1);
delay(100);
lyspin2 = analogRead(Lyspin2); // read input lyspin1
 //Serial.println(lyspin2);
delay(100);

if (valpot <310 && reset == false)
{
  if (lyspin1 < lyspin2) // Here the sensorvalues from the two LDR's is compared and check if lyspin1 is bigger than lyspin2, if so, it will iniate the turn cycle for 3ms.
    {
      digitalWrite(12, HIGH);
      delay(3);
    digitalWrite(12, LOW);  
    }
   else if (lyspin1 > lyspin2 ) // here we compare the different way, and this cancels the move.
    {
    digitalWrite(12, LOW);  
    }
}
if (valpot>310 && reset == false) // reset function, the motor has moved 180 degrees, and the second part of the h-bridge is activated, to turn the motor the otherway
{
  reset = true;
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
}
 else if ( valpot < 10 && reset == true) // when the reset function is finished, and the motor is back in start position.
 {
  digitalWrite(11, LOW);
  delay(500);
  reset = false; 
 }
 }

Udfordringer

Den største udfordring i dette projekt, har været at få reset funktionen til at fungere optimalt. Det påregnes at det er grundet gruppens valg om at lave en h-bro selv. Udfordringerne kom til udtryk i form af at motoren havde lyst til at bevæge sig i begge retninger Samtidigt.

Konklusion og perspektivering.

Robotten løser opgaven, om at følge solens placering mest optimalt. Den følge dens input fra LDR’erne og derved roterer efter hvor der er mest lys på disse. Der er benyttet en dc motor til at skabe rotationen og der er benyttet en vinklet flade, for at fange solens lys mest muligt.

Rent retrospektivt kunne robotten være konstrueret anderledes. Selve motor beslaget er løst, som gør at der er en del frigang. Konstruktionen er heller ikke umiddelbart stabil, og bør ved revurdering forstærkes. Yderligere har robotten også det problem, at den ikke man differentiere om hvornår det er nat eller dag. Den ved kun, at når den har roteret 180 grader, så skal den kører sit reset loop. Slutteligt, så er bredboardet/kredsløbet ikke monteret på konstruktionen, hvilket gør at ledninger bliver strukket i over flere gange.

Video

Leave a Reply