← Kursens material Konstruktion och schema · område 6 Område 6

Område 6 · lektion 30

Konstruktion och schema

Ett helt pass utan att bygga något. Det känns fel och är det inte: felen som kostar mest tid i ett projekt är konstruktionsfel, och de blir dyrare för varje timme de får ligga. Under det här passet ritar du systemet två gånger — först grovt, sedan i detalj — räknar strömmen och skriver materiallistan. Efteråt vet du om projektet går att bygga.

Mål

Genomgång

Två ritningar, i den här ordningen

Blockschemat svarar på vad som pratar med vad. Kopplingsschemat svarar på vilken tråd som går var. Att rita dem i fel ordning är det vanligaste sättet att bygga fel system snyggt.

BlockschemaKopplingsschema
Visarfunktioner och signalvägarkomponenter, pinnar och ledningar
Rutorna är"avståndsgivare", "beslut", "lucka"HC-SR04, ATmega328P, servo
Ritasförst, på fem minutersedan, på en halvtimme
Svarar på fråganÄr det här ett mekatroniskt system?Går det att koppla ihop?
Ändrasnär idén ändrasnär komponentvalet ändras

Blockschemat

Fyra till sex rutor och pilar emellan. Signalen går vänster till höger, matningen ritas separat, och återkopplingar — ändlägen, lägesgivare — ritas som en pil tillbaka. Så här ser stommen ut i nästan varje slutprojekt:

Ett blockschema med fyra rutor på rad från vänster till höger: Givare, Styrenhet, Drivsteg och Aktuator. Heldragna pilar går åt höger mellan rutorna och är märkta mätvärde, styrsignal och effekt. Under raden ligger en bredare ruta märkt Matning, med streckade linjer upp till styrenheten, drivsteget och aktuatorn. En heldragen linje går från aktuatorn nedåt, vänsterut och upp i styrenheten med en pilspets, märkt återkoppling. Under matningsrutan står gemensam nolla för allt. Givare Styrenhet Drivsteg Aktuator Matning mätvärde styrsignal effekt återkoppling gemensam nolla för allt
Stommen. Heldraget är signal, streckat är matning, och återkopplingen är det ändläge eller lägesgivare som talar om att rörelsen blev av. Din version namnger rutorna: "LDR i spänningsdelare", "tröskel med hysteres", "servo", och tar bort drivsteget om aktuatorn är ett servo som har sitt eget inbyggt.

Det här schemat är också ditt kvitto på att systemet är mekatroniskt. Saknas rutan längst till vänster har du ett reglage. Saknas pilen tillbaka har du ett system utan återkoppling, vilket är tillåtet men enklare — och det är precis en sådan sak som skiljer ett enkelt system från ett komplext i F4:s mening.

Pinnbudgeten: Unon har färre pinnar än du tror

En Uno har 14 digitala och 6 analoga anslutningar, men flera av dem är upptagna eller kan inte allt. Gör den här tabellen innan du ritar kopplingsschemat, så slipper du rita om det.

PinnarVad som gällerFöljd för dig
D0, D1Används av USB-porten och SerialAnvänd dem inte. Sitter något där misslyckas uppladdningen
D2, D3Klarar avbrottSpara dem till knappar och pulsgivare om du behöver reagera snabbt
D3, D5, D6, D9, D10, D11Klarar analogWrite, alltså PWMÖvriga digitala pinnar kan bara ge på eller av
D9, D10Servo.h tar över tidkretsen för de här tvåEtt anslutet servobibliotek stänger av PWM på 9 och 10, även för andra saker
D13Sitter ihop med lysdioden på kortetGår att använda, men blinkar med. Undvik för ingångar
A0–A5Analoga ingångar, och användbara som digitalaDin reserv när de digitala tagit slut
A4, A5Är också I2C, alltså SDA och SCLAnvänder du en I2C-display är de två upptagna

Den fällan som kostar mest Servo på pinne 9 och PWM till en motordrivare på pinne 10, i samma skiss. Motorn går för fullt eller inte alls, koden ser korrekt ut, och felet syns inte i något schema. Har du både servo och PWM: lägg PWM på 3, 5, 6 eller 11. Det står också i motordrivarguidens vanliga fel.

Strömbudgeten för hela systemet

I område 5 räknade du på en motor. Nu räknar du på allt samtidigt, och det är summan som avgör om systemet står stabilt eller startar om ibland. Två gränser gäller på Unon: 20 mA per pinne och 200 mA totalt genom chippet. En budget kan se ut så här:

DelVilaUnder driftMatas från
Uno-kortet självt45 mA45 mAUSB eller 7–12 V på jacket
LDR i spänningsdelare, 10 kΩ0,5 mA0,5 mAKortets 5 V
HC-SR042 mA15 mAKortets 5 V
Lysdiod med förresistor015 mAEn pinne
Litet servo10 mA250 mA, upp mot 700 mA om det hindrasEgen matning
Summa utan servot48 mA76 mAryms i de 200 mA

