Hallo,
ich habe mir diesen Stein heute mal zuegelegt, der natürlich keinerlei
Schaltplan hat und stolpere über das Datenblatt des Chips, der klar von
2.5V-3.3V Betrieb spricht.
http://www.ebay.de/itm/251964335134?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT
Nun finden sich im Netz jeweils hälftig beide Varianten: Vcc an 3.3V und
I2C über Pull-Up an 5V und auch an 3.3V. Mal mit I2C Level Shiter, mal
ohne.
Stellt sich mir die Frage: Hält dieses Modul es aus, wenn SDA/SCL über
einen Pull Up an 5V gehen und dann auf den I2C Bus des 5V uC? Open
Collector zieht ja nur gegen Masse. Vcc des ADXL Moduls würde ich an
3.3V hängen. Das Datenblatt sagt allerdings eindeutig Vs > Vdi/o.s,
schweigr sich aber aus ob das nur für SPI gilt und die Int Pins oder
auch für I2C.
Wäre gut, wenn diese Frage mit ja/nein beantwortet werden könnte.
5V ist tot schrieb:> 5V an den Pins geht nicht, betreibe deinen uC mit 3.3V und Problem> gelöst...
Geht nicht ....uC muss wegen anderer Peripherie 5V haben. 5V würden über
4.7k an den I2C Pins liegen. Und auch wenn kein Plan im ADXL Datensheet
drin ist, so war das bisher immer so, dass Pins zwei Clamb Schutzdioden
gegen Vcc und GND haben, über die Überspannung abfliessen kann. Diese
Dioden kann man als Pegelanpassung missbrauchen, wenn der Strom nicht zu
hoch wird. Die überschüssigen 2V würden über den 4.7k abfallen.
5V-3.3V/4.7k ~ 0.5mA. mehr wäre das nicht.
Aber das weiss ich eben nicht genau und einen Freischuss will ich nicht
riskieren. Testweise könnten die PU natürlich auch an 3.3V kommen, der
AVR gibt an seinen SDA/SCL Leitungen ja keine Spannung aus, der Master
zieht nur die Senke runter auf 0V, das ist I2C. Und solange 0.3xVcc und
0.7xVcc als Schwellen eingehalten werden müsste das klappen.
Ich probiers aus mit Pu an 3.3V.... aber heute nicht mehr.
Christian J. schrieb:
Testweise könnten die PU natürlich auch an 3.3V kommen, der
> AVR gibt an seinen SDA/SCL Leitungen ja keine Spannung aus, der Master> zieht nur die Senke runter auf 0V,
und will > 0,7 * Vcc als High Eigangsspannung haben.
P.S. 0,7 * 5 = 3,5
Christian J. schrieb:> Geht nicht ....uC muss wegen anderer Peripherie 5V haben. 5V würden über> 4.7k an den I2C Pins liegen. Und auch wenn kein Plan im ADXL Datensheet> drin ist, so war das bisher immer so, dass Pins zwei Clamb Schutzdioden> gegen Vcc und GND haben, über die Überspannung abfliessen kann. Diese> Dioden kann man als Pegelanpassung missbrauchen, wenn der Strom nicht zu> hoch wird. Die überschüssigen 2V würden über den 4.7k abfallen.> 5V-3.3V/4.7k ~ 0.5mA. mehr wäre das nicht.
Das ist so in Ordnung, aber nur die Hälfte der Wahrheit. Die Dioden
begrenzen den High-Pegel auf 3,3V plus Diodenspannung (der Strom ist
sogar geringer) aber der µC sieht auch nicht mehr. Wenn ihm das reicht,
könnte man die Pullups am I2C Bus auch gleich auf eine niedrigere
Spannung klemmen.
> Aber das weiss ich eben nicht genau und einen Freischuss will ich nicht> riskieren.
Kost doch auch kaum mehr als der Extrakäse auf der Pizza oder ein Kaffee
in Pappe.
MfG Klaus
5V ist tot schrieb:> P.S. 0,7 * 5 = 3,5
Grrr..... nerv! Da fehlen >0.2V zum Glück.
Wie gesagt, ich probiers aus, mit 3.3V und 5V an den PU. Manchmal
funktionieren Dinge auch abseits des Datenblattes, nur halt nicht über
den gesamten Temp.bereich oder mit maximaler Geschwindigkeit. Wenns
raucht gibts eben eine Pizza Margaritha statt Procuitto.
Für die SCL Leitung ists eh wurscht, da wird ein 1k oder so in der
Leitung reichen.
NXP hatte auch mal eine trickige Schaltung mit 2 Transistoren
veröffentlicht (oder wars noch Philips?), die bidirektional 5 auf 3,3V
wandelt und speziell für I²C gedacht war.
Ich finde das Dings bloss nicht mehr.
Matthias Sch. schrieb:> Ich finde das Dings bloss nicht mehr.
Guckst du hier:
http://playground.arduino.cc/Main/I2CBi-directionalLevelShifter
"Connecting the 5V Arduino directly to a single 3.3V-powered I2C chip
usually works, even though it violates official specifications in
multiple ways. In practice, Arduino's internal pullups are so weak that
ESD protection diodes inside the 3.3V chip limit the voltage."
Hallo,
alles halb so wild. Das Ding spielt einwandfrei bei PU an 3.3V mit einem
I2C Bus eines Arduino. Und da die TWI der Attinys ja normale Pegel hat
und keine I2c wird das Modul es da auch tun.
Vielleicht bin ich ja blöd aber wieso liefern die Module Werte völlig
verschieden von 0 wenn sie in Ruhe sind? Z sogar extrem hoch, nur bei
16G kommt was raus:
X = -333
Y = 158
Z = 1102
bei völliger Ruhe. Umgerechnet in g ist es auch nicht 0 sondern 4-5g
oder 40g bei Z.
Ich benutze die Adafruit Lib fürs erste, die spielt out of the box und
gibt noch einiges mehr aus mit dem Demo Sketch.
Komisch...
Rufus Τ. Firefly schrieb:> Ein PCA9517 würde ein "sauberes" Design ermöglichen.
Die Module sind schon mit PU->3.3V ausgeliefert und haben einen 3.3V
Regler drauf, der Vcc=5V ermöglicht. Vermutlich funktionieren sie
"haarscharf". Da ich aber keine echte I2C nutze, sondern einen normalen
Pin außerhalb der I2C Spec, dessen Schwellwert bei Vcc * 0.6 = 3.0V
liegt und damit ein eindeutiges Signal ermöglicht.
Jaja, nix für ein Industriedesign aber fürn Schreribtisch reicht es
ja....
Z = 1097 in Ruhe ist aber nicht normal und kann auch nicht per Offseet
korrigiert werden, da der nur 8 Bit hat. Vermutlich aber blicke da noch
was nicht richtig, werde mir mal das Datenblatt in ruhe durchlesen.
Christian J. schrieb:> Vielleicht bin ich ja blöd aber wieso liefern die Module Werte völlig> verschieden von 0 wenn sie in Ruhe sind? Z sogar extrem hoch, nur bei> 16G kommt was raus:
Herzlichen Glückwunsch! Du hast die Erdbeschleunigung entdeckt. 0/0/0
ist nur in der Schwerelosigkeit zu erwarten.
fchk
Frank K. schrieb:> Herzlichen Glückwunsch! Du hast die Erdbeschleunigung entdeckt.
Ach Mensch, halt mich nicht für blöde..... 1097 kann ja nicht sein und
44g ist die auch nicht. Diese blöde Lib ist viel zu kompliziert mit
ihren Floats usw. Habe mal das Full Precision Bit rückgesetzt und die
Welt sieht schon anders aus.
Ich vermute allerdings dass der Sensor fratze ist, mit einer reinen I2C
Lösung ohne Libs kommt auch Müll raus bei Z.
x: -166 y: 78 z: 511
x: -168 y: 79 z: 511
x: -168 y: 78 z: 511
x: -166 y: 78 z: 511
x: -168 y: 78 z: 511
x: -168 y: 79 z: 511
x: -167 y: 78 z: 511
x: -168 y: 78 z: 511
x: -168 y: 78 z: 511
x: -168 y: 78 z: 511
x: -167 y: 79 z: 511
x: -168 y: 79 z: 511
x: -167 y: 78 z: 511
x: -168 y: 78 z: 511
x: -168 y: 78 z: 511
x: -167 y: 79 z: 511
x: -169 y: 78 z: 511
x: -168 y: 78 z: 511
x: -168 y: 79 z: 511
PS:
Na, supi, mal wieder C-Ware au China!
Nachdem ich mit dem Chip im E-Labor war und wir da ne Runde drauf
geschaut haben ist die Sache klar: Es sind revisionen auf dem Markt, wo
die Z Achse defekt ist. Ihr Fehleroffset liegt weit ausserhalb der Spec
und ist daher auch nicht auf 0 korrigierbar. Das Modul kann nur bei +16g
betrieben werden. Mehrere Quellen im Netz belegen das.
Darüber hinaus hat es einen Lineraritätsfehler, rechnerisch ergibt sich
ein Wert von 1,3g an der Erdoberfläche. 1g wäre erlaubt. Das Datenblatt
lässt bei 1g maximal #282 als Ausgabewert zu, tatsächlich sind es aber
ca 320.
Der Chip hat den Datecode 3.2014 und wurde auf den Philipinien
hergestellt.
Ich vermute mal, dass wieder mal C Ware auf den Markt geworfen wurde,
für Spielsachen reicht es ja und für "Arduinos" :-(