Obligatorisk oppgave nr. 2

Hva som skal leveres

Fysisk demonstrasjon for din gruppel?rer av f?lgende:

1) Arduino som styrer lysstyrken i en ekstern LED. Lysstyrken bestemmes av analog spenningsverdi ut fra et potensiometer.  Potensiometerets utgang kobles til analog inngangspinne A0 p? Arduino. (Demo p? gruppe?velsen evt. video)

2) M?ling av spenning over ekstern LED med multimeter . (Demo p? gruppe?velsen evt. video)

3) M?ling av str?m gjennom ekstern LED med multimeter. (Demo p? gruppe?velsen evt. video)

4) Vise hvordan LEDen flimrer n?r man kobler fra potensiometeret og ber?rer den frie inngangsledningen med fingrene (statisk st?y). (Demo p? gruppe?velsen evt. video)

5) Oscilloskop - vise det analoge utgangssignalet (PWM), gitt av analogWrite(). (Kun demo p? gruppe?velsen)

S? velger man EN av f?lgende deloppgaver

6a) Signal "rundt" jorda. (Demo p? gruppe?velsen evt. video)

6b) LED strip, styring med trykksensor eller potensiometer. (M? gj?res og demonstreres p? gruppe?velsen)

6c) Automatisering av hoppestokk. (M? gj?res og demonstreres p? gruppe?velsen)

 

Regler for gjennomf?ring av obligatoriske oppgaver

Leveringsfrist

Sikkerhet, regler og ressurser

L?ringsm?l og metode

N?r man har et generelt teknisk sp?rsm?l er rekkef?lgen:

1) Sp?r GPT-4

  1. Sp?r GPT-4 om den delen av svaret du ikke forsto
  2. Sp?r GPT-4 p? en annen m?te

2) Sp?r gruppel?rer

Husk at gruppel?rers prim?re jobb er ikke ? hjelpe, men ? veilede deg til selv ? finne l?sninger


Oppgave 1

I denne oppgaven kobler vi utgangen av et potensiometer, se figur under, til analog inngangspinne A0 p? Arduino. Utgangen er den pinnen som st?r alene p? sin side av potensiometeret. S? kobler vi opp en av de andre pinnene p? potensiometeret til Arduinos 5V pinne, og kobler s? den siste pinnen p? potensiometeret til en av Arduinos GND pinner (alle GND pinnene er koblet sammen p? kretskortet). P? denne m?ten f?r vi en variabel spenningsdeler (potensiometeret) som deler ned 5V spenningen til en analog spenningsverdi som blir inngangssignalet til Arduino.

Potensiometer

S? kobler vi en LED i serie med en motstand mellom pinne nr ~6 p? Arduino og GND (jord/0V). Motstanden er viktig ? bruke da den begrenser str?mmen gjennom LEDen. Du finner riktig verdi p? motstanden ved ? sp?rre GPT-4. Man kan ogs? evt. be GTP-4 om ? forklare hvordan man regner ut verdien med tanke p? eksamen. (Dette vil bli forelest i analogdelen av kurset). LEDen er ikke bidireksjonal, og m? kobles med rett pinne mot GND (h?r med GPT-4)

S? skriver du kode som f?r LEDen til ? lyse med en (analog) lysstyrke som du kan justere med ? vri p? potensiometeret. Bruk analogWrite() for ? lage en analog verdi ut fra Arduino, se GPT-4 dokumentasjon for analogWrite(). NB: ikke alle pinnene p? Arduino fungerer med analogWrite(). De pinnene som fungerer er merket med ~ forran pinnenummeret, og har det vi kaller PWM modus. Pinne ~6 er, for eksempel, grei ? bruke med analogWrite().

Dynamisk omr?de. Merk at maks og min verdier fra analogRead() er forskjellig fra analogWrite(). Tenk over hvordan du kan h?nderere dette.

(Demo p? gruppe?velsen evt. video. Video m? ogs? vise Arduinokoden p? PC skjermen)

Oppgave 2

I denne oppgaven bruker du multimeteret til ? m?le den analoge spenningen over LEDen mens du skrur p? potensiometeret (se veiledning).

(Demo p? gruppe?velsen evt. video)

Oppgave 3

I denne oppgaven bruker du multimeteret til ? m?le str?mmen gjennom LEDen mens du skrur p? potensiometeret.

