Ausgewählte Lösung |
<< ^^ >> |
<* Zur Ansteuerung der Sensoren wurde das Microcontrollerbord STM32F4Discovery verwendet, auf dem neben einem STM34F407VG-Prozessor mit ARM Cortex-M4-Kern unter anderem ein Programmiergerät, ein Beschleunigungssensor und ein Micro-USB-Anschluss zur Kommunikation mit einem Computer montiert sind.
Zur Programmieren des Controllers wurde auf das Echtzeitbetriebssystem ChibiOS/RT zurückgegriffe, da es die Einbindung der Peripherieeinheiten des Microcontrollers erleichtert. *>
Das Microcontrollerboard STM32F4Discovery
Wie gefordert, wurde als integrierte Entwicklungsumgebung (IDE) die Software Eclipse verwendet. Diese dient dem Schreiben des C-Codes für den µController und bietet die Möglichkeit, das Echtzeitbetriebsystem ChibiOS einzubinden, sowie On-Chip-Debugging anzuwenden.
<* ChibiOS/RT ist ein Echtzeitbetriebssystem für Microcontroller, das unter anderem für den STM32F4Discovery optimiert wurde. Es ermöglicht eine vereinfachte Konfiguration und Kommunikation mit externen Geräten [...] *>
Auch eine Schnittstelle zur Kommunikation mit einem PC über USB kann sehr einfach realisiert werden, was von uns zum Übertragen der erfassten Daten genutzt wurde.
Für die Aufnahme der Messungen wurde ein ChibiOS-Projekt einer Vorgängergruppe angepasst. Es enthält einen Thread, der über einen virtuellen COM-Port mit dem Computer kommuniziert.
OpenOCD ist ein sogenanntes On-Chip-Debug-System (OCDS), welches die Entwicklung des Programmcodes durch Debugging auf der Hardware erleichtert.
Auf dieser Flachbaugruppe befinden sich die Battery-Fuel-Gauge-ICs, die mit unserer Software über I²C angesteuert werden sollen. Auf der Platine erkennt man für jeden Akku einen eigenen Bereich.
Die Flachbaugruppe mit den Akku-ICs
Die Anbindung an den IC erfolgt über die I²C-Schnittstelle mit folgenden Einstellungen:
Einstellung | Wert |
SCL (Serial Clock Line) | 400 kHz |
Master | STM32F4 |
Slave 1-8 | DS2786 1-8 |
Bitfolge | MSB zuerst |
Pull-Up-Rs | 4,7 kOhm |
I²C-Adresse des ICs (Factory) | 0x36 |
Adresse des Kapazitätsregister | 0x02 |
Hinweis: Wie sich bei der Inbetriebnahme der Flachbaugruppe herausstellte, liefert der DS2786 trotz korrekter Adressierung das Acknowledge-Bit nicht zurück, was auf einen Fehler der Flachbaugruppe hinwies:
Oszilloskop-Bild I²C-Telegramm (Battery-Fuel-Gauge-IC): kein Acknowledge-Bit (!)
Aus diesem Grunde wurde die Funktionalität unserer Software mit Hilfe eines anderen ICs (auf Breakout-Board) nachgewiesen. Die Wahl fiel hier auf den Beschleunigungssensor ADXL345. Die I²C-Kommunikation mit diesem funktioniert und es lässt sich ein Register auslesen.
Oszilloskop-Bild I²C-Telegramm (Beschleunigungssensor): Erhalt des Acknowledge-Bits
Um das Kapazitätsregister eines Battery-Fuel-Gauge-ICs auszulesen, wurde es notwendig den Fehler in der Hardware zu finden. Die Überprüfung ergab: Fehlende Masseverbindung zwischen IC-GND und µC-GND.
Nun konnten weiterführende Schritte vorgenommen werden, um die Register des
DS2786 auszulesen. Parallel dazu wurde ein Windows-Programm zur Anzeige der
Werte entwickelt:
Um eine serielle Verbindung des µControllers mit dem PC über USB herstellen zu können, benötigt man den Treiber für den virtuellen COM-Port. Diesen erhält man auf der Seite von ST: http://www.st.com/web/en/catalog/tools/PF257938
Nun ist man bereits in der Lage mit einer Terminal-Software (z.B. PuTTY) seriell zu kommunizieren.
Folgende Parameter werden zur Kommunikation verwendet:
Einstellung | Wert |
COM-Port | je nach System |
Baudrate | 9600 |
Parität | keine |
Datenbits | 8 |
Stoppbit | 1 |
Handshake | XOnXOff |
Das µC-Programm reagiert auf verschiedene Commands, z.B. "capacity", "voltage" oder "current", und antwortet mit dem auszulesenden Register.
Um das Auslesen des Registers auf einer benutzerfreundlichen Oberfläche zu ermöglichen wurde ein Tool in C# geschrieben, welches den Aufbau der Kommunikation loggt und den aus dem IC-Register gelesenen Wert umrechnet und ausgibt. Mehr Infos dazu auf der nächsten Seite: Programme
<* ... *> = Quelle: Projektgruppe "Defekterkennung", WS13/14