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.
- Koble utgangssignalene fra driveren til de positive sidene av
henholdsvis kanal 1 og 2 av oscilloskopet, og
gnd
til de negative sidene av begge kanalene. - ?pne programvaren og klikk p? Scope-knappen.
- Juster potensiometeret til duty cycle er rundt 50 %.
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:
- Arduinokoden fra oppgave 1 skal leveres p? formen
oblig6_1_<brukernavn>.ino
. - Arduinokoden fra oppgave 2 skal leveres p? formen
oblig6_2_<brukernavn>.ino
. - Tekstlig besvarelse med illustrasjoner skal leveres i PDF-format p?
formen
oblig6_<brukernavn>.pdf
.
Generelle krav til innlevering
- Sett dere inn i sikkerhetsrutiner for lab.
- IFIs retningslinjer for obligatoriske oppgaver finner dere her.
- Oppgavene skal l?ses individuelt med mindre annet er oppgitt i oppgaveteksten.
- Besvarelsene leveres i f?lgende format i Canvas:
- Tekstlig besvarelse skal leveres PDF format p?
formen
oblig<nummer>_<brukernavn>.pdf
. (Se v?r LaTeX-mal) - Arduinokode skal leveres p? formen
<filnavn>.ino
. - Processingkode skal leveres p? formen
<filnavn>.pde
. - Matlabkode skal leveres p? formen
<filnavn>.m
. - Pythonkode skal leveres p? formen
<filnavn>.py
.
- Tekstlig besvarelse skal leveres PDF format p?
formen
- Plott m? inkludere tittel og benevnelser p? aksene. Man m? ogs? oppgi m?leenhet i parentes hvis man plotter en fysisk st?rrelse (se eksempel i malene: Plotting i Python og Plotting i Matlab)
- Plotter dere flere kurver i samme plott m? dere spesifisere kurvene med “legend” (se eksempel i malene)