(Demo p? gruppe?velsen evt. video)

Oppgave 4

Her skal du koble fra potensiometeret. Ber?r s? den frie inngangsledningen med fingrene og se om det p?virker lyset i LEDen. En inngangspinne som ikke er koblet til noe, kan bli p?virket av statisk elektrisitet og st?y siden Arduinos inngangsimpedans er veldig h?y (mer om dette i analog-delen av kurset).

(Demo p? gruppe?velsen evt. video)

Oppgave 5

Arduinos analogWrite() lager ikke et ekte analogt signal, men et h?yfrekvent puls-bredde (PWM) kodet signal som kun er 0V eller 5V. Den gjennomsnittlige spenningsverdien varierer med lengden p? 5V pulsene, se illustrert i figuren under. Pulsene er i virkeligheten s? korte (typisk milli/mikro-sekunder) at man ikke vil oppfatte noe blinking i LEDen, slik at det blir det samme som om man satte p? en ekte analog spenning som kan variene slik som illustrert i figuren.

Bildet kan inneholde: azure, plott, skr?ningen, parallell, font.

N?r man m?ler den "analoge" spenningen med et multimeter, vil ikke multimeteret rekke ? reagere p? pulsene, viser derfor gjennomsnittsverdien. Vi skal n? bruke et oscilloskop til ? se p? disse pulsene. Et oscilloskop er raskt nok til ? f? med seg det som skjer, og vi kan se pulsene p? en skjem. Vi har to typer oscilloskop p? labben, et som er fast montert i bordene og bruker en app p? PCene, og ett frittst?ende oscilloskop som vist under til h?yre. Hvordan man bruker disse to er beskrevet i labveiledningen og her kan ogs? gruppel?rer eller foreleser hjelpe til.

Bildet kan inneholde: hette, maskinvare, font, harddisk, elektronisk apparat.Bildet kan inneholde: medisinsk utstyr, duppeditt, elektronikkteknikk, engineering, medisinsk.

I denne oppgaven tar dere bort LEDen og seriemotstanden. S? kobler dere ett av oscilloskopene til den utgangspinnen p? Arduiono som dere kj?rer analogWrite() til. Klypen p? m?leproben m? kobles til GND og kloen lar man ber?re en ledning fra utgangspinnen. N?r dere ser firkantpulsene til PWM signalet kan dere justere analog spenning ut av Arduino med ? skru p? potensiometeret og se hvordan lengden p? pulsene varier. Dette gir da en varierende gjennomsnittsverdi som vi refererer til som en "analog verdi".

(Kun demo p? gruppe?velsen)

Frivillig:

Hvis dere vil lage et ekte analogt signal fra PWM signalet, kan dere slik som dere har l?rt i analogdelen av kurset, bruke et lavpass (LP) filter basert p? en seriekobling av en motstand og en kondensator. Hvis dere da m?ler spenningen over kondensatoren med oscilloskopet vil dere se at det firkantede PWM signalet har blitt filtrert til et ekte analogt signal med verdi gitt av gjennomsnittsverdien til PWM signalet. NB: det er vanskelig ? f? oscilloskopet til ? trigge p? et analogt signal som er konstant eller sakte varierende, h?r med gruppel?rer eller foreleser. I figuren under der det vist en simulering av et PWM signal der man ?ker den analoge verdien line?rt. ?verst ser vi PWM signalet, under ser vi signalet etter filterering med et RC filterBildet kan inneholde: rektangel, skr?ningen, font, parallell, diagram.

Bildet kan inneholde: rektangel, font, skr?ningen, plott, parallell.

Oppgave 6

  Her velger man EN av f?lgende deloppgaver

6a) Signal rundt jorda

Signal som g?r i f?lgende sekvens rundt jorda. Inspirert av Big Bang Theory

Bryter -> Arduino -> Python p? PC -> ping til server i Japan -> ping respons tilbake til Python p? PC -> Ardino -> ekstern LED

1) Man kobler en bryter til en Arduino inngangspinne. Man kan slippe ? bruke ekstern pullup-motstand hvis man heller aktiverer den indre pullup-motstanden til mikrokontrolleren ved kommandoen pinMode(2, INPUT_PULLUP); gitt at man velger pinne nr 2 som inngangspinne fra bryteren. Sp?r GPT-4 om hvordan man kobler til en bryter ved ? bruke intern pullup motstand.

