Steun onze actie WeGoSTEM

Voor onze actie WeGoSTEM zoeken we nog vrijwilligers. Doe mee via WeGoSTEM.be/meedoen

Analoog-digitaal-convertor: licht meten

In deze tutorial meten we het licht en schrijven we het resultaat op het LCD-scherm. Hiervoor gebruiken we een fototransistor die we op het Dwenguino-bord plaatsen. We leren hoe we analoge sensors kunnen aansluiten en hoe we de ingebouwde analoog-digitaal-conversie (ADC) van het Dwenguino-bord kunnen gebruiken.


Benodigdheden

  1. Een Dwenguino-bord
  2. Bijgeleverde USB-kabel
  3. Een fototransistor met een 22 kOhm weerstand (of andere analoge sensor)
  4. Optioneel een Dwenguino-breadboard waarmee je eenvoudig het analoge sensorcircuit kan bouwen

De analoge sensor uitlezen

Met Dwenguino kan je heel eenvoudig analoge sensors uitlezen. We gebruiken daarvoor de ingebouwde ADC-module (analoog-digitaal-conversie) van de microcontroller in het Dwenguino-bord. Er zijn 8 pinnen op het bord die je kan gebruiken voor analoge sensors. Op het schema staan ze aangeduid als A0-A7. De analoog-digitaal-conversie gebeurt met een precisie van 10 bits. Dat betekent dat analoge inputs worden voorgesteld als integers van 0 tot en met 1023 (d.w.z. 210‑1)

Zoals gewoonlijk starten we het programma met het invoegen van de juiste bibliotheken. Zij zorgen voor de correcte werking van het Dwenguino-bord:

  1. #include <LiquidCrystal.h>
  2. #include <Wire.h>
  3. #include <Dwenguino.h>

We maken een variabele aan met de naam analogPin die we zullen gebruiken om de pin te selecteren waarop we de analoge sensor zullen aansluiten.

  1. int analogPin = A0;

De volgende stap is de "setup"-functie die elke keer wordt uitgevoerd als het bord aangeschakeld wordt. In dit geval initialiseren we daarin het Dwenguino-bord:

  1. void setup()
  2. {
  3. initDwenguino();
  4. }

Nu zijn we klaar voor de "loop"-functie.

  1. void loop() {
  2. int val;
  3. val = 1023 - analogRead(analogPin);
  4.  
  5. dwenguinoLCD.clear();
  6. dwenguinoLCD.print("Value = ");
  7. dwenguinoLCD.print(1023-val);
  8.  
  9. delay(100);
  10. }

Deze lus start met het aanmaken van een variabele val waarin we de uitgelezen sensor-waardes zullen opslaan. Daarna gebruiken we de meet-functie analogRead. Deze functie heeft één argument dat aangeeft welke pin we willen lezen. Hier lezen we de A0-pin die we hadden opgeslagen in de variabele analogPin. De output van de functie, dus de lichtintenisiteit, slaan we op in de variabele val.

Van zodra de waarde is opgeslagen in de variabele, schrijven we die naar het LCD-scherm. Waarom schrijven we 1023-val in plaats van de waarde van de sensor rechtstreeks op het scherm te schrijven? Lees aandachtig de details hieronder en probeer het antwoord zelf te vinden.

Van zodra de waarde op het scherm geschreven is, wachten we even en wissen de lijn opnieuw om ze klaar te maken vooraleer we de lus opnieuw doorlopen en opnieuw de sensor uitlezen.

Zoals je kan zien, is de code voor het uitlezen van analoge sensoren erg eenvoudig. Hieronder leggen we in detail uit hoe je de sensoren correct aansluit (hardware).

Je kan de Arduino IDE schets van dit programma terugvinden bij de Dwenguino-voorbeelden (Arduino IDE > File > Examples > Dwenguino > ReadAnalog).

De lichtsensor aansluiten

In deze sectie leggen we uit hoe je een analoge sensor kan aansluiten via het Dwenguino-uitbreidingsbord in combinatie met het Dwenguino-bord.

Onze lichtsensor bestaat uit een fototransistor en een weerstand. De fototransistor is een elektrische component waarin de elektrisch stroom een functie is van de hoeveelheid licht die op de sensor valt. De fototransistor lijkt op een LED maar hij werkt anders. Om de maximale stroom die door de transistor vloeit te beperken, moet je de fototransistor altijd gebruiken in combinatie met een weerstand die voldoende groot is, typisch meerdere kOhm (lees als kilo Ohms of duizend Ohm). Het doel is om volgend circuit te bouwen:

schematics light measurement

Plooi het langste beentje (de emittor) en het korte beentje (de collector) van de fototransistor zodanig dat je die in het Dwenguino-uitbreidingsbord kan inpluggen. Verbind het lange beentje met de "GND" van de connector op het Dwenguino-uitbreidingsbord. Als je niet zeker bent, kijk dan heel goed naar de figuur.

built-up

Het korte beentje plooi je naar 1 van de gaten op het Dwenguino-uitbreidingsbord. In een ander gat in dezelfde reeks, stop je 1 van de beentjes van de 22 kOhm weerstand. Voor de weerstand maakt het niet uit welk van beide beentjes je hiervoor gebruikt. Vanuit een ander gat in opnieuw dezelfde reeks, maak je met een draadje een verbinding naar pin A0 van het Dwenguino-uitbreidingsbord.

Het overblijvende beentje van de weerstand breng je naar een andere reeks gaatjes in het Dwenguino-uitbireidingsbord. Van daaruit verbindt je het met een draadje ---typisch een rood draadje--- met één van de "5V" pinnen op de connector van het Dwenguino-uitbreidingsbord.

Controleer of jouw circuit overeenkomt met het schema en met de figuur. Als dat het geval is, dan kan je het bord programmeren en jouw circuit uittesten. Als je jouw hand beweegt boven de fototransistor dan zou je de waarde op het scherm kleiner moeten zien worden. Omgekeerd: als je een lichtbron laat schijnen op de fototransistor dan gaat het getal op het scherm omhoog.

Veel plezier met jouw licht-detector!

Bijkomende uitleg over het Dwenguino-uitbreidingsbord

Met het Dwenguino-uitbreidingsbord kan je het Dwenguino-bord makkelijk uitbreiden met heel wat elektrische componenten. Hierdoor kan je makkelijk een elektrisch circuit testen samen met de microcontroller. Het breadbord op het uitbreidingsbord bevat meerdere rijen van gaatjes waarin je elektrische componenten kan pluggen zoals weerstanden, transistors of chips, zonder solderen. De gaatjes zijn rij per rij elektrisch met elkaar verbonden zoals op onderstaand schema:

How the Dwengo breadboard works

Zoals je kan zien, zijn er telkens rijen van vijf gaatjes met elkaar verbonden. De kloof in het midden, die niet verbonden is, is erg handig voor het plaatsen van LED's, IC's of andere componenten.

Het Dwenguino-uitbreidingsbord heeft bovendien een connector die compatibel is met Arduino. Die connector kan je gebruiken om jouw Dwenguino uit te breiden met een van de vele Arduino Shields of third party Arduino Shields. Onthoud echter dat Dwengo niet kan garanderen dat elk van die uitbreidingsborden compatibel zijn met Dwenguino. Controleer de compatibiliteit op het Dwenguino-schema. Als jij een bestaand shield hebt getest met Dwenguino, dan nodigen we jou graag uit om het ook te uploaden als Dwenguino user project!