ingenieursvaardigheden - vrije universiteit brussel...2016/09/30  · deze nota’s zijn enkel tot...

87
Ingenieursvaardigheden Design en prototyping ing. Y. Verbelen Vrije Universiteit Brussel Bachelor Industri¨ ele Wetenschappen Nijverheidskaai 170, B-1070 Anderlecht [email protected] This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/. v1.3

Upload: others

Post on 27-May-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

IngenieursvaardighedenDesign en prototyping

ing. Y. Verbelen

Vrije Universiteit BrusselBachelor Industriele Wetenschappen

Nijverheidskaai 170, B-1070 [email protected]

This work is licensed under the Creative CommonsAttribution-NonCommercial-ShareAlike 4.0 International License.

To view a copy of this license, visithttp://creativecommons.org/licenses/by-nc-sa/4.0/.

v1.3

Page 2: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

Voorwoord

Dat de meest elementaire wetten van de elektriciteit en mechanica al eeuwenlang gekend zijn, is toe teschrijven aan hun elegante eenvoud. Al in 1827 ontdekte de Duitse fysicus Georg Simon Ohm dat ereen eenvoudig lineair verband bestaat tussen de spanning over een weerstand en de stroom erdoor, nl. deresistiviteit van de weerstand zelf. Een simpel maar krachtig concept, nu gekend als de Wet van Ohm,dat dagelijks door talloze elektronici wordt toegepast. Kirchhoff ontdekte soortgelijke, eenvoudige ver-banden tussen spanningen en stromen in schakelingen, en deze fundamentele wetten hoefden de laatste200 jaar niet meer herzien te worden.

De realiteit is helaas iets ingewikkelder. De reden waarom vergelijkingen in elektronicahandboekener zo eenvoudig uitzien, is dat ideale componenten in ideale omstandigheden worden verondersteld:draden die componenten verbinden hebben geen weerstand, de temperatuur blijft steeds constant eninterferentie met andere elektromagnetische systemen is onbestaande. In een reele schakeling hebbendraden of breadboards echter wel een bepaalde weerstand, de capaciteit van condensators hangt af vande spanning erover en hun levensduur, de contacten van schakelaars trillen en oxideren aan de lucht enelk ongeısoleerd metalen object in de schakeling werkt als een antenne die ruis van omringende appa-raten of verlichting oppikken, enzovoort. Helaas zijn de meeste van deze factoren onbekend en is hetdus moeilijk om ze mee te nemen in berekeneningen of simulaties. Gelukkig is de invloed van dezeonbekende factoren doorgaans te minimaliseren door schakelingen goed te ontwerpen, maar zelfs dannog is er slechts een manier om zeker te weten of een schakeling werkt zoals je in gedachten hebt: eenprototype bouwen en uittesten in het lab.

Totdat je voldoende ervaring hebt opgedaan om schakelingen te kunnen ontwerpen die van de eerstekeer werken, zal je eerst veel schakelingen op breadboard moeten bouwen, uittesten, en je ontwerpenaanpassen. Praktische elektronica neemt nu eenmaal flink wat tijd in beslag om onder de knie te krijgen.Maar eens je de basisvaardigheden van prototyping beheerst, heb je toegang tot een wereld met quasiongelimiteerde mogelijkheden.

Beschouw deze nota’s eerder als een bundel tips en technieken dan als een syllabus. Laat het geennaslagwerk zijn dat op een stoffige zolder terechtkomt, maar een gids die je actief consulteert als je zelfaan de slag gaat in het lab.

Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten vanAnn Peeters, Lieven Standaert en Laurent Segers, waarvoor dank.

Het staat eenieder vrij om deze syllabus geheel of gedeeltelijk te repliceren en te verspreiden voorniet-commerciele doeleinden zoals vastgelegd in de Creative Commons BY-NC-SA 4.0 Internationallicentie. Vrije toegang tot informatie behoort een basisrecht te zijn voor iedereen.

Anderlecht, augustus 2015Y. Verbelen

Page 3: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,
Page 4: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

Inhoudstafel

Voorwoord i

1 Inleiding 11.1 Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.1.1 Specificaties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Situering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3 Materiaal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.3.1 Recuperatiemateriaal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3.2 Webshops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3.3 Uitrusting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.4 Vorm en evaluatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2 Elektronica 52.1 Modulair ontwerp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.2 Het display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.2.1 Zevensegmentendisplays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2.2 LED-displays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2.3 Vacuumfluorescentiedisplays . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2.4 Nixiebuizen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.2.5 Aansturing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.2.5.1 Multiplexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.2.5.2 Shiftregisters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.2.5.3 Charlieplexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.3 Het bedieningspaneel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.3.1 Drukknoppen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.3.2 Draaischakelaars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.3.3 Joysticks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.3.4 Touchscreens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.3.5 Potentiometers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.3.6 Debouncing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.4 De klok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.4.1 Real Time Clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.4.2 Microcontroller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.4.3 Synchronisatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.5 De buzzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.5.1 Piezobuzzers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.5.2 Luidsprekers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.6 De voeding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.6.1 Batterijen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.6.2 Netadapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.6.3 Netvoeding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.6.4 Spanningsregulators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.7 De logica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3 Microcontrollers programmeren 173.1 De Arduino Uno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.1.1 De voeding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.1.2 Randapparatuur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.2 De toolchain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

Page 5: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

3.2.1 C/C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203.2.2 Shields en bibliotheken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.3 Programmastructuur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.3.1 Declaraties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.3.2 Initialisaties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.3.3 Hoofdroutine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.4 Hardwarecomponenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.4.1 Digitale pinnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.4.2 Analoge pinnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.4.3 Pulsbreedtemodulators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.4.4 Seriele communicatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.4.5 Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.4.6 Timers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.5 Documentatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343.5.1 Commentaar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343.5.2 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.6 Ontwerpcyclus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

4 PCB-ontwerp 374.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374.2 CircuitMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

4.2.1 Installatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384.2.2 De “cloud” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

4.3 Schema’s tekenen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404.4 De PCB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484.5 Productie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

4.5.1 Gerbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524.5.2 3D-model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

5 Bekabeling 535.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535.2 Kabels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

5.2.1 Structuur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535.2.2 Isolatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545.2.3 Dikte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

5.3 Kabeltypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555.3.1 Bandkabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555.3.2 Coaxkabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565.3.3 UTP-kabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565.3.4 Bundels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

5.4 Connectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565.4.1 Terminologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

5.4.1.1 Geslacht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575.4.1.2 Pinafstand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575.4.1.3 Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575.4.1.4 Orientatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

5.4.2 Printkroonstenen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585.4.3 JST-connectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595.4.4 Waferconnectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595.4.5 Headers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

5.4.5.1 Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615.4.5.2 Stacking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

5.4.6 D-sub-connectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625.4.7 IDC-connectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635.4.8 Standaarden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

5.5 Kabels maken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645.5.1 Strippen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655.5.2 Krimpen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655.5.3 Isoleren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

Page 6: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

5.5.4 Kabelbomen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665.6 Bekabelingstechnieken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

6 Solderen 696.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696.2 Soldeerbout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696.3 Soldeerverbindingen maken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706.4 Desolderen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

6.4.1 De tang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726.4.2 Desoldeerpomp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726.4.3 Litze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

6.5 Oververhitting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736.6 Veiligheid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

7 Behuizing 757.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757.2 Ontwerpvolgorde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757.3 Mechanisch ontwerp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

7.3.1 3D CAD software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767.3.2 Rapid prototyping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

7.3.2.1 Lasercutters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767.3.2.2 Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777.3.2.3 3D-printers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

7.3.3 Bereikbaarheid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

Page 7: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,
Page 8: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,
Page 9: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,
Page 10: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

1Inleiding

Things get worse under pressure.

Murphy’s Law of Thermodynamics

1.1 Project

Een van de onderdelen van het studiedeel Ingenieursvaardigheden is zelfstandig een project uitwerkenwaarin je je kennis en vaardigheden inzake elektronica, informatica en mechanica zal moeten toepassen.Het doel van deze opdracht is een wekker te ontwerpen en te bouwen, met alle functionaliteiten die jevan een wekker redelijkerwijze kan verwachten. We willen je echter ook de mogelijkheid geven creatiefte zijn, in de mate dat de beschikbare tijd en budget dit toelaat.

1.1.1 Specificaties

De opdracht voor het project, en meteen ook de minimumvereiste, luidt als volgt:

Ontwerp een elektronische wekker die de correcte tijd weergeeft op een manier die in het donker zicht-baar is. Via een wekkerfunctie moet een tijdstip kunnen ingesteld worden waarop de wekker moet“aflopen”, en deze gebeurtenis moet met een duidelijk hoorbaar audiosignaal gesignaleerd wordenaan de gebruiker. Er moet ook een “snooze”-functie voorzien zijn waarmee het aflopen van de wek-ker onderbroken en met 10 minuten verlaat wordt. De wekker moet visueel aangeven of het alarm opstaat of niet.

Uiteraard ben je vrij om naar eigen smaak extra functionaliteit toe te voegen.

1.2 Situering

Het project situeert zich als een opdracht die complementair is bij de WPO’s Basiselektronica. In deWPO’s Basiselektronica wordt de focus gelegd op de individuele componenten en hun eigenschappen,terwijl je ze in dit project zal moeten toepassen in concrete schakelingen.

Daarnaast maak je ook kennis met microcontrollers als intelligente digitale bouwstenen in moderneelektronische schakelingen. Hiervoor wordt de Arduino Uno geıntroduceerd als low cost, gebruiks-vriendelijk ontwikkelbordje, de ATmega328p als eerste microcontroller, en de taal C als programmeer-

Page 11: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

2 DESIGN EN PROTOTYPING ing. Y. Verbelen

taal voor microcontrollers.

In de volgende hoofdstukken komen deze onderwerpen aan bod:

• basiscomponenten van een wekker;

• ontwerpideeen voor je eigen wekker;

• een introductie tot C/C++ als programmeer taal voor het Arduinoplatform;

• printplaatontwerp in CircuitMaker;

• connectors en bekabeling;

• soldeer- en desoldeertechnieken.

1.3 Materiaal

De mogelijke manieren om een wekker te ontwerpen zijn eindeloos, en hoewel het labo Elektronicaeen ruime selectie aan componenten beschikbaar heeft, is dat slechts een fractie van het gigantischeassortiment aan componenten dat commercieel beschikbaar is. Zo zijn er bijvoorbeeld enkele typesLED-displays in voorraad, maar de meeste zal je extern moeten gaan zoeken.

1.3.1 Recuperatiemateriaal

Afgedankte toestellen zoals printers, scanners, elektronisch speelgoed en gadgets, laptops, microgolf-ovens enz. zijn een dankbare bron van de ietwat exotischere componenten die je niet in de voorraad vanhet labo Elektronica zal aantreffen. Besef dat in een elektronische schakeling een of een klein aantaldefecte componenten ertoe leidt dat een apparaat niet meer naar behoren werkt, en in het containerparkwordt gedumpt. Veruit de meeste onderdelen werken echter nog perfect en kan je dus hergebruiken inje eigen schakelingen. In het laatste hoofdstuk worden enkele tips aangereikt om elektronische compo-nenten van bestaande printplaten af te solderen.

In zowel het labo Elektronica als in het fablab vind je bakken met recuperatieprintplaten, waar jenaar believen componenten uit kan vissen. Het fablab huisvest daarnaast nog een extra rek afgedankteapparaten die je eveneens kan open schroeven om er componenten uit te hergebruiken. De enige voor-waarde is dat alles nadien terug wordt opgeruimd.

Elektronica hergebruiken is goedkoper en ecologischer dan recycleren, en je kan dus op een hogerescore rekenen als je op een verantwoorde manier onderdelen van bestaande toestellen nuttig hergebruiktin je wekker.

1.3.2 Webshops

Als je op zoek bent naar elektronische componenten die je niet in de voorraad van het labo Elektronicavindt, en ook niet de berg recuperatiemateriaal, dan kan je terecht bij Elak (Fabrieksstraat 29 in Brussel).Zij houden eveneens een ruim assortiment componenten op voorraad, en zijn per Villo gemakkelijk tebereiken door de Nijverheidskaai te volgen richting Ninoofsepoort (ca. 5 - 10 min). Bij Elak ben je dussnel geholpen, maar ze zijn relatief duur.

De grootste keuze aan elektronica vind je natuurlijk online. Als je nog niet vertrouwd bent metwebshops dan is het wekkerproject daar de ideale gelegenheid voor. Online vind je immers materiaal datoffline moeilijk verkrijgbaar is, zoals Arduino’s bijvoorbeeld. Enkele interessante aanknopingspunten:

• https://www.amazon.com: wereldwijd actieve webwinkel met ruim assortiment en snellelevering, maar relatief duur.

2

Page 12: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing. Y. Verbelen DESIGN EN PROTOTYPING 3

• http://www.aliexpress.com: een van de grootste webwinkels, gevestigd in China. Gi-gantisch assortiment aan onklopbare prijzen, maar reken 3 weken levertijd.

• http://www.ebay.com: kleine broertje van AliExpress, voornamelijk tweedehandsmateri-aal. Gedecentraliseerd, leveringstermijn afhankelijk van locatie. Soms bedenkelijke kwaliteit.

• http://www.taydaelectronics.com: gespecialiseerd in elektronische componenten voorde hobbymarkt, uitstekende kwaliteit, levertermijn ca. 2 - 3 weken, maar beperkt assortiment.

• https://www.sparkfun.com: focust zich op hacker/maker community, gespecialiseerd inkits en ontwikkelbordjes, maar aan de prijzige kant.

• https://www.adafruit.com: innovatieve elektronica-ontwikkelaar, zelfde marktsegmentals Sparkfun. Zeer duur.

• http://www.polulu.com: kabels en connectors, hoge verzendingskosten.

Naast bovenstaande internationale leveranciers zijn er ook lokalere alternatieven die sneller kunnenleveren en waar je zelf langs kunt gaan als je iets echt dringend nodig hebt.

• http://cotubex.be: ruim assortiment elektronische onderdelen op wandelafstand van cam-pus Etterbeek.

• http://www.electroshopdendermonde.be: gereedschap en onderdelen voor zelfbouw-elektronica in de hacker en maker community.

• http://floris.cc: Nederlandse verdeler van Sparkfun en Adafruit.

1.3.3 Uitrusting

Zelfs in een era van CNC-gestuurde machines zoals lasercutters en 3D-printers wordt de efficientie vaningenieurs grotendeels nog steeds mee bepaald door de vaardigheden die gepaard gaan met het gebruikvan essentieel gereedschap zoals multimeters en breadboards. De beperkte tijd die je in het labo door-brengt is niet voldoende om de ervaring op te doen die nodig is om dit gereedschap echt vlot te lerengebruiken. Voor een elektronisch ingenieur is een multimeter een verlengstuk van zijn lichaam, eenzesde zintuig, en het gebruik ervan moet zo vlot gaan dat het intuıtief verloopt. Om die reden kan je nietanders dan het belangrijkste materiaal zelf aan te kopen zodat je er ook thuis mee kan oefenen. Dit ma-teriaal breng je dan ook mee naar de campus voor gebruik tijdens de WPO’s: met je eigen gereedschapwerken is altijd gemakkelijker en prettiger dan met “vreemd” materiaal.

Voorzie het volgende materiaal en gereedschap:

• 2 breadboards;

• enkele sets breadboardkabeltjes;

• een digitale multimeter (voor advies m.b.t. het aankopen van een multimeter: zie labonota’sBasiselektronica);

• een striptang;

• een kniptang;

• een set precisieschroevendraaiers;

• een laptop met wifi;

• een Arduino Uno;

• een USB A naar USB B kabel (het type dat je gebruikt om pc’s met printers of scanners teverbinden).

Om praktische en logistieke redenen wordt dit materiaal dus ook niet voorzien door de docententijdens de WPO’s. Als je je eigen materiaal dus niet meeneemt, dan zal je niet aan de WPO’s kunnendeelnemen.

3

Page 13: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

4 DESIGN EN PROTOTYPING ing. Y. Verbelen

1.4 Vorm en evaluatieAls zelfstandig project is het de bedoeling dat je het ontwerp en de implementatie van de wekker au-tonoom uitvoert. Via practicumsessies krijg je alle nodige praktische vaardigheden aangeleerd, die jemeteen ook zelf kan toepassen. Het is vanzelfsprekend aanbevolen om ook met je medestudenten tediscussieren over het ontwerp van je wekker en daarbij van elkaar te leren.

Het project wordt geevalueerd in de vorm van een mondelinge presentatie/verdediging. Hierbij zalgepolst worden naar je inzichten in de elektronica- , informatica- en mechanica-aspecten van je ontwerp.Je moet je ontwerpkeuzes dus kunnen motiveren, en bijvoorbeeld kunnen uitleggen wat de functie is vaneen component in je schakeling of van een bepaalde lijn code in je software. Je mag je dus best lateninspireren op ontwerpen van medestudenten, zolang je begrijpt hoe hun ontwerp in elkaar zit en het ookkan uitleggen.

4

Page 14: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

2Elektronica

Oooh, ahhh, thats how it always starts. Thenlater there is running and screaming.

Ian Malcolm

2.1 Modulair ontwerp

Complexe elektronische systemen kunnen opgesplitst worden in kleinere bouwstenen die een specifieketaak verrichten. Dat is ook het geval voor je wekker. De voornaamste elektronische bouwblokken zijn:

• het display waarop de tijd zal aangegeven worden;

• het bedieningspaneel waarmee de wekker kan bediend worden;

• de interne klok waarmee de tijd wordt bijgehouden;

• de buzzer waarmee het audiosignaal wordt geproduceerd;

• de voeding die de wekker van de juiste spanning(en) voorziet;

• de logica die de besturing van de wekker verzorgt.

Het opsplitsen van een ingewikkeld elektronisch probleem in kleinere blokken biedt twee belangrijkevoordelen: enerzijds is het gemakkelijker om een klein probleem op te lossen dan een ingewikkeldprobleem, en anderzijds kunnen de individuele blokken later hergebruikt worden in andere soortgelijkeprojecten. Het is dus aangewezen dat je elk blokje afzonderlijk uitwerkt.

Hieronder geven we enkele aanwijzingen om je met de verschillende blokjes op weg te helpen.

2.2 Het display

De taak van het display is om de tijd weer te geven. In principe kan het display zowel elektronisch (metcijfers) als mechanisch (met wijzers) zijn. Een wijzerplaat vergt echter heel nauwkeurige miniatuurme-chanica, en die is erg moeilijk te implementeren. Vandaar dat de scope in dit project beperkt wordt totelektronische dispays.

Page 15: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

6 DESIGN EN PROTOTYPING ing. Y. Verbelen

2.2.1 Zevensegmentendisplays

De gemakkelijkste manier om een getal weer te geven is via een zevensegmentendisplay (eng. sevensegment display). Zo’n display bestaat uit 7 segmenten die in de vorm van een 8 zijn vormgegeven.Elk segment heeft een afzonderlijke stuurpin waarmee het segment kan aan- of uitgeschakeld worden.Figuur 2.1 toont een voorbeeld van een zevensegmentdisplay.

Figuur 2.1: Voor- en achterkant van een losse zevensegmentdisplay (links) en module met 4 zevensegmentdisplaysuit een videorecorder.

Intern zijn deze displays opgebouwd uit 7 LED’s, en je stuurt elke pin dus ook aan alsof je een LEDzou sturen. Om het aantal pinnen te beperken, worden de 7 kathodes van de LED’s meestal aan elkaargehangen en via een pin naar buiten gebracht. Zulke configuratie heet dan een common cathode display.Het omgekeerde heet een common anode display waarbij ale anodes aan elkaar hangen.

Zevensegmentdisplays bestaan in alle vormen en maten. Sommige versies hebben nog een achtstesegment dat een decimaal punt vormt. Net zoals LED’s zijn ook zevensegmentdisplays beschikbaar inallerlei kleuren, waarbij groen, rood en blauw de meest voorkomende kleuren zijn.

2.2.2 LED-displays

Je kan natuurlijk ook met afzonderlijke LED’s werken om de tijd weer te geven. Het voordeel bij dezeaanpak is dat je je eigen display kan samenstellen, en dus volledig vrij bent om je creativiteit optimaalte benutten. Denk er wel aan dat je een groot aantal LED’s afzonderlijk bestuurbaar zult moeten kunnenmaken. Een mogelijke oplossing hiervoor is om shiftregisters toe te passen.

Displays met afzonderlijk stuurbare LED’s worden ook dot matrix displays genoemd (letterlijk: eenmatrix van aanstuurbare lichtpunten). Net zoals zevensegmentdisplays zijn ze verkrijgbaar in zowat allemogelijke vormen, afmetingen en kleuren.

2.2.3 Vacuumfluorescentiedisplays

Vacuumfluorescentiedisplays (afgekort VFD’s) zijn de voorlopers van moderne LCD-displays, en ma-ken gebruik van gloeiende segmenten in een glazen vacuumkamer. Het voordeel van VFD’s is dat zezelf licht uitstralen zonder dat daar een backlight voor nodig is zoals bij LCD- of TFT-displays. Doordeze eigenschap hebben VFD’s een hoog contrast en worden ze dus toegepast in situaties waar er veelomgevingslicht aanwezig is, bijvoorbeeld in microgolfovens die in een fel verlichte keuken ook leesbaarmoeten zijn. Je komt ze ook tegen in videorecorders, DVD-spelers en soortgelijke consumentenelektro-nica.

VFD’s hebben een lange levensduur ten opzichte van LCD- of TFT-displays, en onderscheiden zichvan LCD’s doordat ze ook bij lage temperaturen nog blijven werken terwijl LCD-displays bevriezen.Bij VFD’s met een groot aantal segmenten is de controlelogica steeds ingebouwd waardoor je ze ge-makkelijk digitaal kan sturen.

6

Page 16: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing. Y. Verbelen DESIGN EN PROTOTYPING 7

Figuur 2.2: Numeriek vacuumfluorescentiedisplay met 4 digits uit een videorecorder. Let op de glazen “tuit” in delinkerbovenhoek die tijdens productie werd gebruikt om het display vacuum te zuigen.

2.2.4 Nixiebuizen

Een laatste optie is gebruik te maken van nixiebuizen (eng. nixie tube). Nixiebuizen stammen uit de tijddat LEDs nog niet gangbaar waren in elektronica (de eerste LED werd pas in 1962 geıntroduceerd), enwaren dus zowat de eerste component waarmee getallen konden weergegeven worden. Van ca. 1950 tothalverwege de jaren ’90 werden nixiebuizen in grote aantallen geproduceerd. Ze zijn momenteel nogsteeds verkrijgbaar, maar omdat ze zeldzamer worden stijgt de prijs met de jaren. Online zijn ze echternog goed verkrijgbaar, bv. via Ebay, AliExpress, SilkRoad etc. Een van de voordelen van nixiebuizen,afgezien van hun prettig oranje gloed, is de lange levensduur: de beste buizen kunnen tot ca. 200 000uren meegaan.

Figuur 2.3: Links twee losse NL5441 nixiebuizen (foto: Kirk Cline, public domain) en rechts een volledige klokopgebouwd met nixiebuizen (foto: Jeff Keyzer, CC BY-SA 2.0)

Net zoals zevensegmentdisplays hebben nixietubes een aansluiting voor elk segment. Alle cijfersvan 0 tot 9 worden weergegeven door afzonderlijke segmenten, en nixiebuizen hebben daardoor 10 aan-sluitingen (een voor elk getal) aangevuld met voedingsspanningen. Vervelend aan nixiebuizen is dat zeeen speciale voet (eng. socket) nodig hebbem om in een breadboard of PCB te passen.

Om een nixiebuis te activeren is er, naar moderne standaarden, een erg hoge voedingsspanning nodig(> 200 V DC). Met een eenvoudige transformator of step-up converter is dit gemakkelijk te realiseren.Neem uiteraard de nodige veiligheidsmaatregelen in acht als je met dergelijke hoge spanningen werkt,een schok van 200 V voelt niet prettig aan!

7

Page 17: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

8 DESIGN EN PROTOTYPING ing. Y. Verbelen

2.2.5 Aansturing

Tenzij je een displaytype met ingebouwde controller kiest, blijken alle displaytypes een groot aantalcontrolesignalen te hebben. Dat resulteert in ingewikkelde printplaatonwerpen en controllers die ookveel (digitale) IO-pinnen nodig hebben. Als je een microcontroller gebruikt, waar op het einde van dithoofdstuk dieper op ingegaan wordt, dan zal je door het aansturen van het display alleen al te weinigIO-pinnen hebben. Het display is immers niet de enige functionaliteit van de wekker. De oplossing voordit probleem is efficienter gebruik te maken van de bestaande controllerpinnen.

2.2.5.1 Multiplexing

Het menselijk oog is niet in staat om snelle veranderingen waar te nemen. Van deze traagheid wordthandig gebruik gemaakt in display designs omdat niet alle segmenten of pixels gelijktijdig hoeven aan-gestuurd te worden om toch die perceptie te wekken. Het scherm van je laptop wordt bijvoorbeeld tussen60 en 100 keer per seconde hertekend (eng. refresh rate) en toch neem je die sequentieel veranderendepixels waar als een beeld.

Zolang de refresh rate maar hoog genoeg is maakt het dus niet uit of alle segmenten of pixels parallelof sequentieel worden aangestuurd. Je kan dit principe zelf toepassen als je je display aanstuurt. Vooralbij displays met verschillende identieke digits, zoals bijvoorbeeld zevensegmentdisplays, nixiebuizen ofvacuumfluorescentiedisplays verloopt dit transparant omdat elke digit beurtelings wordt geadresseerd.Bij een display met bv. 5 digits wordt elk digit dan weliswaar slechts 20 % van de tijd aangestuurd, maartoch zal het lijken alsof alle digits permanent geactiveerd zijn.

Multiplexing op deze manier heeft ook 2 nadelen. Enerzijds zullen digits minder fel oplichtenomdat er geen continue stroom door loopt, wat grenzen stelt aan het aantal verschillende digits dat jeop die manier nog zichtbaar kan aansturen. Anderzijds moet de refresh rate ook voldoende hoog zijnom te verhinderen dat de sequentiele sturing voor de gebruiker zichtbaar wordt. Snelle bewegingen ofvibraties kunnen bij te lage refresh rate tot discontinuıteiten leiden, een fenomeen dat bekend staat alsdisplay break up.

2.2.5.2 Shiftregisters

Bij een groot aantal digits is het niet langer praktisch om ze via multiplexing elk om beurt aan te sturenomdat de vereiste klokfrequentie steeds hoger moet worden om een voldoende hoge refresh rate te ha-len, en omdat de duty cycle zo klein zal worden dat de tekst op de displays nauwelijks nog leesbaar is.Een gemakkelijke oplossing hiervoor is gebruik te maken van shiftregisters. Shiftregisters bestaan uiteen reeks geheugencellen die parallel naar buiten gebracht worden, maar die serieel ingesteld worden.Op die manier kan een groot aantal extra pinnen gecreeerd worden met een enkele IO-pin van de micro-controller. Een typisch shiftregister is bijvoorbeeld de 74164, een IC uit de 74-reeks. Een variant hieropis de 74595, een shiftregister met parallelle outputs en output latches.

2.2.5.3 Charlieplexing

Een laatste mogelijkheid is gebruik te maken van Charlieplexing. Deze techniek maakt gebruik van deeigenschap van microcontrollerpinnen dat ze zowel als ingang als output kunnen dienen. Elke pin kandus niet alleen actief logisch hoog of laag zijn, maar ook hoogimpedant zijn als de pin als ingang wordtgeconfigureerd. Op die manier heeft een digitale pin dus 3 staten: hoog, laag of inactief. Charlieplex-ing is vooral voordelig in situaties waar je elementen met een (bijna) identieke drempelspanning wiltaansturen die maar in een richting geleiden zoals LED’s. Met 3 IO-pinnen kan je bijvoorbeeld 6 LED’ssturen. Voor hogere aantallen pinnen loopt dit aantal snel op: via Charlieplexing kan je met 4 pinnen al12 LED’s sturen en met 5 pinnen 20 LED’s. Met n pinnen kan je n2 − n LED’s sturen.

Charlieplexing heeft ook enkele nadelen. Het ontwerp van de schakeling, de software en de print-plaat worden veel ingewikkelder, en nadien ook moeilijker te debuggen dan bij meer conventionele mul-tiplexingtechnieken. Bovendien vereist Charlieplexing dat de configuratie van de segmenten (LED’s)

8

Page 18: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing. Y. Verbelen DESIGN EN PROTOTYPING 9

