Forum: Analoge Elektronik und Schaltungstechnik DC-Motorsteuerung (Servo)


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Sebastian M. (meeresgott)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Community,


ich möchte mir meinen "eigenen" Servo bauen. Ich benutze einen 
DC-Getriebemotor (12V / ca. 400mA) als Motor und ein 10K (linear-) Poti 
als "Messglied". Als Führungsgröße hab ich eine Spannung von 0-5V 
(Konvertiert aus einem PWM-Signal).

Der Motor ist so verbaut, dass er seine Position von sich aus nicht 
halten kann, da er einen schwereren Hebel zuverlässig vertikal drehen 
soll (~0-180°).

Ich würde auch eher keinen Mikrocontroller verwenden wollen, da ich zwei 
Dutzend solcher "Servos" betreiben möchte und dies mir zu Kostenspielig 
werden würde und ich so bei eventuellen Softwarefehlern alle einzeln 
Updaten müsste - Lasse mich in diesem Punkt allerdings gerne vom 
Gegenteil überzeugen aber aus meiner Sicht scheint es sich aktuell nicht 
zu lohnen.

Deshalb bin ich den "altmodischen" weg gegangen und verwende OP's. Ich 
dachte mir, dass ich einfach die Rückführungsgröße und die Führungsgröße 
subtrahiere und komme so zu einer Spannung von -5V bis +5V.

Jetzt bin ich an einem Problem angekommen, dass ich so einfach nicht 
alleine gelöst bekomme. Wie baue ich jetzt den Passenden Motor-Treiber?
Wenn ich eine H-Brücke verwende wie Steuer ich diese mit einer solchen 
Spannung an? Und kann die Reaktion auch träge sein? - Kurze Erklärung 
hierzu, was ich mir unter träge vorstelle ist, dass bei einer geringen 
Differenz der Motor nicht mit 100% der Energie betrieben wird.


Vielleicht habe ich auch Google falsch benutzt und ihr könnt mir direkt 
ein passenden Antwort-Link schicken oder mir ein paar Schlagworte geben. 
Ich wäre euch für jede Hilfe dankbar!


Viele Grüße,

Sebastian

von Andreas B. (bitverdreher)


Bewertung
1 lesenswert
nicht lesenswert
Billiger und einfacher als mit einem uC wirst Du keine einigermaßen 
anspruchsvolle Servosteuerung hinbekommen.

von jb (Gast)


Bewertung
1 lesenswert
nicht lesenswert
>Rückführungsgröße und die Führungsgröße
>subtrahiere und komme so zu einer Spannung von -5V bis +5V.

mag in der theorie funktionieren, in der Praxis fängt das System um den 
Sollwert an zu schwingen...Hochmoderne Servotreiber können sich selbst 
parametrisieren, bei allen anderen bleibt nur das manuelle finden und 
einstellen der PID Werte...
Gruß J