Slutsatsen står i sista kolumnen och är alltid densamma: allt som rör sig får egen matning, och den matningens minuspol kopplas ihop med kortets GND. Ett servo som verkar fungera på kortets 5 V fungerar tills det möter motstånd, och då startar Unon om mitt i rörelsen. Det felet ser ut som ett programfel och är det aldrig — se servoguiden.

Kopplingsschemat

Nu, och först nu, ritar du ledningarna. Kravet är enkelt att formulera och svårt att uppfylla: någon annan ska kunna bygga ditt system efter ritningen utan att fråga dig något. Det betyder att sju saker ska framgå:

  1. Varje komponent med sitt namn, inte bara sin form.
  2. Varje pinnummer utskrivet, på båda sidor av varje ledning.
  3. Alla motståndsvärden, med enhet.
  4. Varje spänningsnivå: var 5 V kommer ifrån, var 9 V kommer ifrån.
  5. Den gemensamma nollan som en utritad ledning, inte som något underförstått.
  6. Polariteten på det som har en: dioder, elektrolytkondensatorer, motorns matning.
  7. Datum och en versionsbeteckning, så att du vet vilken ritning som gällde när mätvärdet togs.

Symbolerna och läsriktningen står i kopplingsschemaguiden från område 1. Den gäller ordagrant här — skillnaden är bara att schemat nu är ditt eget och att ingen rättar det åt dig.

Materiallistan

En rad per komponent, med antal och den uppgift ur databladet som avgjorde valet. Sista kolumnen är den som skiljer en materiallista från en inköpslista, och den är dessutom halva svaret på en fråga jag ställer på redovisningen:

AntalKomponentVad som avgjorde valet
1Servo SG90Behöver 0,031 N·m, servot lämnar cirka 0,15 N·m
1LDRSka skilja dagsljus från skymning, inte mäta lux exakt
1Motstånd 10 kΩGer halva spänningen vid den ljusnivå tröskeln ligger på
1Batterihållare 4 × AA6 V till servot, skilt från kortets 5 V
2MikrobrytareÄndlägen, så att servot kan stoppas om luckan kärvar

Koden börjar i schemat

Det sista du gör under ritpasset är att skriva av pinnummeren ur ditt eget schema, som konstanter. Då finns pinnbudgeten på ett andra ställe, i kod, och du upptäcker en krock innan du kopplat något. Skriv av mönstret och byt ut namnen mot dina:

// Slutprojekt – pinnar enligt kopplingsschema rev. B, 2027-04-22
// Alla nummer hämtade ur ritningen, inga gissningar.

#include <Servo.h>              // tar över PWM på pinne 9 och 10

const int LDR_PIN      = A0;   // spänningsdelare med 10 kohm mot GND
const int ANDLAGE_PIN  = 2;    // mikrobrytare, INPUT_PULLUP, sluter mot GND
const int LARM_PIN     = 5;    // lysdiod med 220 ohm. PWM-pinne, kan dimras
const int SERVO_PIN    = 9;    // servo, egen 6 V-matning, gemensam nolla

const int TROSKEL_MORKT = 400; // råvärde. Kalibreras, se område 4
const int TROSKEL_LJUST = 480; // mellanrum mot ovanstående, mot fladder

Servo lucka;

void setup() {
  pinMode(ANDLAGE_PIN, INPUT_PULLUP);
  pinMode(LARM_PIN, OUTPUT);
  lucka.attach(SERVO_PIN);
  Serial.begin(9600);
}

Fyra saker i den koden kommer direkt ur ritningen och ingen annanstans ifrån: pinnumren, motståndsvärdena i kommentarerna, noteringen om egen matning, och revisionsbeteckningen på första raden. Ändrar du schemat ändrar du de här raderna samma dag — annars har du två sanningar, och det är den i koden som gäller medan den i pärmen är den du visar upp.

I industrin och i vardagen

Industrin: ritningen ska hålla i tjugo år

En produktionsmaskin levereras med en elpärm där varje ledning har ett nummer, varje plint en beteckning som X2:14, och varje ritning ett ritningsnummer med revisionsbokstav. När en underhållstekniker står vid maskinen klockan tre på natten 2041 och något inte fungerar, är det den pärmen som avgör om felet tar tjugo minuter eller ett skift. Därför är revisionshanteringen inte byråkrati: ändras en ledning under driftsättningen ska ritningen ändras samma dag, med ny revisionsbokstav, annars felsöker någon efter en ritning som beskriver en maskin som inte längre finns.

Vardagen: monteringsanvisningen som inte innehåller ett enda ord

En hyllas monteringsanvisning har inga meningar alls — bara numrerade steg, en lista med 14 skruvar av tre sorter ritade i naturlig storlek, och bilder på vad som ska sitta var. Den fungerar i trettio länder just för att den säger allt med numrering och mått. Kravet på ritningen är exakt detsamma som i elpärmen och i ditt kopplingsschema: den som följer den ska komma rätt utan att fråga den som ritade. Skillnaden är att hyllan har ett steg som heter "vänd hyllan rätt" — ett fel som kostar fem minuter, mot elpärmens fel som kostar ett skift.