vrij kan gekozen worden, waardoor deze techniek onbruikbaar is voor displays met vooraf vastgelegdesegmentconfiguraties zoals zevensegmentdislays die ofwel common anode of common cathode zijn.

2.3 Het bedieningspaneel

Met het bedieningspaneel kan je de (alarm)tijd instellen, en uiteraard moet er een grote “snooze” knopvoorzien zijn voor maandagochtend.

2.3.1 Drukknoppen

Drukknoppen zijn de simpelste manier om elektronica te besturen. Als ze worden ingedrukt dan maaktde knop intern contact tussen 2 geleidende plaatjes en gedraagt de knop zich elektrisch als een kortslui-ting. Als ze niet ingedrukt wordt, dan is het elektrisch equivalent een open keten. Als je bv. een LED inserie zet met een drukknop, dan zal de LED oplichten als de knop wordt ingedrukt.

Figuur 2.4: Het meest gebruikte type drukknop (tactile switch) in elektronica (links), een bedieningspaneel met 5drukknoppen uit een inktjetprinter (midden) en een keypadmodule (rechts).

Een drukknop is dus de perfecte keuze voor de snooze knop!

2.3.2 Draaischakelaars

Een alternatieve besturingstechniek is gebruik te maken van draaischakelaars. Als eraan gedraaid wordtdan geeft de schakelaar een aantal “ticks” dat evenredig is met de hoek waarover gedraaid wordt. Bij demeeste draaischakelaars voelt de gebruiker ook hoeveel posities hij/zij verdraaid heeft.

Sommige draaischakelaars hebben een discreet aantal posities, denk bv. aan het type dat in je mul-timeter zit. Er bestaan ook continue draaischakelaars, die je oneindig ver in beide richtingen kan blij-ven daaien (zoals de draaischakelaars die op het bedieningspaneel van oscilloscopen worden gebruikt).Draaischakelaars worden courant gecombineerd met een drukknop, zodat je zowel kan draaien als druk-ken, bv. de draaiknop van de Ultimaker 3D-printers.

2.3.3 Joysticks

Joysticks bestaan in zowel een digitale als een analoge variant. Digitale joysticks zijn opgebouwd uit 4of 5 drukknoppen die in een ruitvorm zijn geconfigureerd. Als de stick in een van deze richtingen wordtgeduwd, dan worden de corresponderende drukknoppen ingeduwd. Dergelijke joysticks kan je dus ge-bruiken in plaats van meerdere drukknoppen. De Replicator 3D-printers werken volgens dit principe.

Analoge joysticks zijn mechanisch ingewikkelder omdat ze in zowel een x-richting als een y-richtingkunnen draaien, en elke riching is uitgerust met een potentiometer. In rust staan beide potentiometers inhet midden. Als de stick naar een bepaalde richting wordt geduwd, worden de potentiometers verdraaid.Afhankelijk van de weerstandswaarde kan zo de positie van de stick bepaald worden.

9

Page 19: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

10 DESIGN EN PROTOTYPING ing. Y. Verbelen

2.3.4 Touchscreens

Wie opteert voor een LCD-display of TFT-display kan meteen kiezen voor een aanraakscherm (eng.touch screen). Dergelijke displays bieden een extra interface waarmee de coordinaten van een eventu-ele vinger (of meerdere vingers) kunnen worden uitgelezen. Uiteraard is dit enkel zinvol als er op hetscherm ook iets te zien is dat kan “aangewezen” worden.

Hou er rekening mee dat touchscreens de duurste oplossing zijn (reken ca. 30 EUR voor een schermvan ca. 15 x 10 cm).

2.3.5 Potentiometers

Tot slot kunnen ook potentiometers gebruikt worden als bedieningselementen. Door aan potentiometerste draaien kan hun impedantie (weerstandswaarde) gewijzigd worden, en uit de impedantie kan je dusde positie afleiden.

Het grootste nadeel aan potentiometers in vergelijking met draaischakelaars is dat het aantal om-wentelingen (eng. turns) beperkt is tot een klein aantal. Er bestaan wel tientoerenpotentiometers die10 volle toeren kunnen draaien voordat ze tegen hun limiet aanbotsen (zoals gebruikt in bv. voedingenom de spanning te regelen of in je stereo-installatie voor de volumeregeling), maar die zijn duur en nietzo gemakkelijk verkrijgbaar. Voor sommige applicaties, bijvoorbeeld het instellen van het contrast ophet display, is een potentiometer perfect geschikt. Om de tijd in te stellen gebruik je echter beter eendraaischakelaar met een ongelimiteerd aantal toeren.

2.3.6 Debouncing

Alle mechanische schakelaars zijn gebaseerd op hetzelfde principe: 2 metalen contacten die al dan niettegen elkaar gedrukt worden. Wanneer een drukknop wordt ingedrukt dan lijkt het alsof die onmiddellijkcontact maakt, maar in de praktijk is dat niet zo. Wanneer de metalen contacten elkaar raken dan zullenze kortstondig trillen, waardoor de verbinding heel snel aan- en uitgeschakeld wordt. Dit is weliswaareen overgangsverschijnsel dat slechts een fractie van een seconde duurt, maar als je een drukknop zougebruiken als ingang van een teller (eng. counter) dan zou je merken dat er meer dan een puls geteldwordt omdat de counter ook alle trillingen “ziet”.

Dergelijke trillende schakelaars en knoppen zijn een gekend probleem in de elektronica dat boun-cing (letterlijk: op en neer springen) heet. Om de trillingen weg te werken, het zogenaamde debouncing,bestaat er een waaier aan technieken. De simpelste oplossing is een kleine laagdoorlaatfilter (eng. lowpass filter, LPF) toe te voegen. Dergelijk filters bestaan uit een condensator en een weerstand, en zullende trillingen volledig wegwerken. De exacte waarden van deze weerstand en condensator zijn niet kri-tisch. Als steile flanken noodzakelijk zijn, omdat een zuiver digitaal signaal gewenst is, dan kan je eencomparator of schmitttrigger toevoegen na de filter. In de meeste gevallen is dit echter niet nodig.

Als je gebruik maakt van een microcontroller dan kan je de debouncing ook in software uitvoerendoor een lopend gemiddelde (eng. moving average) te nemen van het ingangssignaal. Als de periodewaarover je het gemiddelde berekent lang genoeg is, dan zal bij een druk op de knop het gemiddeldecontinu toenemen. De software kan dan een bewerking of actie uitvoeren als het gemiddelde een be-paalde drempelwaarde die je zelf kiest overschrijdt.

2.4 De klok

Met een digitale klok hou je intern de tijd bij.

10

Page 20: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing. Y. Verbelen DESIGN EN PROTOTYPING 11

2.4.1 Real Time Clock

Een real time clock (RTC) heeft als taak om de tijd bij te houden. RTC’s zijn verkrijgbaar als geıntegreerdeschakelingen waarop je een kwartskristal moet aansluiten om een stabiel kloksignaal te genereren. Inte-ressanter dan de losse chips zijn RTC-modules, waar vaak ook nog een batterijtje op zit dat de tijd kanbijhouden ook als je wekker niet op de netspanning is aangesloten, of als er bv. ’s nachts een stroom-panne optreedt.

Een courant toegepaste RTC chip is de DS1307, die je digitaal via het standaardprotocol I2C (inter-chipcommunicatie) kan uitlezen. Ze zijn gemakkelijk online verkrijgbaar.

2.4.2 Microcontroller

Microcontrollers zijn ook uitgerust met een kwartskristal, en ze zijn dus ook in staat om de tijd bij tehouden door clock ticks te tellen in software. Op Arduino geeft de functie millis() het aantal milli-seconden sinds de processor gestart werd, dat je kan gebruiken om de tijd bij te houden.

De tijd bijhouden in een microcontroller heeft als voornaamste nadeel in vergelijking met een RTCdat de tijd wordt gereset als de spanning uitvalt, tenzij je de volledige microcontroller voedt van eenextra backupbatterijtje. De voedingsschakeling wordt dan wel een stuk complexer.

2.4.3 Synchronisatie

In Frankfurt staat een krachtige zender die op een frequentie van 77.5 kHz draadloos een tijd- en da-tumsignaal uitstuurt dat quasi overal in West-Europa te ontvangen is. De zender is aangesloten op eennauwkeurige cesiumklok, en het uitgestuurde signaal bevat o.a. informatie over de tijd (uren, minuten,seconden) en de datum (jaar, maand, dag, dag van de week).

Om dit signaal te ontvangen heb je een kortegolfantenne nodig en een stukje logica om het signaalte decoderen. DCF77 ontvangers zijn ook verkrijgbaar als kant-en-klare modules die je rechtstreeks inje wekker kan integreren. Je kan online talloze schakelingen vinden om zelf zo’n ontvanger te bouwen,en in Elektor worden er ook regelmatig implementaties gepubliceerd.

Het ontvangen van het DCF77-signaal is, net zoals gewone radio, gratis. Het voornaamste voordeelis dat je de tijd niet meer manueel hoeft in te stellen, en dat je wekker automatisch overschakelt vanzomeruur op winteruur en vice versa, rekening houdt met schrikkeljaren etc.

2.5 De buzzer

De belangrijkste taak van een wekker is uiteraard om een zodanig ergerlijk lawaai te produceren datmen ervan wakker wordt, en niet meer terug in slaap kan vallen. Het produceren van dit geluid is detaak van de buzzer.

2.5.1 Piezobuzzers

Piezobuzzers zijn de gemakkelijkste manier om geluid te produceren. Ze bestaan uit 2 of meerderelaagjes piezo-elektrisch materiaal. Dit materiaal heeft als bijzondere eigenschap dat het mechanischvervormt als er een spanning over wordt aangelegd. Door deze mechanische vervorming worden trillin-gen geproduceerd, die zich door de lucht voortplanten onder de vorm van hoorbaar geluid.

Een eenmalige spanning aanleggen (DC) zal leiden tot een eenmalige vervorming, en dus een heelkorte “klik” van de buzzer. Wil je een een continu geluid, dan moet je de buzzer dus ook aan een continuveranderende spanning (AC) onderwerpen. De frequentie van dit signaal bepaalt de snelheid waarmeehet materiaal gaat trillen, en dus ook de frequentie van het geluid. Deze frequenties zijn wel enigszins

11

Page 21: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

12 DESIGN EN PROTOTYPING ing. Y. Verbelen

beperkt in bandbreedte: heel lage frequenties (bassen) kan je er niet mee produceren.

Omdat piezobuzzers elektrostatisch werken, verbruiken ze maar heel weinig energie. Je kan ze dusrechtstreeks voeden uit een eenvoudige transistorversterker, of digitaal aansturen met een MOSFET.

Figuur 2.5: Enkele piezobuzzers (links) en subwoofer met tweeter (rechts).

2.5.2 Luidsprekers

Luidsprekers verschillen van piezobuzzers doordat ze elektromagnetisch werken in plaats van elektrosta-tisch. Ze bestaan uit een permanente magneet die in een elektromagneet is opgehangen (of omgekeerd).Een stroom door de elektromagneet zal ervoor zorgen dat de magneet in of uit de elektromagneet be-weegt, en daarbij ook trillingen veroorzaakt. De bewegingsrichting is dus afhankelijk van de stroomzin.

Net zoals een piezobuzzer stuur je een luidspreker aan met een AC-signaal. De frequentie van ditsignaal bepaalt de frequentie en toonhoogte van het geproduceerde geluid. Het voornaamste voordeelvan luidsprekers is dat ze ook lage frequenties (bassen) goed kunnen produceren, wat piezobuzzers nietkunnen. Het volume kan ook veel groter zijn. Het nadeel is wel dat er een merkbare stroom door deelektromagneet moet lopen, en een luidspreker heeft dus een versterkerschakeling nodig. Afhankelijkvan het vermogen van de luidspreker zijn er verschillende versterkerschakelingen mogelijk. De gemak-kelijkste manier is om met een vermogenversterker zoals de TDA2003 te werken, die behoorlijk watlawaai kan produceren zelfs als je op een 9 V batterijtje werkt!

2.6 De voeding

De taak van de voeding is om alle componenten in je schakeling van de juiste voedingsspanning tevoorzien. De complexiteit van de voedingsschakeling hangt dus sterk af van de andere blokken in jeschakeling: hoe meer verschillende voedingsspanningen je nodig hebt (bv. 3.3 V, 5 V, 12 V etc.) hoeingewikkelder de voedingsschakeling zal worden.

2.6.1 Batterijen

De simpelste manier om je wekker te voeden, en ook de meest inefficiente, is door gebruik te makenvan batterijen. Batterijen gedragen zich als spanningsbronnen waarvan de spanning afneemt naarmateze “leeg” geraken. Courant gebruikte batterijen zijn alkaline (1.5 V), NiMH (1.2 V), lithium-ion (3.6 V),lithium-polymeer (3.7 V) en loodgel (12 V). De batterijkeuze hangt af van welke spanning(en) je nodighebt. De meeste hedendaagse batterijen zijn herlaadbaar (secundaire cellen), maar ook niet herlaadbarealkalinebatterijen zijn nog steeds in de handel verkrijgbaar. Deze moet je dus vervangen als ze leeg zijn.Ontwerp de behuizing zodanig dat je gemakkelijk aan de batterijen kan zonder de volledige wekker temoeten demonteren!

Herlaadbare batterijen kan je terug opladen in speciale batterijladers, of je kan de schakeling omde batterij te herladen ook direct integreren in je wekker. Dat spaart de gebruiker de moeite van de

12

Page 22: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing. Y. Verbelen DESIGN EN PROTOTYPING 13

Figuur 2.6: Van links naar rechts: 9 V herlaadbare NiMH batterij, 3.7 V 300 mAh Li-Ion batterij, 3.6 V 2.2 AhLi-Ion batterij (18650 formaat zoals gebruikt in laptop battery packs), 11.1 V 2.2 Ah LiPo batterij voor

quadcopters, en 12 V loodgel batterij als backup voor alarmsystemen.

constante batterijwissels uit. Voor zowat alle batterijtypes zijn er speciale chips (IC’s) verkrijgbaar diede volledige laadcyclus controleren, maar de meeste batterijen laten zich ook gewoon laden met eenconstante laadstroom (zie toepassing stroombronnen in WPO Basiselektronica).

Lithiumbatterijen (zoals gebruikt in laptops of quadcopters) kunnen een fikse stroom leveren, en mo-gen dus in geen geval kortgesloten worden. Ontwerp je schakeling zodanig dat kortsluiting onmogelijkis, en voeg een zekering toe in serie met de batterij(en)!

2.6.2 Netadapter

In compacte toepassingen is er vaak niet genoeg ruimte om een voedingsschakeling te integreren, en duswordt gebruik gemaakt van een netadapter. Je herkent ze als hermetisch gesloten zwarte doosjes waaraan de ene kant een netstekker (230 V AC) binnenkomt en langs de andere kant een veel lagere DC-spanning kan afgenomen worden. Netadapters voor elektronische toestellen geven gewoonlijk 3.6 V of5 V voor gadgets zoals GSM’s, mp3-spelers en navi’s, 9 V of 12 V voor speelgoed (zoals modeltreinenetc.) en 19 V of 21 V voor laptops.

Figuur 2.7: Schakelende voeding van een netwerkswitch (links) en 750 W voeding van een gaming pc (rechts).

Netadapters blijven vaak over nadat de toestellen waarvoor ze oorspronkelijk bedoeld waren al langkapot of in onbruik geraakt zijn. Je hebt thuis in een of andere schuif zeker nog netadapters van vorigeprinters, scanners, GSM’s, fototoestellen e.d. liggen die perfect kunnen gebruikt worden om je wekkervan stroom te voorzien.

13

Page 23: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

14 DESIGN EN PROTOTYPING ing. Y. Verbelen

Als de spanning van de netadapter niet precies overeenkomt met de vereisten in jouw schakeling,dan moet je gebruik maken van een spanningsregulator of DC/DC converter om de spanning te verlagen.

2.6.3 Netvoeding

Je kan natuurlijk ook zelf de schakeling bouwen die in netadapters zit, of toch een die er sterk op lijkt.Moderne netadapters werken met geschakelde voedingen (eng. switched mode power supply) die ergzuinig zijn maar ook zeer ingewikkeld om te bouwen en te debuggen.

Figuur 2.8: Links een netadapter voor een laptop van 19 V. Rechts: een lineaire netvoeding. De grote zwartecomponent is de transformator, gevolgd door de bruggelijkrichter (zwart blokje aan de linkerkant), en een oranje

afvlakcondensator. De lineair spanningsregulator is vastgeklemd op een koelvin (eng. heat sink).

Een eenvoudige lineaire voeding kan je daarentegen gemakkelijk zelf bouwen met een handvol com-ponenten. Met behulp van een transformator verlaag je de 230 V AC naar een lagere AC spanning, dieje vervolgens met diodes gelijkricht om er een DC van te maken. Dan alleen nog een filter of span-ningsregulator erachter om de ruis te reduceren, en je eigen voeding is klaar! Online vind je tallozeschakelingen van netvoedingen voor allerlei spanningen.

Let op bij het aansluiten van de transformator: transformators werken namelijk in twee richtingen!Als je een transformator met 15:1 ratio gebruikt om de spanning te verlagen dan kom je ca. 15 V uitaan de secundaire zijde, die perfect is voor elektronica. Maar als je hem verkeerd aansluit dan wordtde 230 V netspanning opgetransformeerd tot 3.5 kV wat potentieel levensgevaarlijke situaties oplevert!Vraag dus steeds aan een van de toezichthoudende docenten om je schakeling te checken alvorens je zeaansluit op het stopcontact.

2.6.4 Spanningsregulators

Stel dat je wekker een voedingsspanning van 6 V nodig zou hebben. Een netadapter met die specifiekespanning ga je niet gemakkelijk vinden, en een USB-adapter van 5 V is te weinig. Je kan natuurlijk 41.5 V alkalinebatterijen in serie zetten, maar dat is verre van praktisch.

De oplossing voor dit probleem is te vertrekken van een hogere spanning, en gebruik te maken vaneen zogenaamde spanningsregulator (eng. voltage regulator). Spanningsregulators zijn elektronischecomponenten die een DC voedingsspanning omzetten in een andere, lagere DC voedingsspanning naarkeuze. Ze zijn verkrijgbaar in uitvoering met constante uitgangsspanning voor veel voorkomende waar-den, bv. 3.3 V, 5 V en 12 V. Positieve regulators krijgen de prefix “78”. Een spanningsregulator voor5 V wordt dan aangeduid met typenummer “7805”, een regulator voor 24 V met typenummer “7824”enzovoort. Er bestaan ook versies waarmee je zelf de spanning kan kiezen, zoals bv. de LM317.

Spanningsregulators zijn heel gemakkelijk in gebruik, de enige externe componenten die je nodighebt om ze aan te sluiten zijn een condensator op de ingang (als buffer) en een andere condensator op

14

Page 24: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing. Y. Verbelen DESIGN EN PROTOTYPING 15

de uitgang (als filter). Deze spanningsregulators zijn vooral interessant als de spanning die je wilt over-bruggen niet te groot is, en je ook niet teveel stroom nodig hebt (max. ca. 200 - 400 mA).

Figuur 2.9: Enkele spanningsregulators (van links naar rechts): een 7833 in TO-92 package, een 7805 in TO-220package, een LM317 regelbare spanningsregulator in TO-3 package. De meest rechtse regulators zijn schakelend

(DC/DC): een MC34063 in DIP-8 package en een LM2596 in TO-220-5 package.

Het probleem met lineaire spanningsregulators zoals de 7805 en 7812 is dat het spanningsverschilbij een bepaalde stroom wordt omgezet in warmte. Stel bv. je gebruikt een 7805 lineaire regulator omeen voedingsspanning van 12 V om te zetten naar 5 V. Bij een stroom van 100 mA is het vermogen datgedissipeerd wordt in de regulator P = (12− 5) · 0.1 = 700 mW. De regulator zal dus behoorlijk heetworden. In de meeste reele situaties zullen deze regulators dus opbranden lang vooraleer je de maximalestroom die in hun datasheets vermeld staat bereikt!

De oplossing voor dit probleem is gebruik te maken van geschakelde regulators (eng. switched moderegulators). Deze regulators maken gebruik van een externe spoel (inductor) om de spanning op deuitgang constant te houden, en hebben in vergelijking met lineaire regulators een hoog rendement. Net-adapters voor laptops werken bijvoorbeeld met dit principe omdat het verschil tussen ingangsspanningen uitgangsspanning behoorlijk groot is, en de adapter een flinke stroom moet kunnen leveren tijdensgames. Het nadeel aan geschakelde regulators is, zoals eerder vermeld, dat de schakeling iets ingewik-kelder is. Je hebt een externe spoel nodig, een flybackdiode en minstens 2 condensators. Afhankelijkvan het type regulator kunnen daar nog eens weerstanden bijkomen. Een gangbaar type geschakelderegulator is de LM2596, die een stroom van 3 A kan leveren bij ingangsspanningen tot ca. 30 V. Je kande gewenste uitgangsspanning instellen met een spanningsdeler op de uitgang van de regulator.

2.7 De logica

Je merkt aan de vorige blokken dat je in je wekker deelschakelingen zult moeten laten samenwerkendie sterk van elkaar verschillen. Als de blokken zuiver digitaal zijn en de interfaces min of meer gelijk,dan kunnen enkele logische poortjes vaak volstaan. Dit heet “glue logic” en werd vroeger vaak discreetgeımplementeerd met 74xx of 40xx serie IC’s of “chips” (eng. integrated circuit), maar tegenwoordigmeestal in een CPLD of FPGA (eng. Field Programmable Gate Array). Een FPGA kan je beschouwenals een “lege” digitale chip waarin je zelf de gewenste digitale logica zoals AND, OR, XOR etc. poortenkan definieren.

Hoewel FPGA’s heel krachtig zijn, is het gebruik ervan nogal omslachtig: ze hebben een groot aan-tal verschillende voedingsspanningen nodig die elk eigen ontkoppelcondensators vereisen, en het groteaantal pinnen maakt het lastig om ze aan te sluiten. Bovendien zijn ze niet verkrijgbaar in een packagedat breadboardcompatibel is, wat het ontwikkelen van prototypes veel moeizamer maakt. Bovendienzijn FPGA’s zuiver digitale systemen, dus als je verbinding wilt maken met de analoge wereld, bij-voorbeeld om een licht- of temperatuursensor uit te lezen, dan moet je nog extra chips toevoegen omde analoge signalen te converteren naar digitale signalen die de FPGA kan verwerken. Dat is dus eenomslachtige procedure.

15

Page 25: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

16 DESIGN EN PROTOTYPING ing. Y. Verbelen

Een alternatieve methode om informatie te verwerken en je wekker aan te sturen is door gebruik temaken van software. Software wordt traditioneel uitgevoerd door een microprocessor. Microprocessorszoals je die in je laptop zitten zijn echter gespecialiseerd in het uitvoeren van instructies, en hebben nogeen hoop extra chips nodig om bijvoorbeeld hun instructies in te bewaren (flashgeheugen), hun data inop te slaan (RAM-geheugen) enzovoort. Vanwege de grote verzameling benodigde elektronica is eenmicroprocessor dus ook niet erg praktisch voor eenvoudige toepassingen zoals deze wekker.

Een goed compromis is de geavanceerde functionaliteiten van moderne microprocessors te schrap-pen, en een sterk vereenvoudigde processor samen met een stukje RAM-geheugen en een stukje flash-geheugen te integreren in een enkele chip. Dit heet een microcontroller. Moderne microcontrollersbevatten naast een processorkern, flashgeheugen en RAM-geheugen ook nog een hoop extra logica: viaeen analoog naar digitaal converter (ADC) kunnen ze meteen analoge signalen inlezen, en ze bevattenextra kernen voor seriele communicatie. High end microcontrollers zoals die in bijvoorbeeld scannersof printers gebruikt worden, kunnen zelfs een geıntegreerde USB-controller of motorsturing bezitten,zodat je rechtstreeks met een pc kan communiceren via USB! De voornaamste fabrikanten van micro-controllers zijn momenteel Microchip (de PIC serie), Texas Instruments (MSP430 en CC serie), NXP(de LPC serie), Atmel (AT serie) en ST Microelectronics (STM serie). Elke microcontroller heeft zijneigen functionaliteiten, geheugengrootte, maximale kloksnelheid enzovoort. De juiste microcontrollerkiezen voor een bepaalde toepassing is dus geen gemakkelijke opgave, die ook voor ervaren elektroniciheel wat tijd in beslag kan nemen. Een te krachtige microcontroller kiezen is immers onnodig duur, enmet een te zwakke zal het niet mogelijk zijn om de applicatie te realiseren.

Microcontrollers hebben een hoop pinnen, voor in- en uitvoer van data maar ook voor voeding, aan-sluiting met de programmer enzovoort. Om die reden worden er regelmatig nieuwe ontwikkelbordjesop de markt gebracht. Dit zijn printplaatjes (PCB’s, eng. printed circuit boards) waarop een microcon-troller is gesoldeerd samen met alle logica die hij nodig heeft om ermee aan de slag te kunnen. Typischecomponenten die je op deze ontwikkelbordjes terugvindt zijn bijvoorbeeld een USB-connector, een voe-dingsconnector, spanningsregulators, een klokgenerator, connectors voor analoge en digitale signalen,enzovoort. Initieel werden deze bordjes ontwikkeld door de microcontrollerfabrikanten zelf onder denaam “evaluation boards” maar tegenwoordig worden de meeste bordjes ontwikkeld door de elektronica“community” die bestaat uit hobbyisten en studenten. Crowdfunding is hierbij een belangrijke drijvendekracht, en als je rondkijkt op crowdfundingsites zoals Kickstarter of Indiegogo zal je talloze dergelijkebordjes tegenkomen.

Veruit het meest gebruikte ontwikkelbord op dit moment is de Arduino Uno. Dit ontwikkelbord vanItaliaanse origine bestaat uit een ATmega328p microcontroller van Atmel, een 16 MHz klokgenerator,een USB-controller en USB-connector voor verbinding met je laptop, een spanningsregulator voor 5 Ven voor 3.3 V, enkele LED’s, en 4 female board to board connectors om digitale of analoge signalen aante sluiten op het bord. De Arduino Uno is erg gemakkelijk in gebruik omdat er talloze codevoorbeeldenvoor te vinden zijn op het internet. De ondersteuning (eng. support) voor een ontwikkelbord bepaalt inbelangrijke mate hoe snel je er een applicatie mee zal kunnen prototypen. Als je nog geen eigen ArduinoUno hebt, dan is het wekkerproject de gepaste gelegenheid om enkele exemplaren aan te schaffen. Jekan Arduino’s online vinden, alweer op AliExpress, vanaf ca. 3 EUR per stuk.

De programmatuur (software) is zodanig belangrijk dat er een volledig hoofdstuk aan wordt gewijd.

16

Page 26: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

3Microcontrollers programmeren

If we knew what it was we were doing, itwould not be called research, would it?

Albert Einstein

3.1 De Arduino UnoHet Arduino Uno ontwikkelbord heeft de grootte van een betaalkaart en is daarmee behoorlijk compact.Laat je echter niet verrassen, de mogelijkheden van dit bord zijn erg uitgebreid! Figuur 3.1 toont eenschematische weergave van de Arduino Uno met de voornaamste componenten erop.

13 12 11 10

9 8 7 6 5 4 3 2

L

5V A0

ANALOG IN

AR

EF

1

GN

D

TX

RX

RE

SE

T

3V3

A1

A2

A3

A4

A5

VIN

GN

D

GN

D

DIGITAL (PWM= )

ArduinoTM

IOR

EF

ICS

P

ICSP2

ON

POWER

01T

X0

RX

0RESET

12

3

4

5

6

7 8

9

12345

67

8

9

USB-connector

USB-UART converter

spanningsregulators

DC-jack

UART LED's

digitale IO-pinnen

voedingspinnen

analoge pinnen

ATmega328p microcontroller

Figuur 3.1: Arduino Uno ontwikkelbord met aanduiding van de voornaamste componenten en connectors(schema Arduino Uno: Nevit Dilmen, CC BY-SA 3.0).

De Arduino Uno heeft 8 connectors: een USB-B connector voor verbinding met de pc, een DC“barrel” jack voor aansluiting van een DC-voeding, en 2 dual row 6 pin headers die als ICSP-connectorsvoor respectievelijk de USB-UART-converter en de ATmega328p zelf. De belangrijkste connectors zijnechter de 4 female board to board headers die toelaten om het bord te verbinden met de buitenwereld.De pinnen op de digitale headers en de analoge header zijn rechtstreeks verbonden met de ATmega328pmicrocontroller. Figuur 3.2 toont de functies van deze pinnen.

