Professional Documents
Culture Documents
Sensoren (4)
Voor Arduino en Co.
Schakelen en besturen met licht is een wijdverbreide techniek die veel voordelen biedt.
Geen mechanisch contact, geen slijtage van schakelcontacten, elektrisch geïsoleerde
deelschakelingen en nog veel meer…
S
A2
390R
10k
2k
10k
S
10k A1
IR
V+
V+ 330R +5V
LM393 +5V
G
IR GND
G
GND
Light Blocking/Heartbeat
Tracking
de werking gemakkelijk testen. Een vinger is al genoeg als moeten het signaal natuurlijk analoog inlezen want erg grote
reflecterende oppervlakte. Houd die gewoon op een centime- veranderingen kunnen we niet verwachten.
ter afstand voor de sensor. Stel met de potmeter het opti- De heartbeat-sensor heeft dezelfde opbouw als een vorklicht-
male omschakelpunt in. Aan de uitgang verschijnt een digi- sluis (zie figuur 2), maar de afstand tussen zender en ontvanger
taal signaal dat we op de gewone manier kunnen inlezen. We is nu wat groter. Zowel de IR-zenddiode als de fototransistor
kunnen de software uit deel 2 van deze serie [3] gebruiken of hebben lange aansluitdraden zodat we ze in een optimale posi-
rechtstreeks een actuator aansluiten. Daar is van alles mee tie kunnen brengen. De print is hetzelfde als de print voor de
te bouwen, laat uw fantasie de vrije loop. Het hoeft ook niet vorklichtsluis, maar de connector en de componenten zijn op
per se een robot zijn. Misschien een lamp of een ventilator die de andere zijde van de print geplaatst.
we kunnen inschakelen door hem met een hand te benaderen, Om de sensor te gebruiken, moeten we de IR-diode en de foto-
of wat dan ook. transistor zó ombuigen dat er een vinger tussenin kan worden
geklemd. Maar het is ook belangrijk dat de vinger de print ner-
De vorklichtsluis gens geleidend aanraakt: dat zou meteen een storend brom-
In veel machines en apparaten (van scanners tot 3D-printers) signaal kunnen inkoppelen. Wij hebben de sensoren gebogen
vinden we eindschakelaars voor het herkennen van de posi- zoals in figuur 3. De IR-led schijnt dan bijna rechtstreeks op
tie van een bewegend onderdeel. Mechanische contacten of de fototransistor. De uitgangsspanning is dan bijna nul. Maar
microschakelaars ondervinden vaak problemen met de stabi- als we er een vinger op leggen, valt er een schaduw over de
liteit over langere tijd en moeten na lang gebruik worden ver- sensor. De fototransistor geleidt dan minder zodat de span-
nieuwd. Een vorklichtsluis is hier veel meer op zijn plaats want ning toeneemt. Voor een langer experiment is het handig om
de gebruikte IR-diode en de fototransistor zijn onverslijtbaar de sensor met een elastiekje aan de vinger vast te maken (zie
als de stroom door de led niet al te groot is. figuur 4). Het is namelijk belangrijk dat de vinger ontspannen
De zenddiode en de fototransistor (figuur 2) staan op een is en er geen wisselende druk is die het signaal beïnvloedt.
kleine afstand tegenover elkaar. De behuizing heeft de vorm Voor een eerste test met de Arduino-IDE volstaat het pro-
van een vork. Tussen de twee tanden is dus een gleuf waar gramma VoltageAD2 uit deel 1 [2] van de serie. De spanning
we het licht kunnen tegenhouden met een voorwerp dat geen over de fototransistor kan nu met de seriële plotter worden
licht doorlaat. De schakelpositie is goed reproduceerbaar en weergegeven (figuur 5). We zien duidelijk de modulatie van
heeft een nauwkeurigheid van minder dan een millimeter. Zulke het licht door de polsslag. Maar we zien ook dat er langzamere
vorklichtsluizen worden ook gebruikt in computermuizen en variaties in het signaal zitten die worden veroorzaakt door de
tonen daar dagelijks hun betrouwbaarheid aan. onvermijdelijke bewegingen van de vinger. Hieruit blijkt dat
Het uitgangssignaal aan de collector van de fototransistor kan we een manier moeten vinden om de signalen goed te kun-
naar keuze analoog of digitaal worden uitgelezen. Wat we pre- nen interpreteren.
cies met het signaal doen, ligt aan de toepassing en aan de Om te beginnen kunnen we een laagdoorlaatfilter gebruiken
software. We kunnen een positie naderen met een nauwkeu- (listing 1). Dit berekent gewoon een voortschrijdend gemid-
righeid van minder dan 1 mm, misschien is dat precies wat delde van de meetwaarden. Daarvoor zijn niet meer dan twee
we voor een 3D-printer nodig hebben. Als de nauwkeurigheid regels code nodig. Elke nieuwe meetwaarde wordt opgeteld bij
niet heel belangrijk is kunnen we gewoon digitaal uitlezen: het getal mean, nadat dat eerst met 1/20 is verkleind. Zo heeft
licht of geen licht. elke individuele meetwaarde een invloed van maar 5% op de
gemiddelde waarde. De tijdconstante van het laagdoorlaatfil-
De polsslagsensor ter is daarmee gelijk aan de bemonsteringsperiode maal 20,
Polsslagmeetapparaten gebruiken vaak een optisch meetpro- dus in dit geval 0,4 s. Voor de samplefrequentie is namelijk
ces. Licht van een geschikte golflengte wordt door een vinger 50 Hz gekozen om eventuele stoorsignalen uit het lichtnet te
of een oorlelletje gestuurd en dan ontvangen met een foto- dempen. De afsnijfrequentie van het filter is f = 1 / (2 π T),
transistor. Een deel van het licht wordt geabsorbeerd in het dus ongeveer 0,398 Hz. Om de werking duidelijk te maken
bloed. De hartslag verandert periodiek de momentane door- worden om-en-om de gefilterde en de ongefilterde meetwaar-
bloeding en moduleert daardoor de lichtstroom een beetje. We den weergegeven.
In de seriële plotter kunnen we nu zien hoe het filter werkt. dat bevrijd is van alle langzame variaties. Daarmee kunnen we
De voortschrijdende gemiddelde waarde volgt het signaal met nu verder werken en de frequentie van de polsslag bepalen.
een zekere traagheid (zie figuur 6). Als we de vinger snel uit Bovendien kunnen we nu meer details zien. Het signaal stijgt
de sensor trekken, kunnen we de impulsresponsie van het altijd snel en valt langzamer weer af (figuur 8). We zien dat
laagdoorlaatfilter zien (figuur 7). het hart bij elke polsslag bloed met een grote druk door de slag-
Nu hoeven we alleen nog maar het verschil (ingangssignaal aders naar de vinger pompt, waarna het dan langzamer weer
– gemiddelde waarde) te vormen (listing 2). Zo vormen we wegvloeit via de aders. Ook eventuele onregelmatigheden in
een hoogdoorlaatfilter en krijgen we een zuiver polsslagsignaal het ritme van de polsslag zouden we gemakkelijk kunnen zien.
10k
10k
heeft een eenvoudige voorziening voor tijdmeting in de vorm
van de functie millis(). Die geeft de tijd sinds de laatste CLK
A0 (A4)
reset in milliseconden terug. Daarmee kunnen we de afstand
DT
tussen twee polsslagen meten. Het programma (listing 3) A1 (A5)
geeft de periodeduur van de polsslag in ms en de frequentie
SW
in slagen per minuut weer op het LCD van het Elektor Exten-
sie-shield [6]. De frequentie wordt bij elke polsslag berekend
uit de periodetijd zodat we niet een hele minuut hoeven te +5V (13)
Listing 4: De Bascom-polsslagmeter. U = U + D
Ticks = Ticks + 1
'---------------------------------
U1 = D - Du
'Pulse.BAS ADC2, LCD
If U1 > 0 And U2 < 0 Then
'---------------------------------
T = Ticks * 10
F = 60000 / T
...
Ticks = 0
If F > 45 Then
Config Timer0 = Timer , Prescale = 1024
Print T
On Ovf0 Tim0_isr
Print F
Enable Timer0
Locate 1 , 1
Enable Interrupts
Lcd T
Lcd " ms "
...
Locate 2 , 1
Lcd F
Do
Lcd " /min "
Loop
End If
End If
Tim0_isr:
U2 = U1
Timer0 = 100 '10ms
Return
D = Getadc(2)
Du = U / 40
U = U - Du
Encoders in Bascom
De Bascom-versie van het programma is heel gemakkelijk te terecorder, aanloopstroom 10 mA) aansluiten en dan de rich-
maken. We kunnen tussen de twee talen overstappen door ting en het toerental besturen. Natuurlijk doe je zoiets normaal
de broncode de kopiëren, de namen van de variabelen vast te gesproken niet zonder een echte motordriver. Maar het werkt
houden en alleen de specifieke syntax aan te passen. In het wel degelijk. Er is in dit geval geen gevaar door inductiespan-
eindresultaat is maar één echt verschil: in Bascom gebrui- ningen omdat de uitgangen altijd in een laagohmige toestand
ken we de twee PWM-uitgangen van Timer1 meestal met een zijn. Behalve misschien als we tijdens de werking de Arduino
oplossend vermogen van 10 bits, zodat we nu 1023 stappen resetten, want dan worden de aansluitingen hoogohmig. Voor-
krijgen met een stapgrootte van ongeveer 5 mV. zichtig dus. We kunnen dit gerust een keer kort testen en de
Twee nauwkeurig instelbare PWM-uitgangen… dat schreeuwt motor weer verwijderen terwijl het programma nog loopt…
bijna om een experiment met een brug-eindtrap, zeker omdat (160302)
de beide PWM-signalen van dezelfde timer afkomstig zijn en
Weblinks
exact bij elkaar passende impulsen met een tegelijkertijd stij-
gende flank hebben. We kunnen een groene en een rode led [1] www.elektor.nl/arduino-sensor-kit
antiparallel tussen de beide uitgangen aansluiten (figuur 11). [2] www.elektormagazine.nl/160152
Als we een spanning in het midden van het bereik, bijvoorbeeld [3] www.elektormagazine.nl/160173
2500 mV, instellen op beide kanalen, dan blijven beide leds
[4] www.elektormagazine.nl/160210
uit. Maar als we één kanaal uit het midden brengen, begint
een van de leds op te lichten. [5] www.elektormagazine.nl/160302
We kunnen ook een extreem zuinige DC-motor (uit een casset- [6] www.elektormagazine.nl/140009
Advertentie
GOLD lidmaa
Word lid van de Elektor Community ✔ 6x Ele
tschap
ktor Magazine (P
rint)
GREEN lidma
atsch ap
✔ 6x Elektor Mag
azine (PDF)
✔ Toegang tot he
t Elektor archief
(met duizenden
Ook verkrijgbaar:
artikelen)
✔ Toegang tot m
eer dan
1000 Gerberfiles
Het digitale GREEN lidmaatschap! ✔ 10% korting
in onze webshop
www.elektor.nl/member ✔ Exclusieve aa
nb iedingen