No I2C device at address: 0x20

  • ok also ich versuche gerade ein mcp23017 zu nutzen ich habe ihn so wie hier angeschlossen (https://www.raspberrypi-spy.co.uk/2013/07/how-to…erry-pi-part-1/)

    und das ist mein code:

    und das der error code

    von daher das ich mich mit dem Thema nicht sehr gut auskenne hab ich erst gegoogelt und dann das hier versucht

    Code
    i2cdetect -y 1

    daraus kam

    Code
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:                         -- -- -- -- -- -- -- -- 
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    70: -- -- -- -- -- -- -- --                       

    und dann

    Code
    i2cdetect -y 2
    Code
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:                         -- -- -- -- -- -- -- -- 
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    30: -- -- -- -- -- -- -- 37 -- -- 3a -- -- -- -- -- 
    40: -- -- -- -- -- -- -- -- -- 49 -- -- -- -- -- -- 
    50: 50 -- -- -- -- -- -- -- -- 59 -- -- -- -- -- -- 
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

    schlauer wurde ich daraus aber auch nicht also ich weiß nicht ganz was ich von hier aus machen kann

    bedanke mich für jede hilfe schonmal im vorraus

  • Moin Nils_8214,

    und du hast die Pins 15-17 des MCP23017 auch an Masse gelegt?

    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Hallo,

    Pin18 auch wirklich über einen Widerstand 10K auf VC geklemmt ? Am Chip selber nachmessen, ob dort die gleiche Spannung wie an Pin 9 anliegt. Dazu einfach mit einem Mutimeter gegen GND Pin 10 messen.
    Wenn das alles nichts hilft noch einmal die Verdrahtung SDA und SCL / Pin 13 Chip zum GPIO2 PI und Pin 12 Chip zu GPIO3 PI überprüfen.
    Dann kannst du die Funktion des Chips, falls es wirklich ein MCP23017 und kein MCP23S17 ist, dahingehend überprüfen, falls du in Besitz eines Oszis bist. Dazu müsste eine kurzzeitiger Spannungseinbruch an Pin 20 des Chip zu registrieren sein, wenn du den Taster betätigst. Die Rückmeldefunktion an den Mikrocontroller funktioniert auch ohne angeschlossenen I2C-Bus. Dh. Ist der Taster nicht betätigt, liegt dort die gleiche Spannung wie an Pin 9 des Chips an. Mit der Betätigung des Tasters muss die Spannung dort kurz auf 0 Volt abfallen.

    Wenn in deiner /boot/config.txt keine abweichende Beschreibung des I2C-Bus steht, und es kein MCP23S17 ist, muss du den Chip über GPIO 2 und 3 unter BUS1 finden. Hier wäre ein vollständiger Auszug auf dieser Datei hilfreich.

    Da du so fröhlich und verliebt auf diesen Adafruiz Code setzt, hier gleich noch ein Dämpfer. Nur wenn der I2C Bus als Bus 1 geführt ist, funktioniert auch der Adafruit-Code. Dieser kann meiner Erfahrung nach nicht mit abweichenden Bus Nummer 0, 2 bis umgehen.

    Hier solltest du mal schauen, es gibt für diesen Schaltkreis auch verschiedene Codes bei Github, die auf SMBUS anstatt auf BOARD und BUSIO setzen. -> z.B. https://github.com/sensorberg/MCP23017-python

    Steffen.

  • I2C aktiviert ?

    Plus 3,3 Volt, GND, SDA, SCL angeschlossen ?

    Reset und Adresse auch ?

    Dann sollte bei i2cdetect eine Ausgabe kommen, sonst ist wohl was defekt.

    also ich habe bereits i2c im config aktiviert nutze 3.3 volt und habe jetzt merhmals geprüft das ich alles richtig eingesteckt hatte und auch schon ein anderen chip getestet also ist er nicht defekt

  • Hallo,

    Pin18 auch wirklich über einen Widerstand 10K auf VC geklemmt ? Am Chip selber nachmessen, ob dort die gleiche Spannung wie an Pin 9 anliegt. Dazu einfach mit einem Mutimeter gegen GND Pin 10 messen.
    Wenn das alles nichts hilft noch einmal die Verdrahtung SDA und SCL / Pin 13 Chip zum GPIO2 PI und Pin 12 Chip zu GPIO3 PI überprüfen.
    Dann kannst du die Funktion des Chips, falls es wirklich ein MCP23017 und kein MCP23S17 ist, dahingehend überprüfen, falls du in Besitz eines Oszis bist. Dazu müsste eine kurzzeitiger Spannungseinbruch an Pin 20 des Chip zu registrieren sein, wenn du den Taster betätigst. Die Rückmeldefunktion an den Mikrocontroller funktioniert auch ohne angeschlossenen I2C-Bus. Dh. Ist der Taster nicht betätigt, liegt dort die gleiche Spannung wie an Pin 9 des Chips an. Mit der Betätigung des Tasters muss die Spannung dort kurz auf 0 Volt abfallen.

    Wenn in deiner /boot/config.txt keine abweichende Beschreibung des I2C-Bus steht, und es kein MCP23S17 ist, muss du den Chip über GPIO 2 und 3 unter BUS1 finden. Hier wäre ein vollständiger Auszug auf dieser Datei hilfreich.

    Da du so fröhlich und verliebt auf diesen Adafruiz Code setzt, hier gleich noch ein Dämpfer. Nur wenn der I2C Bus als Bus 1 geführt ist, funktioniert auch der Adafruit-Code. Dieser kann meiner Erfahrung nach nicht mit abweichenden Bus Nummer 0, 2 bis umgehen.

    Hier solltest du mal schauen, es gibt für diesen Schaltkreis auch verschiedene Codes bei Github, die auf SMBUS anstatt auf BOARD und BUSIO setzen. -> z.B. https://github.com/sensorberg/MCP23017-python

    ich habe leider kein gerät um irgendwas davon zu testen habe aber ich habe alle kabel geprüft und ein zweiten chip getestet falls der eine defekt ist.
    noch etwas ist mir gerade aufgefallen also da steht mcp23017 -E/SP wenn ich das google kommt aber nur schaltpläne für mcp23017 ist das egal oder kann es daran liegen?

  • Soweit ich weiss ist der 017 I2C und der S17 SPI.

    Zur Not zum testen mal ein ganz anderes Gerät nehmen, wie ein ESP oder Arduino.

    Arduino und ESP:

  • Soweit ich weiss ist der 017 I2C und der S17 SPI.

    Zur Not zum testen mal ein ganz anderes Gerät nehmen, wie ein ESP oder Arduino.

    Arduino und ESP:

    ok danke ich werd das mal machen habe leider kein arduino hier wir haben aber in der schule welche also werde ich das mittwoch mal testen und dann gucken vielen dank für die hilfe bis jetzt

  • Moin!

    Ich zitiere mich auch gerne selbst....

    Moin Nils_8214,


    und du hast die Pins 15-17 des MCP23017 auch an Masse gelegt?


    73 de Bernd

    Ich stelle diese dumme Frage, weil mit diesen Pins die Adresse eingestellt wird.

    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Hallo,

    noch etwas ist mir gerade aufgefallen also da steht mcp23017 -E/SP wenn ich das google kommt aber nur schaltpläne für mcp23017 ist das egal oder kann es daran liegen?

    Das wird schon passen, wenn es drauf steht.

    Aber alle wichtigen Details stehen im Datenblatt. So auch die Hinweise bezüglich der Beschaltung der Pins 15-18 = A0, A1, A2 und Reset (invertiert). Deswegen hat dieser einen Strich darüber und sagt nichts anderes aus, als das an diesem Pin eine Spannung zwischen 0,8 * Versorgungsspannung VDD und VDD anliegen muss, sonst startet der Chip nicht und vollführt einen internen Dauerreset, was wiederun zur Folge hat, dass dieser Chip dann nicht vom RasPi erkannt werden kann.

    Falls du wirklich keine andere Möglichkeit in Form eines Meßgerätes hast, der Chip auf einem Steckboard steckt, dann nutze eine einfache LED, gleich welcher Farbe, natürlich mit einem Vorwiderstand um die 500 Ohm und teste die Verbindungen so durch:

    Ohne jetzt die Position des Vorwiderstands zu berücksichtigen Anode an Pin 18 und Kathode an Pin 10 - damit wäre sichergestellt das besagter Reset Pin auf High steht.

    Weiter dann Anode an Pin 9 und Kathode an Pin 10, würde die Versorgungsspannung testen.

    Anode an Pin 9 und Kathode nacheinander jeweils an Pin 15 - 17. Dabei aber nicht auf ide Kontakte des Steckboards vertrauen, sondern wenn du einen Zugang für Versorgungsspannung und Masse ermittelt hast, dann direkt an das Beinchen des Schaltkreises gehen.

    Wenn das alles durchgecheckt ist, und jedesmal die Test-LED aufgeleuchtet hat, dann wäre wie schon erwähnt der Auszug aus der /boot/config.txt wichtig. Diese kannst du mit "sudo nano /boot/config.txt" zur Anzeige bringen. Mich stört ein kleinwenig, die Tatsache das du nur auf dem I2C-Bus Nummer 2 eine Anzeige irgendwelcher Adressen bekommst, denn dieser ist meines Wissens nach vom Standard-Setup her gar nicht aktiv.

    Besser für weiter Arbeiten mit dem Raspi wäre dannn schon ein einfaches Multimeter, was es von Ebay, allen möglichen Elektronikversandhäusern, bis hin zu Discountern für unter 20 € zu kaufen gibt. Nur das du mal eine Spannung, einen Strom bis ca, 200 mA und auch mal einen Widerstand nachmessen kannst.
    Als werter Fehler wäre eine um 90 Grad verdrehte Anbringung / Montage des Tasters, wie auch ein zu geringer Widerstand am Taster (Pulldown) denkbar, der die Versorgungsspannung 3,3 V zusammenbrechen lassen würde.

    Steffen.

  • Moinsen,

    ich glaube der TO kämpft an drei Fronten zeitgleich.

    - zum Ersten - der auserwählte Controller (RasPi) macht nicht das was er will,

    - zum Zweiten - der IC MCP23017 verhält sich aus verschiedensten Gründen nicht so wie er es sich wünscht und erwartet

    - und zum Dritten - die fehlenden Meß- und Kontrollmöglichkeiten

    Dazu einige Worte, oder Hinweise als Einführung:

    - Steckboards sind immer eine trügerische Sache, wenn man über keine Meßmittel verfügt um an den Bauteilkontakten ein Spannung, oder einen Durchgang zwischen Bauteil und Bauteil zu überprüfen. Es gibt keine 100 %ige Gewährleistung das deine Drahtbrücken auch wirklich einen Stromfluß immer und ständig gewährleisten. Das beginnt bei den Kontakten der aufgesteckten Bauelemente selber, und endet bei den vielen Löchern auf dem Steckboard selber.

    - Bauteile wie gezeigt in #1 auf dem Schaltplan, hier dieser Printtaster angesprochen, hat nur in einer Orientierung wirklich Kontakt. Ansonsten muss man die Beinchen mit einer kleinen Spitzzange um 90 Grad vorsichtig verdrehen. Du kannst damit um ein Schaltsymbol ins Spiel zu bringen damit auch einen Kurzschluss erzeugen.

    Wenn dieser Taster um 90 Grad verdreht eingesteckt wird, und man nicht von außen erkennen kann, welche der Pin-Paar Ein- und Ausgang sind, dann ist der Zustand zwischen zwei Pins wie ein dauerhaft gedrückter Taster, der Stromfluß findet also permanent statt.

    - wenn du keine Möglichkeit hast, die Widerstände besonders den PullUp Widerstand am Taster nachzumessen, könnte es auch sein, wenn du diesen 10 kOhm mit einem der 330 Ohm Widerstände verwechselt hast, dass die Schaltung ein total abweichendes Verhalten zeigt. In Verbindung mit einem verdreht eingebauten Schalter hättest du einen Fast-Kurzschluss zwischen GPIO1 ( 3,3 Volt ) und dem GPIO14 ( GND = Masse ) welches Auswirkungen durchaus auf die Vc des Schaltkreises haben kann.

    -> mit ein paar oxidationsbedingten Kontaktschwierigkeiten, einem verdrehten Taster, plus einem Vertauschten Widerstand kann es durchaus sein, dass die minimale Vc ( Versorgungsspannung ) von 2,8 Volt für diesen IC gar nicht mehr an den Pins 9 und 18 des IC ankommt. Damit ist die grundsätzliche Funktion in Frage gestellt !

    Baustelle 1:

    Hier um das Rätsel um I²C1 und I²C2 aus i2cdetect aufzulösen, musst du uns verraten was in der /boot/config.txt steht. Normal ist nur I²C 1 aktiv. Die Ausgabe von i2cdetect -y 2 deutet eindeutig darauf hin, dass es hier schon eine Änderung über diese Datei gegeben haben muss, sonst würde der Fehler:

    Code
    Error: Could not open file `/dev/i2c-2' or `/dev/i2c/2': No such file or directory

    erscheinen.

    Baustelle 2:

    Wie hier schon mehrfach erwähnt wurde, wird über die Pins bezeichnet mit A0 bs A2 die Adresse für den I²C Bus eingestellt. Dazu müssen diese Pins entweder gegen GND oder Vc gelegt werden. Daraus ergibt sich die entsprechende Adressierungstabelle:

    Das heißt in der Summe, wenn die Pins 9 und 18 nicht mit der Vc von 3,3 = Pin 1 am RasPi verbunden und diese Spannung gemesssen dort nicht anliegt funktioniert der IC nicht. Zudem müssen die Pins 10, 15, 16 und 17 am IC mit der Masse des Raspi (Pin 6, Pin 9, Pin 14, Pin 20, Pin 25, Pin 30, Pin 34 oder Pin 39 ) verbunden sein, um ihn unter der Adresse 0x20 zu finden. Diese Pins haben alle das Masse Potential, und können wahlweise dafür benutzt werden.

    Wenn du dir mit den Widerständen gemäß Schaltplan nicht 100 % sicher bist, lasse den ganzen Klatterradasch aus Widerständen, LEDs und Taster erst einmal weg, und stelle zu 100% sicher, dass die Vc wie auch die Masse an den vorgesehenen Pins des ICs anliegt. Damit findest du erste einmal den IC am I²C Bus. Wenn du auch noch den Pin 12 des IC mit dem Pin 5 = GPIO 3 ( SCL ), und Pin 13 des Ic mit Pin 3 = GPIO 2 ( SDA ) des RasPi verbunden hast.

    und die letzte Baustelle - Nr. 3:

    Ohne ein geeignet Meßmöglichkeit eine Spannung zu messen, einen Widerstand ausmessen und kontrollieren zu können kommst du rein mit der optischen Überprüfung der Verdrahtung keinen Schritt weiter. Mit einem einfachen Multimeter, wie diesem, kannst du die wichtigsten Messungen ausführen. Viel mehr ist für den Anfang nicht notwendig !

    Es wäre schön, wenn du auf die gestellten Rückfragen auch entsprechend und passend antworten würdest, sonst kann dir hier wirklich keiner so richtig weiterhelfen. Denn wir haben alle keine :gk1:

    Franky

    Einmal editiert, zuletzt von Franky07 (14. Dezember 2022 um 05:07)

Jetzt mitmachen!

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