Forum: Mikrocontroller und Digitale Elektronik Einsteigerfrage: (STM32 ARM Cortex-M3) Firmware programmieren für IMU200 von Quantitec


von sam m. (skato)


Lesenswert?

Hi,
ich hab mir jetzt die IMU200 von Quantitec 
(http://www.quantitec.de/produkte/imu-ins/) gekauft (ohne Software etc. 
damit es bezahlbar für mich armen kerl bleibt).

Bild: http://www.quantitec.de/files/43141_pic.jpg
Beschreibung: http://www.quantitec.de/files/43141_desc.pdf

Leider konnte mir bisher keiner helfen bei der Frage wie ich am besten 
die Firmware programmieren kann bzw. bei der Frage welches Tool wäre 
denn geeignet und wie man am besten an die Sache rangeht etc.

Ich selbst kann ja relativ gut c/c++/c# programmieren und hab 
Erfahrungen mit dem HC12 von Motorola.
Jetzt liegt hier aber so eine IMU vor mir mit einem ARM-Cortex M3 
(STMF103ZET6) , welcher mir bekannt ist von STM32 Discovery Board das 
ich mal für eine kurze Zeit hatte und ein bissl die LED's programmieren 
konnte.

Ich verfüge über die 32K free ARM version von Keil und einem ST-Link 
Debugger mit dem ich über die SWD Schnittstelle schon mal die MCU mit 
beschreiben und löschen konnte.

Da ich die Basis Version des Boards gekauft hab ohne Software, Firmware, 
SDK etc. (weils dann 200 bis 600€ günstiger ist).
Hat die IMU200 hier keine Firmware aufm Chip und ich müsste laut 
Hersteller die Firmware selbst schreiben :( .
Ausser für die BT Schnittstelle gibts schon eine Beschreibung für die 
Firmware :).

Ich hab zu der IMU200 die Datenblätter und Manuals der Komponenten auf 
dem Board bekommen und die Schematic wo welcher Sensor wie angeschlossen 
ist.

-Ich würde gerne die Firmware schreiben und die open-source bzw. frei 
verfügbar machen, dann könnten alle ziemlich viel Geld und Zeit sparen, 
denn die IMU200 an sich hat echt ne super Hardware und ist redundant für 
den Preis geht das auf jeden Fall!

-Mit welchem Tool sollte ich das eurer Meinung nach programmieren? Die 
Header Files für die SPI, I²C, USB, etc. Schnittstellen und Funktionen 
gibts ja von ST und sind auch in Keil schon dabei.

-Ich würde auch gerne den USB Anschluss programmieren so das wenn er 
rangesteckt wird den namen der IMU anzeigt und dann als "Serial Device" 
ein virtuellen COM Port belegt.

-Erstmal würd ich halt gerne mal die Sensoren alle Softwaremäßig 
anbinden und die Datenauslesen können.

Ich hab zwei Stück gekauft, wenn jemand Lust hat sich an dem Projekt zu 
beteiligen wäre das cool :)

Hoffe ihr habt Tipps oder Empfehlungen wie man an die Sache rangeht.

mfg
Sven

von Alex E. (tecnologic) Benutzerseite


Lesenswert?

Hi sam,

Was kostet so eine Platine ohne Sw?

Wenn du n ST_Link hast nimm Attolic True Studio Lite da hast du keine 
Begrenzungen nur auf den ST-Link als Debugger.

Schau einfach mal in den STM32 Artikel hier da sind Beispielprojekte für
Attolic verlinkt.

MfG

Tec.

von sam m. (skato)


Lesenswert?

Hi,

danke ich probier Attolic mal aus.

Die imu200 kostet:
ohne SW 400€+mwst
mit fw sdk 600€+mwst
mit fw sdk + software 1000€+mwst
studi rabatt sind 35%

Die imu100 (nich redundant, ohne BT) kostet:
220€ incl. mwst mit FW auf inemo v2 Basis.


