Af Mads Due Kristensen og Magnus Mortensen

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

Hvilke tanker ligger bag ved opbygningen

Vi skulle lave en robot som kunne følge solen. For at kunne gøre dette, tænkte vi at der skulle bruges en solid platform som kunne danne bunden af robotten. Der skulle også bruges en mekanisme som kunne dreje solpanelet rundt, og hvorpå LDR modstanderne også skal være monteret. Vores design af systemet var allerede fra starten præget af at vores medstuderende havde valgt at lave ret store byggeprojekter, hvilket resulterede i en mangel på dele og derfor blev robotten ikke så solid som vi gerne ville have haft.

Hvordan er gearingen og hvorfor?

  • G1 = 8, G2= 40, G3 = 8, G4= 24
  • Gearingsforhold (G2/G1)*(G4/G4) = 15

Vi valgt at gear op til et forhold på 15 for at sikre, at når vores robot regulerede sin position, så blev disse reguleringer tilpas små, så den ikke drejede “for langt” i forhold til solen. Dette gør at robotten er i stand til at følge solen bedst muligt, og derfor generere en større mængde strøm. 

Hvor er motorenplaceretog hvorfor dér?

Motoren er placeret i vores platform da det er her der er mest stabilitet. Motoren er placeret horisontalt, Dette betyder vi blev nødt til at bygge en mekanisme, som vender rotationen fra horisontalt til vertikalt. Denne vending kunne dog være undgået hvis motoren bare vendte vertikalt, men vi tænkte at det være nemmere at lave gearingen horisontalt.

Hvordan er h-broen opbygget inkl begrundelser og beregninger?

H-broen består af 2 P-channel MOSFETs og 2 N-channel MOSFETs som begge er af typen enhancement.  På billedet ovenfor ses den h-bro som vi har lavet i vores projekt. I første omgang tænkte vi ikke rigtig så meget over dens opbygning da den virker. Men da vi skulle lave bloggen og til at forstå hvordan den mere præcist virker opdagede vi at den ikke var som i bogen. På billedet nedenfor ses til venstre en h-bro som beskrevet i bogen og her ses det at motoren drejer markant hurtigere end end h-bro vi har lavet. Vores adskiller sig ved at P-channel transistorerne er sluttet til strømkilden med Drain benet i stedet for som i bogen med Source benet. Vi har dog ikke haft tid til at ændre det fysisk men kun simuleret det.

H-broen som bogen foreskriver den virker på følgende måde, når knappen til højre trykkes ned er højresiden forbundet direkte til ground og der vil derfor være 0V. Dette betyder at P-channel transistoren øverst til højre tændes og N-channel transistoren nederst til højre slukkes. Dette resultere i at strømmen kan løbe fra øverst til højre gennem motoren og ned igennem den nederste N-channel til venstre. Når strømmen løber i denne retning vil motoren køre imod uretsretning. Og det modsatte vil ske hvis den venstre knap trykkes ned.

Hvordan er spændingsregulatorkredsløbet opbygget inkl begrundelser og beregninger?

Vi havde først lavet en spændingsdeler men vi fik så af vide at det ikke var optimalt, da strømmen begrænses af modstandene. Grundet omstændighederne havde vi ikke adgang til en LM7805, så vi har bare givet arduinoen 9V direkte. Dette kan lade sig gøre da arduinoen har en spændingsregulator indbygget. For at vise hvordan en spændingsregulator kunne have været brugt, så bygge vi det i en simulering, som ses på dette billedet.

Hvilke sensorer er benyttet og hvor er de fysisk placeret på robotten

Der er brugt to LDR modstande som er placeret på det højeste punkt på robotten, hvilket gør man ikke har risiko for at skygge for dem. Det højeste punkt er i vores tilfælde solpanelet, da sensorer også skal kunne følge solen. 

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

Det har været en udfordring at bygge robotten da der var et begrænset antal legoklodser. Disse dele var alt fik hente får SDU blev lukket ned, og da det var svært at forudsige, hvad vi ville kom til at stå og mangle, endte vi i problemer i forhold til visse komponenter og mængden af ledning vi havde. Derfor er  robotten er meget sensitive angående ledningerne da mange af ledninger er viklet løst sammen.

Hvordan er robottens hardware sammensat?

Lav en diagramtegning (brug evt.fritzing.org/download)

Tag et billede af robotten og sæt pile og beskrivelser på de enkelte delkomponenter

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