Prova själv

  1. Rita blockschemat på fem minuter, för hand. Fyra till sex rutor, pilar med vad som skickas, matningen separat. Blir det fler än sju rutor är projektet troligen för stort.
  2. Peka ut de tre delarna i ditt eget blockschema. Mekanisk struktur, elektroteknik och styrteknik. Saknas någon är det nu du vill veta det, inte den 20 maj.
  3. Gör pinnbudgeten som en tabell. En rad per pinne du tänkt använda, med vad som sitter där. Kontrollera mot tabellen ovan att ingen pinne krockar med sig själv.
  4. Räkna strömbudgeten. Summera allt som matas från kortet, i vila och under drift. Ligger driftsumman över 200 mA, eller något enskilt över 20 mA, ska den delen ha egen matning.
  5. Rita kopplingsschemat i detalj, med de sju punkterna i listan ovan. Sätt datum och revisionsbokstav på det.
  6. Låt någon annan läsa det. Byt schema med den du sitter bredvid och fråga: kan du bygga det här? Varje fråga den andra behöver ställa är en sak som saknas på ritningen.
  7. Skriv materiallistan med kolumnen "vad som avgjorde valet". Har du inget att skriva i den kolumnen har du inte valt komponenten, du har hittat den.
  8. Skriv konstantblocket i koden efter ditt schema, ladda upp den tomma skissen och kontrollera att den kompilerar. Det är ditt första bevis på att pinnbudgeten går ihop.

Kontrollfrågor

Varför räcker det inte att rita kopplingsschemat, om det ändå innehåller mer information än blockschemat?

Därför att de svarar på olika frågor. Kopplingsschemat visar att det går att koppla ihop, men det säger inte om det du kopplat ihop är ett mekatroniskt system, eller var beslutet fattas. En felaktig konstruktion kan ritas till ett perfekt kopplingsschema. Blockschemat tar fem minuter och fångar just den sortens fel — det är den billigaste kontrollen i hela projektet.

Du har ett servo på pinne 9, en motordrivare som behöver PWM, och en I2C-display. Vilka pinnar är kvar till en knapp och två lysdioder?

Servot tar 9 och stänger samtidigt av PWM på 10. Displayen tar A4 och A5. PWM till drivaren måste alltså ligga på 3, 5, 6 eller 11 — säg 3, plus en eller två riktningspinnar, säg 4 och 7. Kvar till knapp och lysdioder finns 2, 8, 11, 12, 13 och A0–A3. Gott om plats, men bara för att du räknade först: hade PWM hamnat på 10 hade motorn inte gått, och felet hade inte synts någonstans i schemat.

Ditt system drar 48 mA i vila och 76 mA under drift, allt från kortets 5 V. Servot ligger utanför den summan. Varför står det ändå med i strömbudgeten?

Därför att budgeten ska visa hela systemet, inte bara det kortet orkar. Servots 250 mA under rörelse och närmare 700 mA i stopp avgör vilket batteri du behöver, hur länge det räcker och hur grov ledningen till det ska vara. Att posten står med och är hänvisad till egen matning är just det som visar att du räknat — en budget där servot saknas ser identisk ut med en budget där någon glömt det.

Varför ska den gemensamma nollan ritas ut som en ledning, när den är självklar?

Därför att den är den vanligaste felkällan i system med två matningar, och just för att den känns självklar är den den som glöms. Ett system utan gemensam nolla beter sig slumpmässigt, blir bättre när du håller i sladden, och ger ett fel som ser ut som brus, glappkontakt eller programfel om vartannat. På ritningen är den en linje som tar tio sekunder att dra. I felsökningen är den en halv kväll.

Vad är revisionsbeteckningen på ett skolschema bra för?

Att koppla ihop ett mätvärde med den koppling det mättes på. Du kommer att ändra schemat två eller tre gånger under maj. Står det "rev. B, 20 maj" i både anteckningen och koden vet du efteråt vilken version som gav 4,1 V och vilken som gav 3,2. Utan beteckningen har du en siffra utan koppling till någon verklighet, och den kan du inte använda i dokumentationen.

Vanliga fel

Vidare

Konstantblocket ovan använder const int och INPUT_PULLUP, som båda står i språkreferensens kapitel om typer respektive i guiden om digital ingång. Ska ditt system minnas lägen är Tillstånd nästa sida att läsa, och tidsgränsen som stoppar en rörelse som inte blev av bygger på Tid.

Nästa två pass är bygge. Kraven och arbetsgången står på bygge 5:s sida. Går något sönder på vägen — och det gör det — är Systematisk felsökning guiden till lektion 33.

Tillbaka till område 6 eller till kursens material.