Meten met de PC via de seriële poort.


Ik hoop niet dat ik met de kop boven dit verhaal de indruk wek een verhandeling over meettechnieken voor PC's te gaan houden. Omdat ik zelf destijds behoefte had aan een dergelijk schakelingetje en daar goede resultaten mee behaalde wil ik het niet aan anderen geïnteresseerden onthouden.
Jaren geleden vond ik in een MSX blad een artikel waarin stond hoe je vrij eenvoudig je MSX kon veranderen in een meetapparaat dat volgens de auteur niets voor een goede A/D omzetter onderdeed zolang je maar niet snel wilde meten. Ergens moet ik dat artikel nog wel hebben liggen maar het is al vrij oud, begin jaren 80. Het werkte met FET's. Later ben ik nog wat artikelen hierover tegengekomen en ik meende dan ook maar eens te moeten gaan experimenteren. Zelf had ik behoefte aan iets waarmee ik het verloop van een batterijspanning tijdens de ontlading wilde registreren. De verkrijgbare ADC kaarten vond ik nogal prijzig. Ik was toen niet geïnteresseerd in snelle metingen, een per minuut vond ik heel mooi, ik baalde ervan om steeds maar mijn voltmeter er op te moeten plaatsen en de aflezing op te schrijven. Ik ben uiteindelijk tot het onderstaande schakelingetje gekomen dat er zelfs wat ingewikkelder uitziet dan het is. Het leuke is dat het vrijwel niets aan onderdelen kost, een voeding heb je niet nodig, de schakeling trekt maar een paar milliampère, die ruimschoots door de seriële poort geleverd kan worden. Met behulp hiervan kun je 4 signalen meten en in een bestand opslaan om er later meer mee te kunnen doen. Snel is het niet, je kunt hooguit een meting per seconde doen, maar voor veel huishoudelijke proefjes blijkt dat vaak snel genoeg.
Hieronder staat de schakeling afgebeeld, deze vereist wel wat toelichting.

 

In feite kun je volstaan met een enkele OpAmp, zelfs met een 741 gaat het prima. In deze schakeling wordt gebruik gemaakt van twee LM324's, De OpAmps in de eerste LM324 worden gebruikt als spanningsvolgers, ervoor zit een spanningsdeler omdat de schakeling zelf maar spanningen kan meten tussen +5V en -5V. Hierdoor kunnen we tot +10V en -10V meten door in de software de gemeten waarden met 2 te vermenigvuldigen.
De schakeling werkt als volgt. Zodra de meting gestart wordt, wordt DTR hoog. Hierdoor ontstaat over de zenerdioden een spanning en gaat de condensator zich over de weerstand van 100K opladen.De spanning over de condensator wordt voortdurend met de ingangsspanning, welke zich op de andere input van de OpAmp aangesloten is vergeleken. Zodra de spanning over de condensator groter wordt dan klapt de uitgang van de OpAmp om. De tijd die verstreken is tussen het hoog worden van DTR en het omklappen is een maat voor de ingangsspanning, hoe langer dat duurt des te groter is de spanning. De spanning over de condensator neemt weliswaar niet lineair met de tijd toe, maar er bestaat wel een wiskundig verband tussen.We kunnen hiervoor dus corrigeren. Natuurlijk doen we dat niet zelf, daar hebben we immers de PC voor. Lineariseren wordt dat met een moeilijk woord genoemd. De gegevens die we voor dit proces nodig hebben verkrijgen we door het doen van een ijkmeting. Je sluit eerst geen spanning op de ingang aan en vervolgens een bekende spanning. Zonder zenerdiodes werkt de schakeling ook en kun je zelfs iets hogere spanningen aan, maar dit is gedaan om fluctuaties op de voedingsspanning van de PC te elimineren. Ook deze schakeling moet je ijken en daarvoor moet je de spanning weten over de zeners in beide richtingen. Nu is dat niet moeilijk te bepalen, je sluit 10V aan tussen de DTR ingang (N.B de schakeling mag daarbij niet op de PC aangesloten zijn!) en massa (GND). Vervolgens meet je de spanning over de zeners. Daarna de plus en min andersom op de schakeling aansluiten en opnieuw de meting uitvoeren.Met de plus op de DTR noteer je als de positieve zenerspanning en in het omgekeerde geval als negatieve zenerspanning. Beiden heb je nodig in de software.
De software is geschreven in TurboPascal.In de source van de programma's wordt ook nog een en ander toegelicht. Het zijn 3 programmaatjes, een om metingen per seconde uit te voeren, een om dit per minuut te doen en in het derde, tevens het grootste programma kun je het aantal seconden tussen de metingen ingeven. Voor diegenen die niet over een TurboPascal compiler beschikken heb ik de executables ook bijgevoegd. De naam van het .ZIP bestand is volt.zip
N.B. Je kunt een andere COM poort kiezen dan de hier gebruikte COM1, maar dan moet je dit wel in het programma aanpassen, anders werkt het niet. Het hexadecimale adres van COM1= 3F8, COM2=2F8, COM3=3E8 en COM4=2E8. Aangezien ik niet zo'n expert ben in Pascal heb ik niet een goede routine kunnen schrijven waarmee je de meettijd tussen de metingen in het programma op kunt geven. Misschien voelt iemand zich geroepen. Nogmaals, het is een eenvoudige schakeling, maar je kunt er heel leuk mee meten, het overtrof mijn verwachtingen eerlijk gezegd.