2) S? kobler man til en ekstern LED med seriemotstand til en utgang, slik som i oppgave 1.

3) Programmer s? Arduino til ? sende til serieporten en byte eller char med for eksempel verdien 1 i det ?yeblikket man trykker ned bryteren.

4) Skriv s? et kort program i Python som leser fra serieporten, og i det ?yeblikket det kommer noe der, sendes en ping til en server p? andre siden av jorden, for eksempel 110.50.243.6 (Japan). Sp?r som vanlig GPT-4 om hvordan man gj?r det.

5) N?r responsen fra ping kommer tilbake fra Japan, skal Pythonprogrammet sende en byte eller char til Arduino, og

6) Arduino skal da lyse opp LEDen.

(Demo p? gruppe?velsen evt. video. Video m? ogs? vise Pythonkoden p? PC skjermen)

Frivillig:

Vi har er relé som drives av 0V/5V og trekker nesten ingen str?m, slik at det kan kobles rett til utgangen av Arduino. Dette releet slipper s? igjennom 240 vekselstr?m hvis styresignalet fra Arduino er 5V. Hvis styresignalet fra Arduino er 0V slipper ikke reléet igjennom 240V. Utgangen av releet kan s? kobles til et valgfritt 240V apparat, for eksempel en lampe. Dette kan man bruke i stedet for LEDen. I figuren under ser vi releet. 240V utgangen er ikke ferdig koblet p? bildet, men er ferdig i dag. Arduinos utgangspinne kobles til kontakthullet illustrert med r?d tusj, og Arduinos GND kobles til kontakthullet illustrert med sort tusj. Reléet er basert p? effekt-transistorer.

6b) LED stripe, styring med potensiometer eller trykksensor.

Vi har en adresserbar RGB LED stripe som vi vil styre med en analog verdi produsert av et potensiometer eller en trykksensor (ligger p? labben). Trykksensoren fungerer som en variabel motstand der motstanden er en funksjon av hvor hardt vi trykker p? den. Vil man bruke trykksensoren m? den seriekobles med en fast motstand med ca samme verdi som motstanden til trykksensoren n?r den ikke er trykket ned (m?les med multimeter). Dette vil p? samme m?te som et potensiometer, gi en variabel spenningsdeler n?r dette kobles mellom 5V og GND. 

LED stripen er veldig enkel ? bruke. Den har 3 tilkoblingsledninger: GND, 5V power, og signal direkte fra Arduino. Stripen har mange LEDs og vil derfor kunne trekken mye mer str?m enn det Arduino er i stand til ? levere. Den er derfor koblet til en separat spenningskilde (skal v?re ferdigkoblet). Det eneste dere derfor fysisk trenger ? gj?re er ?

1) koble GND fra stripen til GND p? Arduino,

2) koble signalledningen fra stripen til en digital utgangspinne p? Arduino, for eksemplel pinne 6.

I figuren under er det vist disse to ledningnene liggende fritt under tape p? bordet. Gul tusjet ledning er signal, sort tusjet ledning er GND. Merk at fargen p? ledningene bakover ogs? er gul og sort. Spenningskilden skal st? p? 5V i utgangspunktet og m? ikke justeres, da LEDstripen blir ?delagt ved for h?y spenning.

Bildet kan inneholde: font, kretskomponent, rektangel, parallell, skr?ningen.

N?r dere har koblet til alt, kan dere sp?rre GPT-4 om hvordan man programmerer en slik LED stripe. Stikkord er FastLED og WS2812B. Start med ? be om ? f? et enklest mulig eksempel der man bare setter en LED til en fast verdi. Man kan ogs? be om ? ikke f? C++ syntaks slik som :: . N?r dette virker om og dere forst?r koden, kan dere be om ? f? et nytt eksempel der alle LEDene p? stripen blir oppdatert med nye verdier hvert 0.1 sekund.

Dere m? installere et bibliotek som heter FastLED evt Neopixel til Arduino. Tror FastLED er ? foretrekke. Dere m? telle hvor mange leds dere har p? stripen og s? legge det inn i Arduino-programmet slik som eksempelkoden fra GPT-4 viser. I C bruker man ofte makroer av typen #define slik som vist i eksempelkoden, dette er for ? f? bedre oversikt. Be evt. GPT-4 forklare hva #define gj?r. Ved ? iterere en for-l?kke over alle LEDene i stripen kan dere sette alle RGB verdiene individuelt. Husk p? ? legge inn en delay() etter at alle LEDene er frisket opp med kommandoen FastLED.show().

