Moin zusammen,
ich habe eine ESP8266 auf einem Motorshield. Stromversorgung mit 6 x 1,2
V Akkus. Problem: Mit "analogWrite()" sollte die Motorgeschwindikeit von
0 bis 1023 steuerbar sein. Nach 255 tut sich allernings nichts mehr.
Wenn ich den Motor direkt an die Stromquelle anschließe, dreht er sich
deutlich schneller.
Aufbau in etwa wie hier:
https://www.fambach.net/nodemcu-v2-motorplatine/
Was mache ich falsch?
Statt meines relativ komplexen Code, unten ein Testcode, der aber das
gleiche Problem hat:
1
constshortPWM_R=D1;
2
constshortDIR_R=D3;
3
4
voidsetup(){
5
Serial.begin(115200);
6
delay(500);
7
Serial.println("Serial init ok");
8
9
// initialize pins
10
pinMode(PWM_R,OUTPUT);
11
pinMode(DIR_R,OUTPUT);
12
}
13
14
voidloop(){
15
digitalWrite(DIR_R,LOW);
16
analogWrite(PWM_R,0);
17
delay(500);
18
19
analogWrite(PWM_R,64);
20
delay(500);
21
22
analogWrite(PWM_R,128);
23
delay(500);
24
25
analogWrite(PWM_R,192);
26
delay(500);
27
28
analogWrite(PWM_R,256);//<-- Ende Gelände, Keine änderung ab hier
Ar N. schrieb:> analogWrite(PWM_R, 256); //<-- Ende Gelände, Keine änderung ab hierhttps://www.arduino.cc/reference/de/language/functions/analog-io/analogwrite/
Parameter
pin: Der Arduino-Pin auf den geschrieben werden soll. Erlaubte
Datentypen: int.
value: Die Zykluszeit. Werte zwischen 0 (immer aus) und 255 (immer an).
Erlaubte Datentypen: int.
Ar N. schrieb:> Wenn ich den Motor direkt an die Stromquelle anschließe, dreht er sich> deutlich schneller.
Das erklärt es aber nicht, hier hilft ein Schaltplan.
Hi,
Deckenleuchte schrieb:> value: Die Zykluszeit. Werte zwischen 0 (immer aus) und 255 (immer an).> Erlaubte Datentypen: int.
0-255 hatte ich auch zuerst. Bis ich den Beispielcode (oben) gefunden
hatte. die 1024 sind wohl nicht des Rätsels Lösung.
Deckenleuchte schrieb:> Ar N. schrieb:>> Wenn ich den Motor direkt an die Stromquelle anschließe, dreht er sich>> deutlich schneller.>> Das erklärt es aber nicht, hier hilft ein Schaltplan.
Schaltplan (mehr oder weniger) anbei. Viel kann man dazu nicht zeichnen.
Wenn ich nur den USB als Stromquelle drin habe, ist das gleiche
Verhalten zu beobachten: nach 255 ist Schluss (mit 6V nur entsprechend
langsamer). Deswegen vermute ich das Problem irgendwo zwischen
Stromquelle und Motor. Also entweder im Code oder in der Hardware.
Der Link zur richtigen Doku ist
https://arduino-esp8266.readthedocs.io/en/latest/
Da steht ein wichtiger Hinweis:
"NOTE: The default analogWrite range was 1023 in releases before 3.0,
but this lead to incompatibility with external libraries which depended
on the Arduino core default of 256."
Und mit analogWriteRange(1023) kann man bei alle Versionen den
gewünschten maximalen Wert einstellen.
Wenn du den Ausgang mal einfach nicht analog ansteuerst sondern als
digitalen Output auf HIGH setzt, muss der Motor mit maximaler Leistung
laufen. Tut er das nicht, dann überlastet der Motor womöglich dein
Shield. Diese kleinen 1-Chip Lösungen sind ja nicht sehr hoch belastbar,
schon gar nicht ohne Kühlkörper.
Gibt es zu deinem Motorshield keine anständigen Schaltungsunterlagen,
oder wenigstens ein Datenblatt? Was ist da für ein Chip drauf?
Hallo Stefanus,
ok, dann stimmen die 256.
digitalWrite auf HIGH liefet auch nicht das erwartete Maximum.
Anbei ein Usermanual des 12e.
Ich versuchs mal mit dem L298N. Das hat einen Kühlkörper.
Lg
Arne
Die Doku ist echt mies, nicht einmal mit Schaltplan. Aber immerhin
wissen wir jetzt dass es ein L293D ist.
Im Gegensatz zur Angabe des Chinesen verträgt der Chip maximal 600mA
(steht im Datenblatt von TI), und das auch nur mit guter Kühlung.
Ar N. schrieb:> Kann es sein, dass ein paar Volt für den ESP draufgehen?
Nein
Wie viel Strom braucht denn dein Motor? Was benutzt du als Stromquelle?
Wie hoch ist diese Belastbar? Läuft der Motor direkt an der Stromquelle
zufriedenstellend?
Zeige Fotos von deinem Aufbau!
Hi,
Anbei Bilder und Infos zum L298n.
Der Aufbau ist wie hier
(https://funduino.de/nr-34-motoren-mit-h-bruecke-l298n-ansteuern)
beschrieben, eben nur mit einem Motor.
Lego PF Zugotor bei 9V:
Drehmoment: 0.85 N.cm
Drehzahl: 1458 rpm
Strom: 0.38 A
mech. Kraft: 1.30 W
elektr. Kraft: 3.42 W
Der ESP8266 hängt am 5V Ausgang. Mehr verträgt er nicht. Da es parallel
geschaltet ist, sollte eigentlich auch die volle Spannung des Akkus am
Motorausgang ankommen.
Direkt an der Stromquelle läuft der Motor ganz normal, eben nur über das
Shield langsamer. Theoretisch bis 12V belastbar.
Ich hab noch ein paar Experimente gemacht (Versuch macht kluch), um
einen Fehler durch die Lego-Kabel auszuschließen. Auch hier gibt der
Motor, direkt an der Batterie angeschossen, alles.
Es kann nur am Shield liegen.
Gestern habe ich irgendwo gelesen, dass bei 12V nur 10V am Motor
ankommen. Ich kann es aber nicht mehr finden.
Schau mal ins Datenblatt des L298n, wie viel Spannung am Chip verloren
geht. Daran kannst du nichts ändern, außer einen anderen Motortreiber zu
verwenden der da eben weniger Verluste hat.
Diese 9V Batterien sind nur für ganz kleine Stromstärken gedacht. Das
wird wohl auch noch zur Unzufriedenheit beitragen. In die Batteriehalter
von Lego legt man 8x AA ein, das ist eine ganz andere Leistungsklasse
und die wird auch gebraucht.
Ar N. schrieb:> Ich habe das jetzt mit dem L298n ausprobiert: gleiches Verhalten.>> Kann es sein, dass ein paar Volt für den ESP draufgehen?
Nein. Es gehen ein paar Volt an den altmodischen, bipolaren H-Brücken
verloren. Sie Datenblätter der ICs. Wenn der Motor 9V Nennspannung hat,
solltest du ca. 12V an der Brücke anlegen.
Gruß
Tom
Stefan ⛄ F. schrieb:> Schau mal ins Datenblatt des L298n, wie viel Spannung am Chip> verloren> geht. Daran kannst du nichts ändern, außer einen anderen Motortreiber zu> verwenden der da eben weniger Verluste hat.>> Diese 9V Batterien sind nur für ganz kleine Stromstärken gedacht. Das> wird wohl auch noch zur Unzufriedenheit beitragen. In die Batteriehalter> von Lego legt man 8x AA ein, das ist eine ganz andere Leistungsklasse> und die wird auch gebraucht.Stefan ⛄ F. schrieb:> Der Motor hat sogar 12V Nennspannung - ist bei allen Lego Motoren> mit> diesem Anschluss so.
Ok, dann liegt es an den Verlusten des Treibes, die dann wohl duch
zusätzliche Akkus kompensiert werden müssen. Eine Alternative wäre, wenn
ich mir einfach eine H-Brücke zusammenlöte. Muss nur schauen, ob man das
mit dem ESP steuern kann.
Ja, man kann die mit 12 V betreiben. Davon ist aber eher abzuraten beim
letzten mal sind mir die Kontakte der Lego-Stecker verschmurgelt^^.
Bisher habe ich mit den kleinen Batteriegehäusen mit 6 AAA (7,2 V)
gearbeitet. Die für die AA haben aber meine ich auch nur 6 Batterien.
Tom schrieb:> Nein. Es gehen ein paar Volt an den altmodischen, bipolaren H-Brücken> verloren. Sie Datenblätter der ICs. Wenn der Motor 9V Nennspannung hat,> solltest du ca. 12V an der Brücke anlegen.
Moin Tom,
alles klar, danke. wären dann sage und schreibe 10 AAA-Batterien. Ich
habe mal unterdessen nach Akkus in der Gewichtsklasse geschaut. Da
scheint es aber nichts sinnvolles zu geben.
Lg
Arne
Ar N. schrieb:> Die für die AA haben aber meine ich auch nur 6 Batterien.
Stimmt, jetzt wo ich zuhause bin konnte ich nachschauen. Es sind 6
Batterien, also 9V.
8 x AAA (in Summe 12 V) Liefern ein gutes Ergebnis. Ist auch etwas
kompakter als 10 AA. Wenn ich es richtig gelesen habe kann ich über 12V
den 5V Ausgang des Shields nicht mehr nutzen und benötigte ohnehin eine
gesonderte Stromversorgung.
Anbei mal ein Bild samt meiner (ersten) selbstgebauten App.