ich möchte bei einem DC-Motor die Drehzahl regeln.
Kann ich über einen Pulldown-Widerstand den PWM-Port beim Hochfahren auf Null ziehen, um ein ungewolltes Anfahren des Motors zu vermeiden?
Welche Leistungselektronik verwendest Du zum Ansteuern des Motors? Läßt diese den Motor tatsächlich anfahren, wenn der Ausgang des Arduinos noch hochohmig ist? Ich halte das für unwahrscheinlich, daher die Frage.
Ich verwende ein Modul "DC 6~90V 15A Drehzahlregler".
Der Motor läuft für etwa 1 sec. an.
Den PWM-Port habe ich im void setup als erstes als Ausgang definiert und auf 0 gesetzt.
Wie löst man das Problem? Die Ports scheinen beim Einschalten auf high zu gehen. Ich könnte mit einem Transistor den Port vom Drehzahlregler trennen und erst nach dem Hochfahren verbinden.
Ich vermute, da gibt es aber eine viel einfachere Lösung.
Hausknecht:
Ich verwende ein Modul "DC 6~90V 15A Drehzahlregler".
Ein Link wäre aussagekräftiger, denn da gibt es weltweit sicherlich mehr als einen Typ, oder?
Hausknecht:
Die Ports scheinen beim Einschalten auf high zu gehen.
Nein, sie gehen auf hochohmigen Eingang. Welchen Port an welchem Arduino verwendest Du? Bitte zeige Deinen Testsketch.
Das Problem ist von LOW-schaltenden Relais bekannt. Da setzt man den Pin HIGH und erst dann auf OUTPUT. Kannst Du ja mal probieren, hat aber eigentlich nichts mit PWM zu tun.
Mit dem Link einfügen hab ich Schwierigkeiten. Der Link füllt eine halbe Seite.
Wenn du in der Bucht nach "DC 6~90V 15A Drehzahlregler" suchst, dann erscheint er.
Ich verwende einen Nano und D3 liefert das PWM-Signal für den Drehzahlregler.
Resette ich den Nano, dann messe ich am D3 kurzzeitig 0,8 V. Auch wenn ich den Nano ganz von allen Anschlüsse löse ist das so.
Das reicht, um den Motor zu drehen. Ich bräuchte beim Hochfahren 0 V. Mit dem Programm hat das nach meiner Meinung nichts zu tun.
I
Ich sehe ein Poti, aber keinen Eingang für PWM, wo hast Du den Arduino angeschlossen?
Hausknecht:
Wäre 1k5 ok?
Wir können das Pferd aber auch von der anderen Seite her aufzäumen: So ein Pulldown-Widerstand wird den Arduino-Ausgang nicht zerstören. Also probiere es aus
Vielen Dank für eure Hilfe.
Dieses Modul wird über eine Steuerspannung zwischen 0 und 5 V gesteuert. Ob die 5 V über ein Poti erzeugt , oder über einen PWM-Port bereitgestellt wird, ist unerheblich.
Wenn ich ein x-beliebiges Beispielprogramm starte, dann habe ich auch an dem Port D3 eine kleine Spannung von etwa 0,8 V.
Also solange ich den Port nicht auf 0 setze liegt diese kleine Spannung an.
Da ich in meinem Programm viele Bibliotheken einbinde, dauert es viele, viele Millisekunden, bis der Port zurückgesetzt wird.
Gibt es eine Möglichkeit ganz am Anfang eines Sketches den Port auf 0 zu setzen (noch bevor ich Bibliotheken einbinde)?
Den analogWrite-Befehl hat bei mir ganz am Anfang des Programms zu einer Fehlermeldung geführt.
Hausknecht:
Gibt es eine Möglichkeit ganz am Anfang eines Sketches den Port auf 0 zu setzen (noch bevor ich Bibliotheken einbinde)?
Die Bibliotheken werden beim Compilieren eingebunden, mit dem Verhalten zur Laufzeit hat das nichts zu tun.
Nach Reset bremst der Bootloader, der auf ein neues Programm wartet, bis das im Speicher vorhandene startet. Du könntest den Bootloader entfernen. Der PullDown wäre aber einfacher.
Hausknecht:
Vielen Dank für eure Hilfe.
Dieses Modul wird über eine Steuerspannung zwischen 0 und 5 V gesteuert. Ob die 5 V über ein Poti erzeugt , oder über einen PWM-Port bereitgestellt wird, ist unerheblich.
.....
Da bist du aber schwer im Irrtum.
Ein Poti liefert in diesem Fall eine reine Gleichspannung, was der PWM-Ausgang nicht macht.
Das sagt schon der Name "PWM".
Dieser liefert eine gepulste Spannung von 5 Volt und ist damit für dein Modul direkt nicht zu verwenden.
Hallo Dieter,
in der Beschreibung des Moduls steht:
Der DC-Motor-Drehzahlregler ermöglicht die Drehzahlregelung eines Gleichstrommotors mit einer pulsweitenmodulierten (PWM) Gleichspannung.
Ich nehme an, dass im Modul die Rechteckspannung durch einen Kondensator geglättet wird.
Die Drehzahlregelung funktioniert auch anstandslos.
Das Problem ist nur die kurze Zeit beim Starten, bis der Ausgang auf 0 gesetzt wird.
@Agmue ich könnte mir aber vorstellen, dass durch die Bibliotheken irgend welche Initialisierungsroutinen durchführen, die Zeit kosten - aber das ist nur eine Vermutung von mir. Den Bootloader wollte ich nicht entfernen, sonst könnte ich nicht einfach mal schnell ne Änderung aufspielen.
Ich versuchs mit einem pulldown-Widerstand und werde berichten.
Hausknecht:
Hallo Dieter,
in der Beschreibung des Moduls steht:
Der DC-Motor-Drehzahlregler ermöglicht die Drehzahlregelung eines Gleichstrommotors mit einer pulsweitenmodulierten (PWM) Gleichspannung.
Ich nehme an, dass im Modul die Rechteckspannung durch einen Kondensator geglättet wird.
.....
Ok, wenn es dann auch funktioniert.
Dann schalte doch einfach eine Silizium-Diode in Reihe, damit wird die Spannung um 0,7 Volt reduziert.
Da siehst du, ob es funktioniert.
Zu Deinem Problem:
Versuche einen Pull-Down, also einen Widerstand, Der zwischen Pin und GND liegt.
Dieser zieht Dir den Pegel nach GND runter (deshalb auch der Name: pull(zieh)down(runter) ...).
Wähle Diesen nicht zu klein, da Dieser die ganze Zeit Strom nach GND ableitet - bei 5V und 1K wären Das immerhin 5mA.
Hausknecht:
Vielen Dank für eure Hilfe.
Dieses Modul wird über eine Steuerspannung zwischen 0 und 5 V gesteuert. Ob die 5 V über ein Poti erzeugt , oder über einen PWM-Port bereitgestellt wird, ist unerheblich.
Wenn ich ein x-beliebiges Beispielprogramm starte, dann habe ich auch an dem Port D3 eine kleine Spannung von etwa 0,8 V.
Also solange ich den Port nicht auf 0 setze liegt diese kleine Spannung an.
Da ich in meinem Programm viele Bibliotheken einbinde, dauert es viele, viele Millisekunden, bis der Port zurückgesetzt wird.
Gibt es eine Möglichkeit ganz am Anfang eines Sketches den Port auf 0 zu setzen (noch bevor ich Bibliotheken einbinde)?
Den analogWrite-Befehl hat bei mir ganz am Anfang des Programms zu einer Fehlermeldung geführt.
Daß Du statt dem Poty ein PWM Signal einspeisen kannst das weißt vieleicht Du; in der Beschreibung des Moduls steht das nicht.
Ein Include einer Bibliothek verbraucht keine Einschaltzeit im Sketch.
Im setup() kannst Du als erstes das Pin als Ausgang definieren und auf LOW legen. Das ist der früheste Moment wo du das machen kannst. Vorher ist der Pin ein Ausgang und die Spannung hängt von der Außenbeschaltung ab.
Du sparst einige Sekunden wenn Du den Bootloader auf dem Arduino löscht. (upload über ISP mit ISP-Programmierer oder ein anderer Arduno mit ISP-Sketch).
Grüße Uwe
uwefed:
Daß Du statt dem Poty ein PWM Signal einspeisen kannst das weißt vieleicht Du; in der Beschreibung des Moduls steht das nicht.
Ein Include einer Bibliothek verbraucht keine Einschaltzeit im Sketch.
Im setup() kannst Du als erstes das Pin als Ausgang definieren und auf LOW legen. Das ist der früheste Moment wo du das machen kannst. Vorher ist der Pin ein Ausgang und die Spannung hängt von der Außenbeschaltung ab.
Du sparst einige Sekunden wenn Du den Bootloader auf dem Arduino löscht. (upload über ISP mit ISP-Programmierer oder ein anderer Arduno mit ISP-Sketch).
Grüße Uwe
In der Beschreibung steht:
Der DC-Motor-Drehzahlregler ermöglicht die Drehzahlregelung eines Gleichstrommotors mit einer pulsweitenmodulierten (PWM) Gleichspannung.
Das verstehe ich so, dass das Modul auch durch ein PWM-Signal gesteuert werden kann. Und es funktioniert ja auch.
Also ich würde es auch so verstehen das die Steuerung PWM zum Motor ausgibt und nicht mit PWM angesteuert wird, aber es scheint ja grundsätzlich zu funktionieren.( könnte an dem einen Elko liegen)
Generell würde ich aber den Beschreibungen nicht blind vertrauen wenn es Produkte außerhalb von Deutschland geht. Beim Übersetzen ins Deutsche passieren oft Fehler, ich hatte schon mal was bestellt was laut Beschreibung "explodiert" obwohl eigentlich "expandiert" gemeint war.
Hausknecht: @Agmue ich könnte mir aber vorstellen, dass durch die Bibliotheken irgend welche Initialisierungsroutinen durchführen, die Zeit kosten - aber das ist nur eine Vermutung von mir.
So betrachtet, schließe ich mich Deiner Vermutung an. Das könntest Du umgehen, in dem Du ohne IDE programmierst, denn dann hast Du das Verhalten nach Reset voll unter Kontrolle. Das habe ich aber nur wegen der Vollständigkeit erwähnt, obwohl ich einen kenne, der sowas macht.
Ihr habt recht, ich saß auf dem Schlauch. In der Beschreibung des Drehzahlreglers steht, dass der Motor mit einer Rechteckspannung gespeist wird. Nicht wie ich annahm, dass man die Steuerspannung per PWM erzeugen kann. Aber es funktioniert und das ist die Hauptsache.
Ich hab 1k als PullDown angebracht und es funktioniert genau so, wie ich wollte.
Problem gelöst - super.
Vielen Dank, dass Ihr Euch die Zeit genommen habt und mir weiter geholfen wurde.
Scherheinz:
Also ich würde es auch so verstehen das die Steuerung PWM zum Motor ausgibt und nicht mit PWM angesteuert wird, aber es scheint ja grundsätzlich zu funktionieren.( könnte an dem einen Elko liegen)
Es gibt viele Lieferanten für dieses Modul. Bei einem anderen sieht man die Unterseite der Platine. Der große Elko hängt an der Betriebsspannung des Moduls. Der 2. Elko hängt direkt an der Betriebsspannung für den IC. Das eine Dreibein das zu den andere 2 um 90 Grad verdreht ist, ist ein Spannungsregler. Am Ausgang hänngt der Elko.
Das es funktioniert, ist bei niedrigen PWM Frequenzen eigentlich logisch. Intern erzeugt das Ding 16kHz PWM.
Wenn ich jetzt von außen mit einem niederfrequenten Signal komme und das eben kurz 5V und dann wieder 0V hat, bringt das 16 kHz PWM Signal eben 100% am Ausgang und dann wieder 0%. Das interne PWM Signal wird damit mehr oder weniger deaktiviert.