Område 3 · lektion 16–17 · 10 dec – 17 dec
Bygge 2 – en logisk regel som öppnar en lucka
Två insignaler går in. En regel som du valt och kan motivera avgör vad de betyder tillsammans. Ett servo öppnar en lucka, och systemet minns vad som redan hänt. Det är kursens andra bedömda system, och det första som beläggs mot alla fem förmågorna.
Det här är ett bedömt mekatroniskt system Bygge 2 sammanför alla tre delarna: luckan, gångjärnet och fästet är den mekaniska strukturen, de två knapparna och servots matning är elektrotekniken, och regeln, tiden och tillståndet är styrtekniken. Till skillnad från bygge 1 ger det här bygget belägg för alla fem förmågorna: F1 planera och bygga, F2 använda ritningar och samarbeta, F3 dokumentera, F4 beskriva systemuppbyggnad och fysikaliska principer med exempel från både industri och vardagsliv, och F5 bedöma din egen förmåga vid samråd. F4 är den nya, och den beläggs enbart av det du skriver – det finns ingen del av själva bygget som ger belägg för den. Se avsnittet om dokumentationen.
Uppgiften
Bygg ett system där två insignaler tillsammans avgör om ett servo får öppna en lucka. Vad luckan sitter på bestämmer du: ett förvaringsfack, en modell av en maskinhuv, en brevlådelucka, en spjällucka i en låda. Regeln bestämmer du också, men den ska vara en riktig logisk regel med minst två insignaler, och den ska gå att skriva som en sanningstabell.
Tre regler att välja bland, från kravställningen: tvåhandsgrepp, förregling mot en lägesgivare, eller ett val med XOR. Ett eget förslag är lika välkommet och stäms av vid samrådet.
Grundkretsen är den här. Den räcker för alla tre reglerna – det som skiljer dem åt är koden, inte kopplingen.
- S1 och S2 är de två insignalerna, båda kopplade
mellan sin pinne och jord. Inga externa motstånd behövs – båda pinnarna
ställs in med
INPUT_PULLUP, och en uppsläppt knapp läses därför somHIGH. - Den andra insignalen behöver inte vara en tryckknapp. En mikrobrytare som känner att luckan är i stängt läge, eller en enkel vippströmbrytare, kopplas exakt likadant och räknas lika mycket som insignal.
- M1 är servot. Tre sladdar: brun till GND, röd till matningen, orange till D9.
- De tre jordsymbolerna är samma nolla. Ger du servot egen matning ska batteriets minuspol till samma jord – annars har kortet och servot ingen gemensam referens och servot rycker slumpmässigt.
- Servots matning är det du ska tänka efter kring. En lucka väger mer än bygge 1:s spak, så marginalen från kortets 5 V är mindre här. Se servoguiden, avsnittet om strömbehov.
Bygget löper över två pass
Bygge 2 har två pass avsatta, och de har olika uppgifter. Kom med ett bygge som inte fungerar till det första – det är den dagen felsökningen är billigast.
| Pass | Så används de 85 minuterna | Ha med dig |
|---|---|---|
| Lektion 16 · 10 dec arbetspass |
15 min samrådsunderlag, 60 min bygge och felsökning parvis, 10 min avstämning inför sista passet. | Ifyllt samrådsunderlag, ritat schema, ifylld sanningstabell och ritat tillståndsdiagram. Kitet och luckan. |
| Lektion 17 · 17 dec bygge klart |
55 min färdigställande och kontroll mot kravlistan, 30 min dokumentation och inlämning. | Ett bygge som gör det du sagt att det ska göra, och en dokumentation som är påbörjad – inte tom. |
Mellan passen ligger en vecka, och kitet är hemma hos dig. Det är den veckan bygget blir klart. Passen är till för samråd och felsökning, inte för att bygga från noll.
Parvis, med egen dokumentation
Bygget görs i par, som bygge 1. Ni planerar, ritar och felsöker tillsammans. F2 handlar bland annat om att samarbeta, och byggpassen är det enda ställe i kursen där samarbetet går att observera.
Dokumentationen skriver ni var för sig. Samma bygge, två texter. F3 och F4 bedöms individuellt – det är din förmåga att dokumentera och beskriva som mäts. Ni får dela mätvärden, schema och tillståndsdiagram. Formuleringarna, motiveringarna och exemplen ska vara dina.
En bra arbetsfördelning i det här bygget är att en av er skriver koden för en gren i tillståndsmaskinen medan den andra läser den mot diagrammet, och att ni sedan byter. Ett par där den ena kodar och den andra bygger mekanik ger två halva belägg i stället för två hela.
Innan det första passet
Fyll i samrådsunderlaget. 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 är kursens enda belägg för F5.
Svara också på de sju frågorna i kravställningen innan du kommer. Två av dem är särskilt lätta att skjuta upp och särskilt dyra att skjuta upp: vilket starttillstånd systemet har när kortet just startat, och vilka två exempel du ska beskriva ditt system mot.
Arbetsgång
- Skriv en mening om vad systemet ska göra. "Luckan på förvaringsfacket öppnas när båda knapparna trycks inom en halv sekund, och stängs igen efter tre sekunder." Den meningen blir dokumentationens första rubrik och avgör alla val efter den.
- Fyll i sanningstabellen. Alla 2² = 4 rader, med en kolumn för vad utgången ska göra. Är någon rad omöjlig i praktiken – skriv det i tabellen i stället för att stryka raden.
- Rita tillståndsdiagrammet. Rutorna, pilarna, villkoren och starttillståndet. Gå igenom varje ruta och fråga vad som händer vid varje insignalkombination.
- Rita kopplingsschemat. Ditt eget, inte en avritning av figuren ovan. Beteckningar, pinnummer och den matning du faktiskt tänker använda.
- Bygg elkretsen först, utan servot. Två knappar och
Serial. Kontrollera att du ser alla fyra kombinationerna innan något rör sig. En lysdiod på en ledig pinne är en billig och användbar tillfällig indikator. - Skriv logiken utan servot. Låt seriemonitorn skriva ut tillståndsbytena. Nu felsöker du regeln, och bara den.
- Koppla in servot och kör det ensamt.
write()med dina två vinklar, ingenting annat. Notera var armen hamnar i vardera läget. - Sätt ihop dem. Servot styrs nu av tillståndsmaskinen och skrivs bara när ett tillstånd byts, inte varje varv.
- Bygg mekaniken. Luckan, gångjärnet och fästet. Kontrollera för hand att luckan går fritt hela vägen mellan lägena innan du låter koden köra dit.
- Mät. Se nästa avsnitt. Mätningen görs på det färdiga bygget.
- Prova det som inte ska fungera. Tejpa fast en knapp. Håll bara den ena. Tryck för långsamt. Dra ur och sätt i strömmen mitt i en cykel. Anteckna vad som hände – de anteckningarna är dokumentationens bästa avsnitt.
- 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å nedan, eller gör båda om du siktar på C eller högre. Siffrorna i tabellerna är exempel, inte facit.
Alternativ A: ditt eget tidsfönster
Det här är områdets egen mätning, och den går att göra utan multimeter.
Låt koden stämpla tiden i en egen unsigned long forstaTrycket
när den första knappen går ned, och skriva ut skillnaden mot
nu när den andra gör det:
Serial.print("Tid mellan knapparna: ");
Serial.print(nu - forstaTrycket);
Serial.println(" ms");
Tryck tio gånger så snabbt du kan med båda händerna och anteckna varje värde.
| Försök | Uppmätt tid |
|---|---|
| Snabbast av tio | 34 ms |
| Långsammast av tio | 187 ms |
| Med handskar på | 260 ms |
Välj sedan ditt tidsfönster ur mätvärdena i stället för ur magkänslan. Med 187 ms som värsta fall ger ett fönster på 500 ms en marginal på
500 − 187 = 313 ms, alltså 313 / 187 = 1,7 gånger värsta fallet
Skriv i dokumentationen vilket fönster du valde och vilken marginal mätvärdena gav. Ett tal med en motivering är belägg. Ett tal utan är en gissning.
Alternativ B: servots ström när luckan lyfts
Bryt servots röda sladd och koppla in multimetern i serie, som i bygge 1. Mät i vila, under rörelse utan lucka, och under rörelse med luckan monterad.
Använd 10 A-uttaget Ett servo som lyfter en lucka kan dra över en halv ampere. 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, luckan stilla | 9 mA | bara elektroniken i servot |
| Rörelse utan lucka | 195 mA | motorn arbetar obelastad |
| Rörelse med luckan på | 430 mA | lastens verkliga pris |
Effekten i det sista läget, med 4,8 V uppmätt över servot:
P = U · I = 4,8 V · 0,430 A = 2,06 W
Jämför med bygge 1, där samma räkning gav 0,93 W. Luckan kostar alltså ungefär dubbelt så mycket effekt som spaken gjorde:
2,06 / 0,93 = 2,2 gånger
Det är den siffran som avgör om servot klarar sig på kortets 5 V eller behöver egen matning.
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. F4 skiljer dem på ett annat: översiktligt mot utförligt. Båda orden handlar om vad du skriver, inte om vad du byggt. Ett utmärkt bygge med tunn text landar på E. Det motsatta gäller inte – du kan inte skriva dig till en fungerande lucka. Men av de två är det texten som oftast fattas.
Beskrivningen som ger belägg för F4
Det här är nytt sedan bygge 1 och det är den enskilt viktigaste tillkomsten. F4 lyder att eleven beskriver systemuppbyggnad och fysikaliska principer med exempel från både industri och vardagsliv. Utan en sådan text finns inget belägg alls för förmågan, hur bra bygget än fungerar. Skriv fyra stycken:
- Systemets uppbyggnad. Följ signalvägen: från de två insignalerna, genom regeln och tillståndsmaskinen, till servot och luckan. Namnge de tre delarna mekanisk struktur, elektroteknik och styrteknik och peka ut vad i ditt bygge som är vad.
- De fysikaliska principerna. Vad omvandlas var? El blir vridmoment i servot, vridmomentet blir en kraft i änden av armen, kraften flyttar luckan. Ta med minst en beräkning – armlängden och kraften, eller effekten ur mätningen.
- Ett exempel ur industrin. En press med tvåhandsdon, en rullport med fotocell, en förregling på en maskinhuv. Skriv vad som är likt ditt bygge och vad som är olikt – det olika är oftast det mest intressanta: dubblerade kanaler, mekaniska spärrar, beräknade säkerhetsavstånd.
- Ett exempel ur vardagen. Mikrovågsugnens luckspärr, tvättmaskinens luckelås, trapphusets två strömbrytare, bilens startspärr. Det ska vara ett annat slags system än ditt industriexempel, inte samma idé i andra kläder.
Ett stycke till, om du siktar högre: skriv vad ditt bygge inte är. Regeln ligger i mjukvara, kretsen är inte dubblerad, ingenting är provat mot en standard. Att kunna säga var din modell slutar och den riktiga konstruktionen börjar är precis vad "utförligt och nyanserat" betyder.
Tre punkter i mallen som passar särskilt bra här
- Motiverade komponentval är tidsfönstret och vinklarna. Varför just 500 ms, och vad hade hänt vid 100 ms?
- Mätvärden med enhet är mätningen ovan, med läget angivet. "187 ms som långsammaste av tio försök" säger något; "det gick ganska fort" gör det inte.
- Vad som gick fel är inte en bekännelse utan ett krav. Villkoret som aldrig blev sant, tillståndet som fastnade, luckan som fastnade i gångjärnet – skriv symtomet, vad du trodde det var, och vad det visade sig vara.
Om det inte fungerar
- Villkoret blir aldrig sant. Kontrollera först att det
står två tecken och inte ett:
&&, inte&. Det felet kompilerar utan varning och är det vanligaste i hela området. - Systemet står kvar i sitt första tillstånd.
Tillståndsvariabeln är deklarerad inuti
loop()och nollställs varje varv. Flytta den utanför funktionerna. - Något som ska ta 500 ms sker omedelbart.
Tidsstämpeln är deklarerad inuti
loop(), eller så har den fel typ. Både stämpeln och den avlästa tiden ska varaunsigned long. - Knappen missas ibland. Ett
delay()ligger kvar någonstans iloop(), ofta i en avstudsning från förra området. Sök efter ordet. - Ett tryck räknas som flera. Kontaktstuds. Kräv att
det gått minst 20 ms sedan det förra godtagna trycket, med
tidsstämpelmönstret – inte med
delay(20). - Bygget går att utlösa med en hand. Det låsta tillståndet saknas. Efter en cykel ska ingenting hända förrän båda insignalerna varit i viloläge samtidigt.
- Servot surrar hela tiden och blir varmt.
write()anropas varje varv, eller så står luckan mot ett mekaniskt stopp. Skriv bara vid tillståndsbyte, och ändra vinkeln om något är i vägen. - Kortet startar om när luckan lyfts. Brownout. Servot drar mer än kortets matning orkar. Ta bort luckan och prova igen – försvinner felet var det aldrig i koden. Ge servot egen matning med gemensam GND.
- Luckan öppnar sig vid varje strömglapp. Starttillståndet är fel. Vid en omstart hamnar systemet i utgångsvärdet, och det ska vara det stängda läget.
- 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 2 inlämnat är område 3 klart och höstterminen slut. Du har då byggt två bedömda mekatroniska system, och det andra kan något det första inte kunde: väga två signaler mot varandra, hålla reda på var i ett förlopp det är, och göra flera saker samtidigt.
Nästa område byter ut ettorna och nollorna mot tal. En givare som svarar med ett värde i stället för ett av eller på öppnar mätning, kalibrering och datablad – och den första riktiga användningen för loopar och arrayer.
Tillbaka till område 3 eller till kursens material.