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