von Klaus (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Sebastian W. schrieb:
> Ich würde auch eher keinen Mikrocontroller verwenden wollen, da ich zwei
> Dutzend solcher "Servos" betreiben möchte und dies mir zu Kostenspielig
> werden würde und ich so bei eventuellen Softwarefehlern alle einzeln
> Updaten müsste - Lasse mich in diesem Punkt allerdings gerne vom
> Gegenteil überzeugen aber aus meiner Sicht scheint es sich aktuell nicht
> zu lohnen.

Andreas B. schrieb:
> Billiger und einfacher als mit einem uC wirst Du keine einigermaßen
> anspruchsvolle Servosteuerung hinbekommen.

Auch wenn sie nicht anspruchsvoll sein soll, gehts nicht billiger. Ein 
8-Pin µC und eine 800mA Motorbrücke gibts für zusammen weniger als 
1,50€. Die Stützkondensatoren könnten da auch schon dabei sein. Und 
selbst wenn man sich die Versorgung des µC lokal aus den 12V herstellen 
muß, bleibt man unter 2€. Und damit erledigt man von Hysterese bis PID 
alles.

Eine fehlerhafte Software updaten ist immer noch einfacher als einen 
Widerstand zu tauschen oder einen Kondensator nachzusetzen. Und wenn man 
nicht mehrere Prototypen baut und testet wird das vorkommen.

MfG Klaus

von Sebastian M. (meeresgott)


Bewertung
0 lesenswert
nicht lesenswert
jb schrieb:
> mag in der theorie funktionieren, in der Praxis fängt das System um den
> Sollwert an zu schwingen...

Da bräuchte man sowas wie eine Toleranz.. Ich merke schon ganz so 
einfach wie ich es mir vorgestellt habe wird das wohl nicht.


Also Ihr würdet einen µC verwenden. Könnt ihr mir da einen Empfehlen? 
Ich kenne nur die ATMega-"Reihe" und an sich benötige ich ja nur 4Bit 
(eventuell mit PWM damit ich meine "Trägheit" hab) Output für die 
H-Brücke und 2 AD-Wandler - Oder ich lese die Führungsgröße direkt als 
PWM ein. Habt Ihr hier schon Erfahrungen gemacht? Eher PWM direkt 
einlesen oder vorher zu einer Spannung konvertieren?

Schon mal Danke für eure Antworten!

Viele Grüße,
Sebastian

EDIT: Ich meine 2 Outputs. Ich war im  Kopf bei dem Schrittmotor-Treiber 
L298N. Auch hier wäre ich für Empfehlungen offen für einen 1-Channel 
Treiber.

: Bearbeitet durch User
von Michael B. (laberkopp)


Bewertung
1 lesenswert
nicht lesenswert
Andreas B. schrieb:
> Billiger und einfacher als mit einem uC wirst

Was für ein Humbug. Auch ein uC kann keine 400mA liefern (schon gar 
nicht den bei so einem Motor vermuteten Anlaufstrom von 4A), man braucht 
also Treiber.

Und weil der passende Treiber die Servofunktion schon selbst machen 
kann, braucht man keine uC mehr.

(Poti regelt Gleichstrommotor auf Position die ebenfalls per Poti 
erfasst wird oder als Spannung vorgegeben wird): TDA3629 geht bis 0.8A, 
TLE4206 und MC33030 bis 1A, DRV590/591/593/594 regeln Motoren bis 3A 
durch PWM).
1
    +------------------+-- +16..60V
2
    |                  |
3
   10k          +-----|+\ LM675
4
    |           |     |  >--+-----+----+
5
 +--+--+        |  +--|-/   |     |    |
6
 |soll |        |  |        |     1R   |
