Forum: Mikrocontroller und Digitale Elektronik Ansteuerung DC Motor PWM


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 Christian S. (christian_s199)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag Zusammen,

für mein Projekt möchte ich einen DC Getriebemotor über ein 
Motorshild(Adafruit DRV8833) mit einem Arduino mini pro ansteuern.
Aus einem gekauften Gerät, möchte ich den dort eingesetzten Motor 
verwenden und mit der selbigen Drehzahl betreiben.
Die Drehzahl des Motors soll konstant sein und beträgt ca. 20 upm danach 
befindet sich ein Getriebe mit einer starken Untersetzung. Durch eine 
weitere Untersetzung 30/1 soll der Motor genau genommen sich in 24h 
einmal drehen.

Nun habe ich den Motor am gekauften Gerät an ein Oszilloskop 
angeschlossen und habe folgendes Signal bekommen (siehe Anhang).
Amplitude <5V
Frequenz 19kHz
PWM würde ich grob 50% schätzen
Für eine konstante Drehzahlregelung ist der Motor mit einem Geber 
geregelt.
Drehmoment ist relativ hoch

Nun habe ich zunächst den Motor ohne Geber an mein Board angeschlossen.
Die Spannungsquelle habe ich auf 5V gestellt und am Motorshild 
angeschlossen.
Den PWM Ausgang am Arduino mini pro konfigurierte ich so, dass dieser 
19kHz hat und den Tastgrad habe ich variable auf ein Poti gelegt.

Das Signals ist am anderen Bild (siehe Anhang) zu erkennen. Der Motor 
dreht sich jedoch geschätzt 10x schneller wie erwartet. Des Weiteren ist 
das Drehmoment des Motors sehr schwach. Bereits unter einem Tastgrad von 
50% bleibt der Motor über meine Ansteuerung stehen. Somit ist die 
niedrigste Drehzahl die ich simulieren kann bei ca. 200 upm.  Wenn ich 
leicht an die Scheibe des Inkrementalen Sensors komme hört er auf sich 
zu drehen. Hingegen bei dem ersten Test, wo der Motor über die Steuerung 
des gekauften Gerätes angesteuert wurde, war das Drehmoment sehr hoch 
und ich konnte den Motor kaum anhalten.
Zu sehen ist auch, das sich das Signal etwas unterscheidet. Die 
Amplitude ist soweit fast gleich, jedoch ist die abfallende Flanke des 
PWM´s gedämpfter.

Ich wäre sehr dankbar, wenn mir jemand einen Rat geben kann, wie es 
möglich ist den Motor so anzusteuern, das dieser mit niedriger Drehzahl 
und hohem Drehmoment betrieben werden kann!

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Bewertung
0 lesenswert
nicht lesenswert
Miss mal am FLT Ausgang des DRV-Boards, ob da was auf High geht. Wenn 
ja, schlägt entweder der Überstrom- oder der Temperaturschutz an.
Weiter miss doch mal am Motor Spannung, wenn du ihn abbremst. Wenns da 
einknickt, ist evtl. dein VMotor Netzteil zu schwach.
SLP muss auf High sein.

von Falk B. (falk)


Bewertung
0 lesenswert
nicht lesenswert
Christian S. schrieb:

> Motorshild(Adafruit DRV8833) mit einem Arduino mini pro ansteuern.

Datenblatt? Das hier?

https://www.adafruit.com/product/3297

> Die Drehzahl des Motors soll konstant sein und beträgt ca. 20 upm danach
> befindet sich ein Getriebe mit einer starken Untersetzung. Durch eine
> weitere Untersetzung 30/1 soll der Motor genau genommen sich in 24h
> einmal drehen.

Also drei Getriebe in Reihe?

> Nun habe ich den Motor am gekauften Gerät an ein Oszilloskop
> angeschlossen und habe folgendes Signal bekommen (siehe Anhang).
> Amplitude <5V
> Frequenz 19kHz
> PWM würde ich grob 50% schätzen

Und vor allem negative Spannung. Merkwürdig.

> Für eine konstante Drehzahlregelung ist der Motor mit einem Geber
> geregelt.

Gut.

> Das Signals ist am anderen Bild (siehe Anhang) zu erkennen. Der Motor

Sieht anders aus. Das Original klingt langsam ab, deine PWM schaltet 
hart, was eigentlich der Normalfall ist.

> dreht sich jedoch geschätzt 10x schneller wie erwartet. Des Weiteren ist
> das Drehmoment des Motors sehr schwach. Bereits unter einem Tastgrad von
> 50% bleibt der Motor über meine Ansteuerung stehen.

Merkwürdig.

> Zu sehen ist auch, das sich das Signal etwas unterscheidet. Die
> Amplitude ist soweit fast gleich, jedoch ist die abfallende Flanke des
> PWM´s gedämpfter.

