Hallo Community, ich starte derzeit mein erstes Projekt mit I2C. Jedoch habe ich ein Problem, dass mein Sensor nicht erkannt wird vom Raspberry PI. Jetzt wollte ich einfach in einer While Schleife im Abstand von 0.1ms das Acknowledge des Sensores überprüfen. Dass ich mit dem Oszilloskop messen kann ob der Sensor funktioniert. Der Sensor hat die Adresse 0x78. Leider finde ich im Internet nichts dazu, wie man dies realisieren kann, da das Problem wohl zu einfach ist. Ich arbeite mit der Programmiersprache C. Vielleicht hat ja hier jemand einen BeispielCode, den ich mir mal anschauen könnte. Schonmal danke im Vorraus. MfG Julian
Julian M. schrieb: > Der Sensor hat die Adresse 0x78 da gehts schon los, die Adressenbetrachtung ist ziemlich individuell der eine betrachtet nur die rechts geshifteten Bits 1-7, der andere nur die ungeschifteten Bits 1-7 ausgeklammert das R/W Bit solange du nicht weisst welche Guckweise und in der Software vorliegt hilft dir die Angabe nix. Aber am PI war mir so das der nur bis 0x75 in seiner LIB schaut, du müsstest die Adresse nach unten verschieben oder einen I2C Controller per SPI zwischenschalten http://www.forum-raspberrypi.de/Thread-i2c-adresse-0x78-ansprechen http://www.roboternetz.de/community/threads/46616-Problem-mit-I2C-Sensor-DRMOD-I2C-RVI http://www.instructables.com/id/Raspberry-Pi-I2C-Python/ on the Pi, and I was using his code ... larger flexible UI system I'm working on, which will allow i2c GPIO expander classes to be assigned to .... 0x62, 0x92, 0x92, 0x94, 0x78, !!!!!!!!!!! und keine 5V I2C an den PI
:
Bearbeitet durch User
Hat der auch wirklich die Adressen: 0111.1000 und 0111.1001? Oder sind es 1111.0000 und 1111.0001?
Amateur schrieb: > Hat der auch wirklich die Adressen: 0111.1000 und 0111.1001? > Oder sind es 1111.0000 und 1111.0001? 0xF0 und 0xF1 sind es bestimmt nicht, es ist (wie allgemein üblich) die Adresse 0x78 gemeint. Damit du es auch zukünftig weisst: 0b1111 0xxx ist für 10 bit adressierung reserviert... Und Adresse wird immer als 8 bit angegeben, aber bit 0 ist R/W bit, somit ist lesen immer auf ungeraden und schreiben immer auf geraden Adressen.
:
Bearbeitet durch User
Marc V. schrieb: > Und Adresse wird immer als 8 bit angegeben Ich habe schon I2C Code in beiden Varianten gesehen.
:
Bearbeitet durch User
Erstmal danke für die schnellen Antworten. Pullups habe ich hinzugefügt. Diese betragen 1,7kOhm wie vom Hersteller empfohlen. Wenn ich Durchmesse haben auch sda scl und vcc die richtige Spannung von 5V. Jetzt wollte ich testen ob wenn ich direkt etwas auf die Adresse 0x78 sende die Spannung bei SDA und SCL abfällt. Jedoch weiß ich leider nicht wie ich etwas auf eine Adresse senden kann. Da ich schauen will ob der Sensor überhaupt funktioniert.
Julian M. schrieb: > ich starte derzeit mein erstes Projekt mit I2C. Jedoch habe ich ein > Problem, dass mein Sensor nicht erkannt wird vom Raspberry PI. Per i2cdetect?
A. K. schrieb: > Marc V. schrieb: >> Und Adresse wird immer als 8 bit angegeben > > I2C-Libs halten es mal so mal so. Ja, aber im Prinzip ist es so: Adresse wird als 8 bit angegeben, davon sind die oberen 7 bit die tatsächliche Adresse und bit 0 ist R/W. Nun kamm irgendein Schlaukopf auf die Idee, da nur 7 bit gebraucht werden, warum auch nicht die Adresse als 7 bit darstellen ? Die oberen 7 bits prompt 1 Stelle nach rechts geschoben und rausposaunt, dass er jetzt etwas revolutinäres erfunden hat. Dass er dann beim lesen oder schreiben wieder nach links schieben muss, hat er in seinem Anfall von Genialität vergessen... Auch die anderen Genitalien aus demselben Verein haben das ohne viel nachzudenken übernommen und so geistert es heute noch unter uns...
Julian M. schrieb: > Pullups habe ich hinzugefügt. > Diese betragen 1,7kOhm wie vom Hersteller empfohlen. Wenn ich Durchmesse > haben auch sda scl und vcc die richtige Spannung von 5V was hast du an: Joachim B. schrieb: > !!!!!!!!!!! > > und keine 5V I2C an den PI nicht verstanden? der PI ist nicht 5V tolerant, ja man kannn den sogar an den Ports mit 5V killen, wenn das dein Ziel ist brauchen wir über dein I2C nicht mehr zu schreiben!
Zwischen den RPi-Generationen hatte sich die Zuordnung der Pins zur Nummer der I2C-Schnittstelle geändert (/dev/i2c-0 und /dev/i2c-1). Nicht dass du dauernd durchs falsche Fenster guckst.
A. K. schrieb: > Nicht dass du dauernd durchs falsche Fenster guckst. Ich glaube, dass er momentan an die Wand guckt und erst mal entdecken muss, wo die Fenster überhaupt sind. Julian M. schrieb: > Acknowledge des Sensores überprüfen. Dass ich mit dem Oszilloskop messen > kann ob der Sensor funktioniert. Der Sensor hat die Adresse 0x78. Leider > finde ich im Internet nichts dazu, wie man dies realisieren kann, da das > Problem wohl zu einfach ist. Ich arbeite mit der Programmiersprache C.
Marc V. schrieb: > Ich glaube, dass er momentan an die Wand guckt Das glaube ich aber auch Julian M. schrieb: > Der Sensor hat die Adresse 0x78. Leider > finde ich im Internet nichts dazu komisch ich finde verdammt viel zu PI und Sensor und 0x78
Joachim B. schrieb: > komisch ich finde verdammt viel zu PI und Sensor und 0x78 vielleicht das Ding hier: Beitrag "I2C Sensor Probleme"
ja, ich benutze i2cdetect -a 1 um bis 0x7F alle zu sehen. ich schaue durch das Fenster /dev/i2c-1. Einen anderen Sensor der die Adresse 0x77 hat kann ich auch ohne Probleme auslesen, jedoch ist dies auch ein 3,3V Sensor. Wenn ich das nun richtig verstanden habe, kann ich also einen 5V Sensor gar nicht mit dem Raspberry Pi verwenden?
Wenn der 5V-Sensor mit dem High-Pegel von 3.3V-I2C zufrieden ist, dann brauchst du nur Pullups auf 3,3V. Wenn nicht, dann einen Pegelwandler: https://www.mikrocontroller.net/articles/Pegelwandler#I2C-Bus:_gemeinsam_3.3V_und_5V PS: Ist der Sensor irgendwas obzönes, oder warum dürfen wir den nicht kennen?
:
Bearbeitet durch User
Der Sensor ist von der Baureihe AMS5812. Es ist ein Absolutdrucksensor. Hier ist das Datenblatt: http://www.amsys.de/sheets/amsys.de.ams5812.pdf Mein Raspberry ist von der Baureihe PI 3 mit Rasbian.
Mindestpegel für I2C Eingang 90% Vs. Das ist ungewöhnlich restriktiv. Ohne Pegelwandler wird das nichts.
:
Bearbeitet durch User
Habe das Problem nun gelöst indem ich einen 3,3V Sensor genommen habe. :) Habe mir aber den Thread zu den Pegelwandler durchgelesen, wenn ich es richtig verstanden habe könnte ich mithilfe eines 74hct125 einfach den 5V Sensor an einem Raspberry verwenden oder?
Julian M. schrieb: > könnte ich mithilfe eines 74hct125 einfach > den 5V Sensor an einem Raspberry verwenden oder? am I2C? ich wüsste nicht wie, der ist bidirektional und ein 74hct125 offensichtlich nur unidirektional. Es gibt Mosfet Levelshifter aber mit denen habe ich noch nie was gemacht. http://elinux.org/RPi_GPIO_Interface_Circuits Classic MOSFET level shifter
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.