7
5KPoti-(---22k--(--+---1M---+     |   (M)
8
 |     |        |  |             22n   |
9
 | 5kPoti--22k--+  +--|+\         |    |
10
 |  ist|        |     |  >--+--+--(----+
11
 +--+--+        +-----|-/   |  |  |
12
    |           |      |    |  1R |
13
   10k          +--1M--(----+  |  |
14
    |                  |      22n |
15
    +------------------+-------+--+-- GND

Ein uC ist also so überflüssig wie ein Kropf.


jb schrieb:
> mag in der theorie funktionieren, in der Praxis fängt das System um den
> Sollwert an zu schwingen...

Dazu gibt es PID Kompensation, jeder blöde Leuchtweitenregelungmotor 
bekommt das hin, jeder Fernsteuerservo, das kann also intellektuell 
nicht überfordern.

Beitrag #5484531 wurde vom Autor gelöscht.
von Sebastian M. (meeresgott)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Michael,


ich habe mal eine Preisliste erstellt, da kosten für mich unter anderem 
ein wichtiger Punkt ist.


LM875 5€
MC33030 30€-70€
TDA36269 SMD 4€ DIP-8 20€
DRV590 5€
DRV591 30€
DRV593 35€


Die DRV scheinen, wenn ich das Datenblatt richtg verstsanden habe auch 
nur für Motoren mit einer einer Spannung von bis zu 5V geeignet zu sein.
Gehe hier davon aus, dass die AVDD die Spannung für den Motor ist und 
die PVDD die Spannung für die Logik. Ich beziehe mich auf das Datenblatt 
http://www.ti.com/lit/ds/symlink/drv593.pdf
Der MC33030 scheidet obwohl ich ihn als geeignetsten halte aus, da viel 
zu teuer ist.
Der TDA3629 ist eine gute eventuelle alternative. Aber du hast schon 
recht, der Motor könnte schon in Extremfall über eventuell 800mA kommen.


Michael B. schrieb:
> +------------------+-- +16..60V
>     |                  |
>    10k          +-----|+\ LM675
>     |           |     |  >--+-----+----+
>  +--+--+        |  +--|-/   |     |    |
>  |soll |        |  |        |     1R   |
> 5KPoti-(---22k--(--+---1M---+     |   (M)
>  |     |        |  |             22n   |
>  | 5kPoti--22k--+  +--|+\         |    |
>  |  ist|        |     |  >--+--+--(----+
>  +--+--+        +-----|-/   |  |  |
>     |           |      |    |  1R |
>    10k          +--1M--(----+  |  |
>     |                  |      22n |
>     +------------------+-------+--+-- GND

Was das angeht, hätte ich vorher sagen sollen, dass ich nur eine 
Spannung von 12V zu Verfügung habe. Klar könnte man hier mit einem 
StepUp arbeiten. Diese sind aber soweit ich weiß verlustreicher als 
StepDowns was wiederum für einen µC sprechen würde.


Den TDA3629 würde ich aber näher in betracht ziehen. Ich danke dir für 
deine ausführliche Antwort. Falls du einen günstigen Tipp hast, wie ich 
es doch so umsetzten kann sag mir bitte Bescheid!


Viele Grüße,
Sebastian

von Sebastian M. (meeresgott)


Bewertung
0 lesenswert
nicht lesenswert
Michael B. schrieb:
> jb schrieb:
>> mag in der theorie funktionieren, in der Praxis fängt das System um den
>> Sollwert an zu schwingen...
>
> Dazu gibt es PID Kompensation, jeder blöde Leuchtweitenregelungmotor
> bekommt das hin, jeder Fernsteuerservo, das kann also intellektuell
> nicht überfordern.


Falls du was findest, einen Schaltplan o.ä. wie ein ganz normaler Servo 
aufgebaut ist. Wäre ich dir dankbar, wenn du mir einen Link schicken 
könntest.

von Andreas B. (bitverdreher)


Bewertung
0 lesenswert
nicht lesenswert
Michael B. schrieb:
> Was für ein Humbug. Auch ein uC kann keine 400mA liefern (schon gar
> nicht den bei so einem Motor vermuteten Anlaufstrom von 4A), man braucht
> also Treiber.

Ah, so schlau bin ich auch schon. Einen Treiber braucht man so oder so.
Und, was meinst Du was mehr kostet? Ein Tiny 85 oder ein OP?
Richtig, ungefähr das Gleiche.
Was ist mehr flexibler, kann auch Anlaufströme steuern und alle PID 
Parameter auswählbar machen?
Nein, es ist kein OP.

von Sebastian Wittlich (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich setzte es mit einem uC um + H-Brücke.
Um diesen Thread zu schließen.

von Klaus (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Auch wenn ich für diesen Vorschlag gesteinigt werde:

Da ich PICs verwende, würde ich den PIC16F1823 für 0,92€ (Microchip 
direkt) oder den PIC16F1825 (mehr Flash und RAM) für 1,09€ einsetzen. 
Die haben mit 14 Pins noch etwas Reserve. Es gibt aber sicher auch 
passende AVRs zum ähnlichen Preis. Dazu dann einen L9110 als 
Motortreiber. Haben die Chinesen erfunden, um kleine Motore in 
Spielzeugen zu steuern. Das passt gut zu den 400mA. Die kosten um 0,10€ 
(ca. 1$ im Zehnerpack bei Ali). Dazu einen 3,3V oder 5V Linearregler (µC 
und Brücke können beides) für 0,25€ und zwei, drei MLCCs.

Wenn man dann noch 8 Nutzen in das gängige chinesische 100x100mm 
Platinemaß bekommt, kost die Einzelplatine 0,25€. Das Aufsummieren spar 
ich mir mal, ist aber weniger als ein Glas Wein beim Italiener. Einen 
Schaltplan spar ich mir auch, nur das Poti und das Eingangssignal 
sollten an analoge Eingänge des µC angeschlossen werden.

MfG Klaus

P.S. so etwa sind die preiswerten Digitalservos innen auch aufgebaut. 
Mal 5€ bei Hobbyking investieren und in so ein Servo reinschauen.

von Andreas B. (bitverdreher)


Bewertung
0 lesenswert
nicht lesenswert
Klaus schrieb:
> Auch wenn ich für diesen Vorschlag gesteinigt werde:

Nö, genau so.
Ob es jetzt AVR oder Pics sind, muß der TO aufgrund seiner Präferenz am 
besten wissen. Ich würde auch eher einen uC mit etwas mehr Pins nehmen. 
Bei AVR etwa tiny841, der hat eine HW Uart und noch genug Ports frei um 
Status Leds anzuschließen.
Allerdings halte ich den L9110 etwas zu schwach für 400mA Motoren. Der 
Anlaufstrom dürfte einiges höher sein. Eher so Richtung L6201.
Weiterer Tip für die praktische Programmierung von PID Reglern:
https://rn-wissen.de/wiki/index.php?title=Regelungstechnik

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.