> Ich wäre sehr dankbar, wenn mir jemand einen Rat geben kann, wie es
> möglich ist den Motor so anzusteuern, das dieser mit niedriger Drehzahl
> und hohem Drehmoment betrieben werden kann!

Zeig mal deinen Schaltplan, Verdrahtung und Software. Dann reden wir 
weiter.

von MaWin (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Christian S. schrieb:
> Die Drehzahl des Motors soll konstant sein und beträgt ca. 20 upm

Wohl erst nach seinem angeflanschten Getriebe.

Christian S. schrieb:
> Der Motor dreht sich jedoch geschätzt 10x schneller wie erwartet

Dein DRV8833 hat einen push-pull Ausgang, das Original sicher nur 1 
Transistor und eine Freilaufdiode.

Um ehrlich zu sein würde ich dabei aber eine geringere Drehzahl 
erwarten. Obwohl, an Freilaufdiode mehr Spannung als an Kurzschluss, 
also braucht der Strom länger bis er abklingt, das kann schon zu höherer 
Drehzahl führen.

Steure des DRV883 nicht dauernd mit nSLEEP=High und PWM an, sondern lege 
PWM an nSLEEP und einen Eingang an High, den anderen an Low. Leiddr hat 
bSLEEP eine Verzögerung von 1ms  also PWM eher 100Hz als 19kHz. Ist halt 
ein blöder IC.

von my2ct (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Christian S. schrieb:
> Signal_Ziel.jpg

Mach doch wenigstens die Lampe aus, wenn du den Oszi-Bildschirm per 
Kamera photograpieren musst und ihn nicht direkt als PNG o.ä. speichern 
kannst. Bei vernünftigen Oszis sind die Zeiten, wo man eine Kamera davor 
halten muss, seit ein paar Jahrzehnten eigentlich vorbei (sofern der 
Nutzer in der Lage ist, das Gerät richtig zu bedienen).

von Christian S. (christian_s199)


Angehängte Dateien:

Bewertung
-1 lesenswert
nicht lesenswert
Falk B. schrieb:
> Christian S. schrieb:
>
>> Motorshild(Adafruit DRV8833) mit einem Arduino mini pro ansteuern.
>
> Datenblatt? Das hier?

Ja genau das ist da richtige Datenblatt!

> https://www.adafruit.com/product/3297
>
>> Die Drehzahl des Motors soll konstant sein und beträgt ca. 20 upm danach
>> befindet sich ein Getriebe mit einer starken Untersetzung. Durch eine
>> weitere Untersetzung 30/1 soll der Motor genau genommen sich in 24h
>> einmal drehen.
>
> Also drei Getriebe in Reihe?

Es wären dann 2 Getriebe in Reihe. Zunächst das Getriebe direkt am Motor 
und dann noch ein von mir eingebautes Schneckengetriebe.

>
>> Nun habe ich den Motor am gekauften Gerät an ein Oszilloskop
>> angeschlossen und habe folgendes Signal bekommen (siehe Anhang).
>> Amplitude <5V
>> Frequenz 19kHz
>> PWM würde ich grob 50% schätzen
>
> Und vor allem negative Spannung. Merkwürdig.
>
>> Für eine konstante Drehzahlregelung ist der Motor mit einem Geber
>> geregelt.
>
> Gut.
>
>> Das Signals ist am anderen Bild (siehe Anhang) zu erkennen. Der Motor
>
> Sieht anders aus. Das Original klingt langsam ab, deine PWM schaltet
> hart, was eigentlich der Normalfall ist.

Richtig, wie lässt sich so etwas realisieren? Das langsame abklingen 
kann aber doch nicht die Lösung sein, weshalb der Motor sich völlig 
anders verhält wie gewünscht? Die Drehzahl des Motors soll bereits 20upm 
sein. Nach dem ersten Getriebe beträgt die Drehzahl bereits 1 Umdrehung 
in 24h abzüglich meines Schneckengetriebes welches ca. 1/50 ist.

>
>> dreht sich jedoch geschätzt 10x schneller wie erwartet. Des Weiteren ist
>> das Drehmoment des Motors sehr schwach. Bereits unter einem Tastgrad von
>> 50% bleibt der Motor über meine Ansteuerung stehen.
>
> Merkwürdig.
>
>> Zu sehen ist auch, das sich das Signal etwas unterscheidet. Die
>> Amplitude ist soweit fast gleich, jedoch ist die abfallende Flanke des
>> PWM´s gedämpfter.
>
>> Ich wäre sehr dankbar, wenn mir jemand einen Rat geben kann, wie es
>> möglich ist den Motor so anzusteuern, das dieser mit niedriger Drehzahl
>> und hohem Drehmoment betrieben werden kann!
>
> Zeig mal deinen Schaltplan, Verdrahtung und Software. Dann reden wir
> weiter.

Schaltplan primitiv skizziert.

von Udo S. (urschmitt)


Bewertung
0 lesenswert
nicht lesenswert
Christian S. schrieb:
> Die Drehzahl des Motors soll bereits 20upm
> sein. Nach dem ersten Getriebe beträgt die Drehzahl bereits 1 Umdrehung
> in 24h abzüglich meines Schneckengetriebes welches ca. 1/50 ist.

Sorry aber der Satz ist so (für mich) nicht verständlich.
1. Ist das richtig, dass du am Wellenausgang des Motors mit der eigenen 
Ansteuerung die 20fache Drehzahl misst wie mit der originalen 
Ansteuerung?
2. Bist du sicher, dass bei deinen Drehmomentversuchen die Spannung 
deiner Spannungsversorgung nicht einbricht wegen einer Strombegrenzung?
3. Versuche die Dinge zu prüfen die man dir rät:
Matthias S. schrieb:
> Miss mal am FLT Ausgang des DRV-Boards, ob da was auf High geht. Wenn
> ja, schlägt entweder der Überstrom- oder der Temperaturschutz an.

...

und zuletzt: Zitiere nur die Fragen auf die du antwortest, nicht ganze 
Romane. Dann kann man deine Antworten leichter zuordnen.

ich finde das erste oszillogramm auch seltsam. Wenn man zu beiden 
Oszillogrammen noch die Ströme sehen könnte wäre das vieleicht ganz 
aufschlussreich.

von Falk B. (falk)


Bewertung
-1 lesenswert
nicht lesenswert
Christian S. schrieb:

>> Also drei Getriebe in Reihe?
>>> Das Signals ist am anderen Bild (siehe Anhang) zu erkennen. Der Motor
>>
>> Sieht anders aus. Das Original klingt langsam ab, deine PWM schaltet
>> hart, was eigentlich der Normalfall ist.
>
> Richtig, wie lässt sich so etwas realisieren?

Erstmal sollte man fragen, warum das so ist und dann ob men es wirklich 
braucht. Dann vielleicht, wie man es praktisch realisiert.

> Das langsame abklingen
> kann aber doch nicht die Lösung sein, weshalb der Motor sich völlig
> anders verhält wie gewünscht?

Es ist ein Hinweis.

> Die Drehzahl des Motors soll bereits 20upm
> sein.

So ein kleiner Motor ist bei 20 U/min sehr schwach. Ist das wirklich die 
Drehzahl des Motors oder eher des Getriebeausgangs am Motor?

>Nach dem ersten Getriebe beträgt die Drehzahl bereits 1 Umdrehung
> in 24h abzüglich meines Schneckengetriebes welches ca. 1/50 ist.

Du redest wirr.

>> Zeig mal deinen Schaltplan, Verdrahtung und Software. Dann reden wir
>> weiter.
>
> Schaltplan primitiv skizziert.

Mein Gott, was in aller Welt hindert dich daran, mal EINE MINUTE zu 
lesen und nachzudenken?

"Wichtige Regeln - erst lesen, dann posten!"
"Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang"

Auch nicht als Screenshot im GIF Format!
Und ein Bild so drehen, daß man es direkt lesen kann ist auch nicht 
zuviel verlangt, schließlich willst du was von uns!
Die Kommentare in deinem Code sind beisweilen arg irreführend bis 
falsch. delay(10) macht 10ms Verzögerung, nicht 100. Aber das ist 
Nebenache. Die Initialisierung scheint OK zu sein. Dein Aufbau auch. 
Deine Messung aber nicht. Denn am Motor kann keine negative Spannung 
messbar sein. Ich vermute einen Meßfehler. Hast du die Masse am Tastkopf 
an Masse vom Motortreiber angeschlossen?

Das Original sieht nach einem einfachen Ein-Quadrtantenbetrieb aus, 
sprich, eine Transistor + Freilaufdiode. Das reicht auch für dein 
Vorhaben, denn du willst ja nur in eine Richtung drehen. Das geht aber 
auch mit einem 2 Quadrantensteller, aka, Halbbrücke. Wenn dein Motor zu 
schnell läuft, ist das Tastverhältnis zu groß, logisch. Das kann man 
ändern.

Aber zuerst musst du mal richtig messen, denn so ganz ergibt das noch 
keinen rechten Sinn.

von Christian S. (christian_s199)


Bewertung
0 lesenswert
nicht lesenswert
> 1. Ist das richtig, dass du am Wellenausgang des Motors mit der eigenen
> Ansteuerung die 20fache Drehzahl misst wie mit der originalen
> Ansteuerung?

Ja richtig, die beiden Bilder des Oszis zeigen einmal die originale 
Ansteuerung und meine eigene Ansteuerung. Bei meiner eigenen dreht die 
Motorwelle (zu sehen an der Rotation der Geberscheibe) um ein vielfaches 
schneller als bei der originalen. Zudem hat der Motor bei der originalen 
ein deutlich höheres Drehmoment und lässt sich kaum mit der Hand 
bremsen.


>2. Bist du sicher, dass bei deinen Drehmomentversuchen die Spannung
>deiner Spannungsversorgung nicht einbricht wegen einer Strombegrenzung?

Ich nutze ein DIGIMESS SM5020 als Spannungsquelle dieses dürfte den 
notwendigen Strom locker liefern. Am DRV Board habe ich die 
Strombegrenzung von 1A durch Kurzschließen der Jumper BSn/ASen 
deaktiviert.

>3. Miss mal am FLT Ausgang des DRV-Boards, ob da was auf High geht. Wenn
> ja, schlägt entweder der Überstrom- oder der Temperaturschutz an.

Am FLT Ausgang des DRV-Board messe ich bei unterschiedlichen Tastgraden 
0,2-0,5V welches ständig schwankt.

von Falk B. (falk)


Bewertung
0 lesenswert
nicht lesenswert
Christian S. schrieb:
> Am FLT Ausgang des DRV-Board messe ich bei unterschiedlichen Tastgraden
> 0,2-0,5V welches ständig schwankt.

Wie misst du denn? Ich vermute, du fängst dir bei der Messung viele 
Störungen ein. Außerdem ist das ein Open Collector Ausgang, der braucht 
noch einen externen Pull-Up Widerstand. Ohne den mißt man Fahrkarten.

: Bearbeitet durch User
von Christian S. (christian_s199)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
>Wie misst du denn? Ich vermute, du fängst dir bei der Messung viele
>Störungen ein.

Ich habe einfach zwischen FLT und GND mit dem Multimeter gemessen.

>Das Original sieht nach einem einfachen Ein-Quadrtantenbetrieb aus,
>sprich, eine Transistor + Freilaufdiode.

Ich sollte evtl. diese Kombination mal probieren und das DRV8833 weg 
lassen. Die Variante mit der H-Brücke, war die erste die ich durch das 
Internet heraus finden konnte und mir recht simple erschien. Evtl. 
schleicht sich durch die H-Brücke ein Fehler ein. Ich kann gerne ein 
Bild der Platine von der originalen Steuerung hochladen. Diese sieht 
jedoch sehr kompliziert aus. Zumindest für mich, da ich wirklich kein 
Experte auf diesem Gebiet bin, deshalb freue mich umso mehr, wenn ich 
hierfür Unterstützung bekomme.
Ich kann leider die Platine nicht komplett ausbauen, da diese teilweiße 
geklebt ist, bitte entschuldigt somit die nicht perfekte Abbildung.

von Falk B. (falk)


Bewertung
0 lesenswert
nicht lesenswert
Christian S. schrieb:
>>Wie misst du denn? Ich vermute, du fängst dir bei der Messung viele
>>Störungen ein.
>
> Ich habe einfach zwischen FLT und GND mit dem Multimeter gemessen.

Gut, aber den Pull-Up brauchst du trotzdem.

>>Das Original sieht nach einem einfachen Ein-Quadrtantenbetrieb aus,
>>sprich, eine Transistor + Freilaufdiode.
>
> Ich sollte evtl. diese Kombination mal probieren und das DRV8833 weg
> lassen.

Nicht unbedingt.

> Die Variante mit der H-Brücke, war die erste die ich durch das
> Internet heraus finden konnte und mir recht simple erschien.

Ist sie auch. Der IC funktioniert schon. Der Fehler steckt woanders.

> Evtl.
> schleicht sich durch die H-Brücke ein Fehler ein.

Möglich, aber eher unwahrscheinlich.

> Ich kann gerne ein
> Bild der Platine von der originalen Steuerung hochladen. Diese sieht
> jedoch sehr kompliziert aus. Zumindest für mich, da ich wirklich kein

Naja, dort ist ein kleiner Mikrocontroller von STM drauf, ein 
Schaltregler und bissel Gemüse.

Auf deinem Schaltplan sind der Treiber und der Arduini jeweils geerdet. 
Wie sieht der Aufbau real aus? Die masseverbindung sollte vom Arduino 
direkt zum Treiber an GND laufen. Nicht jeweils vom Treiber über X m 
Kabel zu PE an der Steckdose oder am Schaltnetzteil und dann über X m 
wieder zurück zum Arduino. Ein Bild sagt mehr als 1000 Worte.

von Udo S. (urschmitt)


Bewertung
0 lesenswert
nicht lesenswert
Christian S. schrieb:
> Ich nutze ein DIGIMESS SM5020 als Spannungsquelle dieses dürfte den
> notwendigen Strom locker liefern.

Kommt auf die Stromeinstellung an, und der Treiber kann auch noch 
begrenzen.
Konjunktiv (dürfte) nützt hier nichts. Messen ist angesagt, aber richtig 
messen.
Sprich am Motor direkt, einmal unbelastet und einmal so belastet:

Christian S. schrieb:
> Wenn ich
> leicht an die Scheibe des Inkrementalen Sensors komme hört er auf sich
> zu drehen.

Das Drehmoment ist proportional zum Strom. Wenn also Drehmoment fehlt, 
dann fliesst entsprechend weniger Strom.

von Falk B. (falk)


Bewertung
0 lesenswert
nicht lesenswert
Ist die Strombegrenzung vom Netzteil aufgedreht? Was sagt die Anzeige?

von Christian S. (christian_s199)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
SLP ist auf high und die Erdung ist auch direkt auf dem Board kurz 
gehalten.
Hier ein Bild.

von Lothar M. (lkmiller) (Moderator) Benutzerseite


Bewertung
1 lesenswert
nicht lesenswert
Ich würde da ganz im Sinne von "teile-und-herrsche" zum Test einfach mal 
das einstellbare Netzteil auf 0V drehen, dann den Motor anschließen, die 
Spanung langsam hochdrehen und beobachten, was passiert:
Was macht der Strom?
Bei welcher Spannung sind die gewünschten 20U/min erreicht?
Hat der Motor damit dann das erwartete Drehmoment?

Wenn ich das weiß, weiß ich, was der Motor braucht. Und dann kann ich 
recht einfach ausrechnen, was ich ihm geben muss.

: Bearbeitet durch Moderator
von Udo S. (urschmitt)


Bewertung
0 lesenswert
nicht lesenswert
Lothar M. schrieb:
> ch würde da ganz im Sinne von "teile-und-herrsche" zum Test einfach mal
> das einstellbare Netzteil auf 0V drehen, dann den Motor anschließen, die
> Spanung langsam hochdrehen und beobachten, was passiert:
> Was macht der Strom?

Aber bitte mit der Belastung (festhalten)!

von Christian S. (christian_s199)


Bewertung
0 lesenswert
nicht lesenswert
Hier die Ergebnisse verschiedenen Strommessungen.

- Strommessung originale Platine unbelastet:
Strom schwankt sehr stark von 10-50mA

- Strommessung originale Platine belastet (festhalten der Welle bis zum
  Stillstand des Motors):
Strom steigt kontinuierlich bis 300mA bis Motor stehen bleibt



Strommessung eigene Ansteuerung unbelastet:
Strom steigt konstant bis max 50mA mit zunehmender Drehzahl an; durch 1) 
Spannung an Spannungsversorgung von 0V-5V erhöht 2) Tastgrad von 50% auf 
100% erhöht

