Laut Datenblatt verfügt ein XBee über sechs ADCs (Analog-Digital-Wandler): AD0 (20), AD1 (19), AD2 (18), AD3 (17), AD4 (11) und AD5 (15). In Klammern ist jeweils die Pinzahl am XBee angegeben. Der am Eingang ADx anliegende Spannungspegel wird in einen 10-Bit Datenwert umgewandelt. Ein Spannungspegel von maximal 3,3V wird in 1023 (0x3FF) Spannungsstufen (entspricht 10 Bit) und die 0 aufgeteilt. Die an Pin 14 anliegende Referenzspannung gibt dabei den maximalen Spannungswert an.
Als Referenzspannung nehmen wir in dieser Übung die 3,3V vom Arduino- bzw. Propeller-Board; ein 10k-Potenziometer liefert das analoge Spannungssignal für den ADC-Eingang.
Die Schaltung - Senderbaustein
Einstellungen der Sender-Konfiguration |
|
Material |
1x XBee-USB Adapter Board (z. B. von Fa. Parallax) 1x Steckbrett 1x Potenziometer, 10kOhm 1x Netzteil mit 3,3V - z. B. Arduino-UNO und Propeller Board of Education 1x USB Verbindungskabel diverse Steckdrähte 1x XBee Modul XB24 802.15.4 PCB Antenne oder ähnliches (die Produktlinie von XBee ist neu aufgelegt worden; das Nachfolgemodell des XB24 ist der XBee S2C 802.15.4 mit PCB Antenne) |
Aufgaben |
|
Die Schaltung - Empfängerbaustein
Einstellungen der Empfänger-Konfiguration |
|
Material |
1x XBee-USB Adapter Board (z. B. von Fa. Parallax) 1x Steckbrett 1x Netzteil mit 3,3V - z. B. Arduino-UNO und Propeller Board of Education 1x USB Verbindungskabel 1x XBee Modul XB24 802.15.4 PCB Antenne oder ähnlichen (die Produktlinie von XBee ist neu aufgelegt worden; das Nachfolgemodell des XB24 ist der XBee S2C 802.15.4 mit PCB Antenne) |
Aufgaben |
|
Die Übertragungsdaten werden im Terminalfenster von XCTU näher betrachtet. Dazu wird der Mittelabgriff des Potenziometers in eine beliebige Position gedreht und die vom Sender übermittelten Daten aufgenommen. In dem von mir durchgeführten Fall sehen die Daten wie folgt aus:
Die Bytefolgen wiederholen sich nach 16 Bytes (2 Samples pro Datenübertragung). Die Bedeutung der einzelnen Bytes in den umrandeten Rechtecken kennen wir bereits:
Die Aktivsignal-Bytes lassen sich über die nachfolgende Tabelle dechiffrieren. In HighA steht die Zahl 2 (binär 0b00000010) und in LowA die Zahl 0 (binär 0b00000000).
Aus der Tabelle ist zu entnehmen, dass nur der analoge Port A0 als Eingang aktiv ist, und alle digitalen I/O Ports D0 - D7 inaktiv sind. Es werden somit keine digitalen Signale vom Sender übertragen. An den Empfänger werden mit jeder Übertragung zwei 10-Bit Messproben gesendet. In dem hier vorliegenden Beispiel sind es zweimal 01 E4, das entspricht der Hexadezimalzahl 0x01E4 (binär: 0000 0001 1110 0100).
Der binären Zahl 0b1111001000 entspricht im Dezimalsystem die Zahl 484. Da ein 10-Bit AD-Wandler 1024 verschiedene Zustände zwischen 0 und 3,3V annehmen kann, entspricht einem Wert von 484 bei einer Referenzspannung von 3,3V ein Spannungswert von 484/1024 * 3,3Volt. Das ergibt einen Spannungswert von 1,7 Volt, voilá.
Mit einer leichten Abwandlung in der Sender-Schaltung lassen sich die gemessenen Spannungswerte in Abhängigkeit vom Lichteinfall mit Hilfe eines LDR übertragen. Dazu wird das bereits auf dem Steckbrett aufgebaute Potenziometer als Festwiderstand genommen (Schleifer in Mittelstellung) und ein LDR hinzugefügt.
Versuchsaufbau mit LDR
Diese Schaltung wirkt wie ein Spannungsteiler mit variablem Widerstand (LDR). Fällt wenig Licht auf den LDR, ist sein Widerstandswert hoch und die Spannung am AD0 Eingang des XBees steigt an, fällt dagegen viel Licht auf den LDR nimmt sein Widerstand stark ab, und entsprechend sinkt der Spannungswert am Messeingang. Zwei Messungen sollen das bestätigen.
Betrachte für die Auswertung die beiden gerahmten Datenbereiche. Sie umfassen wieder 16 Byte. Die beiden Datenpakete stehen vor dem letzten Byte in der gerahmten Reihe; das sind
bei viel Lichteinfall 00 6F und 00 69
bei wenig Lichteinfall 01 60 und 01 5F.
Die Bytes 0x00 6F werden in das unten stehende binäre Raster eingetragen.
Die daraus abzulesende 10-stellige Binärzahl 0b0001101111 entspricht im Dezimalsystem der Zahl 111, während die zweite Binärzahl 0b0001101001 der Zahl 105 entspricht. Umgerechnet in einen Spannungswert ergeben sich die Werte: 0,36 V und 0,34 V.
Für die beiden anderen Werte 0x01 60 und 0x01 5F ergeben sich nach der gleichen Umrechnungs-methode Spannungswerte von 1,13V in beiden Fällen.
Auf der Empfänger Seite schließen wir jetzt noch eine LED an, die um so heller leuchten soll, desto mehr Licht auf den LDR auf der Sender-Seite fällt. Dazu muss die LED mit Vorwiderstand von 220 Ohm an einen PWM-Ausgang des XBees angeschlossen werden. Es gibt davon zwei, wie ein Blick in das Datenblatt des XBees verrät, die über die Pin 6 und 7 angesteuert werden können. Dabei steuert die am Empfänger eintreffende Spannungsgröße das Tastverhältnis (Arduino UNO - LED, Abschnitt 7) der Puls-Weiten-Modulation oder PWM (Grundlagen - Pulsweite-Pulsfolge, Abschnitt 3) und damit die Helligkeit der angeschlossenen LED. Im Versuch benutzen wir Pin 6 (PWM0-RSSI).
Die LED-Empfänger-Schaltung mit PWM-Steuerung
Ergebnis
Auf der Sender-Seite kann die Empfindlichkeit der Licht-Sensorschaltung durch Veränderung des Widerstandes über den Mittelabgriff des Potenziometers verändert werden. Stelle die Empfindlichkeit so ein, dass die LED bei abgedunkeltem LDR (Daumen drauf halten!) gerade noch leuchtet.
Je nach Lichteinfall kann man jetzt eine unterschiedlich stark gedimmte LED beobachten. Es dauert immer ein oder zwei Sekunden, bis sich der Effekt einstellt, da die Sample-Rate auf 1s bei zwei Proben eingestellt wurde. Durch ändern der Rate am Sender-Modul kann die Reaktionszeit verkürzt werden.
Die meisten der hier durchgeführten Experimente gehen zurück auf Vorschläge von J. A. Titus, die er in seinem Buch The Hands-on XBee Lab Manual veröffentlicht hat.