Welchen Mikrocontroller zur Ansteuerung eines DC-Motors?

OP #5227221
Lesenswert?

Hallo Leute,

ich habe sicherlich eine ziemlich allgemeine Frage für euch.

Ich bin noch Neuling auf dem Gebiet der Mikrocontroller.

Meine Aufgabe ist es einen Gleichstrommotor (DSMP523) zu regeln (nicht 
nur ansteuern) + zusätzlich müssen noch Daten über einen 
Drehmomentensensor eingelesen werden.

Hierfür bin ich momentan auf der Suche nach einem passenden 
Mikrocontroller.

Hierbei stehen mir zwei grundsätzlich verschiedene Optionen zur 
Verfügung:
- Beaglebone Black
- Arduino (UNO/MEGA)

Soweit ich bis jetzt recherchiert habe ist der Beaglebone nicht so 
"benutzerfreundlich für Einsteiger" und es benötigt eine gewisse 
Einarbeitungszeit. Zusätzlich gibt es mehrere Möglichkeiten den 
Beaglebone zu programmieren: Python, ...
Gibt es hier eine empfohlene Methode für Einsteiger?

Auf der anderen Seite steht der Arduino, welcher meiner Meinung nach 
leichter zu programmieren ist und, aber leistungstechnisch nicht so 
stark ist.

Mir ist bewusst, dass eine pauschale Aussage zu diesem Thema schwierig 
ist, aber ich wäre um jede Hilfe dankbar.

Viele Grüße
#5227343
Lesenswert?

@ Stefan G. (steff_123)

>Meine Aufgabe ist es einen Gleichstrommotor (DSMP523) zu regeln (nicht
>nur ansteuern)

Was willst du denn regeln?

Die Drehzahl? Das ist eher einfach.
Das Drehmoment? Das ist schon schwieriger.

> + zusätzlich müssen noch Daten über einen
>Drehmomentensensor eingelesen werden.

Daran soll es nicht scheitern.

>- Beaglebone Black

Das ist eher ein Großkaliber ala Arduino mit einem Linux drüber. Das 
Problem ist dabei, daß man als Nicht-Superfreak dort nicht so einfach 
eine wirklich schnelle Reglung mit schnellem Hardwarezugiff hinbekommt.

>- Arduino (UNO/MEGA)

Der ist deutlich einfacher handhabbar und man kann auch direkt auf die 
Hardware zugreifen, was die Sache einfach und leistungsfähig macht.

>Soweit ich bis jetzt recherchiert habe ist der Beaglebone nicht so
>"benutzerfreundlich für Einsteiger" und es benötigt eine gewisse
>Einarbeitungszeit.

Braucht der Arduino auch.

> Zusätzlich gibt es mehrere Möglichkeiten den
>Beaglebone zu programmieren: Python, ...

Phyton für eine Regelung? Machbar, aber nicht sinnvoll.

>Gibt es hier eine empfohlene Methode für Einsteiger?

Arduino. Mit dem bekommt man ohne große Tricks eine digitale Regelung 
mit 1 kHz Abtastfrequenz hin. Wenn man weiß was man tut auch 10 kHz.

>Auf der anderen Seite steht der Arduino, welcher meiner Meinung nach
>leichter zu programmieren ist und,

Ja.

> aber leistungstechnisch nicht so stark ist.

Für deine Aufgabe reicht er.
OP #5227429
Lesenswert?

Vielen Dank schon mal für die Antworten.

Also es soll die Drehzahl des DC-Motors geregelt werden - Encoder ist am 
Motor verbaut.

Wenn möglich sollte auf ein fertiges Board (eben Arduino/Beaglebone) 
zurückgegriffen werden, um eine einfache Reproduzierbarkeit zu 
gewährleisten.
Bis auf den Motortreiber usw. - der muss ja sowieso extra verbaut 
werden.

Aber wie ich aus den Antworten mitbekomme wird hier eher zu Arduino 
geraten.

Ok also mit dem Beaglebone wäre es grundsätzlich möglich, jedoch 
deutlich mehr Aufwand für die Einarbeitung + Umsetzung der Regelung.
Gast #5227511
Lesenswert?

Stefan G. schrieb:
> Also es soll die Drehzahl des DC-Motors geregelt werden - Encoder ist am
> Motor verbaut.

Eine Richtung oder vorwärts - rückwärts?
Wie langsam soll der Motor drehen? Der Encoder liefert max. 20 
Flanken/Umdrehung, was bei niedriger Drehzahl nicht gerade viel ist.

Stefan G. schrieb:
> Bis auf den Motortreiber usw. - der muss ja sowieso extra verbaut
> werden.

Da noch einen ATmega328 + Quarz + RS232-Treiber draufzusetzen, dürfte 
eigentlich kein Problem sein.
Auch, wenn Du einen Arduino (ggf. als abgespecktes Board) als fertiges 
Teil einsetzen möchtest, programmiere direkt in C und nicht mit setup() 
und loop() der Arduino IDE. Andernfalls kannst Du Timer+IO nicht frei 
verwenden.
Dafür bräuchtest Du allerdings noch einen ISP-Programmer.

