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.

Weblinks