--> daher hab ich die imu200 ohne alles gekauft (für mein uav projekt?
wenn ich alles selbst gekauft hätte und pcb + layout würds viel mehr 
kosten und ich bräucht bt und nen starken prozzi.

vg
sven

von Alex E. (tecnologic) Benutzerseite


Lesenswert?

Hi Sam,

ich habe ähnliches in Planung, aber ich schnappe mir Playstation Move 
Controller, die Bais ist da auch n STM32F103 kostet aber bei ebay nur 
30E

Wozu redundante Sensorik rechnest du mit Beschuss? Generell Bin ich 
interessiert, ich kann aber erst im Juni wieder Zeit frei machen.

Kannst du mal die Sensoren Posten die da drauf sind und wie die 
angebunden sind? Analog oder Bus?

Die Genauigkeit würde mich auch mal interessieren, das ist der Nachteil 
bei dem Move Gerät die Sensorik ist Analog, es ist also max 12Bit, durch 
den ADC des STM möglich, wobei ich bezweifel das die Sensoren das 
hergeben.

Hast du dir eigendlich mal die Beispiele zu den Libs von ST angeschaut.
Bei dem USB Lib ist eines für VCOM dabei.

Vllt kann man die Demo Application von dem iMemo auf das Board ummünzen 
dann kaste auch die GUI von ST benutzen. Ich denke mal im Grunde ist da 
nur die Anbindung der Senoren anders.

Bleibt noch die Frage wie du die 2 Sensoren zusammen rechnen willst, wie 
beim Flugzeug mit 2 aus 3 kannste das nicht machen, Mittelwert ist auch 
unsinnig, Ich würde gleube ich 2 getrennte Beobachter bauen und die 
gegenseitig abgleichen. Da die so engbei einander sind kanste den 
temperatur drift usw. auch nicht kompensieren. Ist aber eine 
interessante Plattform.


MfG

Tec

von sam m. (skato)


Lesenswert?

Hi Tec,

die Sensoren  sind alle digital(i2c und spi) angebunden und haben 16bit 
(gyro und accel). Das coole ist das  alle Sensoren einen eigenen Port 
haben und nicht kaskadiert sind.

Die Sensoren sind:
Gyro's: Invensense ITG3200
Beschleunigung: STMicro LIS331DLH
Magnetometer: Honeywell HMC5843
Druck: BMP085 von Bosch
Bluetooth: Seeed Studio BT 2.0+EDR Modul


Redundant wegen meinem Filteralgorithmus den ich verwende, dieser 
benötigt zwei unterschiedliche Signale und nicht zweimal den gleichen. 
Das neurale Netzwerk teacht sich dann selbst ein wenn man das super 
genau kalibriert.


vg
Sven

von Alex E. (tecnologic) Benutzerseite


Lesenswert?

Hi Sven,

Uhh Neuronale Netze, mein interesse ist geweckt:) Ich hatte zwar bisher 
keine praktische berührung mit dem Thema habe aber ein paar interesante
Sachen dazu gesehen. Ich wolte das ganze mit Adaptiver Regelungstechnik 
angehen. also Zustandsraum Modell, und Adaptive anpassung des Models an 
geänderte Parameter, und den Regler an die Dynamik.

Aber dazu steht noch net viel in Matlab. Willst du das Netz direkt auf 
dem
STM rechnen?, was hat das Board für Ausgänge? also was kann man da 
anschließen?

Ich wollte mich im Juni an die Überarbeitung meiner Motorregler machen.

Zur zeit bin ich durch Bachelorthesis eingespannt.

Wie sieht der Fehler Algo. aus? Du Brauchst doch sicher Rauschen auf der 
Diferenz der Beiden Sensoren oder? Ich bin mir über den praktischen 
Nutzen
Von zwei Sensoren noch nicht klar.

Die Sensoren kenne ich so weit alles guter Standard. Was auf dem Move 
drauf ist mus ich noch mal bei Fixit.com nach sehen.

Der kleine RM2.0 Header oben links ist Jtag oder SWD?

Hast du Attolic mal aus probiert? Ich arbeite auf meinem STM3210B mit
Eclipse und Codesourcery aber nur weil ich den J-Link habe und keinen 
ST-Link.

Ich an deiner Stelle würde mir mal das Beispiel zum VirtualCom Port von 
ST
ansehen, wenn du die Schnittstelle hast dann kannst schon mal gut 
debuggen.


http://www.st.com/internet/evalboard/product/250367.jsp
Ich weiß gerade nicht ob man an die Source des INemo von ST kommt da ist 
ja
fast alles drin was du brauchst, wenn du die auf dem Ding zulaufen hast,
kannste das Neuro Netz drauf aufbauen.


MfG

Tec

von sam m. (skato)


Lesenswert?

Hi Tec,
du hast nich zufällig msn oder skype?

Das auf dem Board ist eine SWD Schnittstelle.
Ich hab es jetzt auch mit atollic ausprobiert und geht ganz gut.
Die VCOM Beschreibung hab ich mir gerade mal angeschaut und das inemo 
SDK hab ich jetzt auch, da steht ja sogar drin das man alles für sich 
verwenden darf und das ST im gegenzug aber keine Haftung übernmmt wenn 
irgendwas schief läuft :D

Ich denke so könnte man ja schonmal loslegen oder ?
1. VCOM => name "openIMU200" ^^
2. Auslesen der beiden Gyros und Beschleunigungssensoren
3. Auslesen des Magnetometer und des Drucksensors
4. Werte auf ein Register schreiben.
5. Eine C# Programm das auf die Register zugreift und die Daten auf ne 
logfile schreibt.
6. Einstellmöglichkeiten adaptieren (Abtastrate etc.)
7. Implementierung meiner Filter  etc.

