ARM cortex m3 BLDC-Motor Hall Sensoren via QEI auswerten

OP #3418426
Lesenswert?

Hallo,

ich bin kein Experte in Sachen Programmierung und µC und würde mich über 
jeder Hilfe freuen.

Es geht um folgendes, ich habe einen BLDC-Motor bei dem ich die Drehzahl 
anhand der integrierten Hall-Sensoren auswerten möchte.

Ich habe den Code für die Motor-Kontrolle bereits gefunden, blicke da 
aber nicht so richtig durch.

Mir geht es nur darum, die Flanken zu erkennen, zu zählen und daraus die 
Drehzahl zu bestimmen. Jetzt sind da aber noch viele andere Funktionen, 
die ich nicht brauche. Nur weiß ich nicht genau, wie ich es schaffe bzw. 
was ich alles löschen kann um nur die lpc17xx_qei.c im main.c laufen zu 
lassen.

Hat jemand einen Rat oder womöglich einen Lösungsansatz?

Ich bedanke mich im voraus!
Gast #3418460
Lesenswert?

Zum erkennen von Flanken reicht eigentlich ein normaler Pin der auf 
Eingang geschaltet wird. Die Berechnung der Drehzahl müsste über einen 
Timer erfolgen. Die speziellen Funktionen für ein Drehfeld brauchst du 
dann gar nicht.
OP #3418513
Lesenswert?

leluno schrieb:
> Zum erkennen von Flanken reicht eigentlich ein normaler Pin der auf
> Eingang geschaltet wird. Die Berechnung der Drehzahl müsste über einen
> Timer erfolgen. Die speziellen Funktionen für ein Drehfeld brauchst du
> dann gar nicht.

Vielen Dank für die Antwort.

In meinem Fall habe zwei Signale, um die Drehrichtung bestimmen zu 
können.
Und ich habe gelesen, dass der Quadratur Encoder dafür am besten 
geeignet ist.
Hast du zufällig einen Link, wo dein Lösungsvorschlag beschrieben wird?
#3418596
Lesenswert?

das ist ein einfacher Impulszähler:
1
//Messung Zeit für Durchfluss 1000l/h => 92 imps/sec
2
//Geschwindigkeit timer0 31 ticks/sec
3
p1_l_hou=0;
4
timer0_imp=0;
5
while(timer0_imp<93){
6
while(WMZ==1&&timer0_imp<93);
7
while(WMZ==0&&timer0_imp<93);
8
p1_l_hou++;  
9
}


Es wäre natürlich schöner wenn das mit dem LPC-Motor-Control 
funktionieren würde. Das Manual ist da aber etwas knapp. Vielleicht eine 
Frage für den NXP-support. Würde mich auch interessieren.
OP #3421799
Lesenswert?

Danke euch!

Die mbed library ist wirklich übersichtlicher und einfacherer zu 
verstehen.

Aber wenn ich das richtig verstanden habe, ist ja die QEI.cpp in c++ 
geschrieben. Bekomme ich da nicht ein Problem wenn die bereits vorhanden 
SW in C geschrieben wurde?
OP #3423308
Lesenswert?

Ich habe heute versucht das Programm zum laufen zu bringen.
Dabei habe ich das Blinky-Projekt für das LPC1768 genommen und dort die 
Funktion qei.cpp und die dazugehörigen Header hinzugefügt.

Jetzt habe ich zwei errors drin, die ich einfach nicht wegbekomme.
Und zwar:

compiling qei.cpp...
qei.cpp: error: L6002U: Could not open file .\flash\qei.o: No such file 
or directory
".\Flash\Blinky.axf" - 1 Errors, 0 Warning(s).

Der gleiche Fehler kommt auch wenn ich versuche die main.cpp zu 
überestzen, nur eben mit main.o.

Das Verzeichnis existiert und beinhaltet andere *.o Files.

So wie ich das verstanden habe handelt es sich um einen Linker Fehler.
Kann mir jemand sagen wie ich die errors weg kriege?
Muss ich etwas in den Einstellungen vom µVision ändern?
Gast #3423404
Lesenswert?

mbed ist ein anderer Compiler man muss es also als uVision Projekt 
exportieren:

http://mbed.org/handbook/Exporting-to-uVision

Die Alternative wäre, das qei.cpp so abzuändern, dass es mit den uVision 
Libraries compiliert, ist aber zuviel Aufwand.

Noch ein anderer Vorschlag: ich nutze statt uVision die Konkurrenz also 
IAR Embedded Workbench. Da ist ein lauffähiges Projekt dabei:

LPC1700CMSIS\Examples\QEI

Gibt es bei uVision eventuell auch, aber wenn nicht, einfach umsteigen.
OP #3431074
Lesenswert?

Ich habe ein Keil MCB1760 Evaluation Board.
Jetzt sitze ich schon eine Weile dran, schaffe es aber nicht die mbed 
Software zu flashen.

Ist das mit dem Board überhaupt möglich?

Ich habe es als µVision Projekt exportiert und das kompelieren läuft 
auch fehlerfrei. Wie ich das Ganze aufs Board bekomme ist mir aber nicht 
klar.

In einer Anleitung von Keil steht, dass man die *.bin Datei einfach per 
drag&drop in den MBED drive kopieren kann.

Mein Board wird aber nicht als Laufwerk angezeigt.
Gibt es irgendwelche Einstellungen die ich beachten muss?
Gast #3431339
Lesenswert?

Andi B. schrieb:
> In einer Anleitung von Keil steht, dass man die *.bin Datei einfach per
> drag&drop in den MBED drive kopieren kann.

Das geht aber nur, wenn auf dem MCB1760 der USB-Bootloader drauf ist. 
Das ist aber wahrscheinlich bei Auslieferung nicht der Fall.

Dann muss mit dem seriellen Bootloader geflasht werden, mit FlashMagic:

http://www.flashmagictool.com/

Dafür benötigt man aber RS232 am Rechner oder ein USB-seriell-Kabel z.B.

http://www.conrad.de/ce/de/product/558711/LogiLink-USB-20-Seriell-Adapter-USB-20-Stecker-A-D-SUB-Stecker-9pol-D-SUB-Stecker-25pol-Schwarz-12-m?ref=searchDetail
OP #3431425
Lesenswert?

Lothar schrieb:
> Andi B. schrieb:
>> In einer Anleitung von Keil steht, dass man die *.bin Datei einfach per
>> drag&drop in den MBED drive kopieren kann.
>
> Das geht aber nur, wenn auf dem MCB1760 der USB-Bootloader drauf ist.
> Das ist aber wahrscheinlich bei Auslieferung nicht der Fall.
>
> Dann muss mit dem seriellen Bootloader geflasht werden, mit FlashMagic:
>
> http://www.flashmagictool.com/
>
> Dafür benötigt man aber RS232 am Rechner oder ein USB-seriell-Kabel z.B.
>
> 
http://www.conrad.de/ce/de/product/558711/LogiLink-USB-20-Seriell-Adapter-USB-20-Stecker-A-D-SUB-Stecker-9pol-D-SUB-Stecker-25pol-Schwarz-12-m?ref=searchDetail

Ok, ob der Bootloader drauf ist weiß ich nicht und so ein Kabel habe ich 
auch nicht. Schade.

Die LPCopen libraries sind einfach nicht verständlich genug und das 
manual ist mit meinem Wissensstand auch keine große Hilfe :(

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren