Hallo zusammen,
ich hoffe das ihr mir Weiterhelfen könnt und zwar bin ich auf der Suche
nach einem geeigneten Mikrocontroller um einen DC-Motor zu regeln.
Der Microcontroller soll Signale vom einem Kombinierten Momenten- und
Winkelsensor verarbeiten und dann einen BLDC-Motor (24 V , max. 10 A)
regeln, womöglich wird noch ein Leistungssteller zwischen MC und Motor
geschaltet.
Momentensensor
-Ausgang: -10....10 V
-Messbereich :0...50 Nm (auf 0,1 Nm genau)
Winkelsensor Ausgang:
-Ausgang: 0 -10 V
-Messbereich: +-450° (auf 0,1° genau)
Um die Benötigte Auflösung zu erhalten brauche ich nach meinen
bisherigen Erknntnissen einen 16 Bit Mikrocontroller.
Außerdem wäre ein integrierter ADC und genügend Anschlüsse von Vorteil.
Der Preis ist relativ egal, kann auch etwas teuerer werden.
Hat jemand von euch einen Vorschlag für mich?
Grüße, Jonn
Jonn17 schrieb:> ich hoffe das ihr mir Weiterhelfen könnt und zwar bin ich auf der Suche> nach einem geeigneten Mikrocontroller um einen DC-Motor zu regeln.
Das kann jeder.
Jonn17 schrieb:> Momentensensor> -Ausgang: -10....10 V> -Messbereich :0...50 Nm (auf 0,1 Nm genau)
da muss man die Spannung noch irgendwie auf 0-5V umwandeln. Ansonsten
kann das kein Mikrocontroller verarbeiten.
Jonn17 schrieb:> Um die Benötigte Auflösung zu erhalten brauche ich nach meinen> bisherigen Erknntnissen einen 16 Bit Mikrocontroller.
Falsch
Jonn17 schrieb:> integrierter ADC
eine gute Idee
Schau dir mal die ATtiny an. Sind billig, leicht zu programmieren und
der Support hier im Forum ist riesig.
http://de.wikipedia.org/wiki/Atmel_AVRhttp://www.mikrocontroller.net/articles/AVR
Hier mal eine kleine Starthilfe:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
Jonn17 schrieb:> Um die Benötigte Auflösung zu erhalten brauche ich nach meinen> bisherigen Erknntnissen einen 16 Bit Mikrocontroller.
Nein.
Die Bitbreite der CPU hat damit nichts zu tun.
Um die Rechengenauigkeit kümmert sich allein der C-Compiler.
Ein ATmega48 sollte für Deine Zwecke richtig sein.
Er hat einen 10Bit-ADC mit 6 Eingängen und max 23 IO-Pins.
Peter
Jonn17 schrieb:> Um die Benötigte Auflösung zu erhalten brauche ich nach meinen> bisherigen Erknntnissen einen 16 Bit Mikrocontroller.
Das Eine hat mit dem Anderen nur über den Faktor Rechenzeit was zu tun.
Auch auf 8-Bit Controllern kann mit den Datentypen short und long und
sogar float gerechnet werden...
> Momentensensor> -Ausgang: -10....10 V> -Messbereich :0...50 Nm (auf 0,1 Nm genau)
sind 500 Schritte...
> Winkelsensor Ausgang:> -Ausgang: 0 -10 V> -Messbereich: +-450° (auf 0,1° genau)
sind 4500 Schritte...
Peter Dannegger schrieb:> Er hat einen 10Bit-ADC
Reicht mit seinen 1024 Schritten also nur mit Einschränkungen bei der
Winkelgenauigkeit...
Peter Dannegger schrieb:> Jonn17 schrieb:>> Um die Benötigte Auflösung zu erhalten brauche ich nach meinen>> bisherigen Erknntnissen einen 16 Bit Mikrocontroller.>> Nein.> Die Bitbreite der CPU hat damit nichts zu tun.> Um die Rechengenauigkeit kümmert sich allein der C-Compiler.
Leider holt man sich damit einen entscheidenen Nachteil ins Design.
Man erkauft sich die Genauigkeit nur durch die entsprechenden
Software-Routinen die somit Rechenzeit und Flash-Speicher kosten.
Viele 16 und 32 bit µC sind heute schon im Preisbereich der hier so
geliebten ATmegas und Pics angekommen.
Jonn Du hast leider nichts zur Deinen Anforderungen bezueglich der
Regelung des Motors genannt. Die solltest Du bei Deiner µC-Auswahl mit
berücksichtigen.
Ansonsten geht es nur in Slow-motion, aber nicht in Deiner
Anwendungsgeschwindigkeit.
Ich selbst wuerde einen cortex-M3 von NXP oder TI nehmen.
Software (compiler/debugger) gibt es als opensource dafuer.
LG
ein bastler
Zunächst einmal sind die Anforderungen an die Genauigkeit (und
Auflösung) recht "sportlich", nämlich mehr als 12 Bit Auflösung für den
Winkelsensor. Die internen AD-Wandler der 8 Bit AVRs reichen daher nicht
aus.
Bernhard
Danke für die schnellen Antworten und Vorschläge, ich werde mir die
Micros mal angucken.
Florian Z. schrieb
> da muss man die Spannung noch irgendwie auf 0-5V umwandeln. Ansonsten> kann das kein Mikrocontroller verarbeiten
Wie könnte man das anstellen? Durch einen Spannungteiler könnte man ja
schonmal die Spannung auf -5V - 5V halbieren, oder?
Jonn17 schrieb
> Winkelsensor Ausgang:> -Ausgang: 0 -10 V> -Messbereich: +-450° (auf 0,1° genau)
Ich hab nochmal nachgefragt, der Winkel muss zum Glück doch nur mit
einer Aulösung von 1° arbeiten. Also müssten ja 10 Bit reichen.
bastler schrieb:> Jonn Du hast leider nichts zur Deinen Anforderungen bezueglich der> Regelung des Motors genannt. Die solltest Du bei Deiner µC-Auswahl mit> berücksichtigen.
Der Motor sollte eine Reaktionszeit von <0.05 s haben und auch auf 1°
genau regeln.
Außerdem soll er Drehmomentgeregelt sein, und laut Datenblatt muss eine
Spannung von 24 Volt anliegen und über die Stromstärke kann man
Drehmoment regeln. Da frag ich mich wie man das machen könnte, außer
über einen veränderbaren Widerstand. Weil PWM funktioniert ja nur mit
Spannung, und die soll ja gleich bleiben soweit ich das verstehe.
Grüße
Viele 8-bit PICs und auch 16-bit dsPICs/PIC33 haben 12-Bit ADCs,
ausserdem gibt es auch die 16-Bit Familie der dsPICs die speziell für
Motorsteuer-Anwendungen ausgelegt ist.
Jonn17 schrieb:> Hallo zusammen,>> ich hoffe das ihr mir Weiterhelfen könnt und zwar bin ich auf der Suche> nach einem geeigneten Mikrocontroller um einen DC-Motor zu regeln.>> Der Microcontroller soll Signale vom einem Kombinierten Momenten- und> Winkelsensor verarbeiten und dann einen BLDC-Motor (24 V , max. 10 A)> regeln, womöglich wird noch ein Leistungssteller zwischen MC und Motor> geschaltet.
Willst Du Sinus- oder Blockkommutierung machen? Ersteres braucht eine
ganze Ecke mehr Rechenleistung, und Du brauchst im Grunde (mindestens)
drei Timer (für jedes der drei Sinussignale einen).
Überlege Dir mal grob Deinen Regelalgorithmus, wie Du ihn umsetzen
willst, welche Auflösung Dein PWM haben sollte und welche PWM-Frequenz
Du möchtest (über ca. 20 kHz hat es den Vorteil, dass der Mensch das
Pfeifen nicht mehr hört). Dann kannst Du abschätzen, wie schnell Dein uC
sein soll (und Du kommst recht schnell auf ziemlich hohe Anforderungen
an die Rechenleistung).
Hi,
wie schon geschrieben, es gibt von einigen Herstellern gue Lösungen um
deine Anforderungen an die Motorsteuerung zu realisieren. Sowohlmit
optimierter Hardware wie auch mit vorbereiteten Codebeispielen und
Librarys...
Es gibt also keinen Grund deine Anforderungen zu senken nur damit man
den von einigen hier in fast Religiöser Veehrung vorgeschlagene AVR
verwenden kann.
Ein Hersteller mit solchen Lösungen ist Microchip, wo sowohl Lösungen
für 8Bit, 16Bit und 32 Bit Architekturen existieren. (Die 32Bit Pics
basieren übrigends auf dem MIPS kern.)
PICler schrieb:> Guck'st Du:> http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en021551
Ich würde als Link eher diesen hier vorschlagen:
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2125¶m=en026178
Der ist allgemeiner.
Daneben gibt es es auch noch unter den Vertretern der ARM/Cortex
Familien einige sehr gut geeignete Lösungen. Ich hatte auch noch einen
Link für den STM32 in den Favoriten, leider ist der nach der Umstellung
der ST Website tot und irgendwie mag mich die neue Navigation nicht.
Auf jeden Fall gibt es da aber auch was - incl. speziellem Dev. Board
und Codebeispielen. Und ich würde jede Wette eingehen das es sowohl bei
den Cortex M3 Vertretern von TI wie auch von NXP ähnliche Lösungen gibt!
Schaue dir diese Familien mal an.
Was du verwendest ist letztendlich egal. In erster Linie würde ich das
von der Eignung abhängig machen. Wenn du aber evtl. mehrere Gleichwertig
geeignete Lösungen findest dann kannst du schauen wo dir die
Dokumentation des Herstellers am ehesten liegt, wo man am meisten zu im
Netz findet und wir die Verfügbarkeit der Produkte ist.
Ich mag eigendlich Microchip gerne, gut Verfügbar und der Hersteller
stellt eine komplette Einsteigerfreundliche Software (IDE und Compiler)
und viele Beispiele aus dem eigenen Haus zur Vefügung. Bedeutet alles
aus einer Hand. (Gilt sowohl für 8/16 als auch 32Bit Architekturen)
Bei den ARM hast du das -aus einer Hand- nicht so starkt, auch bei der
Toolchain musst du erst mal ein wenig mehr arbeit investieren bis alles
ordentlich läuft da viele Lösungen diverser HErsteller zusammenarbeiten
müssen, aber ist das alles erledigt sind das auch hervorragende
Architekturen.
Also reine Geschmackssache...
Gruß
Carsten
Tja, auch ich halte die Anforderungen für einen AVR zu groß. Lieber
einen Schein mehr ausgeben für die Entwicklungsumgebung, aber dafür
nicht Gefahr laufen, hinterher auf das verkehrte Pferd gesetzt zu haben.
Ich würde einen ARM-M3 nehmen: inzwischen einigermaßen gut erhältlich
(kommt auf die Type und den Hersteller an), spottbillig und sehr
schnell.
Das STM3210C, das ich immer wieder bei solchen Fragen empfehle (ich
weiß, wird manchem schon zum Hals 'raushängen) hat sogar schon einen
Steckverbinder extra für solche Motorsteuerungsgeschichten. Schau Dir
halt einfach mal die Kiste an.
Gruß - Wolfgang
Schon erstaunlich, wenn man es wagt, einen 8-Bitter vorzuschlagen, wird
das fast schon als Beleidigung empfunden.
Natürlich braucht man ja schon für ne Blink-LED mindestens einen 64-Bit
Quadcore.
Vielleicht sollte man erstmal von der Hardware her rangehen. Was ist das
für ein Motor. Hat er Hallsensoren, interne Kommutierung, sind die
Spulenanschlüsse überhaupt einzeln herausgeführt?
Und man muß auch nicht alles selber programmieren. Es gibt fertige ICs,
die einem den Großteil der Arbeit und Entwicklungszeit abnehmen, z.B.:
http://www.trinamic.com/tmc/render.php?sess_pid=446
Und dann tuts auch ein 8-Bitter und langweilt sich noch.
Peter