Strommessung eigene Ansteuerung belastet:
Bei konstanter Spannung 4V und 100% Tastgrad steigt der Strom bis zum 
Motorstillstand auf 300mA an.
Motorwelle wird bis zum Stillstand langsam blockiert. Tastgrad von 50% 
und konstanter Spannung von 4V ist nur ein Anstieg des Stromes von 30mA 
-> 80 mA zu erkennen. Folge kaum Drehmoment.

Somit lässt sich daraus schließen, das der Motor bei der originalen 
Platine trotz PWM bei Belastung sein maximales Drehmoment erreicht.
Fraglich ist warum? Und wie wird die niedrige Drehzahl erreicht?

von Udo S. (urschmitt)


Bewertung
0 lesenswert
nicht lesenswert
Christian S. schrieb:
> Somit lässt sich daraus schließen, das der Motor bei der originalen
> Platine trotz PWM bei Belastung sein maximales Drehmoment erreicht.
> Fraglich ist warum?

Wahrscheinlich weil eine Regelung implementiert ist, die die Istdrehzahl 
erfasst und bis zu 100% PWM nachregelt.
Der Anschluss des Motors hat ja einige Kontakte mehr für einen 
Drehzahlsensor.

: Bearbeitet durch User
von Suchi (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Nimm erst mal vernünftige Zuleitungen für die DC-Versorgung und Motor. 
Diese billigen Breadboard-Kabel taugen gerade noch für Signale aber 
nicht für höhere Ströme. Mit diesen Leitungen, und den 
Übergangswiderständen am Breadboard, wirst du einigen Spannungsabfall 
haben.

von Falk B. (falk)


Bewertung
0 lesenswert
nicht lesenswert
Christian S. schrieb:
> Hier die Ergebnisse verschiedenen Strommessungen.

Wo?

Und wie gemessen?

von Christian S. (christian_s199)


Bewertung
0 lesenswert
nicht lesenswert
Udo S. schrieb:
>Wahrscheinlich weil eine Regelung implementiert ist, die die Istdrehzahl
erfasst und bis zu 100% PWM nachregelt.


Falk B. schrieb:
>Wo?
Ergebnisse sind in meinem Beitrag enthalten!

>Und wie gemessen?
Multimeter in Reihe.

von Falk B. (falk)


Bewertung
0 lesenswert
nicht lesenswert
Ich denke, der Udo hat es auf den Punkt gebracht. Du musst die Drehzahl 
messen und regeln.

von Christian S. (christian_s199)


Bewertung
0 lesenswert
nicht lesenswert
Der originale Motor besitzt einen inkrementellen Sensor womit dieser 
geregelt wird. Dies wäre mein nächster Schritt, den Motor mit einer 
Regelung in Betrieb zu nehmen. Jedoch dachte ich, dass ich es bereits 
schaffe den Motor mit langsamer Geschwindigkeit und maximalem Drehmoment 
analog zum "Original" zu drehen.
Die Regelung wird in erster Linie benötigt, um aufgrund 
unterschiedlichem Lastverhalts eine konstante Drehzahl zu generieren, um 
somit ein Aufschwingen des Antriebssystems zu vermeiden.
Hintergrund, am "Ende" befindet sich eine Kamera. Es wird quasi eine 
Kameranachführung. Deshalb auch die niedrige Drehzahl die benötigt wird.

von Falk B. (falk)


Bewertung
0 lesenswert
nicht lesenswert
Christian S. schrieb:
> Der originale Motor besitzt einen inkrementellen Sensor womit dieser
> geregelt wird. Dies wäre mein nächster Schritt, den Motor mit einer
> Regelung in Betrieb zu nehmen.

Dann tu das.

> Jedoch dachte ich, dass ich es bereits
> schaffe den Motor mit langsamer Geschwindigkeit und maximalem Drehmoment
> analog zum "Original" zu drehen.

Irrtum. Schon gar nicht, wenn dein Motor selber bei so niedrigen 
Drehzahlen dreht.

von Christian S. (christian_s199)


Bewertung
0 lesenswert
nicht lesenswert
Ich habe auch gerade mal an der originalen Platine den Geber deaktiviert 
und die 4 Adern des Gebers am Stecker ausgeklemmt. Und tatsächlich dreht 
sich der Motor mit der gleichen Geschwindigkeit, die auch ich mit meiner 
Steuerung erreicht habe. Dann wird das nur mit der Regelung des Motors 
erreicht.
Habt ihr bereits einen Rat wie ich das am besten regeln kann, um das 
gewollte Ergebnis zu erhalten? Ich werde mich bezüglich der Regelung 
erst intensiv einarbeiten müssen, aber vielleicht hat jemand bereits 
vorab einen groben Ansatz im Hinterkopf.

von Falk B. (falk)


Bewertung
0 lesenswert
nicht lesenswert
Christian S. schrieb:
> Habt ihr bereits einen Rat wie ich das am besten regeln kann, um das
> gewollte Ergebnis zu erhalten? Ich werde mich bezüglich der Regelung
> erst intensiv einarbeiten müssen, aber vielleicht hat jemand bereits
> vorab einen groben Ansatz im Hinterkopf.

Ganz einfach. Die Drehzahl messen und entsprechend die PWM regeln. Wobei 
man bei so langsamen Drehzahlen eher die Periodendauer einer Umdrehung 
mißt, das geht deutlich schneller und genauer. Wieviele Pulse macht denn 
dein Geber / Umdrehung?

Beitrag #6512719 wurde von einem Moderator gelöscht.
von Lothar M. (lkmiller) (Moderator) Benutzerseite


Bewertung
1 lesenswert
nicht lesenswert
Christian S. schrieb:
> Habt ihr bereits einen Rat wie ich das am besten regeln kann, um das
> gewollte Ergebnis zu erhalten?
Du sollst den Motor und seine Betriebsdaten ausmessen.
Was hast du an diesem Rat nicht verstanden?

Denn nur, wenn man weiß, WAS man regeln will, kann man überlegen, 
WELCHES Stellglied man nimmt und WIE man das regelt.

Falk B. schrieb:
> Ganz einfach.
Dazu muss man aber trotzdem ein wenig Ahnung von der Materie haben. 
Dieses blinde Drauflosgefrickel wird nicht funktionieren.
@Christian S. (christian_s199):
Du musst erst mal herausfinden, warum deine Endstufe in keinem 
Betriebsbereich (du hast das Poti ja mal von ganz oben bis ganz unten 
druchgedreht...) das tut, was die andere wenigstens dann tut, wenn sie 
nachgeregelt wird.

Christian S. schrieb:
> Und tatsächlich dreht sich der Motor mit der gleichen Geschwindigkeit,
> die auch ich mit meiner Steuerung erreicht habe.
Und du kannst den Motor dann wie bei deiner Elektronik auch einfach so 
anhalten? Oder hat der in diesem Betriebszustand an dieser 
Originalelektronik deutlich mehr Moment?

: Bearbeitet durch Moderator
von Udo S. (urschmitt)


Bewertung
0 lesenswert
nicht lesenswert
Die Frage nach dem "wie" ist trotzdem berechtigt.
Die naheliegende Idee ist die Drehzahl zu regeln.
Da er aber anscheinend eine Kamera-Nachführung baut, die sich in einem 
Tag genau einmal drehen soll, wäre ein guter Ansatz einen übergeordneten 
Regelkreis zu programmieren, der die Geschwindigkeit je nach Anzahl der 
Umdrehungen soll/ist anpasst, so dass am Ende des Tages genau die Anzahl 
Motorumdrehungen rauskommt, die eine Umdrehung am Ausgang des letzten 
Getriebes ergeben.

von Lothar M. (lkmiller) (Moderator) Benutzerseite


Bewertung
1 lesenswert
nicht lesenswert
Udo S. schrieb:
> wäre ein guter Ansatz einen übergeordneten Regelkreis zu programmieren
Ja, jetzt wirds spannend.

Udo S. schrieb:
> Die naheliegende Idee ist die Drehzahl zu regeln.
Das klappt hier tatsächlich nicht, denn das soll ja eine "Uhr" sein, die 
pro Tag eine ganz bestimmte Anzahl "Geberschritte" machen soll.

Ich würde da mit einem Zähler als Sollwert vorgeben, wieviele "Impulse" 
seit Tagesbeginn vergangen sind und dann die Impulse vom Geber als 
Istwert auf diesen Sollwert nachführen.

Dazu muss man zuallererst das Gebersignal ohne Verluste und 
Unterbrechungen einlesen. Das wäre jetzt die nächste Aufgabe...

von Dr. Heinz Doofenshmirtz (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Wenn die Kamera nicht auf Jahre hinaus dem 24h-Rhythmus folgen muss, 
dann könnte es auch eine Steuerung mit Auswertung der Tachospannung des 
Motors machen.
Der Vorteil wäre, daß man keinen Istwertgeber bräuchte.

von Falk B. (falk)


Bewertung
-1 lesenswert
nicht lesenswert
Dr. Heinz Doofenshmirtz schrieb:
> Wenn die Kamera nicht auf Jahre hinaus dem 24h-Rhythmus folgen muss,
> dann könnte es auch eine Steuerung mit Auswertung der Tachospannung des
> Motors machen.

Wozu? Die Industrie hat nicht umsonst Drehgeber erfunden, u.a. weil 
die auch bei sehr kleinen Drehzahlen sehr gute Signale liefern, im 
gegensatz zu Tachogeneratoren.

> Der Vorteil wäre, daß man keinen Istwertgeber bräuchte.

Den gibt es aber schon! Also kann und sollte man ihn nutzen und nicht 
aus hirnrissigen, ideologischen Gründen ingnorieren!

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Tu dir einen gefallen und verteile die Stromversorgung nicht durch das 
Steckbrett. Dessen Kontakte haben zu hohe Übergangswiderstände, die 
taugen meist nur für ganz kleine Ströme unter 100mA.

von Christian S. (christian_s199)


Bewertung
0 lesenswert
nicht lesenswert
Falk B. schrieb:
>Wieviele Pulse macht denn
>dein Geber / Umdrehung?

Ich möchte einen 12CPR Encoder einsetzen. Der Encoder am Original ist 
ein inkrementaler Encoder mit jedoch ca. 100 Schritten. Leider habe ich 
diesen im Internet nicht finden können sondern nur einen 12CPR.

Lothar M. schrieb:
>Oder hat der in diesem Betriebszustand an dieser
>Originalelektronik deutlich mehr Moment?

Bei abgeklemmten Geber an der Originalelektronik wird der Motor mit 
einem Tastgrad von 100% betrieben und hat dadurch das gleiche 
Drehmoment, wie wenn ich die Motor einfach direkt an 4V anschließe bzw. 
bei meiner Ansteuerung einfach auf 100% Pulse. Jedoch ist das Drehmoment 
bei der Originalelektronik mit aktiviertem Geber und der langsamen 
Drehzahl genauso hoch wie bei einem Tastgrad von 100% und einer sehr 
hohen Drehzahl. Hingegen wenn ich bei meiner Ansteuerung den Motor 
versuche zu pulsen, um damit die Drehzahl zu regeln, bleibt er bereits 
bei <50% Tastgrad stehen, da sein Drehmoment immer weniger wird. Bei 50% 
ruckelt er nur noch ganz leicht.

>Das klappt hier tatsächlich nicht, denn das soll ja eine "Uhr" sein, die
>pro Tag eine ganz bestimmte Anzahl "Geberschritte" machen soll.

Genau, das der Motor wie eine analoge "Uhr" drehen soll ist ein guter 
Vergleich. Natürlich müssen noch die beiden zusätzlichen Übersetzungen 
einbezogen werden.

Stefan schrieb:
>Tu dir einen gefallen und verteile die Stromversorgung nicht durch das
>Steckbrett.

Danke ich werde nun bei der Verdrahtung möglichst auf das Steckbrett und 
dem Verdrahtungssatz verzichten und auf eine hochwertigere Verdrahtung 
zurück greifen.

von Falk B. (falk)


Bewertung
0 lesenswert
nicht lesenswert
Christian S. schrieb:

> Ich möchte einen 12CPR Encoder einsetzen.

Sollte reichen, dein Motor dreht zwar sehr langsam, hat aber eine 
riesige Übersetzung.

>>Oder hat der in diesem Betriebszustand an dieser
>>Originalelektronik deutlich mehr Moment?
>
> Bei abgeklemmten Geber an der Originalelektronik wird der Motor mit
> einem Tastgrad von 100% betrieben und hat dadurch das gleiche
> Drehmoment, wie wenn ich die Motor einfach direkt an 4V anschließe bzw.
> bei meiner Ansteuerung einfach auf 100% Pulse.

Logisch. Die Regelung sieht keine Pulse, "denkt" also, der Motor steht 
und gibt VOllgas.

> Jedoch ist das Drehmoment
> bei der Originalelektronik mit aktiviertem Geber und der langsamen
> Drehzahl genauso hoch wie bei einem Tastgrad von 100% und einer sehr
> hohen Drehzahl.

Das macht die Regelung, die gibt Gas sobald die Drehzal durch Belastung 
abfällt. Das macht ein PI-Regler.

https://de.wikipedia.org/wiki/Regler#PI-Regler

Der Vorschlag von Udo ist gut, man sollte nicht einfach die Drehzahl 
reglen sondern die Anzahl der Umdrehungen. Sozusagen ein Servo mit 
endloser Drehung. D.h. man braucht einen Sollwertgenerator, das ist ein 
Zähler in deiner Software, der vorgibt, wieviel Schritte dein Motor in 
welcher Zeit macht. Den erstellt man mittels einers Timer-Interrupts. 
Die Auswertung deines Gebers zält die real gemachten Schritte. Beide 
Werte (Soll / Ist) werden verglichen und damit der Regler gefüttert. 
Damit hat man eine phasenrichtige Regelung, welche keinerlei Fehler 
akkumuliert. Die Genauigkeit deiner Drehung des Motors hängt dann nur 
von der Genauigkeit der Zeitbasis deines Controllers ab. Wenn du den mit 
einer Atomuhr takten würdest, wäre deine Motordrehung auch atomuhrgenau.

Hier gibt es eines der klassischen Referenzprojekte zum Thema vom 
Meister chan.

http://elm-chan.org/works/smc/report_e.html

von Christian S. (christian_s199)


Bewertung
0 lesenswert
nicht lesenswert
Falk B:
Vielen dank für deinen Vorschlag für die Regelung. Ich werde mich hierzu 
jetzt erst einarbeiten, bevor ich weitere Fragen zur Regelung stelle.

Was ich aber noch nicht ganz verstanden habe, weshalb der Motor mit 
meiner Ansteuerung und einem abnehmendem Tastgrad ein immer kleiner 
werdendes Drehmoment hat und bei 50% bereits stehen bleibt. Wodurch wird 
bei der Regelung erreicht, dass der Motor im unteren Drehzahlbereich 
trotzdem sein maximales Drehmoment hat?

Und bezüglich des Drehzahlverhaltens ist mir noch nicht ganz schlüssig, 
warum bei dem Original und meiner Ansteuerung trotz des annähernd 
gleichen Signals am Oszi der Motor um das X-Fache schneller dreht. 
Amplitude ist gleich und die Frequenz mit 19kHz auch. Der Tastgrad ist 
auch bei beiden Varianten ca. 50%, nur die fallende Flanke am PWM ist 
bei der originalen Variante etwas gedämpfter.

von Falk B. (falk)


Bewertung
0 lesenswert
nicht lesenswert
Christian S. schrieb:

> Was ich aber noch nicht ganz verstanden habe, weshalb der Motor mit
> meiner Ansteuerung und einem abnehmendem Tastgrad ein immer kleiner
> werdendes Drehmoment hat und bei 50% bereits stehen bleibt.

Weil die Verluste des Getriebes so hoch sind.

> Wodurch wird
> bei der Regelung erreicht, dass der Motor im unteren Drehzahlbereich
> trotzdem sein maximales Drehmoment hat?

Eben durch die Regelung. Der Regler steuert den Motor immer gerade so 
stark an, daß er eben NICHT stehen bleibt. Damit werden auch die 
unterschiedlichen Belastungen (Festhalten) kompensiert.

> Und bezüglich des Drehzahlverhaltens ist mir noch nicht ganz schlüssig,
> warum bei dem Original und meiner Ansteuerung trotz des annähernd
> gleichen Signals am Oszi der Motor um das X-Fache schneller dreht.

Ertmal musst du richtig messen. Siehe mein Beitrag.

> Amplitude ist gleich und die Frequenz mit 19kHz auch. Der Tastgrad ist
> auch bei beiden Varianten ca. 50%,

Niemals!

https://www.mikrocontroller.net/attachment/484726/Signal_Ziel.jpg

Das sind ca. 20% Tastverhältnis.

> nur die fallende Flanke am PWM ist
> bei der originalen Variante etwas gedämpfter.

Nicht gedämpfter, eher merkwürdig. Eine PWM an einem Motor sieht 
eigentlich nie so aus, schon gar nicht bei 19kHz. Da muss man nochmal 
genau messen und  nachdenken.

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.

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