Page 27: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

18D

ES

IGN

EN

PR

OT

OT

YP

ING

ing.Y.Verbelen

Figuur 3.2: Pinout van de Arduino Uno, met aanduiding van de functies van de verschillende pinnen en connectors.(diagram: Romano dEzzelino, CC BY-SA 3.0)

18

Page 28: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing. Y. Verbelen DESIGN EN PROTOTYPING 19

3.1.1 De voeding

Net zoals elke andere elektronische schakeling moet ook een Arduino gevoed worden met een geschikteDC-spanning. Omdat de ATmega328p op een spanning van 5 V werkt, moet deze spanning minstens5 V bedragen. Er zijn 3 manieren om je Arduino te voeden: via de USB-connector, de DC-jack en deVin pin.

Tijdens de eerste fase van de softwareontwikkeling heb je zelden behoefte aan extra elektronica rondje Arduino, en is het ontwikkelbord alleen voldoende om van start te gaan. De Arduino kan dan perfectgevoed worden via USB (connector 1 in figuur 3.1), die tot 500 mA uit een USB 2.0 en zelfs 5 Auit een USB 3.0 poort kan leveren. Het enige wat je hiervoor hoeft te doen is de Arduino via USB teverbinden met een host device zoals een pc. Van zodra je de kabel inplugt, start de Arduino automatischop. Op de Arduino zit een zekering van 500 mA die verhindert dat de USB-hub van de pc overbelastgeraakt als je teveel stroom door de USB-kabel probeert te trekken. Deze zekering beveiligt echter niettegen hoge spanningen, sluit nooit een spanning aan op de USB-connector die hoger of lager is dan 5 V± 0.25 V.

Eens je software (quasi) af is en je wilt je schakeling testen, dan is het lastig om de pc steeds ver-bonden te houden omdat de USB-kabel dan op een of andere manier uit de behuizing moet, en altijdte kort blijkt te zijn. Voor deze situaties is er een DC-jack (connector 4 in figuur 3.1) voorzien waarje een netvoeding in kunt pluggen, zoals in het vorige hoofdstuk werd besproken. Deze “barrel” jackis center positive wat betekent dat de positieve spanning wordt gedragen door de middelste pin, en debuitenste cilinder errond op grondpotentiaal is. De DC-jack verdraagt ingangsspanningen tot 25 V DComdat deze ingangsspanning door een lineaire spanningsregulator ( 3 in figuur 3.1) wordt gevoerd dieze verlaagt tot de 5 V die nodig is om de ATmega328p te voeden. Opdat de lineaire regulator correct kanwerken, moet de ingangsspanning steeds minstens 500 mV hoger zijn dan de uitgangsspanning. Bijge-volg moet je op de DC-jack een spanning van ca. 7 V of hoger aanleggen, omdat er tussen DC-jack enspanningsregulators nog een diode zit als ompoolbeveiliging. Let op: hoe hoger de ingangsspanning,hoe minder stroom de lineaire regulator zal kunnen leveren doordat het vermogen (= warmte) die kangedissipeerd worden beperkt is!

Tot slot is er nog de Vin-pin op de power header van de Arduino, connector 7 in figuur 3.1. De eer-ste pin is daar gelabeled als Vin, en kan net zoals de DC-jack gebruikt worden om de Arduino te voedenmet een DC-spanning van 6 V of hoger. De DC-jack en de Vin-pin zijn onderling verbonden met eendiode, die tussen de DC-jack en de Vin-pin voorwaarts is gepolariseerd. Als je dus zelf geen spanningaanlegt op de Vin-pin dan zal deze diode geleiden als je een spanning op de DC-jack inplugt, waardoorop de Vin-pin dezelfde spanning minus de spanningsval over de diode komt te staan. Omgekeerd gaatniet omdat de diode dan spert. In geen geval mag je op de DC-jack een hogere spanning inpluggendan een spanning die je op de Vin-pin aanlegt! In dat geval zal de diode namelijk gaan geleiden, enbeide voedingen kortsluiten. Maak er dus een goede gewoonte van om of de DC-jack of de Vin-pin tegebruiken, maar nooit beide.

3.1.2 Randapparatuur

Omdat de ATmega328p en de USB-controller rechtstreeks met de 5 V power rail van de Arduino zijnverbonden, is de Arduino gevoelig voor fluctuaties van deze voedingsspanning. Een te grote stroomafnemen via de 5 V-pin op de power header van de Arduino zal ertoe leiden dat deze spanning in elkaarklapt, waardoor de microcontroller reset en het programma weer vanaf het begin wordt herstart. Telage spanningen (minder dan 0) of te hoge spanningen (meer dan 5 V) kunnen de ATmega328p zelfsonherstelbaar beschadigen. Dit kan ertoe leiden dat de ATmega328p niet meer kan geprogrammeerdworden, en de Arduino dus definitief onbruikbaar is.

Het risico op dergelijke beschadigingen kan drastisch gereduceerd worden door de 5 V van de Ar-duino zo weinig mogelijk te belasten door externe randapparatuur. Grote verbruikers zoals lange LED-strips, servomotors, DC-motors, relais, stappenmotors enzovoort mag je dus niet voeden via de Arduino,

19

Page 29: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

20 DESIGN EN PROTOTYPING ing. Y. Verbelen

zelfs als ze ook net 5 V nodig hebben (zoals o.a. het geval is bij servomotors). Voor deze belastingenmoet je steeds een afzonderlijke voeding voorzien die gescheiden is van de andere elektronica en waaropfluctuaties toegelaten zijn. In talrijke schakelingen die je op het Internet aantreft wordt gezondigd tegendeze regel voor gescheiden voedingen, dus laat je er niet toe verleiden deze fouten over te nemen in jeeigen ontwerp.

3.2 De toolchain

Als je de Arduino Uno uit zijn verpakking haalt dan is de microcontroller in feite leeg. Er is enkel eenklein stukje software aanwezig dat verantwoordelijk is voor het inladen van nieuwe programma’s, dezogenaamde bootloader. Als je de Arduino Uno inplugt in je laptop via een gewone USB-kabel danwordt de microcontroller gevoed via de USB-poort en start meteen op. Maar er gebeurt natuurlijk niksomdat er nog geen software in zit! Mogelijk lichten er wel een of meerdere LED’s op om aan te gevendat het bord gevoed wordt en klaar is voor actie.

Hoe krijg je dan je eigen programma in de microcontroller gedownload? Daarvoor heb je een stukjesoftware nodig op de pc, waarin je de instructies kan invoeren. Deze software is afhankelijk van hettype ontwikkelbord dat je gebruikt, en voor Arduino heet deze software Arduino IDE (eng. integrateddevelopment environment). Ze is gratis te downloaden van de Arduino website1 en beschikbaar voorWindows en Linux. Download en installeer de Arduino IDE als je dit nog niet gedaan hebt.

Naast een tekstverwerker waar je je programmacode in kan typen, biedt de Arduino IDE nog enkeleextra functies. Er zit o.a. een seriele monitor in, een funtie waarmee je data die de Arduino naar de pcstuurt kan inlezen en weergeven als tekst op het scherm. Nog belangrijker is echter de compiler tool-chain. De compiler is verantwoordelijk voor het omvormen van je programmacode naar instructies diede ATmega328p op de Arduino kan begrijpen en uitvoeren. Hier komen heel wat ingewikkelde tussen-stappen bij kijken, maar gelukkig hoef je die niet te kennen om een Arduino te kunnen programmerenomdat de compiler achter de schermen wordt aangeroepen door de Arduino IDE. Nadat je programmagecompileerd is, zal de Arduino IDE de downloader aanroepen die het programma dan naar de Arduinodownloadt en in de ATmega328p microcontroller programmeert.

De Arduino IDE vereenvoudigt al deze handelingen via enkele knoppen bovenaan het venster, waar-mee je respectievelijk de syntaxis kan controleren of kan compileren en downloaden in een stap.

3.2.1 C/C++

De ATmega328p beschikt over 32 kilobytes (kB) flashgeheugen en 2 kB RAM-geheugen (= werkge-heugen). Dit is voldoende om duizenden instructies in op te slaan en uit te voeren, maar niet genoegom het volledige .NET Framework dat je voor C# nodig hebt te bewaren. Bijgevolg kan je Arduino’sdus helaas niet programmeren in C# maar is er een andere taal nodig die eenvoudiger is en dichter bijde hardware staat. Deze taal heet C. In feite is C# afgeleid van C, en de basissyntaxis van C# komt dusgrotendeels overeen met C. De enige verschillen zijn de afwezigheid van alle .NET bibliotheken en demeeste objectgeorienteerde functionaliteit (events, controls etc.) in C. De enige uitzondering hierop zijnklassen en structuren, die je wel kan gebruiken. Declaratie van variabelen, functies, beslissingsstructu-ren en lussen is echter grotendeels identiek.

Momenteel is C de standaardtaal voor het programmeren van microcontrollers. Eens je het principeonder de knie hebt, kan je eigenlijk alle microcontrollers van alle fabrikanten programmeren. Je hoeftdan enkel de specifieke toolchains voor die microcontrolles te installeren op je pc. Microcontrollersprogrammeren kan je dus vergelijken met fietsen: er zijn wel wat verschillen tussen een stadsfiets eneen mountainbike, maar wie kan fietsen kan beide besturen, en je zal er behoorlijk snel aan wennen. Jekan dan je printer, mp3-speler of elk ander toestel met een microcontroller erin programmeren net zoalsje je Arduino Uno programmeert!

1https://www.arduino.cc/en/Main/Software

20

Page 30: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing. Y. Verbelen DESIGN EN PROTOTYPING 21

3.2.2 Shields en bibliotheken

Doordat er zoveel elektronici bezig zijn met Arduino, zowel hobbyisten als professionals, bestaan ertalloze uitbreidingsmodules die op het Arduino Uno ontwikkelbord kunnen ingeplugd worden. Dezemodules heten in de Arduinowereld shields. Er bestaan shields die je Arduino toelaten om stappen-motors aan te sturen, verbinding te maken met Ethernet, uitrusten met accelerometers en gyroscopen,enzovoort. Veel van deze shields zijn bovendien open source zodat je ze zelf kan namaken. Shields zijnuitgerust met male headers die in de female board to board headers op de Arduino Uno passen.

Bij shields hoort meestal ook een codebibliotheek die ontwikkelaars helpt om de shields aan te stu-ren in software. Het doel van deze bibliotheken is om het gebruik van de shields transparant te makenvoor de programmeur zodat die zich niet hoeft bezig te houden met het uitpluizen van schema’s ompinnummers op te zoeken, of met het doorgronden van datasheets. Bibliotheken vind je online, in repo-sitories zoals Sourceforge of Github, of via webshops die shields verkopen zoals Sparkfun of Adafruit.

Bibliotheken installeren doe je eenvoudigweg door de code te downloaden naar je pc en in delibraries folder van je Arduino IDE bij te plaatsen. Je kan ze dan vervolgens toevoegen aan jecodeprojecten via include en vervolgens gebruiken.

Buiten specifieke bibliotheken die bij shields horen, zijn er ook ontelbare bibliotheken beschikbaardie het programmeren van Arduino gemakkelijker maken door te helpen bij het aansturen van interrupts(het equivalent van events op microcontrollers), het reguleren van delays, het berekenen van wiskundigefuncties enzovoort.

3.3 ProgrammastructuurEen Arduinoprogramma bestaat uit 3 structurele elementen die steeds verplicht zijn, aangevuld metoptionele functies en procedures. De 3 verplichte elementen zijn de declaraties (eng. declarations),initialisaties (eng. initialization of setup) en hoofdroutine (eng. main loop).

3.3.1 Declaraties

Helemaal bovenaan je programma komen de declaraties. Dit zijn directieven voor de compiler, waar-mee je aangeeft welke bibliotheken je wenst te gebruiken, hoe je de pinnen van je Arduino benoemt, enwelke variabelen je zal gebruiken in de rest van je programma.

Een eerste type delcaraties zijn includes. Hiermee kan je bibliotheken die je wenst te gebruikentoevoegen aan je programma. Om de bibliotheek voor wiskundige functies math toe te gebruiken in jeprogramma, voeg je dan volgende code toe:

Listing 3.1: Een bibliotheek toevoegen aan het programma

1 // onderstaande regel voegt de bibliotheek math.h toe aan het programma:2 #include <math.h>

Je kan zoveel bibliotheken toevoegen als je wenst, maar denk eraan dat het beschikbare geheugen opeen Arduino beperkt is! Als je dus onnodige bibliotheken meecompileert, dan zal je Arduino snel “vol”zitten.

Een tweede type declaraties zijn definities. Met definities kan je getallen een betekenis geven. Depinnen van een Arduino hebben allemaal een naam, de digitale pinnen zijn genummerd van 0 tot 13 ende analoge pinnen van A0 tot A5. Om de LED die op pin 13 staat te kunnen aansturen, declareer je pin13 dus als LED als volgt:

Listing 3.2: Een pindeclaratie

1 // onderstaande regel declareert pin 13 als LED:2 #define LED 13

21

Page 31: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

22 DESIGN EN PROTOTYPING ing. Y. Verbelen

Let op: achter definities volgt geen puntkomma! Op dezelfde manier kan je een potentiometer voorvolumeregeling op pin A0 declareren, of een tekst HELLO die de waarde “hello world” bevat:

Listing 3.3: Enkele declaraties

1 // declaraties:2 #define LED 133 #define VOLUME A04 #define HELLO "hello world"

Definities kennen geen type omdat het preprocessordirectieven zijn. In het geval van de LED zal depreprocessor overal in je code de identifier LED vervangen door het getal 13 of eender welke anderewaarde die je aan LED hebt toegewezen. De compiler “ziet” deze definities dus niet omdat ze daarvooral door de preprocessor vervangen zijn door hun effectieve waarde. Een alternatief is met constanten tewerken. Een constante declareren gebeurt als volgt:

Listing 3.4: Een constantedeclaratie

1 // constanten van type double en string delcareren:2 static const double euler = 2.71828;3 static const char welcomeMsg[] = "Ready for world domination.";

Omdat declaraties van constanten door de compiler worden uitgevoerd en niet door de preprocessormoet elke declaratie afgesloten worden met een puntkomma. Waar definities enkel kunnen gebruiktworden om een naam te geven aan primitieven zoals getallen, karakters of tekst, kan om het even welkobject als constante gedeclareerd worden. Het nadeel aan constanten is dan weer dat hun zichtbaarheidbeperkt is tot het bestand waarin ze gedeclareerd zijn. De functie van static wordt hieronder ver-klaard.

Een laatste type declaraties zijn variabelen. Net zoals in C# bewaren variabelen de staat van jeprogramma net zolang het loopt. Variabelen worden dus gewist telkens je de Arduino reset, door opde resetknop te drukken of de USB-kabel uit te trekken en weer in te steken. Een variabeledeclaratiereserveert een bepaalde reeks bytes in het geheugen voor toekomstig gebruik in je programma. Let eropdat je elke variabele initialiseert (een bepaalde waarde toewijst of op 0 zet). De meeste variabeletypesdie je in C# kent, bestaan ook in C: int, float, char, byte etc. Variabelen die je bovenaan decla-reert zijn beschikbaar in alle functies en procedures in je programma. Het is echter best mogelijk datveel voorkomende namen zoals LED, delay, counter etc. ook in bibliotheken worden gebruikt, watconflicten oplevert. Om dit te verhinderen, declareer je je variabelen best als static. Daardoor zijnze alleen bekend in het huidige bestand, wat geen conflicten kan opleveren met bibliotheken vermits diein andere bestanden zitten.

Het meest gebruikte variabeletype op microcontrollers is ongetwijfeld de integer, die gehele getallenkan bevatten. Integers zijn standaard bedoeld voor zowel positieve als negatieve gehele getallen. Weetje op voorhand dat je geen negatieve getallen nodig zal hebben, dan declareer je ze als unsigned (geenminteken) met de identifier uint waarbij de u staat voor unsigned. “Gewone” integers zijn dan signeden worden aangeduid met int.

In C is de standaardgroote van een integer afhankelijk van het platform. Op een 32-bit pc is eeninteger dus standaard 32 bits lang. Dit is echter niet zo op microcontrollers, die ook 8-bit of 16-bitkunnen zijn. Op een Arduino Uno is een integer bijvoorbeeld 16 bits, maar op een Arduino Due (eenander type Arduinobord) is het 32 bits! Dit leidt dus gemakkelijk tot verwarring. Op de pc kan je gerustelke integer 32 bits lang maken, want je hebt toch een zee van ruimte! Op een totaal van 4 GB of meerRAM-geheugen maken enkele bytes meer of minder geen verschil. Op microcontrollers heb je echterniet zoveel geheugen beschikbaar, dus als je op voorhand weet dat je in een lus van 0 tot 50 moet tellendan heb je geen 32 bits integer nodig, maar kom je met een 8-bit integer ook toe (want 28 = 256 dus jekan tot 255 tellen). Enkele voorbeelden:

Listing 3.5: Delcaratie van variabelen op Arduino

22

Page 32: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing. Y. Verbelen DESIGN EN PROTOTYPING 23

1 // declaraties:2 // een unsigned 8 bit integer (byte) met bereik 0 tot 2553 static uint8_t counter = 0;4 // een signed 16 bit integer (short) met bereik -32 768 tot 32 7675 static int16_t bias = -12;6 // een unsigned 32 bit integer (long) met bereik 0 tot 4 294 967 2957 static uint32_t time = 0;8 // een float (kommagetal) dat divider heet9 static float divider = 0.0;

10 // een string die str heet en de waarde hello krijgt11 static char str[] = "hello";

Voor meerdere variabelen van hetzelfde type kan je de declaraties ook combineren als volgt:

Listing 3.6: Gecombineerde variabeledeclaraties

1 // beginwaarden voor de PID-regelaar:2 static float Kp = 12.0f, Ki = 0.53f, Kd = 0.04f;

3.3.2 Initialisaties

Na de declaraties komt de initialisatie van de microcontroller. In deze sectie wordt de hardware ge-configureerd met initiele waarden. Afhankelijk van welke bibliotheken en shields je gebruikt, zullen erdus extra declaraties vereist zijn. De initialisatie hoort thuis in een speciale procedure die setup heet.Deze procedure retourneert geen waarde, en accepteert ook geen argumenten. De declaratie is als volgt:

Listing 3.7: void setup doet de initialisaties

1 // initialisatie:2 void setup()3 4 // hier komen alle instructies voor initialisatie5

Er zijn 2 declaraties die steeds terugkomen, nl. het configueren van de seriele poort die toelaat ommet de pc te communiceren, en het instellen van de pinnen als inputs (ingangen) of outputs (uitgangen).Om de seriele poort te configureren heb je maar een lijntje code nodig waarmee je de seriele controller(UART, eng. universal asynchronous receiver and transmitter) vertelt aan welke frequentie er data moetverzonden worden. Deze intialisatie gebeurt als volgt:

Listing 3.8: Initialisatie van de seriele verbinding (UART)

1 void setup()2 3 // initialisatie van UART met een frequentie van 9600 Hz:4 Serial.begin(9600);5

Na deze intialisatie kan je data naar de pc sturen, of kan je ook commando’s van de pc inlezen! Om depc te laten weten dat je Arduino actief is, kan je bijvoorbeeld volgende code schrijven:

Listing 3.9: Het eerste programma in elke programmeertaal: Hello world!

1 void setup()2 3 // initialisatie van UART:4 Serial.begin(9600);5 // schrijf de tekst "hello world!" naar de pc::6 Serial.println("hello world!");7

Alle tekst en variabelen die je met de functies Serial.print() en Serial.println() naar depc stuurt, komen daar op het scherm van de seriele monitor terecht. Dit is dus een interessante manier

23

Page 33: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

24 DESIGN EN PROTOTYPING ing. Y. Verbelen

om te debuggen door de waarden van variabelen naar de pc te schrijven.

Eveneens belangrijk is het instellen van de pinnen als inputs of outputs. Dit gebeurt met behulpvan de functie pinMode(). Een pin kan ingesteld worden als input (om een spanning in te lezen)of output (om een logische ‘1’ of ‘0’ op de uitgang te kunnen zetten). Alle digitale pinnen kunneningesteld worden om zowel digitale spanningen te lezen of te sturen, de 6 analoge pinnen kunnen ookanaloge spanningen inlezen. In het volgende voorbeeld wordt een drukknop ingesteld als digitale input,een potmeter als analoge input, en een LED als digitale output:

Listing 3.10: Initialisatie van de pinnen

1 #define BUTTON 2 // drukknop op digitale pin 22 #define POT A0 // potmeter op analoge pin A03 #define LED 13 // LED op digitale pin 134

5 void setup()6 7 // initialisatie van UART:8 Serial.begin(9600);9

10 // richting van de gebruikte pinnen instellen:11 pinMode(BUTTON, INPUT); // digitale input12 pinMode(POT, INPUT); // analoge input13 pinMode(LED, OUTPUT); // digitale output14

15 Serial.println("initalisatie voltooid!");16

De precieze betekenis van analoog en digitaal komt verderop nog aan bod.

3.3.3 Hoofdroutine

Na de initialisaties kan je programma pas echt starten. Net zoals de initialisaties thuishoren in hunspecifieke void setup wordt de code voor de hoofdroutine, het eigenlijke programma, geschrevenin de void loop:

Listing 3.11: Declaratie van de hoofdroutine

1 // hierna volgt de hoofdroutine2 void loop()3 4 // eigenlijke code voor het programma5

Wat gebeurt er als de laatste instructie in de hoofdroutine loop wordt bereikt? In je C# programma’ssluit het programma dan gewoon af, en wordt de besturing terug overgedragen aan het besturingssys-teem van je pc, zoals Linux of Windows. Op de Arduino draait echter geen besturingssysteem waaraande controle kan overgedragen worden! De microcontroller zou dan voor eeuwig blokkeren totdat hijwordt gereset. Bij toestellen zoals je GSM of mp3-speler betekent dit dat je de batterij er zou moetenuithalen, en dat is verre van praktisch. Om dit te vermijden wordt de code in microcontrollers in eenlus uitgevoerd, in Arduino heet dit dus void loop. Als het einde van void loop wordt bereikt,dan springt de uitvoering terug naar het begin ervan. Alle initalisaties staan echter in void setup enworden dus niet opnieuw uitgevoerd.

Bekijk onderstaand voorbeeld. In dit programma wordt een LED op digitale pin 13 gedeclareerdals OUTPUT. Meteen bij de start van de void loop wordt de uitgang van de LED digitaal “hoog”gemaakt. Er komt dus 5 V op deze uitgang te staan, waardoor de LED die is aangesloten zal oplichten.Vervolgens wordt met delay() 1 seconde gewacht, waarna de spanning weer 0 wordt gemaakt om deLED uit te schakelen, en er weer 1 seconde wordt gewacht.

Listing 3.12: Blink

24

Page 34: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing. Y. Verbelen DESIGN EN PROTOTYPING 25

1 #define LED 132

3 void setup()4 5 // initialisatie van de seriele verbinding6 Serial.begin(9600);7

8 // configureer LED als output9 pinMode(LED, OUTPUT);

10 11

12

13 void loop()14 15 // doe de LED aan:16 digitalWrite(LED, HIGH);17 Serial.println("LED is nu aan!");18

19 // wacht 1 seconde = 1000 ms20 delay(1000);21

22 // doe de LED weer uit23 digitalWrite(LED, LOW);24 Serial.println("LED is nu uit!");25

26 // wacht weer 1 seconde27 delay(1000);28

Je zou kunnen denken dat de LED dus slechts een keer oplicht, en daarna steeds gedoofd blijft. Maardoordat de code in void loop staat, springt de uitvoering van het programma na de laatste delay weernaar de eerste instructie van void loop. Daardoor wordt de LED weer aangeschakeld en begint decyclus opnieuw. Als je dit programma uitvoert, dan merk je dat de LED op je Arduino eeuwig aan enuit blijft knipperen.

Je kan zoveel code toevoegen als je wil aan void loop, maar denk eraan dat de uitvoering danook langer zal duren. Als je programma snel moet reageren, bijvoorbeeld als er op een knop wordtgedrukt, dan moet je trachten de void loop zo kort mogelijk te houden. Hierbij kunnen interruptshelpen, het microcontrollerequivalent van events in C#.

3.4 Hardwarecomponenten

Online zijn er talloze codevoorbeelden (eng. code snippets) te vinden waarmee je snel aan de slagkunt. Het is ook niet de bedoeling van deze handouts om een handboek “Arduino’s programmeren” teimiteren. Het is wel nuttig om enkele vaak gebruikte hardwarefuncties te vermelden en te beschrijven.

3.4.1 Digitale pinnen

De Arduino beschikt over 14 digitale pinnen, genummerd van 0 tot 13. Pinnen 0 en 1 zijn gereserveerdvoor de seriele verbinding (UART) en gebruik je dus best niet voor andere toepassingen. Digitale pinnenkan je gebruiken als input of als output, respectievelijk.

Listing 3.13: Digitale pinnen

1 #define BUTTON 122 #define LED 133

4 void setup()5 6 Serial.begin(9600);7

25

Page 35: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

26 DESIGN EN PROTOTYPING ing. Y. Verbelen

8 pinMode(BUTTON, INPUT);9 pinMode(LED, OUTPUT);

10 11

12 void loop()13 14 // toestand van de knop inlezen in variabele15 uint8_t buttonState = digitalRead(BUTTON);16

17 // doe de LED aan als de knop wordt ingedrukt:18 digitalWrite(LED, buttonState);19

Op een digitale pin die logisch “1” (HIGH) wordt gezet komt een spanning van ca. 5 V te staan, op eenpin die logisch “0” (LOW) is een spanning van 0 V. Omgekeerd levert een digitalRead() van 5 Veen logische “1” op en een digitalRead() van 0 V een logische “0”. Praktisch zullen spanningenhoger dan ca. 3.5 V als “1” worden gelezen, en alles wat lager is als “0”.

De stroom die een digitale pin kan leveren (eng. current sourcing) of kan opnemen (eng. currentsinking) is gelimiteerd tot ca. 20 mA per pin zoals ook in figuur 3.2 is aangegeven. De volledige AT-mega328p kan maximaal 200 mA leveren, gespreid over alle pinnen. Kleine belastingen zoals LED’s endigitale sturingen van sensors of displays vormen dus geen probleem, maar grotere belastingen zoals eenDC-motor of stappenmotor kan de ATmega328p zeker niet aan. Hiervoor heb je dus driverelektronicazoals transistors nodig.

3.4.2 Analoge pinnen

De Arduino beschikt ook over 6 analoge pinnen, genummerd van A0 tot A5, zie figuur 3.2. Analogepinnen zijn intern verbonden met een hardwareblok dat analoge signalen kan converteren naar digitalesignalen, de ADC (eng. analog to digital converter). De ADC converteert een spanning tussen 0 V en5 V naar een getal tussen 0 en 1023. Een spanning van 0 V resulteert dus in 0, 2.5 V resulteert in ca.512 en 5 V resulteert in 1023 enzovoort. De ADC van een Arduino heeft dus een resolutie van 10 bits,vermits het resultaat van de conversie 210 = 1024 verschillende getallen kan zijn.

Om de ADC te gebruiken moet je de respectievelijke analoge pin als INPUT initialiseren. Je kan deADC activeren met de functie analogRead(). Merk op dat je de 6 analoge pinnen ook even goeddigitaal kan inlezen met digitalRead() als je dat wenst. Je krijgt dan uiteraard een digitale waarde(HIGH of LOW) terug.

Listing 3.14: Analoge pinnen

1 #define TEMP A0 // temperatuursensor op analoge pin A02

3 void setup()4 5 Serial.begin(9600);6

7 pinMode(TEMP, INPUT);8 9

10 void loop()11 12 // temperatuur inlezen in een 16 bits unsigned integer:13 uint16_t temp = analogRead(TEMP);14

15 if (temp < 300)16 Serial.println("it’s too cold here!");17 else if (temp > 800)18 Serial.println("it’s too hot here!");19

26

Page 36: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing. Y. Verbelen DESIGN EN PROTOTYPING 27

De ADC is erg gevoelig voor overspanningen, dus ontwerp je schakeling zodanig dat er in geen enkelesituatie een spanning hoger dan 5 V op de ingangen kan terecht komen! Figuur 3.2 toont de limitatiesop deze pinnen.

3.4.3 Pulsbreedtemodulators

