I 2 C Analog Porterweiterung
Mit Hilfe eines I2C Analog Digital Wandlers, wie z.B. dem PCF8591, kann man den Asuro auch mit 4 zusätzlichen Analog Ports erweitern. So kann man weiterhin die Liniensensoren verwenden, obwohl diese normalerweise durch die Verwendung als I2C Pins nicht weiter verwendet werden können. Man hat sogar noch 2 Analog Pins übrig um z.B. 2 analoge Entfernungsmesser Sensoren wie den Sharp GP2D12 daran anzuschließen. Es läßt sich sogar zusätzlich das I2C LCD Modul gleichzeitig mitverwenden, da dieses ebenfalls an den I2C Ports dranhängt. Dazu wird die Erweiterung auch wegen der Liniensensoren sinnvollerweise unter dem Asuro befestigt. Wenn man die WireWrap Stiftleisten eingelötet hat ist es kein Problem eine Erweiterung oben und eine zweite Erweiterung unten aufzustecken.
Schaltung
Die Schaltung besteht derzeit nur auf dem Labor Brett. Sie ist nach dem den Vorgaben aus dem Datenblatt aufgebaut.
Sourcecode
So sieht die Funktion zum Auslesen des PCF8591 aus. Verwendet wird die aktuelle AsuroLib.
#include "i2c.h"
#include "asuro.h"
#define pcf8591_address 0x90 // I2C Adresse des PCF8574
//liest einen ADC Wert vom PCF8591
unsigned char read_pcf8591_adc(unsigned char adc)
{
unsigned char ret;
unsigned char byte = 0;
ret = i2c_start(pcf8591_address+I2C_WRITE); // Sende Start Condition
if (ret == 0)
ret = i2c_write(adc); // Senden des Control Bytes startet die A/D Wandlung
i2c_stop(); // Sende Stop Condition, Bus freigeben
Sleep(10); // Warten bis A/D Wandlung benedet (mind. 90µs)
ret = i2c_start(pcf8591_address+I2C_READ); // Sende Start Condition
if (ret == 0)
{
// Mehrmaliges Lesen um alte A/D Werte zu ignorieren
byte = i2c_read(1); // Lese Byte + acknowledge
byte = i2c_read(0); // Lese Byte + no acknowledge
}
else ret = 3;
i2c_stop(); // Sende Stop Condition, Bus freigeben
return byte;
}
Video
Das Video zeigt den bestehenden Aufbau auf dem Laborbrett inklusive eines GP2D12 IR Sensors und 2 CNY70 Liniensensoren zusammen mit dem LCD Modul zur Anzeige der A/D Werte.
(:youtube _tjOV35eYJY:)
Weblinks
- PCF8591 - Datenblatt
- GoBlack.de - PCF891 Infos
- Youtube Video - Asuro LCD & PCF8591