Als Anfänger wird es Dich vermutlich zu sehr fordern, aber ein 
STM32Fxxx-Nucleoboard eignet sich gut als Fertigbaugruppe, bietet gute 
Leistung und läßt sich deutlich einfacher programmieren und debuggen.
Dies nur am Rande.
OP #5228468
Lesenswert?

m.n. schrieb:
>Auch, wenn Du einen Arduino (ggf. als abgespecktes Board) als fertiges
>Teil einsetzen möchtest, programmiere direkt in C und nicht mit setup()
>und loop() der Arduino IDE. Andernfalls kannst Du Timer+IO nicht frei
>verwenden.
>Dafür bräuchtest Du allerdings noch einen ISP-Programmer.

Könnte mir jemand genauer erklären was mit Timer+IO gemeint ist bzw. die 
Drehzahlregelung ist direkt in C einfacher umzusetzen?

Ist es also nicht möglich direkt über das mitgelieferte USB-Kabel des 
Arduinos einen reinen C-Code auf das Board zu bekommen?
Falls dies nicht möglich ist, ist der einzige Vorteil des Arduinos, dass 
die Pins usw. verbaut sind und ich nichts selbst löten muss?

Viele Grüße
#5228481
Lesenswert?

@ Stefan G. (steff_123)

>>Auch, wenn Du einen Arduino (ggf. als abgespecktes Board) als fertiges
>>Teil einsetzen möchtest, programmiere direkt in C und nicht mit setup()
>>und loop() der Arduino IDE. Andernfalls kannst Du Timer+IO nicht frei
>>verwenden.

Naja, mal nicht den Teufel an die Wand malen! Auch beim Arduino kann man 
die anderen Timer außer Timer 0 frei verwenden, auch die IOs!

>>Dafür bräuchtest Du allerdings noch einen ISP-Programmer.

Ist für den Anfang nicht nötig.

>Könnte mir jemand genauer erklären was mit Timer+IO gemeint ist bzw. die
>Drehzahlregelung ist direkt in C einfacher umzusetzen?

>Ist es also nicht möglich direkt über das mitgelieferte USB-Kabel des
>Arduinos einen reinen C-Code auf das Board zu bekommen?

Doch, mit Hilfe des Arduino-Bootloaders, der schon auf dem Board ist.

>Falls dies nicht möglich ist, ist der einzige Vorteil des Arduinos, dass
>die Pins usw. verbaut sind und ich nichts selbst löten muss?

Auch das.

Nimm den Arduino mit normalem USB-Kabel, das reicht für den Anfang 
dicke.
Gast #5228571
Lesenswert?

Stefan G. schrieb:
> Könnte mir jemand genauer erklären was mit Timer+IO gemeint ist

Damit ist gemeint, daß die Arduino IDE schon Teile des ATmega328 
benutzt, ohne daß dies auf den ersten Blick ersichtlich ist. Setup() und 
loop() machen dies intern.
Läßt man diese Funktionen einfach weg, kann man die gesamte Peripherie 
des µCs uneingeschränkt verwenden.
Gast #5228614
Lesenswert?

Der ISP Programmieradapter ist nicht nötig, wenn du einen 
Mikrocontroller mit vorinstalliertem Bootloader verwendest. Das ist bei 
allen originalen Arduino Boards der Fall. Aber bei chinesischen clones 
ist es reine Glücks-Sache.

Früher oder Später wirst du ohnehin einen ISP Programmieradapter 
brauchen, also bestelle gleich einen mit. Bei Aliexpress bekommst du so 
ein Teil ab 1 Euro! Sogar mit 64 Karat (hä?)

https://de.aliexpress.com/item/1pcs-New-USBASP-USBISP-AVR-Programmer-USB-ISP-USB-ASP-ATMEGA8-ATMEGA128-Support-Win7-64K/32649685244.html
#5229286
Lesenswert?

@vn nn (wefwef_s)

>Auch wenn das Forum hier sehr AVR-orientiert ist, würde ich anstelle des
>Arduinos dann doch eher das MSP430 Launchpad in den Raum werfen.

Viele Wege führen nach Rom.

>> Die Drehzahl? Das ist eher einfach.
>> Das Drehmoment? Das ist schon schwieriger.

>Weil?

. . . das Drehmoment direkt proportional zum Strom ist, also muss der 
Strom geregelt werden. Das passiert bei einem modernen Motorregler 
sinnvollerweise mit der Frequenz der PWM-Ansteuerung. Diese ist im 
Normalfall deutlich hochfrequenter (=breitbandiger) als eine 
Drehzahlsteuerung, welche über die Speisespannung erfolgt. Wenn man es 
richtig machen will, muss man mittels schneller Strommessung und 
Komparator in jedem PWM-Zyklus bei Überstrom die PWM abschalten. Bei ein 
paar kHz kann man das noch per Software machen, irgendwann sollte es 
lieber rein in Hardware erfolgen.

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