Het omgekeerde van een analoog-digitaalconverter (ADC) bestaat ook en heet een digitaal-analoog-converter (DAC). Helaas beschikt de ATmega328p niet over een eigen DAC, maar dit kan opgelostworden via een kleine omweg. De ATmega328p heeft namelijk wel pulsbreedtemodulators aan boord(eng. pulse width modulation, PWM). De digitale pinnen waarop een PWM-signaal kan gegenereerdworden, zijn aangeduid in figuur 3.2. Een PWM-generator produceert een continue reeks pulsen waar-van de breedte kan ingesteld worden. In figuur 3.3 zie je enkele voorbeelden van PWM-signalen. Deverhouding tussen de pulsbreedte en de periode van het signaal heet de duty cycle en wordt uitgedruktin procenten. Een PWM-signaal met duty cycle 0 % is dus constant logisch “0”, met duty cycle 50 %half “1” en half “0”, en met duty cycle 100 % constant logisch “1”.

0

1

V

duty cycle

PWManaloog signaal

80% 20% 50%50% 80%

Figuur 3.3: Een PWM-signaal, met aanduiding van de duty cycle in procenten op de x-as. In stippenlijn hetresulterende analoge signaal na een laagdoorlaatfilter.

(figuur: Cyril Buttay, CC BY-SA 3.0)

Je kan een PWM-signaal zonder probleem direct naar een LED sturen, waarmee je hem kan dimmen.Dit doe je door de functie analogWrite() op te roepen op pinnen die aan de PWM-generator vande ATmega328p hangen. De functie analogWrite() verwacht een byte (= 8-bit integer). Dezepinnen zijn op het Arduinobord gemarkeerd met een tilde. In onderstaand voorbeeld wordt de LED opde Arduino gedimd met de waarde van een potentiometer.

Listing 3.15: PWM-genenerator

1 #define POT A0 // potentiometer2 #define LED 13 // LED3

4 void setup()5 6 Serial.begin(9600);7

8 pinMode(POT, INPUT);9 pinMode(LED, OUTPUT);

10 11

12 void loop()13 14 // 10 bit waarde van potentiometer inlezen in een 16 bit integer:15 uint16_t brightness = analogRead(POT);16

17 // helderheid schalen van 0-1023 naar 0-255 met een logische shift:18 uint8_t pwm = (brightness >> 2);19

20 // PWM-generator gebruiken om de LED te dimmen:

27

Page 37: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

28 DESIGN EN PROTOTYPING ing. Y. Verbelen

21 analogWrite(LED, pwm);22

De shiftoperatie wordt hier gebruikt om een 10-bit getal afgekomstig van de ADC te converteren naareen 8-bit getal door de 2 minst beduidende bits (eng. least significant bits) te laten vallen. Een 10-bitinteger type is echter niet gedefinieerd op Arduino, dus moet het originele getal in het dichtstbijzijndegrotere type bewaard worden, in dit geval een 16-bit integer.

Soms wil je een volwaardig analoog signaal en geen PWM, bijvoorbeeld als je met je Arduino mu-ziek wil produceren die via een luidspreker moet afgespeeld worden. Een PWM-signaal zal in dat gevalvervelende pieptonen genereren. Dit probleem kan opgelost worden door het PWM-signaal door eenlaagdoorlaatfilter te sturen, die het omvormt tot een analoog signaal met een ripple die laag genoeg isvoor de meeste toepassingen. Figuur 3.4 toont een actieve Sallen-Key laagdoorlaatfilter (eng. low passfilter) die voor deze toepassing kan gebruikt worden. De precieze werking van dit type filter wordt uit-voerig besproken in de cursus Geıntegreerde Elektronische Systemen in de 3e Bachelor Elektronica.

R1 R2

C2

C410µ

10µ

+

C1 +5V

R3 R4

IC1 = LM358

1k 1k

1k 1k

B

A

ArduinoPWM

IC1A

IC1B

100n

100n

C3

analogout

Figuur 3.4: Een 4e orde Sallen-Key laagdoorlaatfilter om PWM-signalen van een Arduino om te vormen naar eenanaloog signaal.

Tip: als de ripple na een eerste laagdoorlaatfilter nog te hoog is, kan je er een tweede filter achterplaatsen om de ruis verder te onderdrukken.

3.4.4 Seriele communicatie

Seriele communicatie is de voornaamste communicatie-interface met de buitenwereld voor de Arduino.In de ATmega328p wordt dit afgehandeld door de UART-controller (eng. universal asynchronous recei-ver and transmitter). Deze signalen, die RX (ontvanger, eng. receiver) en TX (zender, eng. transmitter)heten, zijn beschikbaar op digitale pinnen 0 en 1 die op de Arduino ook aangeduid zijn als TX en RX(zie figuur 3.2). Deze pinnen gebruik je dus bij voorkeur niet voor andere toepassingen. Via RX kan jedus informatie die van de pc verstuurd wordt in de Arduino ontvangen, via TX kan de Arduino ook zelfinformatie versturen.

Omdat nieuwe laptops niet meer uitgerust worden met een DB-9 connector voor seriele interfaces,beschikt de Arduino Uno over een USB-controller die de TX en RX signalen omvormt tot USB-signalen.Die kunnen dan via de pc worden ingelezen. Op die manier kan de Arduino informatie rapporteren aande pc, of de pc kan commando’s naar de Arduino sturen.

De UART-controller moet geıntialiseerd worden met de juiste zendfrequentie voor hij gebruiktkan worden. Dat gebeurt met Serial.begin() zoals al eerder werd gedemonstreerd in de voidsetup functie:

Listing 3.16: Initialisatie van de UART-controller

1 void setup()2 3 // UART-controller initialiseren met een zendfrequentie van 9.6 kHz:4 Serial.begin(9600);5

28

Page 38: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing. Y. Verbelen DESIGN EN PROTOTYPING 29

De frequentie die je instelt in je Arduino moet dezelfde zijn als die van de seriele monitor op de pc, zoniet zal je enkel rare karakters zien of helemaal niks omdat de pc de data niet correct kan decoderen envice versa. Een frequentie van 9.6 kHz is min of meer standaard, maar je kan elke frequentie gebruikenzolang je maar dezelfde instelt op Arduino en pc.

Data versturen kan met het commando println() voor een lijn die gevolgd wordt door een re-geleinde, en print() zonder regeleinde. Als je data verstuurt via println() komt die tekst onderelkaar in de seriele monitor op de pc, stuur je met print() dan komt de tekst naast elkaar op dezelfdelijn. Je kan zowel strings, karakters als variabelen versturen:

Listing 3.17: Een analoge lichtsensor en digitale schakelaar rapporteren aan de pc

1 #define LDR A0 // lichtsensor2 #define SWITCH 4 // schakelaar3

4 void setup()5 6 Serial.begin(9600);7

8 pinMode(LDR, INPUT);9 pinMode(SWITCH, INPUT);

10 11

12 void loop()13 14 // waarde van lichtsensor inlezen:15 uint16_t illuminance = analogRead(LDR);16 // toestand van schakelaar inlezen:17 uint8_t switchState = digitalRead(SWITCH);18

19 // data over UART versturen naar de pc:20 Serial.print("Illuminance value is "); Serial.print(illuminance);21 Serial.print(" and switch is ");22 if (switchState > 0)23 Serial.println("on.");24 else25 Serial.println("off.");26

De te versturen karakters en variabelen worden door de println() en print() functies in de uit-gangsbuffer van de UART-controller geplaatst, die ze vervolgens verzendt aan de frequentie die je hebtingesteld, bijvoorbeeld 9.6 kHz. Op een Arduino Uno is de buffer 64 bytes groot, dus als je minder dan64 karakters verzendt dan kunnen die allemaal in de buffer en loopt je programma meteen na uitvoeringvan de instructie println() of print() verder. De UART-controller verzendt vervolgens de data inzijn buffer aan zijn eigen tempo. Als je meer dan 64 bytes verstuurt, dan pauzeert je programma totdater ruimte vrijkomt in de buffer.

Data versturen naar de pc is een handige manier om de uitvoering van je programma te volgen, ener is geen limiet op hoeveel tekst je kan versturen. Denk er wel aan dat de UART-controller een grootte-orde trager loopt dan je programma, dat aan een snelheid van 16 MHz wordt uitgevoerd. Een karakterversturen kost 11 bits (8 databits, een startbit, een stopbit en een pariteitsbit), en dus kan je aan 9.6 kHzmaximaal ca. 870 bytes per seconde naar de pc sturen. Wil je meer, dan zal je de communicatiefre-quentie van de UART-controller moeten opdrijven, om te verhinderen dat de volledige uitvoering van jeprogramma vertraagt.

Naast data versturen kan de UART-controller ook seriele data ontvangen. Net zoals bij het versturenwordt binnenkomende data in een 64 bytes grote buffer geplaatst, waaruit je sequentieel (ene byte nade andere) kan lezen. Je kan checken of er data in de buffer zit met de functie available(), diehet aantal bytes retourneert dat in de buffer aanwezig is. Deze bytes kunnen vervolgens uitgelezenworden met de functie read(). De functie read() leest een byte, met readBytes() kan ook een

29

Page 39: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

30 DESIGN EN PROTOTYPING ing. Y. Verbelen

willekeurig aantal bytes gelezen worden. Beide functies verwijderen de respectievelijke bytes uit debuffer, zodat er ruimte wordt vrijgemaakt om nieuwe data te ontvangen. Als je dus meerdere kerenread() achter elkaar aanroept, dan zal je telkens een andere waarde krijgen, op voorwaarde dat ervoldoende bytes in de buffer zitten natuurlijk. Als het niet wenselijk is om een byte uit de bufferte verwijderen, maar je wilt de waarde wel kennen, gebruik dan de functie peek(). Herhaaldelijkpeek() aanroepen zal steeds dezelfde waarde retourneren. Een voorbeeld:

Listing 3.18: LED controleren vanaf de pc

1 #define LED 132 #define ON 493 #define OFF 484

5 void setup()6 7 Serial.begin(9600);8

9 pinMode(LED, OUTPUT);10 11

12 void loop()13 14 if (Serial.available() > 0) // check of er bytes in de UART-buffer

zitten15 16 // lees het volgende karakter uit de buffer:17 uint8_t command = Serial.read();18

19 if (command == ON)20 // schakel de LED in als het karakter ’0’ wordt gestuurd door de

pc21 digitalWrite(LED, HIGH);22 else if (command == OFF)23 // schakel de LED uit als het karakter ’1’ wordt gestuurd door de

pc24 digitalWrite(LED, LOW);25 26

In dit voorbeeld wordt gechecked of er bytes in de UART-buffer zitten. Als er minstens een byte be-schikbaar is in de buffer dan wordt die uitgelezen en in variabele command opgeslagen. Als de byteovereenkomt het het karakter ‘0’ (ASCII code 48) dan wordt de LED op de Arduino uitgeschakeld, ishet karakter ‘1’ (ASCII code 49) dan wordt de LED ingeschakeld.

Let op: de buffer die ontvangen data opslaat is slechts 64 bytes groot. Maak er dus een goede ge-woonte van om de buffer regelmatig uit te lezen zodanig dat er steeds voldoende ruimte beschikbaar isom nieuwe data van de pc te ontvangen. Als je probeert om meer dan 64 bytes in de buffer te stoppen danloopt de buffer over (eng. overflow) en gaat deze data verloren omdat er geen plaats is om ze op te slaan!

Omdat stap voor stap debuggen via breakpoints niet mogelijk is in de Arduino IDE, is de serielecommunicatie met de pc de perfecte manier om je programma te debuggen door de waarden van al-lerlei variabelen en toestanden naar de pc te sturen zodat je het verloop van je programma kan vol-gen. Hiervoor zal je typisch op een groot aantal plaatsen in je programma Serial.print() enSerial.println() aanroepen met verschillende argumenten. Eens je programma lijkt te werkenwil je echter kunnen testen zonder al deze debugging info. De preprocessor kan hier opnieuw helpendankzij het #ifdef commando. Hiermee kan je checken of een identifier werd gedefinieerd, en in datgeval extra code toevoegen. Dit kan je gebruiken om gecentraliseerd alle debugging info in een keer aanof uit te schakelen. Het volgende voorbeeld illustreert dit principe.

Listing 3.19: Debugginginfo aan of uit zetten met ifdef

30

Page 40: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing. Y. Verbelen DESIGN EN PROTOTYPING 31

1 // declaratie van een identifier die DEBUG heet2 #define DEBUG3

4 #define WHEEL A0 // potentiometer op analoge ingang A05

6 void setup()7 8 Serial.begin(9600);9 pinMode(WHEEL, INPUT);

10

11 // declaratie van DEBUG bepaalt welke lijn code wordt gecompileerd:12 #ifdef DEBUG13 Serial.println("Debugging mode activated!");14 #else15 Serial.println("Debugging mode disabled.");16 #endif17 18

19 void loop()20 21 // waarde van de potentiometer inlezen:22 uint16_t wheelValue = analogRead(WHEEL);23 #ifdef DEBUG24 // in debugging mode waarde van de potentiometer naar de pc sturen:25 Serial.print("Analog value on pin A0:" ); Serial.println(wheelValue);26 #endif27

28 // potentiometer omrekenen naar een hoek tussen -90 en 9029 float wheelAngle = 0;30 if (wheelValue >= 512)31 wheelAngle = (wheelValue - 512) * 90 / 512;32 else33 wheelAngle = -(512 - wheelValue) * 90 / 512;34 #ifdef DEBUG35 // in debugging mode berekende hoek naar de pc sturen:36 Serial.print("Calculated angle: "); Serial.println(wheelAngle);37 #endif38

De preprocessor merkt bovenaan je code de declaratie van de identifier DEBUG en zal overal in hetprogramma de lijnen code tussen #ifdef DEBUG en #endif toevoegen aan het programma. AlsDEBUG niet is gedefinieerd dan verwijdert de preprocessor deze lijnen code en worden ze dus nietmeegecompileerd. In tegenstelling tot een gewone if voorwaarde, die steeds wordt meegecompileerd,vergroot #ifdef je programma dus niet. Om debugging mode uit te schakelen zet je de lijn codedie DEBUG declareert simpelweg in commentaar. In de 3e Bachelor Elektronica leer je meer over deverschillende functies van de preprocessor en de compiler, en hoe die je het leven gemakkelijker maken.

3.4.5 Interrupts

Interrupts zijn het microcontrollerequivalent van events in C#. Een interrupt is een speciaal mechanismein microcontrollers die de normale uitvoering van het programma pauzeren om een dringende taak uit tevoeren als er een externe impuls of event optreedt. Als de microcontroller zo’n event detecteert, springtde uitvoering van de code onmiddellijk naar een speciale functie, de interruptserviceroutine (ISR), diewordt uitgevoerd. Daarna gaat de uitvoering van het programma verder op de plaats waar het werdonderbroken door de interrupt.

Een Arduino heeft 2 hardware-interrupts, respectievelijk op digitale pinnen 2 en 3, die INT0 en INT1heten, zoals is aangegeven in figuur 3.2. Signalen op deze pinnen worden dus continu gemonitored. Alser een verandering plaatsvindt op deze pinnen, bijvoorbeeld een signaal dat van logisch “1” naar logisch“0” gaat, dan kan je daar een ISR aan koppelen. In deze functie schrijf je vervolgens de code die moetuitgevoerd worden als de interrupt wordt getriggerd. Hou de code in een ISR steeds zo kort mogelijk.

31

Page 41: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

32 DESIGN EN PROTOTYPING ing. Y. Verbelen

Delay en timerfuncties kunnen niet gebruikt worden in een ISR. Het voorbeeld hieronder maakt dewerking van een ISR duidelijk.

Listing 3.20: Snel inspelen op interrupts via ISR

1 // pinnen van temperatuurinput en reactor2 #define CRITICAL_TEMP 23 #define REACTOR 54

5 // volatile variabele die de status van de reactor bijhoudt6 volatile static uint8_t reactorState = 0; // status7

8 // functieprototype van de ISR9 void emergencyStop(void);

10

11 void setup()12 13 Serial.begin(9600);14

15 pinMode(CRITICAL_TEMP, INPUT);16 pinMode(REACTOR, OUTPUT);17

18 // koppel de ISR ’emergencyStop’ aan een stijgende flank event opINT0:

19 attachInterrupt(0, emergencyStop, RISING);20

21 digitalWrite(REACTOR, HIGH); // reactor inschakelen22 reactorState = 1; // update status23

24 Serial.println("Reactor started.");25 26

27 void loop()28 29 // statusupdate elke 100 ms30 if (reactorState)31 Serial.println("Reactor still running...");32 else33 Serial.println("Reactor offline.");34 delay(100);35 36

37 void emergencyStop()38 39 // interrupt getriggerd, reactor direct uitschakelen!40 digitalWrite(REACTOR, LOW);41 Serial.println("omfg reactor overheated, we almost died!");42 reactorState = 0; // update status43

In bovenstaand voorbeeld wordt de ISR emergencyStop() getriggerd bij een stijgende flank opINT0, fysich digitale pin 2. Dit wordt aangegeven door het RISING sleutelwoord wanneer de ISR aande interrupt wordt gekoppeld in void setup(). Het omgekeerde is FALLING, nl. het triggeren opeen dalende flank. Om op beide flanken te triggeren gebruik je het sleutelwoord CHANGE (elke veran-dering).

De globale variabele reactorState wordt gebruikt om een toestand tussen de ISR en de hoofd-routine te commmuniceren. Omdat bij een interrupt de instructiepointer opeens verspringt zonder devariabelecontext van de lopende code op te slaan, kan je variabelen niet op de normale manier doorge-ven of wijzigen binnen interrupt handlers. Om een globale variabele te wijzigen binnen een interruptdien je die als volatile te declareren, zoals aangegeven in het voorbeeld.

32

Page 42: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing. Y. Verbelen DESIGN EN PROTOTYPING 33

3.4.6 Timers

In tegenstelling to de meeste andere microcontrollers, zijn de hardwaretimers op een Arduino niet ge-makkelijk rechtstreeks aan te spreken. Om processen te timen, moet je dus gebruik maken van eenexterne timer die bijvoorbeeld op een van de interrupts is aangesloten, zoals in de vorige paragraaf werdgeıllustreerd. Gelukkig biedt Arduino nog andere technieken om de tijd bij te houden.

Met de functies millis() en micros() kan het aantal ms resp. µs opgevraagd worden sinds delaatste globale reset van de microcontroller. Het getal dat door millis() wordt geretourneerd neemtdus steeds toe. Het datatype van millis() is een int32 t, en de maximale waarde wordt bereikt naca. 50 dagen waarna millis() weer vanaf 0 begint te tellen. Het gedrag van micros() is identiek.Je kan beide functies dus gebruiken om een actie uit te voeren nadat er een bepaalde tijd verstreken is.

Listing 3.21: Tijd bijhouden via millis en micros

1 static uint32_t time = 0;2 static uint16_t ticks = 0;3

4 void setup()5 6 Serial.begin(9600);7 8

9 void loop()10 11 if (millis() > (time + 1000)) // seconde verstreken12 13 time = millis(); // huidige aantal milliseconden toewijzen aan

variabele time14 ticks++; // verhoog tick counter15 Serial.print("Seconds passed since startup: ");

Serial.println(ticks);16 17

Als je enkel een bepaalde tijd wil wachten in je programma, m.a.w. het programma pauzeren, dan ismillis() en micros() hiervoor een omslachtige techniek. Arduino biedt echter ook 2 delayfunc-ties, nl. delay() dat het programma een gewenst aantal ms pauzeert, en delayMicroseconds()dat het programma een aantal µs pauzeert. Het nadeel aan beide delays is dat het programma niks nuttigkan doen terwijl het wacht, de uitvoering wordt effectief geblokkeerd. Volgend voorbeeld illustreert hoeje met delays zelf een PWM-generator kan programmeren.

Listing 3.22: Uitvoering pauzeren met delays

1 #define POT A02 #define LED 133

4 void setup()5 6 pinMode(POT, INPUT);7 pinMode(LED, OUTPUT);8 9

10 void loop()11 12 // waarde van potentiometer lezen als input voor de PWM duty cycle13 uint16_t value = analogRead(POT);14

15 digitalWrite(LED, HIGH);16 delayMicroseconds(value);17 digitalWrite(LED, LOW);18 delayMicroseconds(1024 - value); // totale periode = 1024 us19

33

Page 43: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

34 DESIGN EN PROTOTYPING ing. Y. Verbelen

Je merkt meteen ook het nadeel van deze techniek: door de extra rekentijd die nodig is voor de ADC(uitlezen potentiometer) en het berekenen van het verschil tussen 1024 en value zal de werkelijke pe-riode iets langer zijn, en de duty cycle ook afwijken. Voor nauwkeurige sturingen zoals de ESC’s vanquadcopters kan je dit dus niet gebruiken, maar voor minder kritische applicaties kan het wel degelijknuttig zijn.

3.5 Documentatie

Naarmate de complexiteit van je programma’s toeneemt zal ook het aantal variabelen, klassen, functiesen andere codestructuren waar je van gebruik maakt toenemen. Omdat het in dergelijke situaties geenevidentie meer is om de precieze functie van bepaalde stukken complexe code te achterhalen, is het vanbelang je werk voldoende te documenteren. Bij kleine programma’s van minder dan 100 regels codelijkt dit misschien tijdverlies, maar dat is het niet. Stel bijvoorbeeld dat je programma een half jaar vlotdraait, en dan besluit je om extra functionaliteit toe te voegen. Hoeveel tijd zou het je kosten om uit tevissen hoe je programma precies werkt zonder documentatie? Als er tientallen variabelen of functiesgedeclareerd zijn dan is dat zeker geen evidentie, en heb je misschien de neiging om het programma te-rug vanaf nul te schrijven in plaats van het bestaande programma aan te passen. Dat is dus verloren werk.

Als ingenieur ben je natuurlijk ook niet alleen op de wereld. Het wekkerproject doe je weliswaarzelfstandig, maar volgend jaar wordt je met het Ontwerpproject voor een grotere uitdaging gesteld. HetOntwerpproject is echter een groepsproject, en dus moet al je code zodanig gedocumenteerd zijn dat jegroepsleden ze kunnen begrijpen en er wijzigingen of verbeteringen in kunnen aanbrengen. Om iemandanders zijn code te kunnen debuggen is het niet voldoende om oppervlakkig te weten hoe ze werkt, maarer is diepgaand inzicht voor nodig. Hiervoor is documentatie dus essentieel.

3.5.1 Commentaar

De gemakkelijkste manier om je code te documenteren is via commentaar (eng. comments) in C. Com-mentaar herken je aan de groene highlighting (of grijze highlighting in Arduino IDE), en wordt zoweldoor de preprocessor als de compiler genegeerd. Commentaar dient dus uitsluitend om mensen die decode lezen inzicht te verschaffen in de werking ervan.

