Analoog- digitaalconversie: een lichtmeter

In deze tutorial maken we een tool waarmee je de hoeveelheid licht kan mee meten. Hiervoor maken we gebruik van een fototransistor die we aansluiten op het Dwengo-bord. Je leert hoe je analoge sensoren kan aansluiten op het Dwengo-bord en hoedat je de ingebouwde ADC-module (Analoog Digitaal Conversie) moet gebruiken.



Benodigdheden

  1. Een Dwengo-bord
  2. Een Dwengo-programmer
  3. De bijbehorende kabels
  4. Een fototransistor met bijhorende 22 kOhm weerstand, maar ook andere analoge sensoren kunnen gebruikt worden
  5. Eventueel een Dwengo-breadbord voor het gemakkelijk bouwen van je analoge schakeling en wat draadjes

Uitlezen van analoge sensoren

Het uitlezen van analoge sensoren is met behulp van het Dwengo-bord een eenvoudige zaak. We kunnen immers gebruik maken van de ingebouwde ADC-module (Analoog Digitaal Conversie) van de microcontroller, de PIC18F4550, die het Dwengo-bord gebruikt. Er zijn maar liefst 13 pinnen die gebruikt kunnen worden om analoge sensoren uit te lezen, op het schema aangeduid als AN0-AN12. De analoog-digitaal conversie gebeurt met een nauwkeurigheid van 10 bits.

Naast de reeds gekende basisbibliotheken laden we nu ook de dwengoADC bibliotheek in:

  1. #include <dwengoBoard.h>
  2. #include <dwengoConfig.h>
  3. #include <dwengoADC.h>

De hoofdlus start opnieuw met het initialiseren van het bord. Daarnaast dienen ook de ADC ingangen geïnitialiseerd te worden.

De hoofdlus starten we met het declareren van de variabele data waarin we de uitkomst van de ADC-conversie zullen in opslaan. Daarnaast doen we de nodige initialisaties voor het LCD-scherm. Vervolgens zetten we de achtergrondverlichting van het scherm aan.

  1. void main(void) {
  2. initBoard();
  3. initADC();
  4. backlightOn();

Vervolgens lezen we de huidige analoge waarde uit en schrijven dit naar het scherm met een interval van 250ms:

  1. while(TRUE) {
  2. clearLCD();
  3. appendStringToLCD("Light: ");
  4. appendIntToLCD(readADC(0));
  5. delay_ms(250);
  6. }

Vooraleer een nieuwe meetwaarde naar het scherm te schrijven, wordt het scherm gewist, en wordt de tekst "Light:" op het scherm geplaatst. Inlezen van de huidige analoge waarde van analoog kanaal 0 gebeurt eenvoudigweg met de functie readADC(0). Analoge waarden kunnen op die manier ingelezen worden voor kanalen 0 t.e.m. 4. De ingelezen waarde wordt onmiddellijk naar het scherm geschreven via de appendIntToLCD()-functie van de LCD bibliotheek. Tenslotte wordt er even gewacht vooraleer de volgende waarde uit te lezen.

Dankzij het gebruik van de dwengoADC bibliotheek is het uitlezen van analoge waarden zeer eenvoudig. In werkelijkheid gaan er diverse bewerkingen schuil achter de gebruikte functies. Een gedetailleerde beschrijving van deze bewerkingen kun je hier bekijken (terug te vinden bij de handige tips pagina).

Vooraleer je het programma kan testen, zal je een analoge sensor moeten aansluiten op pin AN0 van de microcontroller (pin A0 van de uitbreidingsconnector op het Dwengo-bord).

Aansluiten van de lichtsensor

In wat volgt leggen we uit hoe je een analoge sensor kan aansluiten op het Dwengo-bord. Je kan het Dwengo-breadbord gebruiken om de schakeling te bouwen. We leggen dit uit a.d.h.v. de fototransistor.

De fototransistor is een elektrisch element dat meer of minder stroom zal geleiden in functie van het licht. De fototransistor ziet er uit als een LED maar heeft dus een andere werking. Om de stroom door de transistor te beperken dien je deze steeds in combinatie te gebruiken van een weerstand van voldoende grootte, typisch een aantal kOhm. De bedoeling is de schakeling op het volgende schema na te bouwen op het breadbord:
schema lichtmeting
Plooi het lange beentje (de emittor) en het korte beentje (de collector) van de fototransistor zodat je het proper in het Dwengo-breadboard kan prikken. Het lange beentje dien je in een met "-" aangeduid gat te steken van de connector op het Dwengo-breadbord. Als je niet zeker bent, ga dit nauwgezet na op de foto.

Schakeling


Het kort beentje (de collector) prik je in één van de gaatjes van het Dwengo-breadbord en in een gaatje van dezelfde serie prik je eveneens één van de beentjes van de 22 kOhm weerstand. Eveneens van dezelfde serie gaatjes vertrek je met een draadje naar pin AN0 van de connector op het Dwengo-breadboard.

Het andere beentje van de weerstand prik je in een andere serie gaatjes waarvan je eveneens een draadje - typisch rood gekleurd - laat lopen naar één van de pinnen met "+" aangeduid op de connector van het Dwengo-breadbord.

Verifieer of je schakeling overeenkomt met het schema en de foto. Wanneer dit het geval is kan je je bord programmeren en de schakeling testen. Wanneer je je hand over de fototransistor houdt zal je zien dat de op de LCD-scherm weergegeven waarde groot wordt. Schijn je daarintegen met een lichtbron op de fototransistor, dan wordt de weergegeven waarde heel klein. Veel plezier met je lichtmeter!

BroncodeBronbestanden zijn enkel toegankelijk voor geregistreerde gebruikers. Als je al een account hebt op de Dwengo site, gelieve dan in te loggen, anders kan je je eerst registreren.