Franzis-Verlag, 2009
Vorwort
Der PC ist heutzutage nicht mehr wegzudenken. Internet, Bilder und Musik, Radio, Fernsehen und Spiele sowie natürlich die Büroarbeit, all dies prägt den Alltag und wird in den meisten Fällen mit dem PC verbunden. Gleichzeitig wird der Anwender immer häufiger zum Konsumenten der Multimedia-Welt. Nur noch eine Minderheit programmiert selbst oder entwickelt eigene Hardware. Aber das muss nicht sein! Der PC kann nämlich noch viel mehr.
Messen, Steuern und Regeln sind die Schlagworte der industriellen Nutzung des Computers. Aber auch im Hobbybereich spielt die MSR-Technik eine entscheidende Rolle. Manch einer entwickelt Roboter, automatische Steuerungen für Haus und Hof oder elektronische Schaltungen oder Mikrocontroller-Systeme für unterschiedliche Aufgaben. Nur, wie findet man den Anfang? Wie lernt man den Umgang mit elektronischen Bauteilen oder mit eigenen Programmen? Dieses Lernpaket will den Einstieg erleichtern.
Kleine elektronische Schaltungen werden direkt am PC betrieben und von einfachen Programmen gesteuert. Alles, was man dazu benötigt, ist im Lernpaket enthalten. Sie brauchen nicht einmal einen Lötkolben oder eine spezielle Stromversorgung. Die kleine Experimentierplatine wird über den USB-Anschluss mit dem PC verbunden. Damit hat man zugleich eine stabile Spannungsversorgung mit 5 V und zahlreiche digitale Ein- und Ausgänge, die von geeigneten Programmen bedient werden können. Mit geringstem Aufwand lassen sich LEDs schalten, Schalter abfragen und Messungen durchführen. Die möglichen Anwendungen sind schier endlos.
Eine Reihe nachvollziehbarer Versuche vermittelt Ihnen die erforderlichen Grundkenntnisse im Umgang mit einfachen elektronischen Bauteilen und Schaltungen. Zugleich erfahren Sie etwas über die erforderlichen Programmiertechniken. Nicht zuletzt bauen Sie einfache Anwendungen, die nicht nur nützlich sind, sondern auch Spaß und Freude bereiten. LED-Blinker, Zeitschaltuhr, Reaktionstester und Lügendetektor, Lichtsensoren, Frequenzmesser und vieles mehr vermitteln Ihnen einen Eindruck von den Möglichkeiten der Mess- Steuer- und Regelungstechnik. Und wenn Sie die vorbereiteten Versuche durchgeführt haben, werden Sie viele eigene Ideen entwickeln und Anwendungen finden, die nützlich und vielseitig eingesetzt werden können.
Anspruchsvolle Anwendungen kommen oft nicht mehr mit einer direkten Nutzung der vorhandenen Portleitungen aus. Die übliche Lösung ist ein Mikrocontroller als Interface zwischen PC und Außenwelt. Im zweiten Teil des Handbuchs wird der Umgang mit einem Mikrocontroller ATtiny13 vorgestellt. Sie brauchen sich nicht unbedingt selbst in die Mikrocontroller-Programmierung einzuarbeiten, da fertige Anwendungen auf der CD vorliegen. Die USB-Experimentierplatine wird zum Programmiergerät für den Tiny13 und dient zugleich als USB-Brücke für die serielle Kommunikation mit dem Controller.
Programmieren Sie z. B. eine
universelle Interface-Software in den Mikrocontroller. Dann können kleine
VB-Programme über serielle Kommandos mit dem Interface kommunizieren. Nutzen
Sie auf diese Weise Ports, AD-Wandler und den PWM-Ausgang zum Messen, Steuern
und Regeln. Lernen Sie die Grundbegriffe der Mikrocontroller-Programmierung mit
Bascom, um Ihre eigenen Anwendungen zu entwickeln. Ein Blick auf die Hintergründe
der Schnittstellenprogrammierung und die RSCOM.DLL rundet das Thema MSR ab.
Inhalt des Experimentierhandbuchs:
1 Einleitung 9
1.1 Experimentierplatine 9
1.2 Sicherheitshinweise 11
1.3 Bauteile im Lernpaket 12
2 Vorbereitungen 19
2.1 Treiber 19
2.2 MProg 20
2.3 Änderung der COM-Nummer 24
2.4 Erzeugen der INI-Datei 30
2.5 VB5CCE 32
3 Digitale Ausgänge 35
3.1 PC-Schalter 35
3.2 LED-Blinklicht 37
3.3 LED-Wechselblinker 39
3.4 Metronom 40
3.5 Transistorprüfer 41
3.6 Blitzlicht 44
3.7 Zeitgeber 46
4 Digitale Eingänge 49
4.1 PC-Eingang 49
4.2 Berührungssensor 51
4.3 Lichtschranke 52
4.4 Ereigniszähler 53
4.5 Zeitmessung 54
4.6 Reaktionszeit 57
5 Analoge Messungen 59
5.1 Widerstandsmessung 59
5.2 Helligkeitsplotter 60
5.3 Messung des Hautwiderstands 62
5.4 Lügendetektor 63
5.5 Transistor als Temperatursensor 65
5.6 Spannungsmessung 66
5.7 LED-Spannung messen 68
5.8 Diode als Temperatursensor 69
5.9 Messbereichserweiterung 70
5.10 Spannungsplotter 73
6. Serielle Datenübertragung 75
6.1 Textübertragung 75
6.2 Übertragung von Steuerbytes 77
6.3 Universelles Terminalprogramm 78
6.4 Morse-Ausgabe 79
6.5 Morse-Decoder 81
7 Zeitkritische MSR-Anwendungen 83
7.1 Rechteckgenerator 83
7.2 Rechteckgenerator über TXD-Datenstrom 84
7.3 Pulsweiten-Modulation 85
7.4 PWM-Softblinker 87
7.5 Servosteuerung 88
7.6 Frequenzmessung 89
7.7 Kurzzeitmessung bis 100 ms 91
7.8 Logikanalysator 92
7.9 Triggerung 93
8 Mikrocontroller ATtiny13 95
8.1 Initialisierung 95
8.2 Programm-Upload 100
8.3 Integriertes Terminal 104
8.4 Bootloader 106
9 Interfacefunktionen 109
9.1 Nutzung der Ports als Ausgänge 109
9.2 Ports als Eingänge 111
9.3 Spannungsmessung 113
9.4 Lichtmessung mit Fototransistor 118
9.5 Oszilloskop 119
9.6 PWM-Ausgang 124
9.7 Schaltschwellen 129
9.8 Pullup-Widerstände 130
10 Interface-Anwendungen 133
10.1 Digitalvoltmeter und PWM-Ausgabe 133
10.2 PWM-Softblinker 135
10.3 Transistormessungen 136
10.4 Spannungsplotter 140
11 Firmware für den Tiny13 143
11.1 Bascom-AVR 143
11.2 Höhere Messgenauigkeit 144
11.3 Zusätzliche Ausgänge 146
11.4 Zweikanal-Servosteuerung 147
12 Die RSCOM.DLL 149
12.1 RSCOM.PAS 149
12.2 DLL-Code 155
A Anhang
A.1 Literatur 159
Grundlage des Lernpakets ist eine kleine Experimentierplatine mit dem USB/Seriell-Wandler FT232R. Sie erhalten damit die Anschlüsse einer seriellen Schnittstelle, allerdings mit etwas anderen Daten, nämlich mit TTL-Pegeln von 0V/5V statt der früher üblichen RS232-Pegel von ca. -12V/+12V. Zusätzlich liefert der USB auch eine Spannungsversorgung von +5 V, die Sie bis ca. 50 mA belasten können. Alle Anschlüsse sind über zweifache Präzisionskontakte erreichbar, in die direkt elektronische Bauteile gesteckt werden können. Zusätzlich besitzt die Platine ein kleines Experimentierfeld mit fünf Gruppen von je vier verbundenen Kontakten.
Die Stromversorgung am Pin VCC ist über einen Schutzwiderstand von 10 Ω mit dem Stromversorgungsanschluss am USB-Kabel verbunden. Falls Sie einmal versehentlich einen direkten Kurzschluss zwischen VCC und GND erzeugen, schützt dieser Widerstand den PC. Der maximale Strom ist auf 500 mA begrenzt. Für einen kurzen Moment hält der Schutzwiderstand die Belastung aus. Bei einem länger anhaltenden Kurzschluss würde der Widerstand wie eine Sicherung durchbrennen und dies mit einer kleinen Rauchwolke anzeigen. Das ist immer noch besser als eine Beschädigung am PC. Und Sie könnten mit etwas Geschick einen neuen Widerstand einlöten.
Der FT232R setzt die USB-Signale mit geringster externer Beschaltung in eine serielle Schnittstelle um. Damit hat man die serielle Sendeleitung TXD, die serielle Empfangsleitung RXD und die üblichen Handshake-Leitungen, darunter zwei Ausgänge und vier Eingänge. Die Software verwendet alle Leitungen wie eine normale serielle Schnittstelle. Dadurch werden nur sehr einfache Befehle benötigt. DTR 1 schaltet z. B. die Leitung DRT ein. Dass dabei im Hintergrund viele Softwareschichten durchlaufen werden, muss man weder wissen noch beachten, wenn es um die eigentlichen Anwendungen geht. Wer sich genauer mit der Software beschäftigen und die zahlreichen erweiterten Möglichkeiten des Chips nutzen will, dem sei das Buch „USB in der Elektronik“ [1] empfohlen.
Fernsteuerservos benötigen Steuerimpulse mit Impulslängen zwischen 1 ms und 2 ms. Die genaue Impulsdauer steuert die Servoposition. Zwischen den einzelnen Impulsen sollte eine Wartezeit von 20 ms liegen.
Abb. 7.9: Die PC-Steuerung eines Fernsteuerservos
Abb. 7.10: Die Ausgangsimpulse an TXD
Bei einer Übertragungsrate von 4800 Baud beträgt eine Bitlänge 0,2083 ms. Beim Senden der passenden Bytes lassen sich einzelne 1-Bits hintereinander legen, sodass Impulse der Länge 5 * 0,2083 ms = 1,04 ms bis 9 * 0,2083 ms = 1,88 ms entstehen. Damit sind fünf diskrete Positionen einstellbar, die stabil stehen bleiben.
Private Sub Command3_Click()
OpenString = "COM" + Text1.Text + ":4800,N,8,1"
i = OPENCOM(OpenString)
If i = 0 Then MsgBox ("Schnittstelle nicht verfügbar")
End Sub
Private Sub Option1_Click()
Dat = 5
End Sub
Private Sub Option2_Click()
Dat = 6
End Sub
Private Sub Option3_Click()
Dat = 7
End Sub
Private Sub Option4_Click()
Dat = 8
End Sub
Private Sub Option5_Click()
Dat = 9
End Sub
Private Sub Timer1_Timer()
If Dat = 5 Then Byt = 240
If Dat = 6 Then Byt = 224
If Dat = 7 Then Byt = 192
If Dat = 8 Then Byt = 128
If Dat = 9 Then Byt = 0
If (Dat > 0) And (Dat < 10) Then SENDBYTE Byt
End Sub
Listing 7.5: Das Erzeugen von
Servo-Impulsen