Inhoud
07 - Sensoren en Actuatoren
Introductie
We gaan verder met elektronica, ditmaal de belangrijkste onderdelen om (uiteindelijk) interessante machines te maken: sensoren (om dingen te meten of waar te nemen) en actuatoren (om dingen te doen). Denk hierbij aan sensoren voor temperatuur, licht, luchtvochtigheid, beweging, positie, afstand, aanraking, etc. Denk bij actuatoren aan verschillende soorten motoren (stappenmotor, DC, BLDC) of lichtbronnen (LED strip, matrix, RGB) of displays (LCD, OLED), etc.
Opdrachten in het kort:
- Opdracht 1: Zorg ervoor dat je met de Arduino IDE een board kan programmeren (pico of arduino) en sluit een aantal LEDjes aan. Laat de LEDjes knipperen!
- Opdracht 2: Maak een sketch waarbij je seriële data op je computer kunt inlezen en verzenden.
- Opdracht 3: Lees analoge data in en maak een schets waarbij iets gebeurt wanneer er een drempelwaarde overschreden wordt.
- Opdracht 4: Sluit een RC servo aan en zorg ervoor dat je deze kunt bewegen met je potentiometer.
- Opdracht 5: pak de ELEGOO kit, kies 1 sensor die je interessant lijkt (b.v. temperatuur, joystick, licht, beweging, geluid, acceleratie, RFID) en kies 1 actuator die je interessant lijkt (DC motor, stappenmotor, RC servo, LCD display, LED matrix) en maak een schets waarbij je gebruik maakt van 'Sense-Think-Act'.
Opdrachten
Laat de LEDjes knipperen
In deze opdracht gaan we kennis maken met microcontroler boards. Arduino is de naam van een Open Source embedded controllerboard of microcontroller board, deze boards worden veel gebruikt in het het maken van prototypen en het besturen van zelfgemaakte machines. Voor het programmeren hiervan gebruiken we de https://www.arduino.cc/en/software/Arduino IDE. De opdrachten van deze maand zijn gebaseerd op het UT vak physical computing, de achtergrond informatie (in het Engels) voor deze opdracht is hier te vinden. Mocht je gevraagd worden kun je rechts bovenin inloggen met gebruikersnaam 'assortimens' en wachtwoord 'studio13'.
Je kunt voor deze opdracht zowel de zelf ontworpen picoproto (gemaakt tijdens het onderwerp electronica productie) of een arduino board gebruiken. Hieronder zie je de picoproto.
Als je een arduino wilt gebruiken kun je een vragen naar 1 van de kits zoals hieronder afgebeeld.
Opdracht 1: Stuur 5 LEDs aan met behulp van je microcontroler board naar keuze:
- Verbind alle LEDs en weerstanden met je microcontroler board, gebruik verschillende pins zodat je ze apart kunt aansturen. Test of al je LEDs het doen. Teken je schakeling uit in Tinkercad en zet deze in je documentatie / portfolio.
- Programma 1: Iedere LED word om de beurt aangezet, er wordt gewacht, de LED word uitgezet, er word weer gewacht en daarna word de volgende LED aangezet, totdat alle LEDs een keer aan en uit zijn geweest, heen en terug. Maak gebruik van een array en van een for-loop, hierdoor wordt het programma een stuk korter en overzichtelijker. Als uitgebreide handleiding kun je kijken naar Knight Rider Looplicht (Nederlands, inloggen kan met de gegevens die hierboven staan).
- Programma 2: Maak nog twee andere knipper patronen die na elkaar worden getoond. Laat bijvoorbeeld de LEDs tegelijk branden en 10 keer knipperen, een looplicht, 3 seconden laten branden en daarna uit. Maak hierbij ook weer gebruik van een for-loop, daarnaast kun je delay() of millis() gebruiken voor de timing.
- Optioneel: Doe dezelfde opdracht maar gebruik zo min mogelijk regels code. Het zou mogelijk moeten zijn om het binnen 10 regels te kunnen programmeren.
Uitgebreide beschrijving van bovenstaande opdrachten vind je ook hier (physical computing, Chapter 1: Getting Started).
Seriële data
In deze opdracht gaan we verder kijken naar het verzenden en ontvangen van seriële data. Seriële communicatie is het proces waarbij data met 1 bit tegelijk word verzonden over een communicatie kanaal. Via de USB kabel kun je data naar je microcontroler board toe sturen, maar je kunt ook data terug ontvangen. Seriële communicatie bestaat alleen uit 1 of 0. Wanneer je de data wilt uitlezen in bijvoorbeeld de Arduino IDE moet je ervoor zorgen dat de bit rate goed staat ingesteld voor succesvolle communicatie.
Daarnaast leren we het verschil tussen signed (standaard) en unsigned variabelen en wanneer een rollover plaatsvind. Ook zien we hoe we data naar het microcontroler board kunnen sturen terwijl er een programma loopt. Voor uitgebreide achtergrond informatie kun je de Lecture making things talk lezen (in het Engels).
Opdracht 2: Maak een sketch waarbij je seriële data op je computer kunt inlezen en verzenden.
- Als eerste testen we of we data van het microcontroler board op de computer kunnen inzien. Maak een “hello world” programma en open de serial monitor om de data te kunnen inzien.
- Maak een sketch waarbij je een (externe) knop kan inlezen. Teken je schakeling uit in Tinkercad. Zorg ervoor dat je de waardes op je computer in een grafiek krijgt in de serial plotter.
- Als laatste gaan we de status van de LED veranderen door data naar de micocontroler toe te sturen. Maak een sketch waarbij je door 'O' te sturen de LED aan zet en met 'X' de LED uit.
Analoge data
Je microcontroller kan verschillende inputs verwerken. Naast de de seriële data (bijvoorbeeld een knopje) kun je ook analoge data ontvangen. De analoge dat ontvang je bijvoorbeeld door een potentiometer of een ligt sensor in te lezen. Data van een knop ontvang je door een digitalRead() te doen in software. In de vorige opdracht hebben we gezien dat wanneer je een knopje aansluit je ook een weerstand (meestal 10k) nodig hebt, dit noemen we een pull-up resistor. Deze functie kun je ook in software doen, waardoor je een knop alleen maar met een data pin en de GND hoeft te verbinden. Je maakt dan een spanningsdeler. Een uitgebreide uitleg hierover vind je in de lecture Making things sense (Engels).
De analoge data is de tegenhanger van digitale (seriële) data. Analoge data is bijvoorbeeld de data van een temperatuur of een licht sensor. Dit signaal varieert over de tijd en word vertaald in een elektronisch signaal. De waarde van dit signaal kan verschillende waardes hebben binnen een range (bijvoorbeeld 0 tot 5V). Het microcontroller board gebruikt de analog to digital converter (ADC) om het signaal te lezen. De functie die we hiervoor gebruiken is analogRead().
Opdracht 3: Lees analoge data in en maak een schets waarbij iets gebeurt wanneer er een drempelwaarde overschreden wordt.
- Maak de knop sketch uit opdracht 2 opnieuw, maar gebruik deze keer de interne pull-up.
- Maak sketch waarbij je een een potentiometer (analoog) uitleest in de serial plotter.
- Kies een sensor (b.v. een LDR) en maak een sketch waarbij iets gebeurt wanneer een drempelwaarde overschreden wordt.
Beweging
Naast digitalWrite() bestaat er ook analogWrite(), hiermee kun je bijvoorbeeld motoren aansturen. Arduino geeft een spanning van 0V of 5V, niks er tussen. Daarom gebruiken we Pulse Width Modulation (PWM), Arduino's PWM frequency is ongeveer 500Hz.
De pinnen van een arduino geven 20mA, dit is niet voor alle apparaten genoeg. Transistors kunnen gebruikt worden om toch schakelingen waarin je bijvoorbeeld je koffiezetapparaat kunt aansturen te maken. Je kunt hierbij de verschillende circuits gescheiden houden. Een transistor kan ook gebruikt worden om het signaal om te draaien, maar hiervoor zijn ook specifieke chips.
Daarnaast kun je ook wanneer je de circuits gescheiden wilt houden een relais gebruiken, alleen hierbij kan geen PWM gebruikt worden. Optocoupler is een fotodiode met een LED in een behuizing, hier heb je ook galvanische scheiding.
Servo's worden ook vaak gebruikt in combinatie met een microcontroller, een servo gebruikt ook een PWM signaal. Voor arduino bestaat een library voor de servo.
Voor uitgebreide informatie kun je de pagina van de lecture Making Things Move (Engels) bekijken.
Opdracht 4: Sluit een RC servo aan en zorg ervoor dat je deze kunt bewegen met je potentiometer.
Afsluitende opdracht
Opdracht 5: pak de ELEGOO kit, kies 1 sensor die je interessant lijkt (b.v. temperatuur, joystick, licht, beweging, geluid, acceleratie, RFID) en kies 1 actuator die je interessant lijkt (DC motor, stappenmotor, RC servo, LCD display, LED matrix) en maak een schets waarbij je gebruik maakt van 'Sense-Think-Act'.
Bronnen
Fabacademy 2025: Input Devices
Group assignment:
- Probe an input device(s)'s analog levels and digital signals
- Document your work on the group work page and reflect on your individual page what you learned
Individual assignment:
- Measure something: add a sensor to a microcontroller board that you have designed and read it.
Learning outcomes
- Demonstrate workflows used in sensing something with input device(s) and MCU board
Have you answered these questions?
- Linked to the group assignment page.
- Documented what you learned from interfacing an input device(s) to your microcontroller and optionally, how the physical property relates to the measured results.
- Documented your design and fabrication process or linked to the board you made in a previous assignment.
- Explained the programming process(es) you used.
- Explained any problems you encountered and how you fixed them.
- Included original design files and source code.
- Included a ‘hero shot’ of your board.
FabAcademy2025: Output Devices
Group assignment:
- Measure the power consumption of an output device.
- Document your work on the group work page and reflect on your individual page what you learned.
Individual assignment:
- Add an output device to a microcontroller board you've designed and program it to do something.
Learning outcomes
- Demonstrate workflows used in controlling an output device(s) with MCU board you have designed.
Have you answered these questions?
- Linked to the group assignment page.
- Documented how you determined power consumption of an output device with your group.
- Documented what you learned from interfacing output device(s) to microcontroller and controlling the device(s).
- Linked to the board you made in a previous assignment or documented your design and fabrication process if you made a new board.
- Explained the programming process/es you used.
- Explained any problems you encountered and how you fixed them.
- Included original source code and any new design files.
- Included a ‘hero shot’ of your board.