N? er det bare opp til fantasien hva dere kan f? LED stripen til ? vise som funksjon av den analoge trykkverdien eller innstillingen p? potensiometeret.

Ved k?: Vi har bare noen f?r LED striper p? deling slik at hvis mange velger denne deloppgaven kan det bli k?. Derfor har jeg via GPT-4 laget en simulator som dere kan bruke til ? utvikle lysm?nsteret p? forh?nd. N?r dere er forn?yd kan dere overf?re koden fra Python til Arduino C for ? kj?re m?nsteret p? virkelige LED stripen.

(M? gj?res og demonstreres p? gruppe?velsen)

6c) Automatisering av hoppestokk.

Vi har en pneumatisk (trykkluftdreven) hoppestokk med 4 pneumatiske sylindre. To av sylindrene fyller vi med et konstant lufttrykk slik at de fungerer som fj?rer. De to andre sylindrene vil vi, styrt av en bryter p? h?ndtaket, slippe inn luft med h?yt trykk i n?r vi ?nsker at stokken skal skyte fart oppover. N?r stokken er i lufta slippes luften ut av disse to sylindrene (automatisk), og n?r vi s? lander, gjentar vi prosessen. Vi styrer luften via elektrisk drevne 12V solenoidventiler. N?r disse f?r 12V over seg ?pner de og fyller de 2 sylindrene med trykkluft, n?r de f?r 0V over seg, t?mmer de sylinderne for luft. For ? gj?re om fra Arduinos 0V/5V utgangssignaler til 0V/12V bruker vi en NMOS transistor. Dette, og pneumatikk vil vi forelese om senere i kurset. N? trenger vi ikke vite noe mer om hvordan dette fungerer.

Systemet er ferdig koblet opp og det eneste vi trenger ? gj?re er ? programmere Arduino til ? lese av verdien p? en bryter montert p? rattet til hoppestokken. N?r bryteren trykkes inn, skal Arduino sende ut 5V p? en utangspinne koblet til NMOS transistoren, s? skal Arduino vente i en fast tild 0.5 -1 sekund f?r Arduino s? sender ut 0V. Dette uavhengig av hvor lenge brukeren trykker inn bryteren. P? denne m?ten vil vi f? en konstant mengde luft inn i sylinderen gitt av hvor lenge Arduino venter med ? sette ned utgangssignalet, siden det tar tid ? fylle inn luft. Du m? selv teste ut hoppestokken og justere denne tiden slik at du f?r en oppf?rsel som du synes er optimal for deg og din kropsvekt. Man m? ikke hoppe selv hvis man ikke har lyst. Grunnen til at vi vil ha dette faste intervallet er at n?r man hopper er det vanskelig ? manuelt huske p? ? holde bryteren inne i en fast tid. I figuren under er dette illustrert

Bildet kan inneholde: rektangel, font, parallell.

Image may contain: Wood, Electrical wiring, Gas, Flooring, Electrical supply.

 

I figuren under ser vi hele systemet. Hoppestokkens bryter er koblet til 12V kilden, slik at vi trenger en spenningsdeler som deler ned 12V til 5V for ? ikke ?delegge Arduinoen som bare t?ler maks 5V inn. Denne spenningsdeleren er allerede koblet opp. NMOS transistoren fungerer som en styrt bryter. N?r den f?r 5V inn p? gate-terminalen til venstre leder den str?m, og f?r den 0V inn virker den som en ?pen bryter og leder ikke str?m. Alt er ferdig koblet og det eneste dere trenger ? gj?re er ? koble Arduinos 3 ledninger til grensesnittet vist som en lang ellipse i figuren

Bildet kan inneholde: rektangel, skr?ningen, font, parallell, diagram.

Man kan godt starte med ? simulere systemet. Ved ? koble digital utgang til intern LED p? Arduino (pinne 13), ser man om systemet gir den forsinkelsen man vil ha. S? kan man ta over Arduino til den fysiske hoppestokken.

I figuren

NB: Alt som lages i dette kurset er prototyper for ? teste ideer. Man m? regne med at ting blir slitt, og ikke er optimalt designet som et ferdig produkt.

(M? gj?res og demonstreres p? gruppe?velsen)