Burkhard Kainka
Elektronica en Visual Basic experimenten met de PC
Uitgeverij Segment B.V. postbus 75, 6190 AB Beek (L)
Inhoud Voorwoord
.........................................7
1. Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2. Hardware en oefenmateriaal. . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3. Visual Basic basis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.1 De VB-ontwikkelomgeving . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.2 Aansturing van de seriële interface . . . . . . . . . . . . . . . . . . . . . 22 3.3 Een Verkeerslichtbesturing . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.4 Een knipperlicht/pulsgever. . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4. De uitgangen van de seriele interface . . . . . . . . . . . . . . . . . . . . 33 4.1 4.2 4.3 4.4 4.5 4.6 4.7
Technische gegevens. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Meting van de uitgangskarakteristiek . . . . . . . . . . . . . . . . . . . 35 Verbruikers aan de seriële interface . . . . . . . . . . . . . . . . . . . . 37 Transistor-schakeltrappen . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Wisselstroom-experimenten . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Stroomvoorziening voor een radio . . . . . . . . . . . . . . . . . . . . . 41 Aansturing van vier LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5. De ingangen van de seriële interface . . . . . . . . . . . . . . . . . . . . 49 5.1 5.2 5.3 5.4 5.5 5.6
Technische gegevens. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Inlezen van schakelaarstanden . . . . . . . . . . . . . . . . . . . . . . . 52 Een pulsteller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Een vierkanaalsteller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Een pulsgenerator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Frequentiemeting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
6. Analoge-waarde-metingen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 6.1 Meting van tijden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 6.2 Capaciteitsmeting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3
6.3 Verbetering van de resolutie . . . . . . . . . . . . . . . . . . . . . . . . . 65 6.4 Weerstandsmeting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 7. Metingen met sensoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 7.1 Lichtmeting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 7.2 Huidweerstand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 7.3 Temperatuurmeting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 8. Spanningsmeting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 8.1 8.2 8.3 8.4
Een AD-converter met behulp van een transistor . . . . . . . . . . . 77 Een voltmeter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Meetwaarde-plotter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Verbetering van de nauwkeurigheid . . . . . . . . . . . . . . . . . . . . 83
9. Digitale realtime toepassingen . . . . . . . . . . . . . . . . . . . . . . . . . 87 9.1 Een logic analyzer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 9.2 RC5-ontvanger met software-decoder . . . . . . . . . . . . . . . . . . 90 9.3 RC5-zender met behulp van de PC . . . . . . . . . . . . . . . . . . . . 96 10. Seriële dataoverdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 10.1 10.2 10.3 10.4 10.5 10.6
Nulmodem-verbinding . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Een universeel terminalprogramma . . . . . . . . . . . . . . . . . . 103 Onderzoek van seriële tekens . . . . . . . . . . . . . . . . . . . . . . 108 Eigen zend- en ontvangroutines . . . . . . . . . . . . . . . . . . . . . 112 Dataoverdracht met behulp van licht . . . . . . . . . . . . . . . . . 119 Analyse van pulslengtes op RxD . . . . . . . . . . . . . . . . . . . . . 122
11. Aansturing van de Windows-API in Visual Basic . . . . . . . . . . . 125 11.1 11.2 11.3 11.4
De module RSCOM.BAS . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Het programma IOtest2 . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Windows-tijdbesturing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 Een vierkanaals datalogger . . . . . . . . . . . . . . . . . . . . . . . . 134
12. Een RS232-DLL in Delphi. . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 12.1 Opbouw van een DLL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 12.2 RS232-functies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 12.3 Tijdmeetfuncties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 4
12.4 Een terminalprogramma voor twee interfaces . . . . . . . . . . . 147 13. Pulsverwerking via TxD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 13.1 13.2 13.3 13.4
IR-overdracht zonder externe modulator. . . . . . . . . . . . . . . 153 RC5-zender met behulp van TxD-pulsen. . . . . . . . . . . . . . . 157 Een PCM-sinusgenerator . . . . . . . . . . . . . . . . . . . . . . . . . . 159 PCM-geluidsweergave via de TxD-lijn . . . . . . . . . . . . . . . . 162
14. De universele interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 14.1 14.2 14.3 14.4 14.5 14.6 14.7
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 Acht digitale uitgangen . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 Acht digitale ingangen . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 Uitlezen van de AD-converter . . . . . . . . . . . . . . . . . . . . . . 171 Aansturen van alle in- en uitgangen. . . . . . . . . . . . . . . . . . 173 Een geheugenoscilloscoop. . . . . . . . . . . . . . . . . . . . . . . . . 176 Toepassen van een 10-bit converter TLC1549 . . . . . . . . . . 179
Appendix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 Literatuur
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Index
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
5
Voorwoord De basis voor dit boek was de cursus ,,elektronica met de PC“ uit Elektuur 9/2000 t/m 3/2001. Daaruit konden vooral de beginners informatie, hulp en praktische voorstellen voor experimenten halen, die nodig zijn om een eerste inzicht in zowel de elektronica als ook de mogelijkheden van het eenvoudige Windows-programmeren te verkrijgen. De cursus was bewust eenvoudig gehouden en zag af van buitensporig gecompliceerde schakelingen en programma’s. Tijdens de ontwikkeling van de cursus werden eenvoudige experimenten bedacht die praktische toepassingen van een knipperlicht tot en met een meetapparaat tot doel hadden. Uiteindelijk bleven echter vele toepassingen over, die buiten het bestek van de artikelserie zouden zijn gevallen, maar die zonder meer nog tot het onderwerp behoorden. Onderwerpen zoals logic analyzers via de seriële interface, infrarood afstandsbedieningen en seriele datacommunicatie zijn met hetzelfde gemak te realiseren en maken talrijke andere experimenten mogelijk. Tevens wordt hier nog dieper op de geheimen van de seriële interface-techniek ingegaan. Steeds weer werden er vragen gesteld, over wat er nu eigenlijk binnen in een DLL voor de aansturing van de seriële interface gebeurt. We hebben hier de gelegenheid aangegrepen om ook deze onderste laag van het Windows-programmeren te behandelen. De lezer wordt zodoende onafhankelijk van een voorgekauwde DLL, kan delen in zijn eigen programma’s overnemen of een DLL met nieuwe eigenschappen ontwikkelen. Het boek gaat hier veel verder dan de oorspronkelijke cursus. Er zal systematisch geprobeerd worden om de mogelijkheden en de grenzen van het programmeren met Visual Basic te doorgronden. Dit betekent echter niet, dat er bijzonder hoge eisen aan de voorkennis van de lezer gesteld worden. Er kan een heleboel met weinig moeite bewerkstelligd worden, als men van de voorhandenzijnde voorbeelden uitgaat, ze uitprobeert en naar eigen inzicht verandert. Burkhard Kainka http://home.t-online.de/home/B.Kainka
7