Was ist ein QTI Sensor? Kurz gesagt, ein Sensor, der hell von dunkel unterscheidet, mit dem man Objekt- und Mustererkennung durchführen kann. Ein Sensor, mit dem sich ein Linienfolger (Line Follower) bauen lässt.
Schaltungsaufbau
Einsatzmöglichkeiten
Die Abkürzung QTI ist ein Akronym und steht für Charge Transfer Infrared oder besser Q für Ladung, T für Transfer und I für Infrarot. Es beschreibt, wie der Sensor die Lade-/Entladezeit des Kondensators für eine skalierte Ausgabegröße nutzt, ohne einen zusätzlichen AD-Wandler einzusetzen.
In einer Anwendungsschaltung misst ein Controller die Entladezeit t des QTI Kondensators. Sie ist ein Maß für den Ladungsfluss durch den IR Fototransistor und ein Maß dafür, wieviel IR Licht von der Oberfläche reflektiert wurde.
Einige Objekte, wie zum Beispiel der schwarze antistatische Schaumstoff, in den die Elektroden empfindlicher IC-Bausteine gesteckt werden, reflektiert nur wenig oder gar kein IR Licht und kann vom QTI nicht sicher erkannt werden.
Wird an den Eingang White (auf dem Sensor mit W markiert) eine Versorgungsspannung zwischen 3,3V und +5V angelegt, dann fließt ein Strom durch den 470 Ohm Widerstand und die IR-LED (Abb. 2). Das von der LED an einer Oberfläche reflektierte Licht wird vom Fototransistor aufgenommen, der sich hier wie ein IR-gesteuerter Widerstand verhält.
In einem Vorversuch werden wir das Verhalten der folgenden Schaltung genauer untersuchen.
Schaltskizze
Vorversuch zum QTI | |
Material |
|
Aufgaben |
|
Das Programm Vorversuch.c
Wie arbeitet das Programm?
P6 wird OUTPUT und der Ausgang wird auf HIGH gesetzt. Anschließend tritt eine Pause von 1ms ein. In dieser Zeit liegen beide Anschlüsse des Kondensators auf gleichem Potential, mit der Folge, dass sich die Platten neutralisieren.
P6 wird auf INPUT gesetzt und die Funktion RC_TIME aus der Bibliothek simpletools aufgerufen. Am Eingang von P6 liegt jetzt eine 1. Die überschüssige Ladung auf der unteren Kondensatorplatte kann über den 100 kOhm Widerstand gegen Masse abfließen und der Kondensator entlädt sich. Der Widerstandswert beeinflusst, wie schnell sich der Kondensator entlädt.
Kleinere Widerstandswerte führen zu schnelleren Entladungen und kürzeren Messzeiten, höhere Widerstände entsprechend zu langsameren Entladungen und längeren Messzeiten.
Fällt der Spannungspegel unter ca. 1,45V, erkennt der Eingang des Propeller Controllers eine 0 und beendet die Messung, legt den Wert in der Variablen t ab und gibt den Zahlenwert anschließend im Terminal aus. Das zugehörige Oszillogramm zeigt die folgende Abbildung. Die waagerechte gestrichelte Linie markiert einen Spannungswert von ca. 1,47V (Grenze zwischen HIGH und LOW), während die beiden senkrechten Linien den Zeitbereich angeben, in dem der Eingang P6 des Controllers eine 1 erkennt.
Das Programm BS2_QTI1.bs2
Die Entladung des Kondensators kann über ein Oszillogramm sichtbar gemacht werden. Gleichzeitig erkennt man, dass die Pause von 1ms bei einer BASIC Stamp ca. 1,2ms lang ist. Das beeinflusst hier aber nicht die Ergebnisse.
Wie arbeitet das Programm BS2_QTI1.bs2?
Der Anschluss R am QTI ist Messeingang an P6 der BASIC Stamp.
Zeile 7
Anschluss W liegt an +5V. Mit R auf HIGH entlädt sich der Kondensator über den 220 Ohm Widerstand. Die für die Entladung vorgesehene Zeitspanne beträgt 1ms (Zeile 9).
Zeile 10
Der Eingang P6, der direkt mit R am QTI verbunden ist, misst die Entladezeit des Kondensators (Argument im Befehl RCTIME ist auf 1 gesetzt) und speichert den Messwert in der Variablen Dauer vom Typ Word ab.
Zeile 12 - 17
Anschließend erfolgt die Ausgabe des Messwertes im Terminal.
Über einem grauen Klebeband mit glatter mattglänzender Oberfläche ergibt sich bei einem Abstand von ca. 5mm ein Wert von 47. Über dem Klebeband des gleichen Herstellers mit gleicher Oberfläche aber gelber Farbe ergibt sich bei gleichem Abstand ein Wert von 21 und über einem dunklen Filzbelag ein Wert von über 600.
Der Schaltungsaufbau für das Prop-BoE und Prop-AB ist mit Abb. 4 identisch. Da der Propeller Controller in C oder SPIN programmiert werden kann, muss das Ansteuerungsprogramm neu geschrieben werden. Das nachfolgende Programm ist in SPIN-Code verfasst und greift auf die Objekte "FullDuplexSerial" und "RCTime" zurück, die wir beide in das Verzeichnis, in dem das SPIN-Programm abgelegt wird, kopieren. Die Daten des Sensors werden in diesem Beispiel über die serielle Schnittstelle übertragen.
Diejenigen, die lieber ein Prop-C Programm benutzen möchten, sollten sich das Programm Vorversuch.c aus Abschnitt 3 in den Editor übertragen oder, wenn es bereits abgespeichert ist, neu laden.
Versuchsschaltung mit Prop-BoE oder Prop-AB | |
Aufgaben |
|
Die zusammengefassten Inhalte der neu geladenen Dateien lassen sich über den Radiobutton Summary im Editor anzeigen.
Von den vier angebotenen Methoden im Objekt RCTime interessiert uns nur die Methode
mit den Parametern
Pin, State, RCValueAddress
Pin gibt den I/O Pin am Propeller Controller an, der mit dem Ausgang des Sensors verbunden ist (bei einem QTI die Leitung R).
State gibt den Status der Messung an; dabei steht eine 1 für die Entladung (der Sprung von HIGH nach LOW) und eine 0 für die Ladung des Kondensators (der Sprung von LOW nach HIGH).
RCValueAddress gibt die Adresse an,
Von den 11 angegebenen Methoden im Objekt FullDuplexSerial schauen wir uns die Methode
Start(rxPin, txPin, mode, baudrate) : okay
mit den Parametern
rxPin, txPin, mode, baudrate
etwas genauer an. Die Bedeutung der Parameter im Einzelnen:
rxPin Propeller Pin für die Rx-Leitung
txPin Propeller Pin für die Tx-Leitung;
es wird über die beiden Portpin rxPin und txPin ein serieller Port geöffnet
mode 4-Bit Wort, über das die Übertragung eingestellt wird; es bedeuten
Bit 0 -> invertiere rx, Bit 1 -> invertiere tx, Bit 2 -> open-drain/source tx, Bit 3 tx Echo an
rx ignorieren
baudrate Angabe der Baudrate; z. B. 9600 oder 115200
Das Programm SPIN_QTI1.bs2
Die Entladekurve des Kondensators zeigt das nachfolgende Oszillogramm. Die Methode rc.rctime enthält eine Lade-/Entladepause von 1ms, die im Oszillogramm erscheint. Bei einem Propeller Board entspricht dem Pegel HIGH ein Wert von 3,3V.
Für den Versuchsaufbau mit dem Arduino UNO gilt ebenfalls das Schaltbild Abb. 4. Bei der Verdrahtung muss sorgfältig darauf geachtet werden, dass die Versorgungsspannung mit der korrekten Polung an den QTI-Sensor gelegt wird. Ausgang R(ot) geht an den digitalen Port P6. Da P6 sowohl OUTPUT wie INPUT ist, wird der Pinmode nicht in der Methode setup(), sondern in loop() gesetzt.
Programm arduinoUNO_QTI1.ino
Die WHILE-Schleife wird solange durchlaufen, wie digitalRead(sensorIn) identisch 1 ist. Mit jedem Durchlauf wird der Zähler dauer um 1 erhöht.
Die in diesem Programm aufgerufene Funktion RCTime mit dem Rückgabewert dauer entspricht in ihrem Verhalten der BASIC Stamp Funktion RCTIME aus Abschnitt 3. Der Übergabewert ist R_Pin und mit dauer = 0 wird der Zähler auf 0 gesetzt. R_Pin ist zunächst OUTPUT und geht für 1ms auf HIGH. Nach Abb. 2 entlädt sich in dieser Zeit der Kondensator über den Widerstand 220 Ohm, da seine beiden Elektroden auf gleichem Potential liegen. Das zugehörige Oszillogramm sollte die Entladekurve eines Kondensators zeigen, die mal flacher (bei dunklem Untergrund und schwacher Reflexion) und mal steiler verläuft (bei hellem Untergrund und hoher Reflexion).
Im Oszillogramm ist die Verzögerungszeit von 1ms als Plateau gut zu sehen; mit dem Umschalten des Ausgangs P6 auf Eingang, setzt der Entladevorgang des Kondensators ein.