www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik NGW100 I²C, Ansteuerung eines Beschleunigungssensors (ADXL345)


Autor: qa729 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich habe vor mir ein Projekt, bei dem es gilt, mit dem NGW100 mittels 
I²C Werte von vier ADXL345 Beschleunigungssensoren auszulesen. Nun habe 
ich noch nie mit I²C gearbeitet, und leider kaum eine Ahnung wie genau 
dies vonstatten gehen soll. Was ich bis jetzt herausgefunden habe ist 
dass man besser die I2C-GPIO Funktionen verwenden sollte, da die 
Atmel-eigene Implementierung sehr mangelhaft sein soll.
Weiterhin sollte durch die Verwendung von I2C-GPIO eine freie Wahl der 
verwendeten Pins möglich sein, soweit ich es in Erfahrung bringen 
konnte.
Nun verwenden diese vier Sensoren alle die selbe ID, was ja bedeuted, 
dass sie innerhalb des Netzwerkes wohl nicht einzeln ansteuerbar sein 
werden.
Hier taucht meine erste grundlegende Frage auf: Kann man diese trotdem 
irgendwie auf einfache Weise ansteuern, oder sollte man einfach mittels 
ein paar Transistoren zwischen den einzelnen Sensoren TWI durchschalten 
(Sie werden nicht gleichzeitig benötigt)?
Weiterhin habe ich eben, da ich noch nie mit I²C gearbeitet habe, die 
Frage, ob mit jemand ein Beispiel der Ansteuerung eines solchen Gerätes 
geben könnte. Rein theoretisch müsste es doch nur zuerst ein Öffnen des 
I2C sein, daraufhin ein finden des richtigen Devices, dann ein paar 
Werte auf das Gerät schreiben (zum Einstellen des Sensors) und zuletzt 
die Werte der verschiedenen Achsen auslesen. Leider habe ich praktisch 
soetwas noch nie angewendet.
Im Grunde genommen wird dies der Hauptteil des Programmes, das von dem 
Controller erledigt werden soll, aufgrund der gemessenen Werte sollte 
dann nur noch ein Motor ein oder ausgeschalten werden, je nach dem vorab 
berechneten Wert. Also der Soll-Wert wird mit dem Ist-Wert verglichen, 
um dann den Ist Wert auf den Soll Wert zu bringen. Vom Prinzip her also 
einer Servo-Steuerung sehr ähnlich, nur sollen eben vier Motoren 
angesteuert werden. Diese Ansteuerung sollte aber wohl mittels GPIO kein 
allzu großes Problem darstellen.

Sollte also jemand bereit sein, mir Codebeispiele von I²C auf einem 
AVR32 Gerät zu senden, wäre ich demjenigen sehr dankbar. Auch für 
jeglichen weiterführenden Link wäre ich zudem dankbar!

Auf jeden Fall schonmal Danke im Voraus!

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich habe vor mir ein Projekt, bei dem es gilt, mit dem NGW100 mittels
>I²C Werte von vier ADXL345 Beschleunigungssensoren auszulesen. Nun habe
>ich noch nie mit I²C gearbeitet, und leider kaum eine Ahnung wie genau
>dies vonstatten gehen soll.

Da fällt mir ein alter Spruch ein:

Was nützen 10000V in den Armen wenn in der Birne das Licht
nicht leuchtet? SCNR;)

Autor: qa729 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verstehe wohl deine Aussage nicht ganz xD
I2C ist zwar neu für mich, aber wenn ich es nie versuche wird wohl nie 
irgendetwas damit zu stande kommen.
Also grundlegende Kenntnisse von I2C sind schon vorhanden, zum Beispiel 
wie es funktioniert und so weiter, nur eben habe ich es noch nie 
angewendet, ich habe nur theoretische Kenntnisse, und die nützen fast 
nichts...
Hat sonst keiner eine Hilfestellung zu dem Ganzen? Ich stehe einfach nur 
momentan irgendwie auf der Leitung, und die Dokumentation von I2C GPIO 
hilft mir irgendwie einfach nicht sinnvoll weiter... xD

Autor: AKKS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich geh mal davon aus dass du Linux drauf laufen lässt.

http://www.e-reflexes.de/oxy_blog/?cat=3
http://www.e-reflexes.de/oxy_blog/?tag=i2c-scanner
AVR32412: 32-bit AVR AP7 Linux TWI driver
AVR32408: 32-bit AVR AP7 Linux GPIO driver

Autor: Axel Krüger (axel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Prinzipiell brauchst du keine fertigen libs. Allein anhand des 
Datenblattes von zb den mega8 kann mal sich das schritt fuer schritt 
selbst zusammen wuerfeln. Beitrag "TWI / I2C einf. MASTER SLAVE Beispiel(Assembler) ATmega8"


Wenn die i2c slaves die selbe Adresse haben und du von diesen lesen 
willst, dann geht das nicht wenn die am selben bus haengen. (Eigentlich 
hat man an manchen ICs noch 3 pins die man extern auf high oder masse 
legen kann um zb die letzten 3 bits der adresse festzulegen.) Du 
muesstest dann die SDA Leitung von dem jeweiligen Sensor trennen.

Autor: qa729 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antworten! Die ersten beiden Links sind schonmal sicher 
sehr hilfreich, vor allem der I2C Scanner.
Was den zweiten Beitrag betrifft, hast du sicher Recht, man muss keine 
Bibliothek verwenden. Aber das ist doch wohl der eigentliche Sinn von 
Bibliotheken: Man kann sie verwenden, und sie ersparen viel Arbeit :)
Falls sonst noch jemand gute Links kennt, nur her damit :) Ich bin für 
jeden weterführenden Link sehr dankbar.
Das Beispiel mit dem Auslesen der Temperatur vom Attiny24 ist schonmal 
sehr nahe an meinem Anwendungsfall, das sollte mir auf jeden Fall sehr 
schnell weiterhelfen :)
Was das Ändern der Adresse betrifft: Es ist möglich durch setzen von 5V 
auf einen Pin die Adresse auf eine Alternativadresse zu ändern! Durch 
deinen Anstoß habe ich das Datenblatt nach soetwas durchsucht, und eben 
auch etwas gefunden.
Nun müsste ich nur noch zwischen 2*2 Sensoren wechseln, was nur 4 
Transistoren bedeuted, oder eben einfach mittels I2C-GPIO verschiedene 
i2c devices machen, die auf verschiedenen Ausgängen liegen (wenn ich 
dafür intelligent genug bin, wenn nicht, gibts ja immer noch 
Transistoren xD).

Auf jeden Fall Danke an Euch!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.