Vi havde en del problemer med at vi ikke havde nok ledning og derfor var nødt til vikle ledninger sammen for at spare på det. Dette resulterede i at vi har en masse løse forbindelse og en masse steder, hvor afisoleret ledninger kom til at røre ved hinanden. Dette betød alt i alt at vores robot skal sættes meget præcist op for at den virker.

Hvordan er robottens opførsel implementeret

Hvad er de overordnede opførsler / metoder for robotten

Vores program består af en setup metode som åbner det forskellige porte. Disse porte skal bruger vi som input og andre som output. Programmet indeholder også en loop metode som er vores programs hoved funktionalitet. Her aflæses de to LDR modstande og hvis den ene LDR modstand opfanger sollys, så drejer solpanelet. For at dreje panelet bruger vi PWM. Dette er implementeret ved at lavet et analogWrite til de digitale output porte som er forbundet til h-broen. Når begge ldr modstande måler en lav nok værdi går vi ud fra at det er nat og panelet køre tilbage til udgangspunktet. 

Lav et flow-diagram, der beskriver robottens opførsel.

Kode

const int light = 700;
const int night = 300;

const int motor_pin_1 = 11;
const int motor_pin_2 = 10;

int count = 0;
bool reseting = false;

void setup()
{
  pinMode(A0, INPUT);
  pinMode(A1, INPUT);
  pinMode(motor_pin_1, OUTPUT);
  pinMode(A4, INPUT);
  pinMode(motor_pin_2, OUTPUT);
  Serial.begin(9600);
}

void start(int pin) {
   for(int i=0; i<150; i += 5){
    analogWrite(pin, i);
    delay(2);
  }
}
void stopMotor(int pin) {
  for(int i=150; i>0; i -= 5){
    analogWrite(pin, i);
    delay(2);
  }
  digitalWrite(pin, LOW);
}

void loop()
{
  int val1= analogRead(A0);
  int val0= analogRead(A1);

  delay(1000);

  if (val0 < night && val1 < night && !reseting) {
    reseting = true;
  } else if (!reseting && val0 >= light) {
    start(motor_pin_1);
    delay(50);
    stopMotor(motor_pin_1);
    count++;
  }

  if (reseting) {
    start(motor_pin_2);
    delay(100);
    stopMotor(motor_pin_2);
    count--;
    if (count == 0) {
      reseting = false;
    }
  }
}

Hvilke udfordringer har der været ift. til at få koden til at virke?

Vi kæmpede i noget tid med at programmet kun virkede når det var direkte koblet til computeren gennem kabel. Dette problem opstod fordi der i koden var inkulderet et loop, så kun kunne brydes når der var forbindelse til computeren( while(!serial)). Dette skabte en del forvirring da programmet fungerede fint i de tilfælde at computeren var slået til, men ikke ville starte når vi testede uden denne forbindelse.  

Konklusion

Løser robotten opgaven ift. opgaveformuleringen?

Når robotten måles op imod opgaveformuleringen, er alle de forskellige delproblemer blevet løst. Robotten er gearet så den laver små nøjagtige justeringer i forhold til solens position. Derudover benyttes PWM på arduinoen så motoren starter og sænker farten langsomt. Dette sikre at justeringerne bliver bløde og ikke skader robotten. Robotten benytter også LDR modstande til at måle, hvornår dens position skal justeres, og når sol forsvinder helt, så rykker den tilbage til sit udgangspunkt. Motoren er styret ved hjælp af en H-bro som gør robotten i stand til at rotere imod begge retninger. Det eneste delproblem vi ikke fik løst var at dele spændingen til arduinoen ved hjælp af en spændingsregulator. Dette gjorde vi i stedet i tinkercad. Robotten løser derfor opgaveformuleringen. 

På hvilke punkter kan den forbedres –og evt. hvordan?

Vi have overvejet at koble vores robot til et online API som kunne få solens position, i forhold til dens egen position. Dette ville have gjort det muligt at følge solen under alle vejrforhold. Dette blev dog droppet igen, da ændre udfordringer fik højere prioritet og tiden tildelt til projektet ikke tillod det. Generelt set kunne robottens byggekvalitet også sagtens forbedres, da den går i stykker når man flytter rundt på den. Dette var dog mere en konsekvens af de specielle omstændigheder frem for dårligt design.  

Video

Video af robotten.

Leave a Reply