Obligatorisk oppgave nr.6

Temaet for denne obligatoriske oppgaven er servo- og DC-motorer. Noe av utstyret som brukes, fra og med oppgave 2 er ikke tilgjengelig i settet deres, men dere kan få det utlevert i resepsjonen i første etasje på IFI. Påregn å fremvise gyldig studentbevis. Lykke til!

Oppgave 1 — Pulsbreddemodulering

Bakgrunn: I denne oppgaven skal dere koble opp DC-motoren og implementere PWM på arduinoen. Slik ser oppkoblingen ut:

I denne oppgaven skal dere bruke følgende komponenter:

Komponent Benevnelse
DC-motor* M1
9V batteri VCC1
Potensiometer R1
L293D* IC1

* Dere får utdelt M1 og IC1 i et sett sammen med brakett resepsjonen i første etasje på IFI.

Oppgave 1 A)

Koble opp kretsen som vist ovenfor. Ta bilde av oppsettet med postitlapp eller lignende, med dato og brukernavn. Lim inn bildet i oblig6_<brukernavn>.pdf.

OBS: Vær nøye med polaritet og å ikke kortslutte pins på Arduinoen. Utstyr kan bli ødelagt.

Oppgave 1 B)

Implementer PWM uten å benytte analogWrite() men kun ved å benytte digitalWrite() til pin 10. Bruk input fra potensiometer for å endre duty cycle (det er greit om frekvensen påvirkes). Programmet skal ikke inneholde blokkerende kode.

OBS: Driverkretsen tåler ikke mer enn 5 kHz (ref datablad). Vi anbefaler en frekvens på rundt 100 Hz.

Oppgave 1 C)

Bruk Analog Discovery 2 oscilloskopet og Waveforms programvaren til å plotte PWM-signalene.

Ta et skjermbilde av Waveforms som viser plottet av PWM-signalene og lim inn bildet i oblig6_<brukernavn>.pdf.

Oppgave 2 — Bygg din egen servo

I denne oppgaven skal dere bygge deres egne servo og bruke deres egen implementasjon av pulsbreddemodulasjon fra oppgave 2. Kretsen vil være veldig lik som i oppgave 2, men istedenfor å bruke potensiometeret til å regulere duty cycle, skal det brukes som en enkoder. Servoen vil kunne rotere rundt \(240^\circ\).

Komponent Benevnelse
DC-motor* M1
9V batteri** VCC1
Potensiometer R1, R2
L293D* IC1
Motorbrakett* Bracket
Coupler* Coupler

* Dere får utdelt M1, IC1, Bracket og Coupler i resepsjonen i første etasje på IFI. ** Dere kan få utdelt inntil 2 ekstra batterier i resepsjonen i første etasje på IFI.

Oppgave 2 A)

Koble opp kretsen som vist på koblingskjemaet under:

Sett sammen DC-motoren, motorbraketten og potensiometeret slik som vist under:

Dere finner mer detaljerte monteringsanvisninger for motorbraketten her.

Ta bilde av oppsettet med postitlapp eller lignende, med dato og brukernavn. Lim inn bildet i oblig6_<brukernavn>.pdf.

OBS: Vær nøye med polaritet og å ikke kortslutte pins på Arduinoen. Utstyr kan bli ødelagt. Vær spesielt nøye med å koble til de to potensiometrene på en identisk måte, slik at når de er satt til samme posisjon, er motstanden den samme.

Oppgave 2 B)

Lag vinkelregulering av DC motor via potensiometer og implementer en PID-kontroller.

Implementer koden som styrer motoren slik at pekeren stopper i korrekt posisjon, som vist på bildet nedenfor. Bruk PWM-en dere implementerte selv i oppgave 2.

Malen for arduino-koden er tilgjengelig her, under mappen oblig6. De manglende delene av koden er merket med en TODO. Det er viktig at du ikke modifiserer de eksisterende delene av koden, siden den inneholder flere implementeringer av funksjoner som er avgjørende for oppgaven samt sikkerhetsfunksjoner som hindrer at oppsett blir ødelagt.

Oblig6-mappen inneholder også et Processing-program som lar deg endre parametrene til PID-kontrolleren ved hjelp av et grafisk grensesnitt. Du trenger ikke å endre koden, men du må installere et bibliotek kalt ControlP5 ved å navigere til Sketch –> Import Library –> Manage Libraries –> søk i ControlP5 –> Install. Du bør kun kjøre dette programmet sammen med arduino-koden din når du har bekreftet at koden fungerer med standard PID-verdier gitt i malen.

Juster PID-verdiene til du er fornøyd med ytelsen til kontrolleren. Inkluder disse verdiene i besvarelsen (poenget er ikke å komme opp med de ‘riktige’ verdiene, så ikke bruk for mye tid).

Levér koden i en egen oblig6_2_<brukernavn>.ino-fil.

Innlevering:

Generelle krav til innlevering