I2C Adressierung

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Ich habe von Horter&Kalb den Repeater und eine Analogkarte .. erst mal nur zu Testzwecken .. gekauft.

    Der Repeater wird ja zur Spannungsanhebung benötigt, die Analogkarte benötige ich für eine Sollwertvorgabe 0-10V.

    Wenn ich den Befehl "i2cdetect -y 1" eingebe liefert mir die Tabelle lediglich die Adresse 0x48 (72dez).

    Die Karte hat aber die Adresse 144dez (0x90).

    Wenn ich die Karte vom Bus nehme findet er immer noch die 0x48, also gehe ich davon aus, dass es der Repeater ist.

    Aber wie komme ich in den erweiterten Adressbereich ? Gebe ich die Adresse 0x90 ein kommt immer die Fehlermeldung "out of range".

    Die Analogkarte wird mit Spannung versorgt, sowohl an den 5V, wie auch SDA und SCL gegen GND liegen 5V an.

    Vielleicht kann mir jemand da eine Hilfestellung geben. Vielen Dank.


    Gruß Thorsten

    Gruß Thorsten

  • Hallo Thor_Sten, willkommen im Forum!

    Das "Datenblatt" ist ohne Elektronik Vorkenntnisse nicht gerade sehr aufschlussreich, da eigentlich nichts erklärt wird.

    Die Punkte, die ich daraus heraus lese:

    • Der verwendete PCA9517 ist ein Levelshifter ohne eigene "Intelligenz" - Er wird sich also auf dem I²C Bus nicht aktiv melden, auch nicht mit 0x48.
    • Du musst die 5V extern anlegen, da die nicht vom PI durchgeschliffen werden - ich vermute das ist die größte Hürde! Im Bestückungsplan des Datenblattes ist dies (für mich unauffällig) mit "Hier 5V einspeisen" gekennzeichnet
    • Es sind bereits 4K7 PullUps drauf gelötet. Man muss also darauf achten, dass die verwendeten I²C Module nicht auch noch eigene PullUps verwenden, sonst könnte das dazu führen, dass die Module den Pegel nicht ausreichend nach LOW ziehen können.

    Anmerkung zum Board:

    Für mich macht das Board einen unausgereiften Eindruck, da man keine (einfache) Möglichkeit vorgesehen hat die 5V des PI zu verwenden und die PullUps zu (de)aktivieren - zB. mittels Lötbrücke oder besser Jumper. Die I²C Anschlüsse hätten ohne Probleme so freigestellt werden können, dass man die Klemmen auch auf der Oberseite hätte einlöten können. Der R5 für INT (der meist oft nicht benötigt wird) ist dazu gefriemelt und scheinbar nicht mal verlötet (nicht funktionsrelevant, deutet aber darauf hin, dass hier noch Verbesserungspotential gegeben ist). Und das "Datenblatt"...

    Trotzdem sollte das Board funktionieren, wenn man es richtig verwendet.

    ...wenn Software nicht so hard-ware ;) ...

    Freue mich über jeden like :thumbup:

    Einmal editiert, zuletzt von VeryPrivat (10. Oktober 2021 um 10:50) aus folgendem Grund: Hinweis der Klemmen bei I²C korrigiert: Diese werden/sind "unten" eingelötet.

    • Du musst die 5V extern anlegen, da die nicht vom PI durchgeschliffen werden - ich vermute das ist die größte Hürde! Im Bestückungsplan des Datenblattes ist dies (für mich unauffällig) mit "Hier 5V einspeisen" gekennzeichnet

    Da muss ich dich korrigieren.

    Das Bild von Dir zeigt die erste Version des Board, es gibt inzwischen eine V2.

    Dort setzt man die Lötbrücke LB2. Dadurch werden die 5V des Pi auch an den Bus durchgereicht.

    Gruß Thorsten

    2 Mal editiert, zuletzt von Thor_Sten (10. Oktober 2021 um 11:01)

  • Eigenartig, ich habe inzwischen auch heraus gefunden, dass es eine Version 2 gibt bei dem man die Lötbrücke verlöten muss. Ich habe dieses "Datenblatt" halt zuerst gefunden. Ich konnte ja nicht wissen, dass es eine neuere Version gibt und Du diese auch hast und (vermutlich) auch die Lötbrücke gesetzt ist...

    Ich nehme an, dass Du die Lötbrücke gemacht hast.

    Hast Du PullUps auf der Analogkarte und kannst Du die eventuell deaktivieren, damit diese nicht zusätzlich auf VCC ziehen?

    ...wenn Software nicht so hard-ware ;) ...

    Freue mich über jeden like :thumbup:

  • Es handelt sich um diese Karte .

    Die Jumper rechts sind für die Adressierung, die Jumper unten für die Pegelanhebung, damit 0-10V genutzt werden können.

    Habe die unteren Jumper aktuell entfernt, da nur eine 1,2V Batterie angeschlossen ist.

    Bei Abruf i2cget -y 1 0x48 bringt immer unterschiedliche Ausgaben.

    Gruß Thorsten

  • Dort setzt man die Lötbrücke LB2

    du hast doch das geschrieben und das Bild mit der roten Umrandung eingefügt! :conf:

    Kann denn niemand mehr sinngemäß im Kontext schreiben? :wallbash:

    die rote Einrahmung ist für den externen Spannungsanschluss. Die Lötbrücke ist rechts ziemlich mittig

    ah Salami Taktik.........ja solche Infos immer später posten, sehr beliebt!

    Wer wundert sich da noch das man immer weniger Lust hat zu helfen und sich zu äußern.

    Extendet I2C Adress Range braucht einen anderen Zugriff, ich könnte ja mal suchen und Links posten, aber wenn Fragen so schlampig gestellt werden und Postings so ohne nachzudenken reingeworfen werden........kein Bock!

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Das Bild ist vom Hersteller, der auch den roten Rahmen gesetzt hat als Hinweis für die externe Spannungsversorgung.

    Außerdem sieht man doch wohl, dass es sich dabei um keine Lötbrücke handelt und es steht dort ST3 dran und nicht LB2 ;)

    Das hat nix mit Salami-Taktik zu tun, da es hier lediglich um den erweiterten Adressbereich geht und nicht den Anschluss der Platinen.

    Gruß Thorsten

    Einmal editiert, zuletzt von Thor_Sten (10. Oktober 2021 um 12:54)

  • Das Bild ist vom Hersteller

    nö DU hast es hochgeladen und die Worte geschrieben aber red dich nur raus, alle anderen sind doof nur du bist perfekt und müssen sofort wissen was du meinst, so helfe ich gerne.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • jar: Könnten wir es bezüglich dem Spannungsanschluss bitte dabei belassen. Er ist neu und hat sich unglücklich ausgedrückt und dazu noch ein verwirrendes Herstellerbild hochgeladen. Die Sache ist ja mittlerweile geklärt.

    Bezüglich Salamitaktik gebe ich Dir (auch) recht: Man muss als hilfswilliger erstmals die Details erfragen - wie z.B. welche Hardware verwendet wird und ob die Lötbrücke gesetzt wurde (genau genommen noch immer nicht beantwortet). Aber mit unserer HIlfe sollte das besser werden...

    Habe die unteren Jumper aktuell entfernt, da nur eine 1,2V Batterie angeschlossen ist.

    :conf:? Wovon sprichst Du? Untere Jumper? Auf dem DAC Board "Datenblatt" ist doch keine Unterseite abgebildet? Und "unten" auf der Oberseite sind nur die 4 Jumper für die Einstellung der Adresse? Und wozu kann man hier eine 1,2V Batterie verwenden? Statt der 12V wohl kaum? Hast Du das etwa mit einem ADC verwechselt und möchtest die Spannung messen? :denker:

    Für uns ist es schwierig mit den Infos die Du uns zur Verfügung stellst zu helfen. Und alles erfragen ist halt wirklich anstrengend...

    Bei Abruf i2cget -y 1 0x48 bringt immer unterschiedliche Ausgaben.

    Was würdest Du erwarten und was kommt so?

    Übrigens ist 0x90 das Doppelte von 0x48. Ich glaube das hängt damit zusammen, dass das R/W Bit beim Raspberry nicht mitbetrachtet wird:

    Arbeitet man mit einem Arduino-UNO und der I2C-Bibliothek Wire.h, dann errechnet sich die korrekte Slaveadresse dadurch, dass die 7-Bit Adresse (1100_000 ohne das R/W Bit) des Slave um eine Position nach rechts (in Richtung des R/W Bits) verschoben wird (Abb. 6).

    cache_10171807.png?t=1505931817 Abbildung 6 - Die 7-Bit Adresse wird um eine Position nach rechts verschoben.

    Wie man Abb. 6 entnehmen kann, wird aus der Slaveadresse 0xC0 (dezimal: 192) durch die Verschiebung 0x60 (dezimal: 96).

    ...wenn Software nicht so hard-ware ;) ...

    Freue mich über jeden like :thumbup:

  • nö DU hast es hochgeladen und die Worte geschrieben aber red dich nur raus, alle anderen sind doof nur du bist perfekt und müssen sofort wissen was du meinst, so helfe ich gerne.

    Welche Laus ist Dir denn über die Leber gelaufen ?

    Wenn Dir die Art und Weise des Beitrags nicht passt, dann gib doch Deinen Senf einfach nicht dazu.

    Ich habe leider kein passendes Bild gefunden und sich jetzt daran aufzugeilen und Support zu unterlassen ist mehr als kindisch und lächerlich.

    Aber ich habe inzwischen auch ohne Deine Unterstützung die analogen Eingänge zum Laufen bekommen.

    Gruß Thorsten

  • VeryPrivat

    Der Fehler bei den analogen Inputs war der, dass auf der Analogkarte die Jumper JP3 entfernt waren und, so wie ich das verstanden hatte, diese nur gesetzt werden müssen, wenn der Pegel 2,4V nicht überschreitet. Ohne Jumper waren die Werte wie verrückt am springen, obwohl der Ain0 hätte einen konstanten Wert anzeigen müssen.

    Nun habe ich die Jumper drin und bei 10V werden 255 und bei 5V 128 angezeigt. Das haut jetzt also hin.

    Kopfzerbrechen macht mir der analoge Ausgang. Es liegen 12V Betriebsspannung für den LM324 an, aber ich bekomme immer konstant 10,7V raus.

    die übrigen Anschlüsse an ST2 beziehen sich alle auf GND. Von Aout+ gegen die anderen 3 Anschlüsse liegen überall die 10,7V an.

    Den Sollwert, den ich vorgebe kommt raus, aber physikalisch ändert sich nix am Messgerät.

    Am PCF8591 an Aout sind immer 1,78V, auch da ändert sich nix.

    Gruß Thorsten

    Einmal editiert, zuletzt von Thor_Sten (10. Oktober 2021 um 15:32)

  • OK, es gibt also die von Dir erwähnte "diese Karte" aus Beitrag #6 "I2C-ANALOG-OUTPUT 4 Kanal 0-10V 10 Bit" Karte UND eine Analog Eingangskarte!?. So was solltest Du (am besten im ersten Beitrag) erwähnen. Du sprichst "immer" nur von einer Analogkarte!

    Die 10,7V sind ein typischer Wert, für einen LM324 wenn er mit 12V versorgt wird, wenn er maximale Spannung ausgeben "möchte".

    Den Sollwert, den ich vorgebe kommt raus, aber physikalisch ändert sich nix. am Messgerät.

    Wo kommt der Sollwert raus? Wenn Du es nicht messen kannst, wo soll es dann raus kommen? Ich bin gerade so was von verwirrt :conf:. Bitte erklär doch mal was für Karten Du verwendest und wie die verschalten sind?

    Bis jetzt kenne ich:

    • Horter&Kalb den Repeater - VERSION2
    • I2C-ANALOG-OUTPUT 4 Kanal 0-10V 10 Bit (=DAC): diese Karte
    • Analoge Inputs die bei 10V den Wert 255 und bei 5V den Wert 128 liefern. Kann aber nicht von der DAC Karte kommen.

    Edit:

    Am PCF8591 an Aout sind immer 1,78V, auch da ändert sich nix.

    Wo sind jetzt die 1,78V her!? Ist der PCF8591 die (zweite) Analogkarte die Du uns so beharrlich verschweigst?

    PS: Ist bei Dir auch so schönes Wetter?

    ...wenn Software nicht so hard-ware ;) ...

    Freue mich über jeden like :thumbup:

    Einmal editiert, zuletzt von VeryPrivat (10. Oktober 2021 um 15:46)

  • Auf dem Pi Zero W steckt eine Karte zur Pegelanpassung von 3,3V auf 5V. Die Spannungsversorgung kommt vom Pi für den I²C durch die Lötbrücke LB2.

    Als Analogkarte verwende ich diese. Sie hat 4 analoge Eingänge und einen analogen Ausgang. Es ist die einzigste Karte am Bus.

    Ich habe einen NodeRed-Flow erstellt, mit dem ich die "Spannungen" anzeigen lassen kann, leider noch nicht direkt als Spannungswert, sondern nur als Zahlenwert, daher 255=10V und 128=5V.

    Die Karte hat den Anschluss ST4 für die 12V Versorgungsspannung und die Anschlüsse ST2 für die Ausgangsspannung. An Aout+ gegen GND messe ich immer 10,7V.

    Wenn ich per I2C-Out den Sollwert vorgebe (Adresse 72 bzw. 0x48, Command 68 und Byte 1) verändert sich nichts.

    Gruß Thorsten

  • Hm... also doch keine "diese Karte".

    Gut, das von Dir beschriebene Verhalten liese sich erklären, wenn Du Aout+ nicht mit S+ verbunden hast. Das ist nicht "zufällig" der Fall?

    12V an ST4 hast Du angeschlossen, oder?

    ...wenn Software nicht so hard-ware ;) ...

    Freue mich über jeden like :thumbup:

    Einmal editiert, zuletzt von VeryPrivat (10. Oktober 2021 um 19:12) aus folgendem Grund: ST4 ist kein Jumper für GND sondern für die OPV Versorgung => Frage korrigiert...

  • Hm... also doch keine "diese Karte".

    Gut, das von Dir beschriebene Verhalten liese sich erklären, wenn Du Aout+ nicht mit S+ verbunden hast. Das ist nicht "zufällig" der Fall?

    12V an ST4 hast Du angeschlossen, oder?

    Die Brücke zwischen S+ und Aout+ hatte ich drin, habe dann aber das Verhalten, dass der Ausgang "springt". Zum Zeitpunkt des Schreibzyklus hat der Ausgang ganz kurz eine niedrigere Spannung und springt dann wieder hoch auf die 10,7V.

    Schreibe aktuell alle 2s den Wert. Wenn ich den Intervall auf 10s setze sehe ich, dass er solange auf 10,7V bleibt, bis ich wieder schreibe.

    Kann aber auch nur maximal 127 schreiben anstatt 255. Sollwert bzw. Ausgangsspannung geht beim Setzen nie über 5V.

    Ja, 12V sind angeschlossen.

    Gruß Thorsten

    3 Mal editiert, zuletzt von Thor_Sten (10. Oktober 2021 um 19:29)

  • Also ohne die Brücke wird des gar nicht klappen.

    Was meinst Du mit "bis zum nächsten Schreibzyklus"? Wie lange ist das?

    Was ist wenn Du keinen "Schreibzyklus" machst?

    Was "schreibst" Du im nächsten Zyklus und warum und in welchem Abstand?

    Das klingt jetzt stark nach einem Fehler in der Software, wenn er den Analogwert ausgibt und danach "überschreibt".

    Hast Du die Befehle und das zugehörige Verhalten?

    EDIT/PS: Den letzten Beitrag vollständig zu zitieren ist ziemlich sinnfrei...

    ...wenn Software nicht so hard-ware ;) ...

    Freue mich über jeden like :thumbup:

  • Ich nutze Node-Red zum Schreiben (I2C Out des i2c contrib node). Dort gebe ich Adresse, Kommando, Byte und Wert vor.

    Für die Dauer von ca. 1s wird ein anderer Wert angezeigt und dann wieder die 10,7V.

    Habe es gerade mal mit i2cset -y 1 0x48 0x40 255 oder auch geringerem Wert gemacht und da stimmt alles.

    Scheint also wirklich an Node-Red zu liegen.

    Gruß Thorsten

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!