In C zijn er 2 manieren om commentaar te markeren. Een enkele lijn commentaar kan je latenvoorafgaan met een dubbele slash (//), meerdere lijnen commentaar zet je tussen comment tokens alsvolgt: /* dit is commentaar */. Omdat de compiler geen rekening houdt met regeleindes, kanje commentaar op het even welke plaats in je code toevoegen.

Listing 3.23: Documentatie met commentaar

1 // definities:2 #include <math.h> // voor de exp() functie3 #define LED 13 // LED op pin 13 op Arduino Uno4 #define G 9.8172 // gravitatieconstante5 #define UART 9600 // frequentie voor UART hier aanpassen6

7 /* aansluiting van de stappenmotor in volgorde:8 - rood9 - blauw

10 - groen11 - zwart */12 static const uint8_t stepperPins[] = 4, 5, 7, 6;13

14 void setup()15 16 // frequentie voor UART aanpassen in definities!17 Serial.begin(UART);18

34

Page 44: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing. Y. Verbelen DESIGN EN PROTOTYPING 35

19 // alle pinnen voor de stappenmotor als output configureren20 for (uint8_t pin = 0; pin < sizeof(stepperPins); pin++)21 pinMode(stepperPins[pin], OUTPUT);22

3.5.2 Header

Omdat je wellicht meerdere versies zal schrijven van je software, die bij verschillende versies van jehardware passen bijvoorbeeld, is het warm aanbevolen om bovenaan je programma versie-informatietoe te voegen en een datum te vermelden. Gebruikelijk staat dit bovenaan je code en heet dan de headervan je programa. De versie-informatie kan je dan rechtstreeks ook naar de pc printen via de serielemonitor zodat steeds duidelijk is welke versie van je programma er wordt uitgevoerd. Dit verhindert dater aanpassingen worden gedaan in verkeerde versies of dat de hardware fout wordt aangestuurd.

Listing 3.24: Versie en datum in commentaar

1 /*2 Kirov Flight Controller3 versie 2.44 laatste aanpassing: 22/03/2015 door Eric Cartman5 hoort bij elektronica versie 0.86

7 !! bugs in deze versie, niet meer gebruiken !!8 */9 #ifndef VERSION

10 #define VERSION "2.4"11 #endif12

13 #define OBSOLETE14

15 #define LED 13 // LED op pin 1316 #define ENGINE 6 // aandrijving op pin 6 (enkel PWM pinnen!)17 #define UART 9600 // frequentie voor UART hier aanpassen18

19 void setup()20 21 Serial.begin(UART);22 Serial.print("Kirov Flight Controller v"); Serial.println(VERSION);23

24 #ifdef OBSOLETE25 Serial.println("Opgelet: verouderde versie, niet meer gebruiken!");26 #endif27

Bovenstaande voorbeeld toont goed gedocumenteerde code. De versie en datum van laatste aanpassingstaan vermeld, en de versie van het programma wordt gedefinieerd als dat nog niet eerder gebeurde.Die versie-informatie wordt serieel naar de pc gestuurd zodat ze op het scherm verschijnt telkens hetprogramma opstart. Er is ook een identifier OBSOLETE voorzien, die kan geactiveerd worden als decode verouderd is. In dat geval wordt er ook een waarschuwing weergegeven.

3.6 OntwerpcyclusTelkens je een programma download naar de Arduino, wordt het in het flashgeheugen van de AT-mega328p microcontroller opgeslagen. Flash is een niet-volatiel geheugentype, het behoudt zijn dataook als de stroom wordt uitgeschakeld. Jouw eigen firmware blijft dus in de microcontroller zitten todatje ze overschrijft met een nieuw programma.

Eens je de ATmega328p geprogrammeerd hebt, vervalt eigenlijk het nut van heel wat elektronica ophet Arduinobord: de LED’s voor debugging heb je niet meer nodig, de USB-controller ook niet, en debijhorende USB-connector dus zeker niet (tenzij je een wekker met USB-aansluiting wil natuurlijk!).

35

Page 45: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

36 DESIGN EN PROTOTYPING ing. Y. Verbelen

Arduino’s zijn in de eerste plaats rapid prototpying hulpmiddelen, en het is niet de bedoeling dat ze infinale versies worden geıntegreerd. Eens je eerste prototype af is en je software werkt, dan neem jede ATmega328p van de Arduino af, en je integreert hem meteen in je eigen elektronisch design, eenprintplaatje bijvoorbeeld. Het enige wat je hiervoor nodig hebt, is een kwartskristal van 16 MHz en 2condensators van 22 pF tot 27 pF om de ATmega328p van een kloksignaal to voorzien. Van zodra je deATmega328p weer van voeding voorziet, zal je programma meteen weer opgestart worden!

In het volgende hoofdstuk leer je hoe je zelf een printplaat of PCB (eng. Printed Circuit Board) kanontwerpen aan de hand van een eenvoudig voorbeeld.

36

Page 46: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

4PCB-ontwerp

Nothing shocks me. I’m a scientist.

Indiana Jones

4.1 Inleiding

Bij het bouwen van je wekkerprototype op breadboard heb je gemerkt dat aan breadboards veel voorde-len, maar ook veel nadelen verbonden zijn. Schakelingen bouwen en testen verloopt weliswaar vlot, enje kan gemakkelijk componenten toevoegen of wisselen, maar de schakeling is ook heel fragiel. Dra-den die loskomen, slecht contact maken, of componenten die niet goed vast zitten, kunnen leiden totonverklaarbaar gedrag in schakelingen, met alle frustraties van dien. Hoewel een breadboard dus eenuitstekend prototypingmedium is, is het zeker niet geschikt voor een finale versie van je wekker diejarenlang op je nachtkastje zal staan. Arduino’s zijn al evenmin geschikt om in finale versies te zitten.Daarvoor moet de elektronica dus omgezet worden naar een robuustere en “definitievere” vorm.

De meest toegepaste oplossing is gebruik makend van gedrukte schakelingen (printed circuit boards,PCB), ook wel prints of printplaten genoemd. PCB’s hebben verschillende voordelen ten opzichte vanbreadboards:

• componenten zitten vast gesoldeerd, en kunnen dus niet loskomen;

• componenten kunnen veel dichter bij elkaar geplaatst worden, en dus wordt de schakeling kleiner;

• eens je het ontwerp van een PCB hebt, kan je met weinig moeite meerdere kopieen maken;

• de positionering van gaten in de PCB is willekeurig, en dus kan je componenten gebruiken dieniet in een breadboard passen;

• PCB’s zijn (op grote schaal) aanzienlijk goedkoper;

• de levensduur van PCB’s is quasi ongelimiteerd.

In de 2e Bachelor wordt in het studiedeel ECAD (Electronic Computer Aided Design) veel dieper inge-gaan op het ontwerp van PCB’s, en leer je alle technieken die nodig zijn om zelf PCB’s te ontwerpenzoals je die vindt in hedendaagse elektronische toestellen zoals laptops en printers. Dit hoofdstuk be-perkt zich tot de basisconcepten die net volstaan om een eenvoudige PCB voor je wekker te ontwerpen.

Page 47: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

38 DESIGN EN PROTOTYPING ing. Y. Verbelen

4.2 CircuitMaker

Neem eens een PCB ter hand. In het labo Elektronica vind je in de recup-kasten een ruim aanbod aanPCB’s die gerecupereerd zijn uit afgedankte toestellen. Als je goed kijkt, merk je dat onder de groenelaklaag (die soldeermasker, eng. solder mask heet), sporen lopen die contrasteren met de achtergrond.Deze sporen zijn eigenlijk zeer dunne koperen strips die de componenten met elkaar verbinden en zodus een schakeling vormen.

In essentie is een PCB niks anders dan een plaatje isolerend materiaal waarop aan een of beide zijdeneen verzameling koperen sporen (eng. tracks of traces) is aangebracht die de componenten met elkaarverbinden. De componenten zelf zijn elektrisch met de sporen verbonden via een proces dat solderen(eng. soldering) heet. In de volgende hoofdstukken wordt dieper ingegaan op soldeertechnieken. Om teverhinderen dat de kopersporen zouden oxideren aan de lucht, worden ze beschermd onder die groenelaklaag, die tevens het solderen vergemakkelijkt. Tot slot wordt er bovenop die laklaag tekst gedrukt omaan te duiden waar de componenten moeten geplaatst worden. De laklaag en tekstopdruk zijn volledigoptioneel, je kan een perfect werkende PCB maken met de kopersporen alleen, en dat wordt dus ook defocus van dit hoofdstuk.

Het ontwerpen van het patroon kopersporen is waar PCB-ontwerp om draait. Vroeger werd ditmanueel gedaan met een zwarte alcoholstift op een blad papier, en voor heel eenvoudige PCB’s is datmisschien nog wel de snelste oplossing. Maar als je een groot aantal componenten moet verbinden meteen nog groter aantal draden, dan heb je nood aan betere hulpmiddelen. Hier komen gespecialiseerdesoftwaretools om de hoek kijken.

Er bestaan verschillende gespecialiseerde softwarepakketten die helpen bij het ontwerpen van PCB’s,en aan de meeste van die (professionele) paketten hangt ook een prijskaartje dat varieert van een highend gaming laptop tot een sportvliegtuigje (!). Voor eenvoudige schakelingen zoals je wekker heb je diezeer ingewikkelde software echter niet nodig en gelukkig bestaan er ook uitstekende softwarepakettendie volledig gratis zijn, zoals bijvoorbeeld Eagle, DesignSpark, gEDA, UltiBoard, KiCad en Fritzing.Veruit het beste gratis pakket is echter CircuitMaker. CircuitMaker is de gratis hacker- en makereditievan Altium’s professionele PCB-software Altium Designer waarmee je zal leren werken in de 3e Ba-chelor Elektronica. De twee voornaamste voordelen van CircuitMaker ten opzichte van de alternatievehierboven vernoemde pakketten zijn enerzijds de intuıtieve gebruikersinterface, en anderzijds de inhouddie volledig open source is.

In dit hoofdstuk wordt gedemonstreerd hoe je zelf een PCB kan ontwerpen met CircuitMaker, enhoe je deze PCB later ook zelf kan maken in het fablab.

4.2.1 Installatie

Je kan het installatieprogramma van CircuitMaker rechtstreeks downloaden van de CircuitMaker web-site1 waarna je je nog wel voor een account moet registreren. Dit doe je eveneens via de CircuitMakerwebsite. Het e-mailadres dat je hiervoor moet opgeven kan maar hoeft niet jouw VUB-e-mailadres tezijn. Figuur 4.1 toont het registratieformulier. Check de box I accept Terms and Conditions en klik opRegister my account.

Je krijgt vervolgens een e-mail toegestuurd met daarin een wachtwoord. Met dit wachtwoord kanje vervolgens inloggen in CircuitMaker, zoals weergegeven in figuur 4.2. Helaas wordt CircuitMakermomenteel enkel officieel ondersteund op het besturingssysteem Microsoft Windows. Op de website iseen handleiding beschikbaar voor installatie onder Linux via WINE2 maar dit lijkt niet voor iedereeneven vlot te werken. Een gebruiksvriendelijker alternatief is CircuitMaker te installeren in een virtueleWindows-omgeving via bijvoorbeeld VirtualBox of VMware. We raden VMware Workstation 123 of

1http://circuitmaker.com/installer-download2http://circuitmaker.com/blog/3-steps-for-installing-circuitmaker-on-linux3http://www.vmware.com/go/tryplayerpro-linux-64

38

Page 48: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing. Y. Verbelen DESIGN EN PROTOTYPING 39

Figuur 4.1: Registratie van een CircuitMaker account

hoger aan met Microsoft Windows 7 als client besturingssysteem. Let erop dat je virtualisatiesoftwareShadermodel 3.0 ondersteunt, wat nodig is om PCB’s in 3D te kunnen renderen. Hiervoor zal je ook de3D-acceleratie op je grafische kaart moeten activeren.

Figuur 4.2: Inloggen in CircuitMaker

Vooraleer je je in PCB-design stort, is het verstandig om eerst het willekeurige wachtwoord dat jevia e-mail werd toegestuurd te wijzigen in een wachtwoord dat je gemakkelijker kan onthouden, zoalshet wachtwoord van je VUB-account bijvoorbeeld. Dit doe je via menu Start→My Account→ ChangePassword. Je moet je oude wachtwoord opnieuw invoeren om je wachtwoord te kunnen wijzigen.

4.2.2 De “cloud”

CircuitMaker is bedoeld voor de hacker- en maker community, en de focus ligt daardoor sterk op hetdelen van informatie en projecten, en samenwerking in teams. Daarom bewaart CircuitMaker al je pro-

39

Page 49: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

40 DESIGN EN PROTOTYPING ing. Y. Verbelen

jecten op de Altium servers, de zogenaamde “cloud”, en zijn ze vrij toegankelijk voor iedereen. ViaStart kan je bestaande projecten bekijken. Het vermijdt ook dat je je projecten via USB-sticks moetrondzeulen en kwijtgeraken, dat je je projecten naar jezelf moet doormailen, of andere archaısche tech-nieken om projecten van de ene naar de andere pc te krijgen.

Het is natuurlijk ook noodzakelijk dat je vrij met CircuitMaker kan leren werken zonder dat je(genante) probeersels meteen zichtbaar zijn voor de hele wereld. Om deze reden laat CircuitMaker ooktoe om aan 2 private projecten te werken, in zogenmaamde sandbox modus. Wil je een 3e private project,dan zal je een van de vorige 2 projecten moeten releasen in de publieke cloud of weer verwijderen. Jekan dus zoveel oefenen als je wil.

4.3 Schema’s tekenen

Vooraleer je componenten op een PCB kan gaan zetten en met elkaar verbinden, moet CircuitMakereerst weten welke componenten je wil gebruiken, hoeveel pinnen deze hebben, en welke componentenonderling verbonden moeten worden en met welke pinnen precies. Dit doe je door de schakeling dieje op PCB wil zetten digitaal te tekenen in CircuitMaker. Deze stap wordt ook wel schematic capturegenoemd.

Bij wijze van voorbeeld wordt hieronder gedemonstreerd hoe je zelf een schema van een eenvoudigeswitched inductor DC/DC converter – een type spanningsregulator – kan tekenen in CircuitMaker.

Stap 1. Start CircuitMaker. Er wordt je gevraagd in te loggen met je gebruikersnaam, die je e-mailadres is, en wachtwoord. Tik Remember Me aan zodat je volgende keer automatisch wordt ingelogd.Figuur 4.2 toont de procedure.

Stap 2. Maak een nieuw project in CircuitMaker. Via tabblad Home en vervolgens Add new project.Vul een zinvolle naam in voor je project en een beschrijving die ook begrijpbaar is voor anderen, encheck de optie Sandbox, zoals weergegeven in figuur 4.3. Klik Save.

Stap 3. Vervolgens kom je op de projectpagina terecht. Hier kan je de url van je project wijzigen, eenafbeelding toevoegen, een beschrijving geven, en verschillende andere opties instellen. Klik bovenaanop de knop Save als je klaar bent. Je kan hier later steeds naar terugkomen.

Stap 4. Nu het project is aangemaakt in de cloud kan het bewerkt worden. Klik in het projectoverzichtop de knop Open Design. Het workspace panel Projects verschijnt met daarin een leeg project datPowerSupply.PrjPcb (of een andere naam) heet.

Stap 5. Voeg een schemadocument toe aan het project. Klik op de knop Project in de werkbalk (optabblad Home) en kies de optie Add New Schematic. Je kan ook rechterklikken op je project in hetProjects workspace panel en vervolgens Add New to Project, Schematic kiezen. CicuitMaker vraagt jeom dit nieuwe schema een naam te geven, bijvoorbeeld Core.SchDoc. In het workspace panel Projectsverschijnt er onder je project nu een nieuw schema dat Core.SchDoc heet, en het schema wordt ookgeopend in de editor. Op dit virtuele blad papier zal je je schema tekenen. Merk op dat er in dewerkbalk naast Project opeens heel wat nieuwe knoppen tevoorschijn zijn gekomen. De inhoud van dewerkbalk verandert dynamisch afhankelijk van het actieve document in de editor. Je kan de naam vanschemadocumenten (eng. schematics) nadien steeds wijzigen door erop te rechterklikken in het Projectsworkspace panel en de optie Rename te kiezen.

Stap 6. Bekijk het functionele schema in figuur 4.4. Deze schakeling zet een ingangsspanning tussen5 V en 35 V (linkerkant van het schema) om naar een uitgangspannng van precies 5 V, een courantespanning in elektronica. Hoe de schakeling precies werkt is niet belangrijk, daarop wordt in tweedeen derde Bachelor uitgebreid ingegaan. Je herkent ongetwijfeld een aantal componenten die je ook

40

Page 50: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing. Y. Verbelen DESIGN EN PROTOTYPING 41

Figuur 4.3: Een nieuw private (sandbox) project aanmaken.

in de WPO’s Basiselektronica bent tegengekomen: weerstanden, diodes, condensators, LED, ... Dezebasiscomponenten zul je in quasi alle schakelingen terugvinden. Niet verrassend staat een IC (eng.integrated circuit) met typenummer LM2596T-ADJ centraal in deze schakeling, hij vormt dan ook dekern van deze spanningsregulator.

5V ... 35V

5V

ON

IN

OUT

FB

GND

+

0

+

0

F1 3A

R1 D1

UF3008

C1100µF

50V

IC1

D2

UF4003

L1

33µH 3A

R2

R3

R4

C2

220µF50V

R5

D3 ON

1k

470Ω

470Ω

2k7

D4

UF4003

LM2596T-ADJ

30V5.6J

Figuur 4.4: Een switched inductor DC/DC converter met 5 V uitgangsspanning op basis van de LM2596 buckcontroller.

Stap 7. Op het blanco schemadocument kan je zoveel componenten (eng. parts) toevoegen als jewenst. Aangezien de LM2596 de centraal staat in deze schakeling, is het logisch om die als eerst toe tevoegen. Hiervoor moet hij opgezocht worden in een bibliotheek met componenten (eng. library). Alshet workspace panel Libraries nog niet zichtbaar is, kan je het tevoorschijn halen via tabblad View envervolgens Libraries te klikken. Je kan workspace panels vastpinnen of automatisch laten inklappen viade middelste knop in hun titelbalken.

41

Page 51: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

42 DESIGN EN PROTOTYPING ing. Y. Verbelen

Via Libraries kan je zoeken naar componenten in 3 locaties: je eigen favourieten (eng. favorites),de Octopart bibliotheek, of componenten die reeds aanwezig zijn in je project. Selecteer Octopart alssearch provider in de bovenste combobox. Vervolgens kan je een of meerdere sleutelwoorden opgeven inhet tekstvak eronder om componenten op te zoeken. De tekst in het zoekvak is niet hoofdlettergevoelig.Klik op de knop met het vergrootglas naast dit tekstvak om het zoeken te starten, of druk op de Enter-toets. Na enkele ogenblikken worden er zoekresultaten geretourneerd, zoals weergegeven in figuur 4.5.

Figuur 4.5: Een LM2596 opzoeken in de Octopart component library.

Onder het tekstvak met keywords volgt een lijst met componenten die voldoen aan je zoekcriteria.Hoe ruimer de opgegeven criteria, hoe meer componenten zullen geretourneerd worden. Zoeken op bv.resistor (weerstand) zal aanzienlijk meer resultaten opleveren dan LM2596, dat enkel naar die specifiekecomponent zoekt. Als je naar LM2596T zoekt, krijg je enkel through hole versies (componenten metdraden die in een breadboard passen). Voeg je er nog ADJ achter, dan zal je enkel die specifieke throughhole LM2596’s krijgen met een instelbare uitgangsspanning. De effcientie van de zoekfunctie zal dussterk afhangen van de keuze van je sleutelwoorden. Zelfs voor LM2596T-ADJ zullen nog meerderezoekresultaten geretourneerd worden, omdat verschillende fabrikanten deze component maken.

Als je op een component klikt, dan wordt het schemamodel gedownload van de server. Enkel com-ponenten met een CircuitMaker symbool in de linkerbovenhoek zitten in de database en zijn dus be-schikbaar. Voor deze componenten wordt de knop Place beschikbaar. Je kan componenten ook met de

42

Page 52: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing. Y. Verbelen DESIGN EN PROTOTYPING 43

muis uit het Libraries workspace panel naar je schema slepen. Componenten die nog niet in de databasezitten kan je zelf toevoegen via de knop Build, dat leer je in het tweede jaar. Tweedejaars zullen je metplezier helpen om ontbrekende componenten toe te voegen. Of je zoekt naar een alternatieve componentdie wel in de database zit.

Onder de knoppen Place en Build vind je een overzicht van prijsinformatie. CircuitMaker gaat au-tomatisch op zoek naar deze component bij verschillende leveranciers, zodat je je meteen een idee kanvormen van hoeveel je ontwerp zal kosten.

Daaronder volgen schemamodel en footprint, de voetafdruk van de component op de PCB. Elkecomponent heeft minstens een footprint, maar veel hebben er 2 of zelfs meer. De variaties zitten meestalin de grootte van de pads (soldeereilandjes). Om het jezelf gemakkelijk te maken, zeker als je nog nietveel soldeerervaring hebt, kies je best voor de footprint met de grootste pads.

Onder het schemamodel en footprint(s) volgt een lijst met revisies. CircuitMaker ondersteunt eeningebouwd versiebeheersysteem, en houdt voor elke component een lijst met wijzigingen bij. Je kan ditvergelijken met de manier waarop Wikipedia vorige wijzigingen aan artikels bijhoudt. De laatste versiewordt standaard geselecteed. Als je fouten verbetert (rechterklik op de component in de zoekresultatenen klik Edit) dan wordt die nieuwe versie (revisie) onder jouw naam gepubliceerd.

De Octopart database bevat honderdduizenden componenten, dus de kans dat je niet vindt wat jezoekt is behoorlijk klein. In uitzonderlijke gevallen kan dit toch voorkomen, bijvoorbeeld bij plug-inmodules van obscure Chinese fabrikanten, of als je zelf je spoel rolt met draad over een potlood. In diegevallen kan je een eigen component creeren met de optie Build your own helemaal onderaan het Libra-ries workspace panel. De procedure is identiek aan die van een normale Build, behalve dat je “custom”component niet aan de Octopart database wordt toegevoegd en dus alleen voor jezelf beschikbaar is.Vraag tweedejaars om assistentie als je zelf eigen componenten wilt aanmaken.

Als je de LM2596T-ADJ toevoegt aan je schema, dan wordt hij weergegeven met zijn schemasym-bool, in dit geval een generische gele rechthoek met 5 pinnen eraan. De pinnen zijn al genummerd van1 tot 5 en hebben al een naam gekregen, namen die niet toevallig overeenkomen met die in het schemain figuur 4.4.

Stap 8. Bij sommige componenten staat het stypenummer in het schema, en bv. diodes D1, D2 enD4 zijn dus gemakkelijk op te zoeken via Octopart op dezelfde manier als de LM2596T-ADJ. Voor deUF4003 (Ultra Fast Rectifier no. 4003) heb je 2 stuks nodig, dus die sleep je 2 keer op je schema. Hetis ook mogelijk om componenten die al op je schema staan de dupliceren door ze te selecteren met demuis en vervolgens via Ctrl + C, Ctrl + V te kopieren en te plakken.

Stap 9. Helaas zijn niet alle componenten even gemakkelijk te vinden. Voor zekering F1 en spoelL1 staat er enkel de stroom vermeld die ze moeten aankunnen, nl. 3 A. Je kan weliswaar zoeken naar“inductor 33H 3A” via Octopart, maar de lijst met zoekresultaten is behoorlijk beperkt. Anderzijds le-vert zoeken naar “resistor 470 Ω” voor R5 een zeer lange lijst zoekresultaten, waarvan de meeste geendraden hebben (surface mount) en dus niet compatibel zijn met de weerstanden die in het labo aanwe-zig zijn. Octopart is dus vooral handig als je het exacte typenummer van componenten kent, zoals bv.LM2596T-ADJ of UF3008.

Neem bijvoorbeeld inductor L1 als voorbeeld. Je kan erg lang zoeken naar alle mogelijke combina-ties van sleutelwoorden, en toch is de kans klein dat je toevallig op een van de 33µH inductors zult stotendie in het labo aanwezig zijn. Als je daarentegen op het exacte typenummer van zo’n inductor zoekt, bv.Panasonic ELC-18B330L, dan zul je wel meteen het juiste zoekresultaat krijgen. Octopart laat helaasniet toe om geparametriseerd te zoeken, zodat je enkel inductors krijgt met een bepaalde waarde, waar-van de pinnen een bepaalde afstand uit elkaar staan, met een specifieke diameter, enzovoort. Hiervooris een externe zoekmachine nodig, en de zoekmachines van leverancies van elektronische componenten

43

Page 53: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

44 DESIGN EN PROTOTYPING ing. Y. Verbelen

(eng. suppliers) zijn hier perfect voor. Je hebt reeds met enkele van die leveranciers kennisgemaakt viahet workspace panel Libraries. De beste zoekmachine is die van Digi-key4.

Neem condensator C2 als voorbeeld. De enige gegevens die gekend zijn uit het schema zijn decapaciteit (220µF) en de maximale werkspanning (50 V). Het schemasymbool suggereert ook een ge-polariseerd type. Tik op de website van Digi-key de zoektermen “220µF 50 V” in, en klik Search. Deovergrote meerderheid van de gevonden condensators zit in de categorie Aluminium Capacitor, wat geenverrassing is als je elco’s had verwacht. Binnen Aluminium Capacitor kan je verder verfijnen met eenaantal zoekopties.

• de werkspanning van 50 V selecteer je onder Voltage Rating;

• de polariteit selecteer je onder Polarization;

• de capaciteit van 220µF selecteer je onder Capacitance (als die nog niet geselecteerd is.

Zelfs met deze filters is de lijst met condensators die aan deze parameters voldoen, nog steeds behoorlijklang. Als je reeds een condensator bij de hand hebt, bijvoorbeeld een exemplaar dat je hebt gerecycleerdvan een andere PCB, of eentje die uit de bakjes in het labo elektronica komt, dan kan je ook op afme-tingen gaan filteren. Een schuifmaat is een handig instrument om de afmetingen van componenten op tezoeken. Meet de hoogte, de diameter en de afstand tussen de aansluitdraden.

• afstand tussen draden geef je op onder Lead Spacing;

• hoogte kan je selecteren bij Height - Seated (Max) (hoogte waneer de condensator recht op dePCB staat, gemeten vanaf het oppervlak van de PCB);

• diameter kan je kiezen onder Size / Dimension.

Na filteren op deze aanvullende criteria kan je in de lijst met condensators om het even welk exemplaarkiezen, ze zullen allemaal passen. Een goed type zou bv. ESH227M050AH2AA van Kemet kunnenzijn. Als je op dit typenummer (Manufacturer Part Number) zoekt in CircuitMaker, dan krijg je meteende juiste condensator voorgeschoteld.

Voor de andere componenten kan je rechtstreeks op volgende typenummers zoeken:

• F1: Littlefuse 64600001003

• R1: Panasonic ERZV09D390

• L1: Panasonic ELC-18B330L of Wrth 744772330

• R3: Bourns 3386P-1-471LF

Voor de weerstanden kan je exemplaren uit de Yageo CFR-25JR-52 serie nemen (through hole, 250 mW).

Stap 10. Standaard vult CircuitMaker de typenummers van componenten in als “comment” bij elkecomponent, wat het schema er niet bepaald leesbaarder op maakt. Aangezien je deze info niet echt no-dig hebt, is het nuttiger en duidelijker om in je schema bij weerstanden de impedantie (in Ω of kΩ), bijcondensators de capaciteit en spoelen de inductantie te vermelden. Dubbelklik op een component omhet eigenschappenvenster op te roepen. Links zie je enkele instellingen, rechts een lijst met eigenschap-pen van de component. Klik onderaan op de knop Add om een nieuwe eigenschap Value toe te voegen,en geef die de waarde die je wil toevoegen, bv. capaciteit of inductantie. Figuur 4.7 toont als voorbeeldeen 27 pF condensator.

Vink de optie Visible uit en klik op OK om de eigenschap (eng. property) aan de condensator toete voegen. De eigenschap Value komt nu in de lijst te staan, en kan weergegeven worden. Selecteervervolgens =Value uit de lijst met mogelijke comments aan de linkerzijde van het venster, zoals infiguur 4.8, en klik vervolgens op OK om de wijzigingen door te voeren.

4http://www.digikey.com

44

Page 54: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing. Y. Verbelen DESIGN EN PROTOTYPING 45

Figuur 4.6: Geparametriseerd zoeken naar componenten via Digi-key.

Stap 11. Alle noodzakelijke componenten staan nu in het schema, maar er is nog geen enkele moge-lijkheid om spanning op de PCB toe te voeren. Er zijn in dit geval 4 aansluitingspunten: V+ en GNDals input, en +5V en GND als output. De meest logische manier om dit af te handelen is ze twee aantwee te groeperen in connectors: een connector voor beide inputs en een andere connector voor beideoutputs. Hoewel beide connectors 2 aansluitingspunten hebben, hoeven ze niet van hetzelfde type tezijn. Voor de input kan je bv. een printkroonsteen met 2 posities nemen, die compatibel is met zowatalle mogelijke kabeltypes. Aan de output is een JST-connector een algemeen gebruikte standaard. Detypenummers van beide connectors zijn respectievelijk Phoenix 1935161 en JST B2B-XH-A. In hetvolgende hoofdstuk wordt in detail ingegaan op connectors en bekabeling.

De comments van beide connectors kan je aanpassen naar zinvollere benamingen, bv. input enoutput, of de ingangsspanning en uitgangsspanning (5 V).

Stap 12. Eens alle componenten op het schema staan, kunnen ze met elkaar verbonden worden. Orga-niseer de componenten zodanig dat de layout min of meer overeenkomt met het oorspronkelijke schemain figuur 4.4, dat maakt het gemakkelijker om ze te verbinden omdat ze dan logisch gegroepeerd staan.Componenten kan je roteren door ze vast te pakken met de muis en op spatiebalk te drukken, spiegelenkan met de X-toets op dezelfde manier. Als het schema te groot wordt kan je zoomen met Ctrl + scroll.Componenten verbinden doe je via de Wire tool die je tussen de Circuit Elements in de werkbalk optabblad Home vindt.

45

Page 55: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

46 DESIGN EN PROTOTYPING ing. Y. Verbelen

Figuur 4.7: De waarde (value) 27pF toevoegen aan een condensator.

Figuur 4.8: Het eigenschappenvenster van schemacomponenten.

46

Page 56: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing.Y.Verbelen

DE

SIG

NE

NP

RO

TO

TY

PIN

G47

Figuur 4.9: Het volledige schema.

47

Page 57: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

48 DESIGN EN PROTOTYPING ing. Y. Verbelen

Stap 13. Er ontbreken nog enkele elementen in het schema. Er is nog geen grondpotentiaal (GND)gedefinieerd, en ook geen voedingsspanning. Een grondpotentiaal en voedingsspanning definieren kanvia de functie Place Power Port, die je eveneens in de werkbalk vindt tussen de andere Circuit Elements.In deze relatief eenvoudige schakeling biedt het markeren van de voedingsspanning (5 V output) weinigmeerwaarde, maar door de GND power ports te gebruiken kan je het schema wel ietwat vereenvoudigendoordat je de grond niet meer als expliciete wire hoeft te tekenen. Alle verbindingen met GND zijnimpliciet met elkaar doorverbonden.

Stap 14. Het is je waarschijnlijk al opgevallen dat er naast heel wat componenten een rode lijn staat,die wijst op een fout. Het probleem met deze componenten is dat ze geen unieke identificatiecode (= de-signator) hebben. Alle condensators heten nog C?, de diodes heten D?, enzovoort. Gelukkig hoef je zeniet allemaal manueel een unieke naam te geven, want in grote designs zou dat een omslachtige bezig-heid zijn. Selecteer het tabblad Tools in de menubalk en klik op Annotate, dan vervolgens op AnnotateSchematics Quietly. CircuitMaker vraagt om te bevestigen dat je de designators van 16 componentenwil aanpassen. Antwoord Yes. Alle vraagtekens worden nu vervangen door getallen zodanig dat elkecomponent een unieke designator heeft. Alle rode lijnen zijn meteen verdwenen.

Stap 15. Rechterklik op het schemadocument in het Projects workspace panel en klik Save om hetschema op te slaan. Klik vervolgens op het tabblad Home→ Project→ Compile om het project te com-pileren. CircuitMaker controleert je schema op kortsluitingen en andere fouten. Open het workspacepanel Messages via tabblad View → Messages. De melding Compile successful, no errors found ver-schijnt. Het schema is nu klaar om omgezet te worden naar een PCB!

4.4 De PCB

Een correct opgezet schema bevat alle nodige informatie om een PCB te kunnen tekenen: de componen-ten en hun “voetafdruk” (eng. footprint), unieke designators en waarden, en de onderlinge verbindingen.Het omzetten van het schema naar een PCB is op die manier behoorlijk eenvoudig.

Stap 16. Klik op het tabblad Home→ Project→ Add New PCB en geef de PCB een naam, bijvoor-beeld Core.CMPcbDoc. Klik OK om de PCB toe te voegen aan je project. De PCB-editor wordtgeopend, en er verschijnt een zwart vierkant. Dit vierkant weerspiegelt het bovenaanzicht van de PCB.Voorlopig is de PCB nog leeg, aangezien er nog geen componenten of traces op aangebracht zijn. Drukop de 3-toets op je toetsenbord om over te schakelen van 2D naar 3D weergave. De PCB kleurt groenzoals je gewend bent van PCB’s. Je kan de blanco PCB draaien met de muis als volgt: hou de shift-toetsingedrukt om een gele bol tevoorschijn te halen, en sleep vervolgens met de rechtermuisknop over dezebol. De PCB draait of kantelt dan in dezelfde richting. Om terug te keren naar 2D weergave druk je opde 2-toets. Je merkt ook hier dat de knoppen in de werkbalk dynamisch veranderen afhankelijk van demode (2D of 3D) waarin je de PCB bekijkt.

Stap 17. De volgende stap is de componenten van het schema “vertalen” naar een fysisch equivalentop basis van hun footprints, en ze overbrengen naar de PCB. Klik op het tabblad Home→ Project →Import Changes From PowerSupply.PrjPcb (of hoe je project heet). De ECO (Engineering Change Or-der) verschijnt met daarin een overzicht van alle verschillen tussen het schema en de PCB. Eerst wordenalle componenten toegevoegd, dan de netten die ze verbinden, en tot slot een klasse waarin de compo-nenten worden opgenomen. Klik onderaan op Validate Changes. CircuitMaker controleert op mogelijkeconflicten, en geeft die aan met een groen vinkje of rood kruisje in de Check kolom. Als er overal eengroen vinkje staat, dan kan je op Execute Changes klikken om de wijzigingen door te voeren, en decomponenten op je PCB toe te voegen. Alle componenten komen nu naast de PCB te staan.

48

Page 58: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing. Y. Verbelen DESIGN EN PROTOTYPING 49

Stap 18. Elke kleur in de footprints vertegenwoordigt een andere layer, en je herkent meteen enkelebekende vormen waaruit je hun functie kan afleiden: rode cirkels met grijze omranding zijn pads (= sol-deereilandjes) met gaten erin waarop je componenten zal solderen, en witte lijnen zijn tekstopdruk, zoalste zien is in figuur 4.11. De gearceerde gebieden geven de grootte van de gekoppelde 3D-modellen aan,die gebruikt worden om te detecteren wanneer componenten elkaar overlappen. De dunne witte lijntjesdie de pads met elkaar verbinden, ook ratsnest genoemd, geven aan welke pads onderling elektrischverbonden moeten worden met traces. Ze zijn van groot belang om de componenten efficient te kunnenplaatsen op je PCB. Met efficiente plaatsing wordt bedoeld: alle connectors op de rand zodanig dat jeer kabels in kan steken, en met zo weinig mogelijk kruisingen in de ratsnest. Daarbij probeer je dePCB-oppervlakte te minimaliseren, want hoe groter je PCB hoe duurder hij ook wordt om te maken.Figuur 4.12 toont een voorbeeld van een goede plaatsing van de componenten.

Stap 19. Vooraleer je tracks kan routeren moet CircuitMaker eerst weten hoe breed die tracks moetenzijn, hoe ver ze uit elkaar moeten liggen enzovoort. Deze regels definieer je als design rules. Open hetvenster met design rules via tab Home→ Design Rules→ Define Design Rules. Aan de linkerzijde zieje een hele waslijst aan regels, maar de meesten zijn al goed ingesteld en hoef je dus niet te wijzigen.De regels die wel aanpassing vereisen zijn de afstand tussen tracks en pads, deze regel heet Clearance,en de breedte van tracks die Width heet. Klik de Clearance regel open (staat onder Electrical) en pas deminimale clearance aan van 10 mil naar 15 mil of 20 mil. Hoe groter je de clearance zet, hoe gemakke-lijker dat je nadien je PCB kan etsen en solderen, maar hoe moeilijker het wordt de PCB te ontwerpenomdat alle tracks verder van andere tracks verwijderd moeten liggen. Let op: een mil is een duizendstevan een Engelse inch en komt overeen met 0.0254 mm. In PCB-design worden mils en mm door elkaargebruikt, dus verwar ze niet met elkaar. Figuur 4.10 toont de instelling voor de Clearance regel. Voorde breedte van tracks moet je de Width regel aanpassen, die je onder Routing vindt. Stel de minimalebreedte in op 15 mil, en voorkeur op 25 mil. De maximale breedte is niet belangrijk, dus die stel je bestvoldoende groot in, bv. 100 mil of meer. Figuur 4.10 toont onderaan de instelling voor de Width. Netzoals bij clearance is zijn de waarden empirisch bepaald op basis van vorige ervaring met PCB’s makenin het fablab. De hierboven opgegeven waarden zijn nogal conservatief, en de kans is dus groot dat jePCB van de eerste keer zal lukken. Je kan echter veel kleiner gaan als het echt moet (tot 8 mil clearanceen 8 mil width) maar dit vergt veel ervaring, en succes is niet altijd gegarandeerd. Als je dus zelf jePCB wil maken in het fablab, neem je de afmetingen van clearance en width dus bij voorkeur zo grootmogelijk.

Stap 20. Dan kan het echte werk beginnen: de componenten met elkaar verbinden. Vermits de com-ponenten langs de bovenzijde van de PCB worden gemonteerd en dan door de gaten in de pads wordengestoken, moeten ze langs de onderzijde gesoldeerd worden. De bovenzijde wordt daarom ook welcomponent side genoemd, en de onderzijde solder side. In CircuitMaker moet je dus de traces tekenenop de onderzijde, die daar bottom layer heet. Selecteer de bottom layer onderaan de PCB editor door ophet tweede tab te klikken. Tracks tekenen doe je via de wiring tool op het tabblad Home→ Routing→Route. De cursor verandert in een target pointer (eng. crosshair) die snapt op het centerpunt van pads.Snap hem op een van de pads die moeten verbonden worden met andere pads, en klik met de linkermuisom de track te plaatsen. Als je nu de muis beweegt, dan volgt de track interactief de positie van de muis.Van zodra je een stukje op de goede plaats hebt liggen, klik je opnieuw met de linkermuisknop om hemvast te leggen. Routeren beeindigen doe je met een rechtermuisklik. Figuur 4.11 toont het principe.

Enkele tips:

• Als je op de tab-toets drukt tijdens het routeren, kan je dynamisch de breedte van je tracks aan-passen. Een breedte van 25 mil is een goede waarde om mee te starten, maar power tracks (VCCen GND) maak je bij voorkeur breder.

• Je kan tracks automatisch plaatsen door tijdens het routeren de control-toets (ctrl) ingedrukt tehouden. De resultaten zijn echter niet altijd zo optimaal.

49

Page 59: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

50 DESIGN EN PROTOTYPING ing. Y. Verbelen

Figuur 4.10: Instellingen voor clearance (boven) en track width (onder).

• Je kan bestaande tracks verplaatsen door een segment te selecteren en het dan te verslepen.

• Je kan geplaatste segmenten verwijderen door het laatste segment te selecteren en op de backspace-toets te drukken. Een geselecteerd segement kan je verwijderen met de delete-toets.

• Je kan ook alle segmenten die aan een specifiek net toebehoren in een keer verwijderen via Home→ Routing→ Unroute→ Net.

Je merkt meteen het belang van een goede componentenplaatsing: als je teveel kruisingen hebt, wordthet routeren van de PCB een vervelende opgave. Elke minuut die je spendeert aan het plaatsen van jecomponenten is nadien 10 minuten uitgespaard bij het routeren! In figuur 4.12 zie je een voorbeeldvan een track layout. Merk op dat de tracks die veel stroom vervoeren breed zijn gemaakt, terwijl designaallijnen (naar de feedbackweerstanden of de LED bijvoorbeeld) dun mogen zijn.

Figuur 4.11: Plaatsing van de componenten in de PCB-editor. In 3D-modus kan je visueel controleren of decomponenten goed geplaatst zijn. De ratsnest (dunne witte lijnen die pads verbinden) geven aan waar de

verbindingen moeten komen. Merk op dat de componenten zodanig geplaatst zijn dat er zo weinig mogelijkkruisingen in de ratsnest zitten. Rechts: het routen van een GND power track.

Stap 21. De PCB is dan weliswaar gerouteerd, maar er is nog geen manier om hem te bevestigen in debehuizing van je wekker! Hiervoor dien je nog enkele montagegaten toe te voegen. De gemakkelijkste

50

Page 60: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing. Y. Verbelen DESIGN EN PROTOTYPING 51

manier om dit te doen is losse pads te plaatsen zonder koperring errond. Pads toevoegen doe je viaHome→ Place→ Place Pad. De cursor verandert weer in een target pointer met een pad dat eronderzweeft. Druk op de tab-toets om de instellingen aan te passen. Maak de gatdiameter (eng. Hole Size)groter zodanig dat er een bout door past. De diameter moet dus enkele tienden mm groter zijn dan dediameter van de bout. Om een M4-bout (4 mm) vlot te laten passen, stel je de diameter van het gatbest in op 4.2 mm of zelfs nog iets groter. Zet ook de designator van het gat op 0 om CircuitMakerduidelijk te maken dat dit pad niet elektrisch verbonden hoeft te worden met andere pads. Klik OK omde instellingen op te slaan, en plaats vervolgens zoveel gaten als nodig met de linkermuisknop. Als je ergenoeg hebt, annuleer je de operatie met de rechtermuisknip of de escape-toets. Je doet er best aan degaten zodanig uit te lijnen dat ze een gemakkelijk patroon volgen, bijvoorbeeld een rechthoek, wat hetmechanisch design van de behuizing flink vereenvoudigt.

Figuur 4.12: De PCB in 2D-weergave (links) en 3D-weergave (rechts).

Stap 22. De laatste stap is het aanpassen van de omtrek van de PCB, die nog steeds veel te groot is.Alle zwarte gebieden behoren immers tot de PCB, terwijl de componenten en tracks maar een fractieervan benutten. Je kan de afmetingen freestyle bijsnijden via Home→ Board → Edit Board Shape endan de contourlijnen verslepen. Een alternatieve manier is op de Outline layer, die je onderaan de editornaast Bottom Layer vindt, de contour te tekenen als lijnen (Home→ Place→ Line). Eens de lijnen eengesloten omtrek vormen, selecteer je ze allemaal samen (shift-toets ingedrukt houden), en vervolgensHome→ Board → Define From Selected Objects. De omtrek wordt nu netjes bijgesneden volgens deoutline die je zelf hebt gedefinieerd. De highlight resetten doe je via View→ Hightlight & Edit Mask→ Clear. De PCB is nu klaar!

Stap 23. In het geval je PCB-ontwerp nadien moet aangepast worden, bijvoorbeeld omdat je een an-dere vorm nodig hebt om in je behuizing te passen of omdat je extra functies wil toevoegen, dan zal jeeen tweede versie moeten ontwerpen, daarna een derde enzovoort. Het is dus nuttig om je eerste versiemeteen te markeren alsdusdanig zodat je je verschillende versies later uit elkaar kan houden. Je kan inCircuitMaker vrij tekst toevoegen aan je ontwerp, en als die tekst op de bottom layer staat dan komt hijmee op de PCB terecht. Activeer de tekst tool via Home → Place → String en druk op de tab-toetsom de eigenschappen van de tekst aan te passen zoals je dit intussen al een aantal keer gedaan hebt metandere objecten. Let op: je kijkt op de PCB vanuit bovenaanzicht, maar de tekst komt op de bottomlayer. Als je hem dus leesbaar wilt maken, dan moet je hem spiegelen (functie Mirror aanvinken). Jekan controleren of de tekst leesbaar is door over te schakelen naar 3D-weergave en de PCB te roterenzodanig dat je de achterkant kan zien.

Vergeet niet je project en PCB op te slaan.

51

Page 61: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

52 DESIGN EN PROTOTYPING ing. Y. Verbelen

4.5 ProductiePCB’s ontwerpen kan iedereen, maar PCB’s ontwerpen die ook echt kunnen gemaakt en getest wordenvergt de vaardigheden van een industrieel ingenieur. PCB’s maken is gelukkig niet zo moeilijk, hetvergt enkel wat ervaring. In ons fablab maken we PCB’s met een chemisch proces dat etsen heet (eng.etching). Hierbij wordt vertrokken van een plaat isolerend materiaal waarop een volledige koperlaagis aangebracht. Van deze koperlaag worden dan de ongewenste stukken koper verwijderd in het ets-bad zodanig dat enkel de tracks overblijven. Daarna kan je door de pads gaten boren en ten slotte decomponenten erop solderen.

4.5.1 Gerbers

Net zoals je DXF-bestanden exporteert van 2D-vectorinformatie voor lasercutters en STL-bestanden van3D-vectorinformatie voor 3D-printers, zo hebben printplaten ook hun eigen formaat dat Gerber heet.Elke layer van de PCB wordt geexporteerd als een afzonderlijk gerberbestand, dat eveneens een vector-formaat is. Gerberbestanden zijn een internationale standaard die alle PCB-fabrikanten ondersteunen.Deze eenvoudige PCB heeft maar een layer met nuttige info, namelijk de bottom layer, en dus hoeft ookenkel de bottom layer geexporteerd te worden.

Zorg dat de PCB geopend is in de editor en klik op het tabblad Outputs→ Gerber. Er verschijnt eenvenster met enkele tabs met instellingen. Stel ze als volgt in:

• tabblad General: stel Units in als Inches en Format als 2:5. Wat deze instellingen precies doen ishier niet zo belangrijk.

• tabblad Layers: selecteer de bottom layer in de kolom Plot. Verder hoef je hier niks aan te passen.

• tabblad Drill Drawing: hier hoef je niks te selecteren.

• tabblad Apertures: vink de optie Embedded apertures (RS274X) aan.

• tabblad Advanced: stel Leading/Trailing Zeroes in als Keep leading and trailing zeroes, en Posi-tion on Film als Reference to absolute origin. De andere instellingen mogen op hun standaard-waarde blijven staan.

Klik op OK. Het gerberbestand voor de bottom layer wordt nu geexporteerd, en toegevoegd aan jeproject. Het bestand heet PcbNaam.GBL wat staat voor Gerber Bottom Layer. Het is net zoals G-codeeen tekstbestand met commando’s erin. Met dit gerberbestand kan je naar het fablab om je PCB te etsen.De fablabtutorials helpen je vanaf hier verder.

4.5.2 3D-model

Naast gerberbestanden biedt CircuitMaker je nog een tweede interessante exportmogelijkheid. Je kannl. een 3D-model van je volledige PCB inclusief montagegaten en componenten exporteren als STEP-model. Dit model kan je op zijn beurt importeren in jouw favoriete 3D CAD software zoals Inventor ofSolidWorks. Dit kan je helpen bij het ontwerpen van de behuizing om bijvoorbeeld de cutouts voor deconnectors op de juiste plaats te krijgen, de nodige gaten voorzien die overeenkomen met de montage-gaten op de PCB enzovoort.

Een STEP-model van de PCB exporteren doe je via menu Outputs→ Export→ STEP. CircuitMakervraagt om een bestandsnaam en vervolgens enkele opties. Laat de standaardinstellingen staan en klikop OK. CircuitMaker zoekt de 3D-modellen voor alle componenten op de PCB samen en exporteert zenaar het STEP-model.

52

Page 62: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

5Bekabeling

Everything is designed. Few things aredesigned well.

Brian Reed

5.1 Inleiding

Als prototypes falen, dan is dat in veruit de meeste gevallen niet te wijten aan de elektronica, want diestaat vastgesoldeerd op een robuuste PCB. Waar het dan wel misloopt is bij de bekabeling, die slechtecontacten oplevert als ze verkeerd is uitgevoerd. Ontoereikende bekabeling is een dermate grote oorzaakvan frustratie bij prototypes dat dit volledige hoofdstuk wordt gewijd aan goede bekabelingstechnieken.

Met kabels kan je niet alleen interne componenten met elkaar verbinden, ze zijn ook de verbindingnaar de buitenwereld toe. Gebruikers zullen kabels gebruiken om je toestel aan te sluiten aan een voe-ding of te interfacen met andere hardware. Hierbij is het dus van groot belang om naast het juiste typekabel ook voor de juiste connectors te kiezen afhankelijk van de toepassing.

In dit hoofdstuk wordt een overzicht gegeven van de voornaamste types kabels en connectors, hunvoor- en nadelen, en basistechnieken voor bekabeling en kabelmanagement.

5.2 Kabels

De term kabel en draad worden door elkaar gebruikt, en er is geen duidelijk afgelijnde betekenis.Meestal wordt onder “draad” een al dan niet geısoleerde geleider verstaan, zoals de draadjes die je ge-bruikt om prototypes op breadboard te bouwen. Een “kabel” bestaat daarentegen uit meerdere geısoleerdegeleiders (ook aders genoemd) die op een of andere manier samengebundeld zijn. Denk bijvoorbeeldaan een USB-kabel die 4 aders bevat (+5 V, D+, D- en GND), een stroomkabel met 3 aders (L, N enaarding) of een netwerkkabel met 8 aders. Elke ader binnen een kabel is dus een draad.

Draden hebben 3 belangrijke eigenschappen: de kern, de isolatie en de dikte.

5.2.1 Structuur

Elektrische draden bestaan uit een geleidende kern met daarrond een elektrische isolator die de man-tel heet. De kern bestaat meestal uit koper, maar kan in sommige gevallen ook staal, aluminium of een

Page 63: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

54 DESIGN EN PROTOTYPING ing. Y. Verbelen

zilver/goudlegering zijn als nog betere geleidbaarheid gewenst is, bijvoorbeeld bij hoogfrequentdesigns.

De structuur van de kern bepaalt de eigenschappen van de draad. De kern kan massief zijn of uitmeerdere fijne draadjes bestaan die in elkaar geweven zijn. Beiden hebben specifieke toepassingen.

Het voordeel aan een massieve kern is dat de draad zich gemakkelijk in een bepaalde vorm laatplooien doordat de kern stijf is. Je kan de draad dus bijvoorbeeld in rechte hoeken buigen, en hij laatzich netjes samen bundelen met andere draden. Het nadeel van een massieve kern is dat elke buigingde kern verzwakt, tot het punt dat hij doorbreekt en er dus geen elektrisch contact meer is. Dradenmet massieve kern gebruik je dus uitsluitend in toepassingen waar de vorm van de draad niet verandert,bijvoorbeeld om PCB’s in hetzelfde toestel met elkaar te verbinden.

Het alternatief is een kern die bestaat uit meerdere fijne draadjes (eng. multicore wire). Hierdoorkan de kern quasi ongelimiteerd gebogen worden zonder te breken. Alle computerkabels (HDMI, USB,eSATA, ...) bestaan uit aders met dit type kern. Multicore gebruik je dus in toepassingen waar de vormvan de draad kan veranderen.

5.2.2 Isolatie

Binnen een kabel worden de verschillende draden elektrisch van elkaar geısoldeerd door hun mantel,die uit een niet geleidende kunststof of rubber bestaat. De dikte van de isolatie bepaalt hoe groot despanning tussen naburige aders mag worden vooraleer de islatie doorslaat en er dus kortsluiting ont-staat. Ook het materiaal waarvan de mantel gemaakt is, speelt daarbij een rol.

Bij meeraderige kabels staat de maximale spanning meestal langs de buitenzijde op de kabel ge-drukt. Als vuistregel kan je stellen dat spanningen tot 50 V veilig door bijna elk type kabel kunnenvervoerd worden. In geval van twijfel neem je een kabel met dikker geısoleerde draden.

Sommige draden en kabels hebben buiten een elektrische isolatie ook een magnetische isolatie,waarmee de signalen die getransporteerd worden afgeschermd worden van elektromagentische interfe-rentie (EMI). Je herkent deze magnetische isolatie een een geweven mantel van staaldraad die rond dedraad of kabel is aangebracht. Dergelijke kabels heten afgeschermde kabels (eng. shielded cables).

5.2.3 Dikte

Het metaal waarvan de kern gemaakt is, is nooit een ideale geleider. Als er dus stroom door loopt, danwordt er een bepaald vermogen gedissipeerd in de draad doordat de weerstand niet 0 is. De draad zaldaardoor opwarmen. Als de temperatuur te hoog oploopt, dan kan de isolatie gaan smelten waardoor eropnieuw een risico op kortsluiting ontstaat. Een spanningsval over draden is ook ongewenst omdat hetsignaalverlies oplevert, en de schakeling zich dus mogelijk niet zal gedragen zoals je verwacht.

Elke draad heeft zijn eigen maximale stroom (eng. current rating) die je moet respecteren. Dezemaximale stroom staat ook op de buitenzijde van de kabel samen met de isolatiespanning, of je kan hetals parameter in de datasheet van de draden vinden. Als je meer stroom wil vervoeren dan de maximalestroom die door de kabel wordt toegelaten, dan kan je meerdere aders in parallel schakelen.

Voor grote stromen wordt de dikte van draden uitgedrukt in hun oppervlakte als mm2, voor elek-tronische draden is de diameter echter zo klein dat dit moeilijk te meten is. Daarom wordt er gewerktmet de AWG-schaal (American wire gauge). Hoe groter de AWG-waarde, hoe dunner de draad. Hetomrekenen van AWG naar diameter is behoorlijk complex, dus het is gemakkelijker om er een tabelvoor te gebruiken1. Enkele veel voorkomende waarden staan in tabel 5.1.

1https://en.wikipedia.org/wiki/American wire gauge#Tables of AWG wire sizes

54

Page 64: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing. Y. Verbelen DESIGN EN PROTOTYPING 55

AWG diameter (mm) doorsnede (mm2) RCu (Ω/m) Imax (A)40 0.080 0.005 3.441 0.013738 0.101 0.008 2.164 0.022836 0.127 0.013 1.361 0.03534 0.160 0.020 0.856 0.05632 0.202 0.032 0.538 0.09130 0.255 0.051 0.339 0.14228 0.321 0.081 0.213 0.22626 0.405 0.129 0.134 0.36124 0.511 0.205 0.084 0.57722 0.644 0.326 0.053 0.9220 0.812 0.518 0.033 1.518 1.024 0.823 0.021 2.316 1.291 1.31 0.014 3.714 1.628 2.08 0.083 5.912 2.053 3.31 0.052 9.310 2.588 5.26 0.033 155 4.621 16.8 0.001 471 7.348 42.4 0.001 119

Tabel 5.1: Draaddikte volgens de AWG schaal van dun (40 AWG) naar dik (1 AWG). De maximale stroom voorelke draaddikte is eveneens aangegeven.

5.3 Kabeltypes

Hieronder wordt een overzicht gegeven van de belangrijkste types kabels die je zal tegenkomen, en inwelke toepassingen je ze gebruikt.

5.3.1 Bandkabel

Bandkabels (eng. ribbon cable of flat cable) bestaan uit meerdere aders die in een vlak aan elkaar ge-kleefd zijn, en zo een brede “band” vormen. De breedte van de kabel is dus evenredig met het aantaladers.

Elektrisch gezien zijn bandkabels ideaal om digitale signalen te transporteren, omdat alle aders evenlang zijn en alle signalen dus op hetzelfde moment op hun bestemming toekomen (isochronie). Band-kabels zijn ook het enige type kabel met een aantal aders dat willekeurig gekozen kan worden.

Voor analoge signalen zijn ze echter niet ideaal omdat de aders zo dicht bij elkaar liggen dat erinterferentie onstaat tussen aanliggende aders die crosstalk wordt genoemd. Signalen van de ene aderworden dus geınduceerd in aanliggende anders en omgekeerd. Als je bandkabels toch wil gebruiken omanaloge signalen te transporteren, dan kan je crosstalk onderdrukken door signaaladers af te wisselenmet grondaders.

Het meest voorkomende type bandkabel is grijs, met een zijde die rood of bruin gekleurd is om deeerste ader aan te duiden. Er bestaat ook bandkabel waarbij elke ader een ander kleurtje heeft, en devolgorde de kleurencodering van weerstanden volgt (zie handouts Basiselektronica). Deze versie wordtregenboogkabel genoemd (eng. rainbow cable) en is aanzienlijk duurder dan de grijze tegenhanger. Deader die met pin 1 overeenkomt is dus bruin, die voor pin 2 rood enzovoort. Je bent natuurlijk nietverplicht deze codering te volgen, maar het helpt om sneller te debuggen.

De dikte van bandkabeladers is gestandardiseerd op 26 AWG, wat overeenkomt met een diametervan 0.4 mm. Dit is dus moeilijk op een betrouwbare manier af te strippen en te solderen. Om die redenworden bandkabels steeds gebruikt in combinatie met IDC-connectors, die verderop worden besproken.

55

Page 65: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

56 DESIGN EN PROTOTYPING ing. Y. Verbelen

Figuur 5.1: Van links naar rechts: grijze en rode bandkabel, een coaxkabel met en zonder BNC-connector, en een8-aderige UTP-kabel met en zonder RJ-45 connector.

5.3.2 Coaxkabel

Om analoge signalen die gevoelig zijn voor interferentie over lange afstanden te transporteren, moe-ten er maatregelen genomen worden om ze voldoende af te schermen van externe stoorbronnen. Voordeze toepassing gebruik je coaxkabels. Coaxkabels bestaan uit een centrale kern die omringd is dooreen isolerende mantel, en waarrond nog een extra buitengeleider is aangebracht die bestaat uit gewovenmetaaldraad. De buitengeleider gedraagt zich als een Faradaykooi en verhindert dat het signaal in dekabel wordt gecontamineerd door externe interferentie. Omgekeerd verhindert het ook dat signalen naarbuiten lekken en zelf voor interferentie zorgen.

Coaxkabel voor elektronische toepassingen is vrij duur omdat de impedantie heel nauwkeurig ge-controleerd wordt voor toepassingen in transmissielijnen, waarover je in de 3e Bachelor Elektronicameer leert. Voor de meeste toepassingen is coaxkabel van iets mindere kwaliteit ook voldoende, en dievind je in elke doe-het-zelfzaak als tv-kabel.

Om de isolatie te bewaren moeten ook connectors afgeschermd zijn. Coaxkabels worden daaromgebruikt in combinatie met BNC-connectors, zoals ze o.a. worden toegepast om probes op een oscillo-scoop aan te sluiten.

5.3.3 UTP-kabel

UTP-kabels bestaan uit 8 geleiders, en worden veel gebruikt om computernetwerken te bekabelen(Ethernet). Ze zijn meestal niet afgeschermd, maar toch geschikt voor digitale signalen als de fre-quentie niet te hoog is (max. enkele kHz). Ze kunnen behoorlijk wat stroom transporteren, dus kleinemotors of LED’s aansluiten is geen probleem.

5.3.4 Bundels

Als geen van bovenstaande types geschikt is voor jouw toepassing, bv. als je intern een korte afstandwil overbruggen en het aantal signalen dat je wil transporteren niet te groot is, dan kan je ook zelf eenaantal draden bundelen tot een kabel. Je hebt dan de keuze tussen een massieve kern of een multicore,en je kan de dikte van de aders en hun aantal zelf bepalen.

De netste manier om kabelbundels samen te houden is door gebuik te maken van tie-wraps (eng. ziptie, ook kabelbinders of snelbinders genoemd). Ze bestaan uit een dunne nylon strip met ribbels aan debinnenzijde. Eenmaal de vrije zijde door de opening gestoken wordt, gaat ze niet meer terug open. Jekan tie-wraps ook gebruiken om de draden meteen ook vast te zetten in de behuizing, door de tie-wrapdoor een opening in de behuizing te steken.

5.4 Connectors

Een van de gulden regels van PCB design is nooit draden rechtstreeks op de PCB te solderen. Deverbinding is een zwak punt omdat de mantel daar van de draad is afgestript, en vroeg of laat breekt dedraad van de PCB af. Een uitzondering hierop zijn draadbruggen (eng. jumpers) die je kan gebruiken

56

Page 66: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing. Y. Verbelen DESIGN EN PROTOTYPING 57

om korte afstanden op de PCB te overbruggen, op voorwaarde dat beide uiteinden op dezelfde PCB zijnvastgesoldeerd en dat de draad in kwestie niet kan bewegen.

Om kabels te verbinden met een PCB is er dus een speciale interface nodig, die je ondertussen kentals connectors. Elk type kabel heeft zijn eigen connectors specifiek voor dit type kabel, maar er bestaanook talrijke generische connectors die bruikbaar zijn met quasi alle types kabels. Hieronder wordt eenoverzicht gegeven van de voornaamste types, en in welke situaties je ze gebruikt.

5.4.1 Terminologie

De terminologie rond connectors kan voor verwarring zorgen omdat er ontelbare varianten bestaan opdezelfde principes.

5.4.1.1 Geslacht

Een connector kan mannelijk (eng. male) of vrouwelijk (eng. female) zijn. Mannelijke connectors heb-ben pinnen of soortgelijke uitsteeksels die in de corresponderende gaten of uitsparingen van vrouwelijkeconnectors passen. De meeste connectors werken volgens dit principe, maar er zijn ook geslachtlozeconnectors die symmetrisch zijn.

Om praktische redenen wordt de mannelijke kant, die pinnen heeft, meestal op de PCB gezet omdatdezelfde pinnen rechtstreeks kunnen vastgesoldeerd worden. De vrouwelijke connector plugt er dan opin. Mannelijke PCB connectors zijn om die reden gemakkelijker te vinden dan vrouwelijke, net zo-als vrouwelijke kabelaansluitingen gemakkelijker te vinden zijn dan mannelijke om dezelfde reden. Inprincipe zijn voor PCB-aansluitingen beide echter inwisselbaar.

Een belangrijke uitzondering op dit principe zijn situaties waarin een hoge spanning op de kabelkantof de PCB-kant kant kan staan. In dat geval levert een mannelijke connector een risico op omdat depinnen daar kunnen aangeraakt worden. In dergelijke gevallen is het dus verplicht om voor die kanteen vrouwelijke connector te kiezen, en voor de kabel de mannelijke kant. Een goed voorbeeld zijnnetstekkers: die zijn mannelijk (kabelkant) en worden in een vrouwelijk stopcontact geplugd.

5.4.1.2 Pinafstand

Buiten de fysische vorm van de connector bepaalt de afstand tussen 2 aanliggende pinnen grotendeelswelke connectors compatibel zijn. Deze pinafstand (eng. pitch) verschilt van connectortype tot connec-tortype, en kan uitgedrukt worden in Engelse maten of SI-eenheden. Voor standaardheaders is de pitchbijvoorbeeld precies 100 mil (2.54 mm), en dat geldt ook voor de pitch van breadboards. Bij veel andereconnectors wordt de pitch echter uitgedrukt in mm.

Omdat 100 mil zo dicht bij 2.5 mm ligt, worden connectors soms met de foutieve pitch gelabeld.JST-connectors met een pitch van 2.5 mm (zoals in figuur 5.3) worden online courant geadverteerd als100 mil pitch, hoewel dat incorrect is. Alle JST-connectors gebruiken immers SI-maten in mm. Omdathet verschil in pitch zo klein is (0.04 mm) zullen kleine connectors praktisch wel passen, maar bij bredeconnectors accumuleert de fout snel en die zullen dus niet meer op de footprint passen.

Het connectortype dat de meeste verwarring oplevert zijn printkroonstenen. Zij zijn verkrijgbaarin versies met talloze verschillende pinafstanden, waarbij 200 mil de meest gangbare lijkt te zijn, maarook 3.94 mm en 5 mm komen relatief veel voor. Check dus steeds je footprint met de connector in jeprototype om er zeker van te zijn dat hij gaat passen.

5.4.1.3 Type

Veruit de meeste connectors zijn bedoeld om kabels te verbinden met PCB’s. In dat geval wordt demannelijke connector op de PCB gesoldeerd en wordt er een vrouwelijke connector ingeplugd. Dit

57

Page 67: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

58 DESIGN EN PROTOTYPING ing. Y. Verbelen

soort connectors heet wire to board connectors.

Om kabels te verlengen, of verschillende kabels met elkaar te verbinden, worden wire to wire con-nectors gebruikt. Kroonstenen bestaan bijvoorbeeld in een versie met een schroefconnectie langs elkekant (de wire to wire versie) en een versie die langs de andere kant op de PCB wordt gesoldeerd, print-kroonstenen. Die zijn dan wire to board.

Een laatste type connectors is bedoeld om verschillende PCB’s rechtstreeks met elkaar te verbinden,zonder gebruik te maken van kabels. Deze connectors heten dan board to board connectors. Je herkentze gemakkelijk omdat hierbij ook de vrouwelijke kant op de PCB gesoldeerd zit, wat bij wire to boardconnectors ongewoon is. Het bekendste voorbeeld van board to board connectors zijn de female headersop Arduino’s, die bedoeld zijn om uitbreidingsmodules (shields) in te pluggen. Andere voorbeelden zijnPCI-e slots en DIMM slots op moederborden.

5.4.1.4 Orientatie

Bijna alle connectortypes bestaan in 2 versies: een vertikale versie (eng. straight) waarbij de comple-mentaire connector langs de bovenzijde wordt ingeplugd, en een rechte hoek versie (eng. right angle)waar de complementaire connector langs de zijkant wordt ingeplugd.

Welk type connector het best geschikt is hangt volledig af van de toepassing. Als er niet veel ruimteis boven de PCB dan kan het moeilijk zijn om een kabel in een vertikale connector geplugd te krijgen.Hetzelfde geldt voor stapels (eng. stacks) van PCB’s die met board to board connectors met elkaarverbonden zijn. In deze situaties gebruik je bij voorkeur right angle connectors. Heb je horizontaal nietveel ruimte, dan kies je uiteraard beter voor de straight versies.

5.4.2 Printkroonstenen

De eenvoudigste manier om draden aan te sluiten op een PCB is gebruik te maken van printkroonstenen(eng. screw blocks). Ze bestaan uit kroonstenen met een vertikale pin die bedoeld is om op een PCBgesoldeerd te worden. Draden aansluiten gebeurt dan op dezelfde manier als bij normale kroonstenen,nl. door ze dicht te draaien met een kleine schroevendraaier. Printkroonstenen zijn dus wire to boardconnectors.

Figuur 5.2: Aansluiting van VCC en GND aan een audioversterker (links). Doordat printkroonstenen in versiesmet 2 en 3 aders maar niet 4 aders verkrijgbaar zijn, werd er hier geopteerd om 2 printkroonstenen van 2 aders

naast elkaar te gebruiken. De meeste types schuiven met een groef in elkaar. Rechts: een schakelende voeding meteen LM2596 buckconverter waarvan de in- en uitgangsspanningen worden afgenomen via groene

printkroonstenen.

Printkroonstenen kunnen veel stroom verwerken en lenen zich uitstekend om dikke draden op eenPCB aan te sluiten, bijvoorbeeld om een 230 V netsnoer met een PCB te verbinden. Ze nemen in ver-gelijking met andere connectortypes de meeste ruimte in beslag per ader, zijn vrij duur, en hebben als

58

Page 68: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing. Y. Verbelen DESIGN EN PROTOTYPING 59

nadeel dat je extra gereedschap nodig hebt om de draden aan te sluiten en weer los te maken.

Printkroonstenen werken enkel betrouwbaar als de draden voldoende dik zijn. Multicore draden zalje eerst moeten vertinnen met soldeertin.

Omdat de pitch bij printkroonstenen niet gestandardiseerd is, moet je bij het ontwerp van je PCBgoed opletten. Controleer steeds dat de pitch van je footprint overeenkomt met de werkelijke pitch vande connector.

Waar gebruiken? Waar je een klein aantal dikke draden die veel stroom vervoeren wilt verbindenmet een PCB.

5.4.3 JST-connectors

JST-connectors zijn het meest toegepaste connectortype. Ze zijn compact, relatief goedkoop, en zittendankzij een kliksysteem betrouwbaar vast op de PCB. In tegenstelling tot printkroonstenen kan de aan-sluiting ook gemakkelijk geautomatiseerd worden. Hierdoor lenen ze zich uitstekend voor industrieletoepassingen die onderhevig zijn aan schokken of trillingen. JST-connectors zijn dus de keuze bij uitstekvoor de meeste verbindingen die je als industrieel ingenieur moet maken tussen PCB’s, met ingebrip vande wekker. De pitch van JST-connectors is geen veelvoud van 100 mil en dus zijn ze niet breadboard-compatibel. De meest voorkomende pitch is 2.5 mm.

Figuur 5.3: PCB van een industriele fotokopieermachine, met witte en blauwe JST-connectors die de H-bruggeninterfacen met motors, sensors en andere PCB’s. Rechts: aansluiting van een stappenmotor met female 6-pin JST

connector. Merk op dat er maar 4 van de 6 aders in gebruik zijn aan de kabelzijde.

Bij JST-connectors wordt de mannelijke kant steeds op de PCB gesoldeerd. De vrouwelijke kant be-staat uit een lege behuizing waarin afzonderlijke contacten worden vastgeklikt. Om deze contacten opdraden te krijgen heb je een krimptang nodig. De werkwijze hiervoor wordt verderop gedemonstreerd.

Wanneer gebruiken? Waar je verschillende PCB’s die niet naast elkaar liggen met elkaar wiltverbinden, om motors e.a. actuators aan te sluiten, enz.

5.4.4 Waferconnectors

Waferconnectors zijn een speciaal type JST-connectors waarbij het omhulsel van de mannelijke connec-tor langs een kant is weggehaald. Deze connectors hebben dikkere pinnen dan normale JST-connectorsen worden dus vooral gebruikt voor de aansluiting van voedingskabels. Het nadeel van waferconnectorsis dat de pinnen bloot zitten als de female connector niet is ingeplugd, wat gemakkelijker kan leiden totkortsluitingen of aanraken. Waferconnectors hebben doorgaans een grotere pitch dan JST-connectors.De standaardmaat heeft een pitch van 3.96 mm.

Wanneer gebruiken? Zelfde applicaties als JST-connectors, maar voor grotere stromen.

59

Page 69: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

60 DESIGN EN PROTOTYPING ing. Y. Verbelen

Figuur 5.4: Male 5-pin waferconnector met 200 mil pitch op een schakelende voeding (links), aansluiting van hetverwarmde bed van een Makerbot 3D-printer (midden) en een 12-pin female waferconnector voor de aansluiting

van de voeding op de PCB van een XBox.

5.4.5 Headers

Headers zijn historisch gegroeid als de standaardinterface voor PCB’s. Ze bestaan uit een, twee ofmeerder rijen pinnen (mannelijke versie) die precies 100 mil (2.54 mm) uit elkaar staan, waardoor ze alsenige connectortype breadboardcompatibel zijn. Bij de wire to board variant wordt de mannelijke kantop de PCB gesoldeerd om te interfacen met een vrouwelijke stekker. Omdat headers in essentie enkelbestaan uit pinnen, zijn ze het goedkoopste type connector. Ze worden dus vaak gebruikt als interfacesvoor debuggers, testpunten, en allerlei aansluitingen voor kleine signalen. Doordat de pinnen zo dichtbij elkaar zitten is er geen plaats om dikke draden aan te sluiten, en headers zijn dus niet geschikt voorgrotere stromen.

Figuur 5.5: Links: een witte en zwarte dual row header, en een 4-pin shrouded header. Rechts: toepassing vandezelfde 4-pin shrouded header in right angle versie voor aansluiting van een eindeloopschakelaar (eng. end stop)

op een Makerbot 3D-printer.

Headers die enkel uit pinnen bestaan hebben het nadeel dat de vrouwelijke connector er in 2 richtin-gen kan opgeklikt worden, wat ongewenste effecten of kortsluitingen kan opleveren. Om dit probleemop te lossen wordt er een plastic omhulsel rond geplaatst waar de vrouwelijke connector maar op eenmanier in past. Bij headers met 2 rijen pinnen die bedoeld zijn voor gebruik met IDC-connectors, heetdit een shrouded header of box header.

Headers zijn een uitstekende manier om losse draden te verbinden met PCB’s, bijvoorbeeld om sen-sors aan te sluiten. Ze zijn ook de standaardinterface voor servomotors. Net zoals bij JST-connectors enwaferconnectors moet je ook bij headers een krimptang gebruiken om draden op de vrouwelijke con-nectors aan te sluiten. De vrouwelijke connectors worden ook Dupont-connectors genoemd.

Headers met 2 pinnen kennen een specifieke toepassing als socket voor jumpers. Jumpers zijn plas-tic blokjes waarin een metalen brugje zit dat contact maakt tussen de 2 pinnen van de header als hetover de header geschoven wordt. Jumpers worden gebruikt als goedkope schakelaars die maar weinigmoeten verzet worden, bijvoorbeeld om een of andere instelling te wijzigen op PCB’s. Ze worden veelgebruikt in pc’s op moederborden en dergelijke, maar zijn ook interessant omdat je op een gemakkelijkeen betrouwbare manier verbindingen kan maken en weer onderbreken.

60

Page 70: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing. Y. Verbelen DESIGN EN PROTOTYPING 61

Figuur 5.6: 2 voorbeelden van board to board-connectors. Links: male dual row right angle shrouded header opperiferiebord en female dual row header op de hoofdprint. Rechts: 4 blauwe female headers zoals op de meeste

prototypingborden uit de Arduino-familie te vinden zijn. De zwarte connector linksonderaan is een DC-jack.

Naast wire to board connectors en als jumpers worden headers ook gebruikt als board to board con-nectors. Headers zijn een van de weinige connectors die verkrijgbaar zijn in zowel een mannelijke alsvrouwelijke versie voor PCB-montage. Het bekendste voorbeeld van vrouwelijke headers is op de Ar-duino Uno zelf, waar ze gebruikt worden als board to board connectors waarop andere PCB’s (shields)kunnen ingeplugd worden. Omdat board to board connectors betrouwbaarder en gemakkelijk te mon-teren zijn dan wire to board connectors, worden ze in industriele toepassingen gebruikt om aanliggendePCB’s met elkaar te verbinden of te stapelen. De PCB’s kunnen in dat geval naast elkaar liggen (metright angle connectors), haaks staan op elkaar (een right angle en een straight connector), of gesandwi-ched zijn (met 2 straight connectors). Figuur 5.6 toont een voorbeeld van een straight dual row femaleboard to board header op het moederbord van een Xbox, en een right angle dual row shrouded maleboard to board connector op het periferiebord dat erop inklikt.

Wanneer gebruiken? Waar je een klein aantal signalen over kleine afstanden wil verbinden tussenPCB’s, voor interfacing met sensors of gebruikersinterfaces (knoppen, LED’s, displays etc.).

5.4.5.1 Arduino

Arduino’s zijn ongetwijfeld het best bekende voorbeeld van board to board connectors. De ArduinoUno is meerbepaald uitgerust met 4 female headers, respectievelijk met 6, 8 of 10 aders afhankelijk vande versie. Deze headers zijn bedoeld om te interfacen met male headers in dezelfde configuratie zoalsje ze aantreft op periferiebordjes, die in de Arduinowereld shields heten.

Helaas nodigen de gaten in deze female headers uit om er losse draden in te steken en de digitale,analoge en digitale pinnen van de Arduino op die manier te verbinden met andere elektronische scha-kelingen. Hoewel deze aanpak in sommige situaties werkt, is het ten zeerste af te raden. De femaleheaders zijn immers ontworpen voor een mate met male headers, die vierkante pinnen hebben. De ope-ningen in female headers zijn bijgevolg ook vierkant zodat de male headers er perfect in passen. Als jeechter een losse draad inplugt die rond is, dan zal die draad (met cirkelvormige doorsnede) dus maar op4 plaatsen elektrisch contact maken met de header. Deze verbinding is bijgevolg onbetrouwbaar, kandoor het kleine contactoppervlak weinig stroom verwerken, geeft voortdurend vals contact, en komt ookgemakkelijk weer los.

Female headers zijn dus uitsluitend bedoeld als board to board connectors, en behalve voor pro-totypingdoeleinden mag je ze niet gebruiken als wire to board connectors. Wil je toch een Arduinogebruiken in je finale versies, gebruik dan een periferiebord met de juiste connectors erop dat je op deArduinoheaders inplugt.

5.4.5.2 Stacking

Met board to board connectors kunnen PCB’s op een gemakkelijke manier elektrisch met elkaar ver-bonden worden. Afhankelijk van de gewenste orientatie van de PCB’s onderling kan je hiervoor gebruik

61

Page 71: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

62 DESIGN EN PROTOTYPING ing. Y. Verbelen

maken van combinaties van straight of right angle connectors.

Door een straight connector te combineren met een right angle connector kan je 2 PCB’s in een hoekvan 90 zetten, zoals in figuur 5.6 gedemonstreerd wordt. De connectors zijn uitsluitend bedoeld omelektrische signalen door te geven, en zeker niet om de opstaande PCB ook mechanisch te ondersteunen.Bij gebruik van board to board connectors moet dus nog een aanvullende methode voor mechanischebevestiging voorzien worden, bijvoorbeeld via montagegaten waarmee de PCB met schroeven of boutenin de behuizing kan vastgezet worden. Bij onvoldoende mechanische bevestiging zullen de resulterendekrachten op de connectors ervoor zorgen dat die loskomen of zelfs afbreken.

Door gebruik te maken van board to board connectors kan je behoorlijk wat plaats winnen: je kanPCB’s naast elkaar positioneren, haaks op elkaar zetten, of opstapelen zoals een sandwich. Bovendienspaar je er tijd en kosten mee uit doordat er geen bekabeling nodig is. PCB’s in sandwichconfiguratieheten een stapel (eng. stack). Stacking is de standaardmethode om shields op Arduino’s te monteren.

Vroeg of laat stelt zich de vraag wat in een bepaald project de beste configuratie van de verschillendePCB’s is. Het antwoord is afhankelijk van onder meer het aantal PCB’s dat je met elkaar wilt verbinden,het aantal elektrische verbindingen ertussen, en de plaats die je beschikbaar hebt. Bij vrije keuze isstacking af te raden om 3 redenen:

• Bij stacks van 3 PCB’s of meer is het moeilijk elke PCB mechanisch te bevestigen zonder daarvooringewikkelde ladderstructuren te bouwen.

• De hoogte van de componenten op de PCB’s is beperkt, en hoge componenten lopen het risicokortsluiting te maken met de PCB erboven.

• Elektrische contacten, schakelaars of connectors zijn moeilijk bereikbaar, en LED’s zijn niet ofnauwelijks zichtbaar.

De gemakkelijkste configuratie is de PCB’s naast elkaar te leggen in hetzelfde vlak (eng. flat layout).Alle componenten zijn dan weliswaar gemakkelijk bereikbaar, maar deze configuratie neemt ook demeeste plaats in beslag.

5.4.6 D-sub-connectors

D-sub-connectors ken je van seriele poorten op pc’s maar zijn veel ouder dan dat. De “D” is afkomstigvan de vorm van de connector, die bovenaan breder is dan onderaan. Aan deze vorm kan je D-sub-connectors dus gemakkelijk herkennen. D-sub-connectors bestaan in verschillende versies, elk met eenverschillend aantal pinnen.

Figuur 5.7: D-sub-connectors op de achterkant van een pc-moederbord. De paarse, blauwe en groene connectorszijn respectievelijk een 25-pin female D-sub, 15-pin female D-sub (VGA) en 9-pin male D-sub. Links: een digitale

DVI-connector.

62

Page 72: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing. Y. Verbelen DESIGN EN PROTOTYPING 63

D-sub-connectors worden zeer veel gebruikt in elektronica: ze zijn robuust, gemakkelijk verkrijg-baar, worden door veel fabrikanten geproduceerd, en de verbinding is afgeschermd dankzij de metalenbehuizing. Ze bestaan bovendien in veel maten, en door de “D”-vorm is het onmogelijk om ze verkeerdaan te sluiten. D-sub-connectors bestaan in PCB-versie (zoals de 9-pin versie op de voorbeeld PCB inhet vorige hoofdstuk, of de rechtse 25-pin versie in figuur 5.8) maar ook met kabelaansluitingen, voormontage op controlepanelen en met IDC-interface voor bandkabels.

Figuur 5.8: Links: een 25-pin male en 15-pin female D-sub-connector voor paneelmontage. Let op derechtstreekse aansluiting aan een bandkabel, geısoleerd met krimpkous. Rechts: dezelfde 25-pin male

D-sub-connector, maar nu in right angle versie voor PCB-montage.

Waar gebruiken? Waar je digitale signalen wilt uitwisselen tussen verschillende toestellen, ofbinnen hetzelfde toestel over lange afstanden (bv. in machines). De pinnen van een D-sub-connectorkunnen behoorlijk wat stroom verwerken, dus je kan ze gebruiken om zowel sensors als actuators aante sluiten.

5.4.7 IDC-connectors

IDC-connectors zijn bedoeld voor aansluiting op bandkabels. Ze bestaan uit 2 rijen pinnen en een colletwaar de bandkabel wordt tussengeschoven. Vervolgens wordt de collet dichtgedrukt, in een bankschroefbijvoorbeeld, waardoor de pinnen door de isolatie van de bandkabel worden gedrukt en contact makenmet de geleiders. Hier komt de afkorting IDC vandaan: insulation displacement connector.

Figuur 5.9: Links: 2 bandkabels met female IDC-connectors aangesloten op dual row pin headers. Midden enrechts: een straight 14-pin shrouded header en een right angle 40-pin shrouded header (met langs de linkerkant

een right angle 4-pin waferconnector en langs de rechterkant een 2-pin JST-connector), beide bedoeld vooraansluiting van bandkabels via IDC-connectors.

Het voordeel van een IDC-connector is dat ze gemakkelijk en snel op bandkabels kunnen aange-bracht worden, en dat de verbinding robuust is. IDC-connectors geven zelden slechte contacten. IDC-connectors worden veel gebruikt om bandkabels aan te sluiten op PCB’s. In dat laatste geval is decomplementaire mannelijke connector een dual row header, bij voorkeur shrouded om verkeerd aanslui-ten te verhinderen.

Wanneer gebruiken? Telkens wanneer je een bandkabel gebruikt.

Om IDC-connectors op bandkabels te zetten heb je enkel een knijptang of bankschroef nodig.

63

Page 73: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

64 DESIGN EN PROTOTYPING ing. Y. Verbelen

Figuur 5.10: Om IDC-connectors op bandkabel te zetten heb je enkel een tang nodig. Van links naar rechts:IDC-connector met gewenste aantal aders open trekken, de bandkabel errond plooien zodat de voorkant gelijk

komt met de connector, en vervolgens dichtknijpen met een tang of in de bankschroef. Let op de rode markering opde kabel, die pin 1 aanduidt.

5.4.8 Standaarden

De hierboven besproken connectors hebben fundamenteel verschillende karakteristieken, maar hebbendesondanks toch een eigenschap met elkaar gemeen: ze zijn vrij te gebruiken in elke toepassing omdater geen standaarden gedefinieerd zijn over de spanningen en types signalen die ze mogen vervoeren.Het zijn dus, zoals dit in de elektronica heet, general purpose connectors. Dat betekent ook dat jebv. een mannelijke D-sub-connector niet zomaar in een vrouwelijke D-sub-connector op een anderemachine mag pluggen, zelfs als ze passen! Beide connectors zullen hoogstwaarschijnlijk immers ver-schillende spanningsniveaus voeren, en de kans is groot dat een van beide toestellen beschadigd geraakt.

Figuur 5.11: Standaard en niet-standaardconnectors naast elkaar: een RCA-connector voor composite video en 3USB-A connectors (links), een mini-DIN-connector voor S-video en een standaard blauwe 15-pin

D-sub-connector voor VGA.

Veruit de meeste elektronische connectors zijn echter geen general purpose connectors. De span-ningsniveaus op een USB-connector of een HDMI-connector zijn bijvoorbeeld heel nauwkeurig gede-finieerd, en de taak van elke ader ligt vast in uitgebreide specificatieboeken. Als je dit soort connectorsgebruikt moet je de corresponderende specificaties dus nauwgezet volgen, want deze connectors wordenverondersteld om uitwisselbaar te zijn tussen verschillende apparaten. Om die reden mag je een USB-connector bijvoorbeeld niet gebruiken om een RGB-LED of stappenmotor met je PCB te verbinden,hoewel hij 4 aders bevat. Vroeg of laat zal iemand immers proberen om die connector in zijn laptop tepluggen, al dan niet onopzettelijk, met alle gevolgen van dien.

5.5 Kabels maken

Bij het bouwen van prototypes zal het aansluiten van kabels op connectors al evenveel tijd in beslagnemen als het solderen van de componenten zelf. Mits de correcte technieken en het juiste materiaalkan deze stap toch vlot verlopen.

Kabel vind je per lopende meter op rollen in het fablab, en zo worden ze ook industrieel aangeleverd.Eens je de gewenste lengte van een kabel kent, zal je die dus op maat moeten maken door een stuk van

64

Page 74: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing. Y. Verbelen DESIGN EN PROTOTYPING 65

een rol af te snijden en langs een of beide kanten er een passende connector op te bevestigen.

5.5.1 Strippen

Met uitzondering van IDC-connectors zal je bij alle andere connectortypes een stukje van de isolerendemantel moeten verwijderen alvorens je de connector erop kan bevestigen. Dit proces heet strippen, enhet gereedschap dat je hiervoor gebruikt heet een striptang. Met een striptang kan je snel en veilig demantel van kabels lossnijden en van de kern afschuiven. Stel de tang zodanig in dat ze net niet tot inde kern snijdt. Op de meeste tangen is hiervoor een instelschroef voorzien. Je hoeft max. 5 mm afte strippen. Als de tang de ader volledig doorknipt, dan staat ze te diep ingesteld en moet je dus deinstelschroef bijregelen.

5.5.2 Krimpen

Om vrouwelijke headers, vrouwelijke JST-connectors of vrouwelijke waferconnectors (receptacles) metdraaduiteinden te verbinden, bestaat er een efficientere techniek dan solderen die krimpen heet. Het bij-horende gereedschap dat je ervoor nodig hebt heet een krimptang. Krimpsockets bestaan uit een manne-lijke of vrouwelijke connector langs de ene kant en 2 of 4 opstaande lippen langs de andere kant. Eenser een draad tussen deze lippen zit worden ze dichtgeduwd door de krimptang waardoor de uiteindenvan de lippen zich in de daad vastbijten en er een betrouwbare elektrische verbinding ontstaat. Bij deversie met 4 lippen zijn de buitenste 2 lippen bedoeld om de isolatie van de draad vast te houden. Bijdraden met kleine diameter of multicore is het verstandig om de het uiteinde eerst te vertinnen.

Figuur 5.12: De 4 stappen om clips op kabels te krimpen: clip uit de rol knippen (1), clip in de krimptang stekenmet de open kant naar de grote holte toe (2), draad met afgestripte mantel in de clip schuiven (3) en krimptang

toeknijpen om de lipjes om te buigen, vervolgens clip en draad uit de tang nemen (4).

Nadat alle aders van zo’n krimpsocket voorzien zijn, kunnen ze in een krimpbehuizing geschovenworden. Daartoe is er in de behuizing langs een kant een uitsparing voorzien waar een haaks lipje op dekrimpsocket in kan schuiven. Duw de krimpsocket in de krimpbehuizing tot het lipje op zijn plaats zit,je hoort dan ook een klik. Het lipje verhindert dat de krimpsocket weer uit de behuizing kan schuiven.

Figuur 5.13: Schuif draden met clips met de bovenzijde (weerhaakje) in de connectorbehuizing tot het weerhaakjeop zijn plaats klikt, en herhaal dit voor alle draden. De pijl op de behuizing duidt pin 1 aan.

5.5.3 Isoleren

Soms moet je op connectors, schakelaars of potentiometers solderen die tegen de wand van de behuizinggemonteerd zitten als deel van de gebruikersinterface. Dit resulteert in blote soldeerverbindingen die

65

Page 75: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

66 DESIGN EN PROTOTYPING ing. Y. Verbelen

een risico vormen op kortsluitingen. Hetzelfde probleem doet zich voor als je soldeerverbindingen ophoge spanningen, bv. een netschakelaar, wil beveiligen tegen aanraken.

De eenvoudigste methode is isolatietape te gebruiken. Deze tape kan je rond de blote verbindingdraaien totdat alle metalen delen bedekt zijn. Het nadeel van isolatietape is dat ze lijmresten achterlaaten de neiging heeft om los te komen.

Een betere oplossing is krimpkous (eng. heat shrink tube) te gebruiken. Krimpkous is een flexibelekunststof buis waarvan de diameter kan verkleind worden door ze op te warmen. Schuif een klein stukjekrimpkous over de blote verbinding, en verwarm ze dan indirect met een aansteker of heteluchtsoldeer-bout. De krimpkous past zich dan perfect aan de vorm van de verbinding aan en sluit ze af van delucht waardoor ze ook niet meer kan oxideren. Krimpkous weer verwijderen doe je met een mes ofscalpel. Als je draden aansluit, dan moet je uiteraard eerst een stukje krimpkous over de draad schuivenvooraleer je hem vast soldeert, anders krijg je de krimpkous er nadien niet meer over.

5.5.4 Kabelbomen

Door kabels los te laten hangen in de behuizing zijn ze onderhevig aan krachten die worden veroorzaaktdoor het verplaatsen of manipuleren van je wekker, bijvoorbeeld als je elke morgen 5 keer keihard opsnooze mept. Zelfs goede connectors zullen dan vroeg of laat loskomen. Om dit te vermijden moet jeje kabels vastmaken in de behuizing. De meest efficiente manier is door kabels die in dezelfde richtinglopen, samen te bundelen en vast te sjorren met een tie-wrap die dan ook tegen de wand van de behuzingwordt vastgezet. Bij het ontwerpen van je behuizing denk je dus best al na waar je de kabels wil latenlopen, en voorzie je de nodige gaten waar ze doorheen passen.

Figuur 5.14: Een voorbeeld van slechte bekabeling. Kabels zijn niet vastgemaakt, lopen door elkaar, en er zijngeen of verkeerde types connectors gebruikt. Slechte contacten door falende verbindingen zijn onvermijdelijk.

Omdat kabels de neiging hebben om te vertrekken vanaf een centrale PCB en zich vervolgens uitte spreiden over het toestel in een structuur die vergelijkbaar is met een boom die zich vertakt, spreektmen over kabelbomen. In het Engels wordt dit ook wel een cable harness genoemd.

5.6 Bekabelingstechnieken

Hoewel je moet weten welke types connectors en kabels er bestaan, is het volstrekt zinloos om alle aan-bevelingen en technieken in dit hoofdstuk van buiten te leren. Kabels en connectors correct gebruikendoe je vooral door zelf de spreekwoordelijke handen uit de mouwen te steken en met je eigen wekker-prototype aan de slag te gaan.

Laat je inspireren door professioneel ontworpen toestellen. Printers, zowel voor particulier als in-dustrieel gebruik, zitten boordevol kabels en connectors en tonen waar je welk type correct gebruikt.

66

Page 76: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing. Y. Verbelen DESIGN EN PROTOTYPING 67

Figuur 5.15: Links: correcte bekabeling in een 17” LCD-scherm. Goede keuze van connectors (wafer vooraansluiting voeding linksboven, JST voor interface tussen display en displaydriver). De zwarte connector op dedisplaydriver is een Molex-connector. Let op de witte klem die de centrale kabelboom op zijn plaats houdt, en de

grijze houder voor de ferrietkern rond de LVDS-kabel die tegen de behuizing is vastgeschroefd. Rechts: een sleeveen lipje in de metalen behuizing om een twee-aderige kabel vast te houden.

Ook scanners, pc’s, microgolfovens, wasmachines e.d. bevatten doorgaans fraaie voorbeelden van cor-rect gebruikte kabeltypes, connectors en kabelbomen. Volledige kabelbomen hergebruiken lukt zeldenomdat de kabels nooit de juiste lengte hebben, maar individuele kabels en/of connectors laten zich weluitstekend hergebruiken. Dit spaart meteen de tijd en moeite om zelf connectors op kabels te krimpen,met krimpkous te isoleren en dergelijke.

67

Page 77: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

68 DESIGN EN PROTOTYPING ing. Y. Verbelen

68

Page 78: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

6Solderen

If it smells like fried chicken, you’re holdingyour soldering iron the wrong way.

Mitch Altman

6.1 Inleiding

Nadat je PCB ontworpen en gefabriceerd is, en je hebt de juiste connectors gekozen om de kabels metje PCB te verbinden, dan kan de assemblage beginnen. Om de elektronische componenten en connec-tors vast te zetten op de PCB maak je gebruik van gesmolten metaal in een proces dat solderen (eng.soldering) heet.

Om te solderen heb je een metaallegering nodig met een laag smeltpunt. De meest voorkomendelegeringen bestaan uit combinaties van tin, lood, koper, zink en zilver in varierende verhoudingen. Inhet fablab gebruiken we 2 types: “loodsoldeertin” met een verhouding Sn/Pb van 40/60 en “zilver-soldeertin” waarbij het lood vervangen is door een mengsel van zilver, koper en zink. Solderen metloodsoldeertin is veel gemakkelijker dan met zilversoldeertin, en het is dus warm aan te bevelen om teleren solderen met loodsoldeertin.

Alle soldeertinlegeringen hebben een smelttemperatuur die tussen ca. 200C en 300C ligt. Dat isdus meteen ook het grote verschil tussen solderen en lassen: bij solderen smelt enkel het soldeertin, bijlassen smelten ook de beide stukken die je aan elkaar wil zetten om een groot vloeibad te creeren. Eenlasverbinding kan je dus niet ongedaan maken, vermits beide stukken letterlijk in elkaar gesmolten zijn,een soldeerverbinding kan echter wel terug uiteen.

6.2 Soldeerbout

Het gereedschap dat je nodig hebt om te kunnen solderen heet een soldeerbout. Een soldeerbout is niksanders dan een geharde metalen punt die door een weerstand op temperatuur wordt gebracht. Een goedesoldeerbout heeft een vermogen van meer dan 80 W en een temperatuurregeling. Soldeerbouten zondertemperatuurregeling kan je niet gebruiken om elektronica te solderen omdat ze ofwel te koud zijn ofwelde elektronische componenten verbranden. Dit soort soldeerbouten zijn enkel geschikt om waterleidin-gen mee aan elkaar te solderen, of als wafelijzer dienen.

Page 79: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

70 DESIGN EN PROTOTYPING ing. Y. Verbelen

Nog beter dan een losse soldeerbout is een soldeerstation. Soldeerstations hebben quasi altijd eentemperatuurregeling waarmee je de temperatuur kan instellen, en een houder om de losse soldeerbout inte bewaren. Goede soldeerstations zijn al commercieel verkrijgbaar vanaf ca. 30-50 EUR.

Figuur 6.1: Display voor instelling van de temperatuur op een Weller WD-80 soldeerstation, en bijhorende houdermet spons. Gebruik een spuitfles om de spons te bevochtigen.

Even belangrijk als de soldeerbout zelf is de spons. Die gebruik je om de punt van de soldeerboutschoon te maken vooraleer je begint te solderen. De punt moet blinken en vrij zijn van prut of andereaanslag vooraleer je kan solderen. Uiteraad dient de spons licht bevochtigd te zijn, anders verbrandtze. Her en der wordt op het internet aangeraden om de spons te vervangen door staalwol. Hoewel datweliswaar werkt, heeft staalwol de eigenschap om veerkrachtig te zijn. Als er nog soldeertin aan depunt hangt, dan heeft dit de neiging om weg te springen als je het afveegt aan de staalwol. Onnodig tevermelden dat rondvliegend gesmolten metaal niet aan te bevelen is. Hou het dus bij een goede, lichtbevochtigde spons.

6.3 Soldeerverbindingen maken

Neem alle nodige materiaal bij de hand: de component(en) die je wil solderen, een rol soldeertin, ende soldeerbout zelf met bijhorende bevochtigde spons. Stel de soldeerbout in op 350C, wacht tot desoldeerbout warm is, en veeg de punt schoon op de spons.

Om een goede soldeerverbinding te kunnen maken, mogen de componenten niet bewegen terwijl hetsoldeertin afkoelt, zo niet krijg je een brosse en brokkelige verbinding die slecht contact maakt. Het isaan te bevelen om componenten langs de bovenzijde op de PCB vast te plakken met Tesa-tape vooraleerje begint te solderen. Op die manier blijven ze zeker op hun plaats zitten.

Neem de soldeerbout vast zoals je een pen vastneemt: tussen duim, middelvinger en wijsvinger. Alsje rechtshandig bent, dan soldeer je waarschijnlijk ook best met de rechterhand, en omgekeerd. Uiter-aard neem je de soldeerbout vast aan de kunststof handgreep en niet aan de metalen delen.

Het soldeertin dat we gebruiken in het fablab bestaat eigenlijk uit een holle buis soldeertin die ge-vuld is met een substantie die flux heet. Flux is een vetachtige visceuze gel die zeer corrosief wordt alsze wordt verhit. Het doel van flux is de te solderen oppervlakken te reinigen door alle oxidatieresten enandere onzuiverheden op te lossen. De punt van de soldeerbout is echter zodanig heet dat de flux bijcontact meteen verdampt zonder zijn werk te kunnen doen! Idealiter mag het soldeertin dus niet recht-streeks in contact komen met de soldeerboutpunt. Hoe kan je dan solderen? Door beide oppervlakkeneerst te verhitten en dan pas soldeertin toe te voeren.

Duw de punt van de soldeerbout in een hoek van ca. 45 tussen de PCB en de draad van de compo-nent die je wil solderen. Hou hem daar enkele seconden om zowel het soldeereiland op de PCB (pad)en de draad van de component goed op te warmen. Duw nu voorzichtig het soldeertin tegen de draaden het pad zonder dat deze de punt van de soldeerbout raakt, bv. aan de andere kant van de draad.

70

Page 80: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing. Y. Verbelen DESIGN EN PROTOTYPING 71

Figuur 6.2: Solderen in 6 stappen (van links naar rechts): soldeerbout verhit zowel pad als draad, en soldeertinwordt toegevoegd (1). Soldertin smelt (2) en vloeit uit (3) totdat er een glanzende conus wordt gevormd (4) waarnahet soldeertin wordt verwijderd (5) en tot slot de soldeerbout wordt weggetrokken om de verbinding te laten stollen

(6).

Het soldeertin zal smelten, de flux vloeit uit en verdampt, en enkele ogenblikken later vloeit ook hetsoldeertin zelf mooi uit. Als het soldeertin niet smelt, dan kan je het eventueel kort tegen de punt van desoldeerbout aantikken. Je kan nu de soldeerboutpunt wegtrekken, en het soldeertin laten stollen.

Bij een goede verbinding glanst het soldeertin, heeft het de vorm van een kegel aangenomen, enheeft zich goed aan beide metalen delen gehecht. Als het soldeertin geen contact maakt met het soldee-reilandje of met de draad, dan is dat een indicatie dat je dat oppervlak onvoldoende warm hebt gemaakt.Geen paniek: je kan de verbinding terug smelten met de soldeerbout, en nieuw soldeertin toevoegen omde flux zijn werk te laten doen en het soldeertin te laten uitvloeien over beide oppervlakken.

goede verbinding

soldeertinsoldeermasker

elektrische layer

substraat

component lead

lead onvoldoende verhit pad onvoldoende verhit

Figuur 6.3: Van links naar rechts: een goede conische soldeerverbining, een slechte verbinding waarbij de draadonvoldoende werd verhit, en een slechte verbinding waarbij het soldeereilandje (pad) onvoldoende werd verhit.

Als de verbinding niet glanst maar er eerder dof uit ziet, dan heb je het soldeertin te lang verhit. Ookhier geldt dezelfde remedie: vebinding weer smelten, een weinig nieuw soldeertin toevoegen, en latenuitvloeien.

Als de verbinding er brokkelig uit ziet of het oppervlak van de verbinding niet glad is, dan zijn beideonderdelen bewogen terwijl het soldeertin aan het stollen was. Zelfde remedie als hierboven.

Mits wat oefenen kan je op deze manier de ene verbinding na de andere maken. Een soldeerverbin-ding hoeft niet langer dan 3 - 5 s te duren. Vergeet niet regelmatig de punt schoon te vegen op de sponsom de aangekoekte fluxresten te verwijderen.

71

Page 81: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

72 DESIGN EN PROTOTYPING ing. Y. Verbelen

6.4 Desolderen

Het omgekeerde van solderen heet desolderen. Omdat bij solderen de originele componenten niet be-schadigd worden maar enkel met soldeertin aan elkaar vast zitten, kan je een soldeerverbinding op elkmoment weer ongedaan maken. Redenen om te desolderen zijn bv. het vervangen van defecte compo-nenten, het corrigeren van fouten en het hergebruiken van componenten van afgedankte PCB’s.

De 3 voornaamste technieken om te desolderen zijn met een tang, met een desoldeerpompje of metlitze (eng. solder wick of solder braid).

6.4.1 De tang

Bij componenten die over slechts 2 aansluitingen beschikken zoals weerstanden, condensatoren, diodes,inductors e.d. is de simpelste manier om te desolderen door gebruik te maken van een tang. Stel dePCB vertikaal op, bijvoorbeeld in een bankschroef of door hem vast te houden, en verhit een van beidecontacten om die los te maken. Trek dan met een fijne tang die kant door de PCB. Een variant hieropis een schroevendraaier als hefboom gebruiken. Voor condensators heb je helemaal geen extra gereed-schap nodig: duw hem van de losse pin naar de nog vastzittende zijde, en de losse pin wordt vanzelf uitde PCB getild.

Vervolgens verhit je de andere verbinding, zodat je de component met dezelfde tang kan lostrekken.

6.4.2 Desoldeerpomp

Een desoldeerpomp bestaat uit een pneumatische zuiger die onder spanning wordt gehouden door eenveer. Smelt de verbinding die je wenst te verbreken met de soldeerbout, en duw dan de desoldeerpomper zo dicht mogelijk tegen. Als de pomp zich ontspant dan zal het gesmolten soldeertin met de omrin-gende lucht mee in de pomp worden gezogen.

Hoewel nuttig om grote hoeveelheden tin te verwijderen is een desoldeerpomp alleen zelden vol-doende om componenten los te maken. Het gebruik ervan vergt ook heel wat oefening.

Figuur 6.4: Desolderen met behulp van een desoldeerpomp (links) en met litze (rechts).

6.4.3 Litze

De meest effectieve manier om te desolderen, en ook de enige techniek die goed werkt bij kleine ver-bindingen met inbegrip van surface mount componenten, is litze. Litze bestaat uit zeer fijn gewovenmetaaldraad, meestal koperdraad, dat gedrenkt is in flux. Als het tegen gesmolten soldeertin wordt ge-duwd, zal het tin in de litze worden opgezogen dankzij het capillair effect.

Kies de litze in functie van de toepassing. Voor kleine verbindingen kies je dunne litze, voor groteverbindingen dikke litze. Koperen litze werkt iets gemakkelijker dan stalen litze voor loodsoldeertin, bij

72

Page 82: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing. Y. Verbelen DESIGN EN PROTOTYPING 73

zilversoldeertin is er weinig verschil tussen beide types.

Leg de litze tegen de verbinding die je wenst te verwijderen, en duw er dan de soldeerboutpunttegenaan. Maak het contactoppervlak tussen litze en soldeerboutpunt zo groot mogelijk om de warmte-overdracht te maximaliseren. Van zodra het soldeertin smelt, zal het opgezogen worden. Indien nodigmoet je de litze bewegen om “verse” litze toe te voeren.

6.5 OververhittingElektronische componenten zijn van nature gevoelig voor warmte, en zeker halfgeleiders zoals transis-tors (BJT’s, MOSFET’s, ...) en IC’s zijn erg gevoelig voor oververhitting. IC’s zoals de ATmega328psoldeer je daarom niet rechtstreeks op de PCB, maar plaats je in een socket die je eerst vastsoldeertzonder dat er een IC in zit.

Als je halfgeleiders te sterk verhit, dan bestaat de kans dat ze al kapot zijn nog voor ze goed en welvast zitten. Je kan dit risico minimaliseren door enkele vuistregels te volgen:

• Zet de temperatuur van de soldeerbout nooit hoger dan nodig, een temperatuur van 300 - 350Cmoet volstaan.

• Verwarm de component kort maar krachtig, nooit meer dan enkele seconden.

• Test halfgeleiders die je gedesoldeerd hebt op een breadboard vooraleer je ze opnieuw gebruikt.

6.6 VeiligheidDat tijdens solderen looddampen vrijkomen is een fabeltje omdat lood niet verdampt bij een tempera-tuur van 350C zoals iedereen die een basiscursus fysica heeft gehad weet. De dampen die ontsnappenzijn afkomstig van de flux die verdampt als hij in contact komt met de hete soldeerboutpunt. Of defluxdampen “gezonder” zijn dan looddampen is een zinloze discussie: een substantie die als doel heeftoxidatie op de PCB op te lossen, adem je best niet in. Zorg voor een goed geventileerde werkplek: bijvoorkeur ga je voor een open raam zitten, onder een afzuiging (bv. trekkast) of zet je simpelweg eenventilator aan om de dampen van je weg te blazen.

Een tweede veiligheidsaspect is natuurlijk de hete soldeerbout zelf. Zorg dat die altijd in zijn houderstaat, en leg hem zeker nooit los op tafel. Alles waar de punt mee in contact komt zal schroeiplekkenoplopen, en mogelijk brand veroorzaken. Wijs ook je medestudenten erop dat een soldeerbout warmstaat als ze in de buurt van je werktafel komen maar er zich niet van bewust zijn. Het kan een kwartierduren vooraleer een soldeerbout voldoende is afgekoeld om veilig opgeborgen te kunnen worden.

73

Page 83: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,
Page 84: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

7Behuizing

An expert is a man who has made all themistakes which can be made in a very narrowfield.

Niels Bohr

7.1 InleidingEens je elektronica af is en de software heeft bewezen dat ze correct werkt, dan rest er enkel nog hetmaken van een behuizing. De behuizing is een omhulsel waar alle onderdelen zoals PCB’s, voeding,bekabeling, eventuele batterijen e.d. in passen. Het doel van de behuizing is je ontwerp robuuster temaken voor alledaags gebruik door de elektronica te beschermen tegen beschadiging en stof. Afhanke-lijk van de toepassing kunnen er andere eisen gesteld worden aan de behuizing. Bij toestellen die buitengebruikt worden, moet de behuizing de elektronica ook beschermen tegen regen en sneeuw. Tegelijkmoet de behuizing de nodige ventilatieopeningen voorzien, zonder dat de gebruiker daarbij de spanning-voerende onderdelen op printplaten per ongeluk kan aanraken. Bedieningselementen zoals knoppen enschakelaars, displays en LED’s moeten echter wel bereikbaar of zichtbaar blijven. Het ontwerp van eenbehuizing is dus niet altijd triviaal.

7.2 OntwerpvolgordeOntwerp je eerst de behuizing en maak je de elektronica daarna zodanig compact dat alles erin past, ofbegin je bij de elektronica en teken je de behuizing nadien op maat? Beide pistes zijn mogelijk, maarhet is veel gemakkelijker om eerst de elektronica te ontwerpen zonder dat je rekening moet houden metbepaalde afmetingen. Ontwikkel dus eerst de PCB’s. Je moet er in dat design natuurlijk wel op lettendat LED’s in de juiste richting staan, dat connectors op de rand van je PCB zijn gelocaliseerd enzovoort.Als je een LCD-scherm langs de ene kant van je PCB zet en de knoppen langs de andere kant, dan wordthet onmogelijk om er een behuizing voor te ontwerpen nadien.

7.3 Mechanisch ontwerpDe beste manier om te starten is eerst je PCB te exporteren uit CircuitMaker als een STEP-model, zoalsin hoodstuk 4 werd gedemonstreerd. Dit STEP-model bevat informatie over de vorm van de PCB, depositie en grootte van montagegaten, de vorm en positie van connectors, en zelfs de hoogte van allecomponenten op de PCB. Kortom, op basis van een STEP-model heb je alle nodige informatie om

Page 85: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

76 DESIGN EN PROTOTYPING ing. Y. Verbelen

een passende behuizing te ontwerpen. Als je ontwerp uit meerdere PCB’s bestaat, dan exporteer jeafzonderlijke STEP-modellen van elke PCB.

7.3.1 3D CAD software

Je zal de behuizing prototypen op basis van onderdelen die je zal lasercutten of 3D-printen in het fablab.Lasercutten en 3D-printen zijn compleet verschillende technologieen, en de werkwijze om de vereistestukken ervoor te ontwerpen zijn dus ook radicaal verschillend. Om te kunnen 3D-printen heb je een3D-model nodig, te vergelijken met een STEP-model van de PCB, terwijl je om te lasercutten vectoriele2D-tekeningen nodig hebt. Om beide te combineren met 3D-modellen van je PCB’s is mechanische ont-werpsoftware vereist die zowel met 2D als 3D overweg kan. Net zoals voor PCB-ontwerp bestaan er ookvoor mechanisch CAD verschillende softwarepakketten, de voornaamste zijn AutoCAD, SolidWorks,LibreCAD, Solid Edge, 123D, Sketchup en Inventor. Anders dan bij PCB software is er voor mecha-nisch ontwerp geen pakket dat duidelijk boven de anderen uitsteekt qua performantie en mogelijkheden.Dankzij de uitgebreide documentatie die ervoor beschikbaar is, adviseren we Autodesk Inventor. Eentutorial van Inventor valt buiten het beste van deze cursus.

Figuur 7.1: Een PCB in de editor van CircuitMaker (3D view) links, en dezelfde PCB geexporteerd alsSTEP-model uit CircuitMaker en geımporteerd in Autodesk Inventor rechts. Let op de passende contour, en decirkelvormige cutout in het midden die overeenkomt met een gelijkaardige cutout in de behuizing. Er zijn ook

enkele rode en zwarte kabels (14 AWG) aangesloten.

Figuur 7.1 toont een voorbeeld van gecombineerd design. De linkerafbeelding is een 3D-weergavevan een PCB in CircuitMaker, waarop alle componenten vertegenwoordigd worden door eigen 3D-modellen. De vorm van de PCB is complexer dan de “standaard” rechthoekige PCB’s die je vaaktegenkomt. Er is ook een uitsnijding voorzien in het midden (eng. cutout) en er zijn verschillendemontagegaten voorzien. Na exporteren als STEP-model kan de PCB dan in Inventor geımporteerdworden, en ingepast worden in het design van de behuizing zoals te zien is op de rechterafbeelding. Jeziet meteen waar er plaats moet gelaten worden voor bekabeling, waar de montagegaten moeten komenenzovoort.

7.3.2 Rapid prototyping

3D-printers en lasercutters zijn allebei beschikbaar in het fablab en even gemakkelijk in gebruik, maartoch verschillen beide types machines fundamenteel van elkaar wat betreft de toepassingen waarvoor jeze gebruikt.

7.3.2.1 Lasercutters

Lasercutters snijden 2D patronen uit vlak materiaal zoals hout, acrylaat (plexiglas), rubber of allerleiandere kunststoffen. Omdat lasercutters snel snijden kan je meteen je prototypes passen en testen, waar-door de ontwerpcyclus ook snel gaat. De voornaamste beperkingen van lasercutters zijn de beperkte

76

Page 86: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

ing. Y. Verbelen DESIGN EN PROTOTYPING 77

dikte van de materialen die je kan snijden en de types materialen (enkel brandbare of smeltbare mate-rialen, en geen metaal). De diktebeperking kan je gemakkelijk omzeilen door hetzelfde stuk meerderekeren te snijden uit dun materiaal, en de verschillende lagen dan op elkaar te lijmen of te schroeven.Door op deze manier op te splitsen in “lagen” kan je ook met lasercutters eenvoudige 3D-objecten ma-ken.

De simpelste vorm van een gelasercutte behuizing voor je wekker is een doos (eng. box) in de klas-sieke zin van het woord: 4 zijwanden, een bodem en een deksel. Deze 6 stukken kan je afzonderlijkop een lasercutter snijden en dan in elkaar passen. De techniek die je gebruikt om de doos in elkaarte zetten zal bepalend zijn voor de stevigheid en de toegankelijkheid. De 3 belangrijkste manieren zijnvlakke hoeken, vingers en T-slots.

Vlakke hoeken De oudste methode is die met vlakke hoeken. Alle stukken zijn dan zuivere rechthoe-ken. Het voordeel aan deze methode is dat de stukken zo eenvoudig zijn dat je zelfs geen lasercutternodig hebt om ze te snijden, maar het gaat uiteraard wel sneller. Figuur 7.2 toont links een doosontwerpmet vlakke hoeken.

Vingers Een ontwerp met vingers is beter dan vlakke hoeken omdat het contactoppervlak tussen beidestukken wordt vergroot. Dit leent er zich dus beter toe om te lijmen. De patronen worden zodanigcomplex dat manueel uitsnijden niet meer realistisch is en een lasercutter dus noodzakelijk. Figuur 7.2toont in het midden een ontwerp met vingers.

Figuur 7.2: Drie technieken om een gelasercutte doos in elkaar te zetten: vlakke hoeken (links), vingers (midden)en een combinatie van vingers en T-slots (rechts).

(afbeeldingen: Jon Hollander, www.makercase.com, overgenomen met toestemming van de auteur)

T-slots Het is mogelijk om de vingers zodanig te ontwerpen dat er net genoeg speling zit tussen destukken om ze te laten in elkaar klemmen en de doos dus in elkaar te zetten zonder lijm. Het is dan weleen lastige opgave om de doos weer uiteen te halen, bijvoorbeeld om batterijen te vervangen. Na ettelijkekeren open en dicht gemaakt te zijn, sluiten de stukken ook minder goed aan waardoor ze uiteindelijkniet meer voldoende wrijving hebben om bij elkaar te blijven. Een oplossing hiervoor is schroeven enbouten te gebruiken. Om 2 stukken die haaks op elkaar staan vast te zetten met bouten wordt een T-slotgebruikt. Hierin past langs de ene kant een moer, en de bout wordt er overlangs in gedraaid. T-slotshebben dus 2 voordelen: de gelasercutte stukken hoeven niet perfect in elkaar te passen, en je kan dedoos zoveel openen en sluiten als je wilt. Figuur 7.2 toont rechts een voorbeeld van een ontwerp metvingers en T-slots.

7.3.2.2 Templates

Door slim gebruik te maken van symmetrie is het doenbaar om zelf de 6 stukken te ontwerpen in Inventordie je nodig hebt om een doos te assembleren. Als je echter verbindingen met vingers en/of T-slots wilt,dan wordt dit ontwerp ingewikkeld waardoor de kans op fouten toeneemt. Gelukkig bestaan er tal van

77

Page 87: Ingenieursvaardigheden - Vrije Universiteit Brussel...2016/09/30  · Deze nota’s zijn enkel tot stand kunnen komen dankzij de constructieve feedback en inzichten van Ann Peeters,

78 DESIGN EN PROTOTYPING ing. Y. Verbelen

templates online waarvan je kunt vertrekken. Deze templates kan je dan openen en aanpassen in Inventorwaar nodig. Enkele voorbeelden van templates:

• http://www.makercase.com

• http://makeabox.io

• http://boxmaker.connectionlab.org

7.3.2.3 3D-printers

3D-printers bouwen 3D-objecten laag per laag op basis van een kunststof die op lage temperatuur smelt,vergelijkbaar met soldeertin. Deze kunststof wordt geextrudeerd tot dunne draden waarmee laagjesworden getekend. De opeenstapeling van al deze laagjes resulteert in een 3D object. Het voordeel aan3D-printen is dat quasi elk object dat je kan tekenen in Inventor ook kan geprint worden – theoretischalthans. In de praktijk zijn er beperkingen: grote objecten hebben de neiging los te komen van hetprinterbed en op te krullen, overhangende storten in tijdens het printen, en fijne details komen niet goedtot hun recht. De laagjes blijven ook een zwak punt in de structuur, en als het contactoppervlak tussenlaagjes te klein is dan komen ze los en schilfert je object uiteen. Het voornaamste nadeel van 3D-printersis echter dat ze traag zijn. De snelheid waarmee kunststof kan gesmolten worden in de extruderkop isbeperkt, net zoals de snelheid waarmee het gesmolten materiaal weer afkoelt. Afhankelijk van hoe mas-sief je je stuk wenst te printen (eng. material infill) kan het printproces voor grote en complexe stukkenvele uren of zelfs dagen in beslag nemen. Als je je prototype snel wilt kunnen assembleren en testen,dan is 3D-printen dus niet de beste keuze.

De kracht van een fablab zit in de combinatie van de verschillende machines. Met lasercutters kan jesnel vlakke stukken snijden zoals de 6 “wanden” van een doos bijvoorbeeld. Montagegaten voor boutenof schroeven, ventilatiegaten e.d. nemen nauwelijks tijd in beslag op een lasercutter. 3D-printers lenenzich dan weer uitstekend om knoppen te printen, koppelstukken tussen gelasercutte plaatjes, afstands-houders, beugels om kabels mee vast te zetten enzovoort.

7.3.3 Bereikbaarheid

Een behuizing heeft tot doel om de elektronica te beschermen tegen gebruikers en vice versa, maartegelijk moet de elektronica ook bereikbaar zijn om bijvoorbeeld batterijen te kunnen vervangen. Zon-der bereikbaarheid als ontwerpcriterium zou je ook een halve emmer epoxy over de elektronica kunnengieten om deze te beschermen. Dit werd vroeger wel eens gedaan om te beschermen tegen vocht enreverse engineering door concurrenten, maar maakt natuurlijk ook elke reparatie onmogelijk. Derge-lijke methodes zijn dus verwerpelijk omdat ze weinig meerwaarde bieden maar hergebruik of recyclagebelemmeren.

De kwaliteit van een behuizing wordt naast mechanische stevigheid dus vooral bepaald door debereikbaarheid van de interne componenten. De behuizing moet zodanig ontworpen zijn dat alleinterne componenten bereikbaar en vervangbaar zijn. De mate van bereikbaarheid hangt af vande component in kwestie. Batterijen moet je bij voorkeur kunnen vervangen zonder dat je daarvooreen schroevendraaier nodig hebt, terwijl het voor het vervangen van een display of condensator opde voeding geen probleem is om enkele schroeven te moeten losmaken. Een behuizing die volledigdichtgelijmd zit kan je niet meer openen zonder ze open te breken, en is dus niet acceptabel. Je kanechter wel 3 kanten van je doos in elkaar lijmen, en dan enkel de achterkant met schroeven vastzettenzodat de behuizing langs daar kan geopend worden.

78