Forum: Mikrocontroller und Digitale Elektronik I2C Bus mehrere Sensoren


von Ersi (cell85)


Lesenswert?

Hi, ich würde gerne 3 Sensoren an einen I2C Port an dem STM32 hängen, 
geht das nach diesem Schema? 
http://www.esacademy.com/assets/images/hsbus.jpg

Die Sensoren haben eigenen Adressen und sollen jeweils mit 200khz 
laufen.

Brauch ich dann für den I2C Bus nur ein Pullup Paar oder was ist mit R_s 
gemeint ?

VG
Sven

von tja (Gast)


Lesenswert?

welche Sensoren, dann kann man dir auch die Frage mit Rs beantworten!

von Cyblord -. (cyblord)


Lesenswert?

Sven S. schrieb:

> Brauch ich dann für den I2C Bus nur ein Pullup Paar oder was ist mit R_s
> gemeint ?
Meist nimmt man nur ein einziges Paar.

gruß cyblord

von Ersi (cell85)


Lesenswert?

Gyroskop + Barometer + (Gyroskop + Beschleunigungssensor)

http://www.invensense.com/mems/gyro/mpu3300.html

+

LSM303DLHC von ST mit  L3GD20 von ST

+
Baro: http://www.meas-spec.com/product/t_product.aspx?id=8501

von Timmo H. (masterfx)


Lesenswert?

Zwei Pullups reichen aus.

PS: Wieso nimmst du anstatt des MPU3300 nicht gleich den MPU6050? Da 
hast du Gyro und Acc in einem Gehäuse.

Beim Barometer würde ich mir auch mal den MPL3115A2 ansehen. Da kannst 
du direkt die Höhe mit 30cm Genauigkeit auslesen. Ist echt ein geniales 
Teil und hält auch was er verspricht (man hat etwa "30-50cm Rauschen") 
Zumindest würde ich den Footprint so anpassen, dass du ihn anstatt des 
MS5611-01BA01 nehmen kannst, denn die sind fast Pinkompatibel und haben 
den gleichen Footprint. Zudem kostet der MPL3115A2 nur ~2,5€ (ach ich 
sehe gerade, du hast den ja laut deiner Aussage, hast mir aber nicht auf 
die PN geantwortet... naja nun sind meine ja auch gekommen)

Beim L3GD20 würde ich zusätzlich noch den zusätzlichen R und C für den 
L3G4200D vorsehen, man weiß ja nie... : 
http://www.st.com/internet/com/SALES_AND_MARKETING_RESOURCES/MARKETING_PRESENTATIONS/PRODUCT_PRESENTATION/l3gd20_l3g4200d_marketing_pres.pdf

Und bedenke dass der Acc vom LSM303DLHC nur 16 bit Output hat, nicht 
aber 16 bit Auflösung sondern 12 Bit. Würde da eher den MMA8451Q (14 Bit 
~1€) und zum MAG3110 Magnetometer für ~1€ raten.

von Ersi (cell85)


Lesenswert?

Vielen Dank Timmo!

beim MPU3300 hab ich ein test gegen den neueren MPU 9150 gemacht und per 
Matlab verglichen.

Der MPU3300 Gyro ist auf jedenfall vom Drift und vom Bias her besser.

Sind die MEMS von Freescale besser als die ST- Kombi ?

Wäre echt interessant, hab echt lange nich mehr bei Freescale 
vorbeigeschaut.

von Timmo H. (masterfx)


Lesenswert?

Sven S. schrieb:
> Sind die MEMS von Freescale besser als die ST- Kombi ?
Zumindest der Acc bzw. Acc Kombi von ST sind nicht so besonders. Hatte 
vor kurzem den LSM330 von ST (also eine Gyro/Acc Kombi) und der Acc war 
nicht sonderlich gut. Zum einen die Auflösung von 12 Bit und er war 
wackeliger. Da ist der Acc vom 6050 besser gewesen. Und der MMA8451Q 
scheint noch ein tick besser zu sein als der Acc vom 6050, zumindest 
soweit ich das bis jetzt erfassen konnte.
Der ST Gyro ist hingegen sehr gut. Der Drift ist (wenn man den Offset 
vorher mittelt und abzieht) sehr gering, geringer noch als der vom 6050. 
Problem ist nur dass die ST Gyros nicht Temperaturkompensiert sind. 
Sprich die Driftkorrektur arbeitet nur im gegebenen Temperaturbereich, 
wohingegen der MPU6050 scheinbar intern kompensiert ist.

Bin gerade dabei den temperaturabhängigen Drift zu erfassen um dann eine 
einfache Korrektur per Software zu machen. Mein Quadcopter kommt 
zumindest sehr gut mit dem Gyro zurecht.

Aber mit dem MPU3300 bist du ja Pinkompatibel zum 6050. Von daher kann 
man ja ein recht nettes Multi-Kompatibles Sensor Board draus machen.

von Ersi (cell85)


Lesenswert?

JA ich bastel gerade ein geniales Quattrocopter / IMU Baseboard mit 
STM32F4

Ich mach die Sensoren steckbar, deswegen die Frage mit dem Bus.

Du hast ein kleines kompaktes board und du kannst dann jedes halbe Jahr 
die Sensoren wechseln :D

Deswegen muss ich extrem auf die EMV und kurze Signalwege achten.
Ich hau auch WLAN und Ethernet und CAN drauf.

von Stephan W. (stipo)


Lesenswert?

Sven S. schrieb:
> Brauch ich dann für den I2C Bus nur ein Pullup Paar oder was ist mit R_s
> gemeint ?
R_s sind Serienwiderstände. Wozu die gebraucht werden, würde mich auch 
mal interessieren. Pullups braucht man aber nur 1x, da die ja die 
Leitungen auf High-Pegel halten sollen, wenn die Slaves ín einem 
undefinierten zustand sind.

I²C ist ein interesantes Protokoll, aber man braucht seine Zeit um es zu 
verstehen :) Bin auch noch nicht der Meister darin, aber komme derzeit 
schon ganz ordentlich damit klar.

von Ersi (cell85)


Lesenswert?

I2C ist ein nettes einfaches protokoll.

SPI ist besser!

von Cyblord -. (cyblord)


Lesenswert?

Sven S. schrieb:
> I2C ist ein nettes einfaches protokoll.
>
> SPI ist besser!

SPI ist einfacher, aber I2C benötigt nur 2 Leitungen bei bis zu 128 
Slaves. SPI benötigt immerhin mal 3 Leitungen + 1 pro Slave (wenn mehr 
als ein Slave). Ist schon ein Unterschied würd ich sagen.

gruß cyblord

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
Noch kein Account? Hier anmelden.