Es gibt einige Sensoren (z.B. Distanzsensoren, die mit
Ultraschall oder
Infrarotlicht
arbeiten) zu kaufen, die an ihrem Ausgang PWM-Signale
erzeugen. Diese sind nicht so leicht von eurem Controllerboard zu
lesen, wenn sie sehr schnell sind.
Also muss man sich etwas einfallen lassen, wenn man diese Signale
trotzdem zuverlässig messen will.
Grundlagen PWM:
PWM ist die Abkürzung für Pulsweitenmodulation.
Ein digitales Signal wiederholt sich mit einer festen Frequenz,
aber die Zeiten, wie lange das Signal auf HIGH und auf LOW steht,
ändern sich abhängig vom Messwert. So können
analoge Informationen auf digitalem Wege störungsfrei
übertragen werden.
Unter anderem verwendet euer Robotik-Controller auch PWM, um
die Motoren in verschiedenen Geschwindigkeiten anzusteuern.
Analoge Messung:
Die PWM-Signale werden mit einem Tiefpass in analoge Signale
umgewandelt und dann analog gemessen. Das funktioniert nur,
wenn das Tastverhältnis des Signals (HIGH-Dauer zu
Periodendauer) nicht zu niedrig wird.
Dieses Verfahren nutzt zum Beispiel der
I2C-Rundblick mini Pulsed
und der aktive Ballsensor für RCX.
Digitale Messung in Software:
Variante A:
Der Controller zählt genau die Zeit, wie lange das PWM-Signal
auf HIGH steht. Das funktioniert nur, wenn die Frequenz des
PWM-Signals deutlich niedriger als die Frequenz der Abfrage ist.
Variante B:
Der Controller schaut in regelmäßigen Zeitabständen
nach, wie das Signal gerade steht. Er zählt dabei die Häufigkeit,
wie oft das PWM-Signal auf HIGH steht. Dieses Verfahren funktioniert
auch dann noch, wenn die Frequenz des PWM-Signals höher als die
Frequenz der Abfrage ist.
Auf diese Weise arbeitet zum Beispiel der
I2C-Rundblick Mega.
Digitale Messung in Hardware:
Eine Elektronik zählt die Zeit, wie lange das PWM-Signal
auf HIGH steht. Das funktioniert auch noch bei sehr hohen
Frequenzen des PWM-Signals. Es erfordert aber einigen
Aufwand, um eine solche Schaltung zu bauen.
Und man braucht noch etwas zusätzliche Elektronik, damit
der Controller nach der Messung die Messergebnisse abfragen kann.
Manchmal hat der Mikrocontroller schon Timer-Eingänge eingebaut,
mit denen man solche Messungen machen kann.
|
Hardware für Gold-Board:
Ich habe Platinen entworfen, die "huckepack" auf dem
Gold-Board aufgesteckt werden. Für die Analoge Messung
(siehe Foto links)
brauche ich alle digitalen und analogen Ports,
für die digitale Messung in Software (siehe
Foto rechts)
werden nur die digitalen Ports belegt.
Es können jeweils 4 Sensoren angeschlossen werden.
Prinzipiell kann man dasselbe auch mit dem Bobby-Board machen.
Dort muss man nur andere Stecker verwenden, und man kann die
selbstgebaute Elektronik nicht so praktisch "huckepack"
auf dem Board aufstecken.
|
|
Software für Gold-Board:
Damit das Ganze klappt, muss man tief ins "Betriebssystem"
eures Controllerboards eingreifen. Ich habe für die analoge
und für die digitale Variante die Dateien GoldBoard.cc
und GoldBoard.h umgeschrieben.
Die nötigen Programme:
Name |
Verwendung |
Bemerkungen |
PWM –> Analog: |
GoldBoard.h |
Bibliothek-Header |
Angepasst für PWM-Analog Messung |
GoldBoard.cc |
Bibliothek-Funktionen |
Angepasst für PWM-Analog Messung |
Gold_P2A_Test1.cc |
|
Einfaches Testprogramm zur Funktionsprüfung |
PWM –> Digital: |
GoldBoard.h |
Bibliothek-Header |
Angepasst für PWM-Digital Messung |
GoldBoard.cc |
Bibliothek-Funktionen |
Angepasst für PWM-Digital Messung |
Gold_P2D_Test1.cc |
|
Einfaches Testprogramm zur Funktionsprüfung |
Die Testprogramme benutzen ein LED-Display mit SAA1064 zum Anzeigen
der Messwerte. Dafür braucht man auch etwas zusätzliche Software.
Die könnt ihr in
Martin's Bastelstube, Teil X
herunterladen.
|
E-mail:
Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!