Met dit project kan je aan de hand van een fotospectrometer bepalen welke vloeistof er zich
in
je proefbuis bevindt. De sensor zal de RGB-waardes aflezen en hierdoor kunnen leerlingen de
vloeistof bepalen die in hun proefbuis zit. We doen het dus op een vereenvoudigde manier
zodat
leerlingen niet de hoeveelheid vloeistof bepalen, maar enkel welke vloeistof er in de
proefbuis zit.
De afbeeldingen hiernaast zijn nog van een prototype dat op dit moment op punt wordt gezet.
Op dit moment niet verkrijgbaar via onze webshop.
Het omhulsel - de blauwe delen op de figuur hiernaast - bestaat uit onderdelen allemaal
gemaakt
met een 3D-printer. Er zijn een aantal belangrijke punten waar rekening mee moet gehouden
worden bij het ontwerpen van een omhulsel. Deze 3D-onderdelen zijn niet inbegrepen in het
pakket. Leerlingen moeten deze zelf ontwerpen en deze ontwerpen kunnen, op aanvraag, wel
geprint worden.
Ten eerste willen we zo veel mogelijk omgevingslicht vermijden. Dit licht
beïnvloedt de metingen en is op elke plaats op elk moment anders.
Vervolgens willen we zo veel mogelijk voorkomen dat licht, afkomstig van de LED’s,
rechtstreeks op de sensor schijnt. De LED's zijn de gele delen aangeduid op de figuur
hiernaast.
Hierdoor moet de afstand tussen de proefbuis en de sensor voor elke individuele
meting hetzelfde zijn. Kleine afwijkingen in deze afstand kunnen de resultaten sterk
beïnvloeden.
De sensor bestaat uit 64 verschillende fotodiodes. Hiervan zijn er 16 met een rode filter,
16 met een groene filter, 16 met een blauwe filter en 16 met een doorschijnende filter.
Afhankelijk van de waardes (1 of 0) op de S2 en S3 pinnen kan je selecteren welke fotodiodes
de sensor zal uitlezen. De witte LED’s branden altijd vanaf dat de sensor aangesloten is op
5V.
De gevoeligheid van de sensoren vind je terug in onderstaande grafiek, de sensoren zijn ook
gevoelig voor IR- licht. Je kan IR-licht ook meten als je IR-LED’s toevoegt aan het ontwerp.
Deze LED’s kan je dan aansturen met de overige digitale poorten van de Arduino.
Afhankelijk van de waardes (1 of 0) op de S2 en S3 pinnen kan je de maximale uitgaande
frequentie selecteren. Dit is afhankelijk van de kloksnelheid van de microcontroller om een
goed resultaat te krijgen. Voor een Arduino Nano selecteren we 20%, wat overeenkomt met S0:
1 en S1: 0. De functie PulseIn() van Arduino meet dan de tijd tussen twee 1 punten of twee 0
punten. De frequentie die de sensor uitstuurt is evenredig met de hoeveelheid licht de
sensor ontvangt.
In de code worden er een aantal optimalisaties gemaakt die ervoor zorgen dan er een stabiel
en eenvoudig te interpreteren resultaat wordt bekomen.
Bij het deel setup worden de waardes gekalibreerd. Tijdens het opstarten van de
Arduino steek je er een proefbuis met bijvoorbeeld water in, dit is dan de gemiddelde
waarde. Er zijn altijd stoffen die bepaalde lichtkleuren beter doorlaten dan water. Als je
er nadien een andere proefbuis in steekt, krijg je een waarde tussen 0 en 255 voor de
RGB-waardes waarbij 127,5 overeenkomt met water.
Telkens de pulseIn() functie van Arduino wordt gebruikt voor het timen van de halve
periode van de frequentie die de sensor uitgeeft, lezen we die waarde 3 keer uit met een
telkens een kleine pauze en nemen het gemiddelde van deze waarde. Kleine meetfouten die
optreden bij het uitlezen, worden zo voorkomen. De oorzaken van deze fouten kunnen we op
meerdere plaatsen zoeken, zoals de lage kloksnelheid van de Arduino of bijvoorbeeld een LED
die zeer kort net iets minder fel brandt.