Område 2 · lektion 10 · 22 okt
Bygge 1 – knapp, styrenhet, spak
Du trycker på en knapp. Ett kort läser den. Ett servo drar en spak, och något rör sig. Det är hela bygget, och det är samtidigt första gången i kursen som allt du lärt dig sitter ihop i samma konstruktion.
Det här är ett bedömt mekatroniskt system Bygge 1 är det första av kursens fem bedömda system. Betygskriterierna definierar ett mekatroniskt system som något som sammanför mekanisk struktur, elektroteknik och styrteknik – alla tre samtidigt. Bygge 0 hade bara elektrotekniken och var därför medvetet inte ett system i den meningen. Det här bygget har spaken och fästet (mekanisk struktur), kretsen med knapp och servo (elektroteknik) och koden som avgör vad som händer (styrteknik). Bygget ger belägg för fyra av de fem förmågorna: F1 planera och bygga, F2 använda ritningar och samarbeta, F3 dokumentera, och F5 bedöma din egen förmåga vid samråd. F4 – att beskriva systemuppbyggnad och fysikaliska principer – bedöms från och med bygge 2, men du tjänar på att öva redan här.
Uppgiften
Bygg ett system där en tryckknapp får ett servo att flytta en spak mellan två lägen, och där rörelsen gör något synligt: fäller en bom, öppnar en lucka, knuffar en kloss, vinkar. Vad spaken gör bestämmer du. Kraven nedan gäller oavsett vad du väljer.
Kretsen är den här:
- S1 är tryckknappen, kopplad mellan D2 och jord.
Inget externt motstånd behövs – pinnen ställs in med
INPUT_PULLUPoch drar sig själv till 5 V när knappen är uppe. - M1 är servot. Tre sladdar: brun till GND, röd till matningen, orange till D9.
- De två jordsymbolerna är samma nolla. Det är därför de ser likadana ut. Ritar du om schemat själv får du gärna dra en gemensam jordledning i stället – båda formerna är korrekta.
- Servots matning är det du ska tänka efter kring. Schemat visar 5 V från kortet, vilket räcker för ett obelastat servo med knapp marginal. Så fort spaken tar i behöver servot egen matning – se servoguiden, avsnittet om strömbehov. Ger du servot ett eget batteri ska batteriets minuspol till samma jord.
Parvis, med egen dokumentation
Bygget görs i par. Ni planerar tillsammans, ritar schemat tillsammans och felsöker tillsammans. Det är inte ett förslag utan en del av bedömningen: F2 handlar bland annat om att samarbeta med andra, och resten av kursen är självstudier med ditt eget kit hemma. Byggpassen är alltså det enda ställe där samarbetet går att observera. Ett bygge som gjorts ensamt saknar belägg för den halvan av F2, hur bra det än fungerar.
Dokumentationen skriver ni var för sig. Samma bygge, två texter. Skälet är att F3 bedöms individuellt – det är din förmåga att dokumentera som mäts, inte din kompis. Ni får titta på samma mätvärden och samma schema. Formuleringarna, motiveringarna och slutsatsen ska vara dina.
Fördela arbetet så att båda rör vid allt. Ett par där den ena bygger och den andra skriver ger två halva belägg i stället för två hela.
Innan passet
Fyll i samrådsunderlaget innan du ber om handledning. De tre frågorna – vad jag redan kan, vad jag behöver hjälp med, vad jag tror situationen kräver – tar två minuter, och det är det enda belägget i hela kursen för F5. Utan ifyllt underlag finns förmågan inte dokumenterad någonstans, oavsett hur bra samtalet blir.
Läs också igenom de fyra guiderna i området en gång till, särskilt digital ingång om inversionen känns osäker och servot om du inte räknat på armlängden ännu.
Arbetsgång
- Bestäm vad spaken ska göra. En mening räcker: "en bom som fälls ned när knappen trycks". Skriv den först – den blir dokumentationens första rubrik och den avgör alla val efter den.
- Rita schemat. Ditt eget, inte en avritning av figuren ovan. Beteckningar utsatta, pinnummer utsatta, och den matning du faktiskt tänker använda. Det är den här ritningen du felsöker mot senare, och den som ger belägg för F2:s ritningsdel.
- Räkna på armen. Mät från axelns mitt till där lasten sitter, och räkna ut vad servot orkar där: F = 1,8 / r med r i centimeter och svaret i kilo. Är marginalen mindre än ungefär femtio procent – korta armen.
- Bygg elkretsen först, utan servot. Knapp på D2, och en lysdiod på en annan pinne som tillfällig indikator. Kontrollera i seriemonitorn att du får 1 när knappen är uppe och 0 när den är nere. Nu vet du att ingången fungerar innan något rör sig.
- Koppla in servot och kör det ensamt.
write(90)isetup(), ingenting iloop(). Notera var armen hamnar. Det är ditt nolläge. - Sätt ihop dem. Nu först skriver du koden som låter knappen välja vinkel. Två vinklar räcker: ett viloläge och ett arbetsläge.
- Bygg mekaniken. Skruva fast servot i något som inte fjädrar. Montera spaken. Kontrollera för hand att den går fritt hela vägen mellan de två vinklarna innan du låter koden köra dit.
- Mät. Se nästa avsnitt. Mätningen görs på det färdiga bygget, med belastningen på.
- Dokumentera. Var för sig, enligt mallen.
Mätningen
Ett bedömt bygge ska innehålla minst ett mätvärde med enhet. Välj en av de två mätningarna nedan – eller gör båda, om du siktar på C eller högre. Siffrorna i tabellerna är exempel, inte facit. Dina egna blir andra.
Alternativ A: servots strömbehov
Bryt servots röda sladd och koppla in multimetern i serie, precis som du mätte ström i område 1. Läs av i tre lägen.
Använd 10 A-uttaget Ett servo som tar i kan dra över en halv ampere. Många multimetrar har ett milliampere-uttag säkrat för 200 mA och ett separat 10 A-uttag utan säkring. Sitter sladden i milliampere-uttaget bränner du säkringen i stället för att få ett mätvärde. Byt uttag och vred innan du mäter.
| Läge | Uppmätt ström | Kommentar |
|---|---|---|
| Vila, armen står still | 8 mA | bara elektroniken inuti servot |
| Rörelse, obelastad arm | 190 mA | motorn arbetar |
| Armen hålls fast med fingret | 610 mA | motorn drar allt den kan |
Räkna sedan effekten i det mellersta läget, med 4,9 V uppmätt över servot:
P = U · I = 4,9 V · 0,190 A = 0,93 W
Jämför med bygge 0, där hela kretsen omsatte 0,10 W. Det här bygget drar nästan tio gånger så mycket, och det är därför strömförsörjningen plötsligt är en fråga.
Alternativ B: matningsspänningen under belastning
Låt voltmetern sitta mellan kortets 5 V och GND medan bygget körs. Läs av i vila och i det ögonblick servot rör sig med lasten på.
| Läge | Uppmätt spänning |
|---|---|
| Vila | 4,96 V |
| Servot rör sig med last | 4,52 V |
Skillnaden är
4,96 − 4,52 = 0,44 V
0,44 / 4,96 = 0,089 = 8,9 %
Ett dyk på nästan nio procent är mycket – men det är inte det som startar om kortet. Kortets brownout-detektor löser ut först när matningen kortvarigt faller mot omkring 2,7 V, alltså långt under de 4,52 V mätaren visade.
Varför startar kortet då om ändå? Därför att multimetern visar ett medelvärde. Den läser av några gånger i sekunden och jämnar ut det den ser. Den verkliga transienten i ögonblicket servomotorn rycker igång är mycket kortare och mycket djupare än 4,52 V, och det är den spiken som fäller detektorn – den du aldrig ser på displayen. Ditt mätvärde är alltså inte omstartens orsak utan dess spår: ett synligt dyk på nio procent betyder att det finns osynliga dyk som är betydligt värre.
Skriv i dokumentationen vad du mätte och vad du gjorde åt det – ett dyk du upptäckt och åtgärdat är ett starkare belägg än ett bygge som råkade fungera.
Kraven
Kryssen sparas i din egen webbläsare. De är en checklista för dig, inte en inlämning.
Dokumentationen
Använd dokumentationsmallen. De fyra E-punkterna är golvet: vad systemet gör, kopplingsschemat, koden, och vad som gick fel på vägen.
Dokumentationen bär E/C-gränsen F3 skiljer E från C på ett enda ord: enkel mot noggrann. Det betyder att ett utmärkt bygge med tunn dokumentation landar på E, oavsett hur bra spaken rör sig. Det motsatta gäller inte – du kan inte skriva dig till ett fungerande system. Men av de två är det dokumentationen som oftast fattas, och det är den som är billigast att göra något åt.
Tre av mallens punkter passar särskilt bra på det här bygget:
- Motiverade komponentval är armlängden. Varför just den längden, och vad kostade valet i kraft?
- Mätvärden med enhet är mätningen ovan, med läget angivet. "610 mA när armen hålls fast" säger något; "ungefär en halv ampere" gör det inte.
- Vad som gick fel är inte en bekännelse utan ett krav. Kortet som startade om, knappen som räknade fel, hornet som gled – skriv ner symtomet, vad du trodde det var, och vad det visade sig vara. Det är den punkten som visar att du felsökt och inte bara byggt om tills det råkade fungera.
Om det inte fungerar
- Kortet startar om när servot rör sig. Brownout. Servot drar mer ström än kortets matning kan lämna, spänningen dyker och kortet startar om – vilket ser ut precis som ett kodfel, eftersom programmet börjar om från början. Ta bort lasten från armen och prova igen. Försvinner felet var det aldrig i koden. Ge servot egen matning med gemensam GND.
- Servot står stilla eller rycker slumpmässigt. Gemensam GND saknas mellan servots matning och kortet. En sladd.
- Ingenting händer när du trycker. Kontrollera i
ordning: står det
INPUT_PULLUPoch inteINPUT? Testar villkoretLOWoch inteHIGH? Sitter knappens två sladdar på ben som faktiskt bryts av trycket? Det sista avgörs med multimeterns genomgångsläge på fem sekunder. - Spaken rycker fram och tillbaka vid varje tryck. Kontaktstuds. Lägg in flankdetektering och pausen på cirka 20 ms från guiden om digital ingång.
- Servot brummar och blir varmt i ett av lägena. Det står mot ett mekaniskt stopp. Ändra vinkeln i koden eller ta bort det som är i vägen. Låt det inte stå så – servot går sönder av det.
- Armen rör sig mycket mindre än du räknat. Fästet fjädrar. Skruva i något styvare än kartong, och kontrollera att servot sitter fast i båda flänsarna.
- Nolläget vandrar efter en stund. Hornets skruv sitter inte i, och hornet glider ett tandsteg i taget på axeln.
- Uppladdningen misslyckas. Sitter något på pinne 0 eller 1? Är rätt port vald? Koppla ur allt utom USB-sladden och ladda upp en tom sketch för att avgöra om felet sitter i kortet eller i bygget.
Vidare
Med bygge 1 klart är område 2 avslutat, och du har byggt ditt första mekatroniska system: något som känner av, bestämmer och rör sig.
Nästa område tar systemet vidare på två sätt. Det får två
insignaler i stället för en, och en logisk regel som avgör vad de betyder
tillsammans. Och det gör sig av med delay(), som du redan
märkt står i vägen så fort två saker ska hända samtidigt.
Tillbaka till område 2 eller till kursens material.