Die Filter und Berechnungen will ich direkt auf dem STM32 machen weil er 
genug power hat.

Dann solls zwei Modi geben, Raw-Data und Filtered-Data.

Dann will ich das BT-Modul nutzen um eine verbindung zu einem I/O Board 
herzustellen oder zur drahtlosen Datenübertragung.
Oder das USB zur Schnittstelle an ein I/O Board mal sehen^^.

Ich bin ja selbst doktorand in der Bildverarbeitung und Sensorfusion 
daher ist es ja nicht so, dass ich bei null anfange. Das Windows 
Programm auf Visual c# basis mit TCP Server zum Data Sharing für andere 
Applikationen hab ich auch schon gemacht (war für ein anderes Projekt), 
das kann ich auch weitergeben.

wie gesagt ich versuch jetzt erstmal Schritt 1, aber jeder der will kann 
gerne mitmachen, ich hätte noch Hardware.

Zur redundanz: Mein Filter hat einen extended kalman filter der mit zwei 
unterschiedlichen signalen super ergebnisse liefern kann, gerade wenn 
ich so INS Geschichten mit doppelter Integration des 
Beschleunigungssignal durchführe.


vg
Sven

von Alex E. (tecnologic) Benutzerseite


Lesenswert?

Hi sven,

Ich hab dir mal ne PM mit meiner Skype Id geschickt.

Grundsätzlich hätte ich Interesse an der Hardware die ist mir nur etwas
teuer, da ich aber generell die gleiche Plattform benutzen will,
Helfe ich gern aus, ich bin zwar auch noch net lange mit den STM32 
unterwegs.
Aber die machen Spaß und werden immer billiger.

An EKF habe ich auch gedacht, aber ich muss mich da noch einlesen. 
Zuerst wollte ich meine Brushlessregler vernünftig aufbauen. Ich wollte 
das erst mal in Matlab machen, und dann auf dsPic oder STM jenach dem.

Zu deinem Plan, würde ich auch so machen. Wobei BT oder USB als
Interne Kommunikation zu aufwändig ist SPI würde ich da eher nehmen. I2C 
ist zu lahm, ich dachte vllt. auch an Can.

Aber erst mal das VCOM Beispiel zulaufen haben. Vllt habe ich ja mal 
Zeit das auf meinem Eval Board zu testen.


Bildverarbeitung ist gut, ich bin für das UAV noch auf n Kinect scharf, 
aber das dauert noch bis ich so weit bin. Erstmal die Bachelorette 
Fertig machen.

MfG

Tec

von sam m. (skato)


Lesenswert?

Wie ist das eigentlich mit FreeRTOS , würde sich das anbieten?

Die Kinect ist wirklich cool, ich hab mal vor ewigkeiten PrimeSens um 
ein evalkit gebeten aber bis heute kam nix zurück.

Ich werd mich jetzt mal an das vcom machen und mich an das inemo sdk 
halten.

btw inemo: ich hab noch 20 inemo v2 boards , also falls interesse 
besteht^^

vg
Sven

von Benedikt (Gast)


Lesenswert?

Hallo Sven,

sehr interessant. Ich habe auch ein STMšľ Projekt am laufen mit 
vergleichbarem Aufbau. Mich wuerde mal interessieren wie dein algo 
aussieht. wenn du viele matrizen verechnest incl. transponieren, dann 
frisst das doch viel zeit. wenn es dann noch zwei filter sein sollen. 
und nebenher noch deine ganye schnittstellen versorgt werden, dann wird 
es happig. was willst du denn fuer datentypen nehmen single oder double 
precision, float oder int?

Gruesse Benedikt

von Benedikt (Gast)


Lesenswert?

BTW, was willst denn fuer ein inemo haben?

von sam m. (skato)


Lesenswert?

Für ein inemo Board wollt ich 250€ kostet ja sonst 390€ zzgl mwst. Also 
denk ich das ich da ziemlich gut preislich liege.

Ja das mit den Filtern ist schon so ne sache, ich glaube das ich den 
ersten step erstmal damit beginne diese VCom schinttstelle zu 
realisieren, was mir noch nicht mangels zeit und knowhow gelungen ist.

ich verwende jetzt übrigens IAR EWarm. Da hatten wir noch eine Lizens 
von der Fa. die ich benutzen darf.

Ich such immer noch nach nem "Getting started" o.ä.
oDer wie ich die inemo firmware sdk's benutze.

ich benutze int's für die berechnungen. die algos in matlab haben 
seltenst ein double. die matrizen multi geht aber doch relativ schnell 
aufm cortex. vielleicht lager ich die aber erstmal auch in das win32 
programm aus.

mfg
sven

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.