I²C-Testschaltungen und Beispiele

Modelle zum Nachbauen oder wo gibt es etwas interessantes oder Projekte?

Moderator: Moderatoren

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5385
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: I²C-Testschaltungen und Beispiele

Beitragvon HaWe » 18. Jun 2014 11:04

hallo,
ich hab nochmal ein paar Fragen zu dieser Treiber-Vorlage (PCF8574 read ports, also als Touch muxer), die hier alle verwenden:

Code: Alles auswählen

int ReadPort(char PCF8574Port, byte PCF8574ID, char input)
{
    byte cnt = 0x02;
    byte I2CMsg[];
    byte inbuf[];
    byte Address = PCF8574ID;
    byte nByteReady = 0;
    int  result = -1;
    int loop;

    ArrayBuild(I2CMsg, Address);
    Wait(8);
    while (loop == STAT_COMM_PENDING)
    {
          loop = I2CStatus(PCF8574Port, nByteReady);
    }

    if (I2CBytes(PCF8574Port, I2CMsg, cnt, inbuf))
    {
        result = inbuf[1];
    }

    if( result == (result | (1<<input-1)) )
    {
       result = 0;
    }
    else
    {
       result = 1;
    }

    if(result==-1){
     TextOut(0, LCD_LINE1, "Error: Check the");
     TextOut(0, LCD_LINE2, "   connection!");
     Wait(500);
     ClearScreen();
    }
    return result;
}


speziell zu diesem Teil:

Code: Alles auswählen

    byte cnt = 0x02;
    //...
    //...
    if (I2CBytes(PCF8574Port, I2CMsg, cnt, inbuf))
    {
        result = inbuf[1];
    }
   
    //...


Meine Fragen:
warum ist hier
- cnt =2 ? (Ich lese doch nur 1 Byte!)
- warum steht das Lese-Ergebnis (1 Byte = 8 bits für alle 8 Toucher) result in inbuf[1] und nicht in [0] ?
- was steht in inbuf[0] ?

edit: hat sich geklärt.
PCF8574 antwortet erst mit acknowlege Byte [0], dann kommt das Data Byte [1]

Bernhard
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 41
Registriert: 6. Feb 2013 17:19

Re: I²C-Testschaltungen und Beispiele

Beitragvon Bernhard » 17. Jun 2015 17:23

Hallo Leute,

gibt es noch Interesse an den Platinen ? laufen auch am Arduino problemlos


Gibts als DIP16 (noch 4 Stück) oder als SMD-Version (8 Stück mit Datenleitung als Lötanschluss, 2 Stück mit NXT-Buchse)
Die DIP-Version ist rein für den OUTPUT-Betrieb (LED-Anschluss), die SMD Version kann als INPUT/OUTPUT verwendet werden, z.Bsp. Taster oder LED

bei Interesse bitte PN
Grüße

Bernhard
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 41
Registriert: 6. Feb 2013 17:19

Re: I²C-Testschaltungen und Beispiele

Beitragvon Bernhard » 21. Jun 2015 11:29

Angefangen hat es damit:
PCF8574-Platine01.jpg


DIP16 PCF8574 mit fester Adresse 0x40 (kann man aber unter dem Controller umlöten)
PCF8574-Platine02.jpg


Baugröße ist Legogemäß:
PCF8574-Platine03.jpg


An die Pfostenleiste können 8LEDs angeschlossen werden und mit dem entsprechenden Treiber von mir hier im Thread angesteuert werden.
Es kann auch ein 16-Adriges Flachbandkabel mit aufgespitteten Anschlüssen für Bananenstecker etc. aufgesteckt werden (HaWe hatte diese Lösung von mir bekommen) Natürlich können die LEDs auch direkt angelötet werden oder man erweitert per Transistor die Ausgänge.

Am Arduino habe ich diese Platinen ebenfalls mit dem 82K Pullup erfolgreich eingesetzt.

Bernhard
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 41
Registriert: 6. Feb 2013 17:19

Re: I²C-Testschaltungen und Beispiele

Beitragvon Bernhard » 21. Jun 2015 11:37

Der nächste Schritt war eine SMD-Version, die auch Digitale Eingänge liefern konnten. Pro Ein-/Ausgang gibt es drei Pins
Pin (1) und Pin (2) fungieren als Ausgang, Pin (2) und Pin (3) sind als digitaler Eingang (Taster) gedacht.
Die I2C Adresse läßt sich über die LötPads selber frei definieren.
Die erste Platinenversion war als Kabelanschluß für ein XNT-Kabel gedacht:
PCF8574-Platine04.jpg


Die letzte Version hat einen NXT-Plug Anschluss,da ich unzählige Stecker und Kupplungen dafür habe:
PCF8574-Platine05.jpg

PCF8574-Platine06.jpg


Grüße

Bernhard
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 41
Registriert: 6. Feb 2013 17:19

Re: I²C-Testschaltungen und Beispiele

Beitragvon Bernhard » 21. Jun 2015 12:10

Das Ätzen der Prototypen-Platinen hat mich zwischen 12 und 15€ das Stück(je nach Version) gekostet (weil Kleinstserie).
Ich gebe die Platinen unbestücke oder auf Wunsch komplett gelötet ab. Aufpreis für Bestückung und i2C-Address Einstellung sind dann 6,50 (incl. Bauelemente)

die einfache Version würde ich gerne als Einsteiger-Bausatz für 18€ anbieten. Darin enthalten:
- Platine
- PCF8574P IC DIP16
- 8 Vorwiderstände 470 Ohm
- 2 Pullups 82k
- Pfostenleiste
- Flachbandkabel ca. 20cm
- NXT-Stecker zum aufcrimpen

PCF8574 Bausatz.jpg


Zurück zu „Projekte, Showcase, Bauanleitungen“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 16 Gäste

Lego Mindstorms EV3, NXT und RCX Forum : Haftungsauschluss