Forum: Mikrocontroller und Digitale Elektronik Motorshield 12e / ESP8266


von Ar N. (ar_n)


Lesenswert?

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
const short PWM_R = D1;
2
const short DIR_R = D3;
3
4
void setup() {
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
void loop() {
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
29
  delay(1000);
30
31
  analogWrite(PWM_R, 512);
32
  delay(1000);
33
34
  analogWrite(PWM_R, 1024);
35
  delay(1000);
36
}

: Bearbeitet durch User
von Deckenleuchte (Gast)


Lesenswert?

Ar N. schrieb:
> analogWrite(PWM_R, 256); //<-- Ende Gelände, Keine änderung ab hier


https://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.

von Ar N. (ar_n)


Angehängte Dateien:

Lesenswert?

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.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

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?

von Ar N. (ar_n)


Angehängte Dateien:

Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

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.

von Ar N. (ar_n)


Lesenswert?

OK... das heißt, ich kann 9V vergessen?

von Stefan F. (Gast)


Lesenswert?

Ar N. schrieb:
> OK... das heißt, ich kann 9V vergessen?

????

Das maximum ist 600mA, nicht 9V.

von Ar N. (ar_n)


Lesenswert?

Ich habe das jetzt mit dem L298n ausprobiert: gleiches Verhalten.

Kann es sein, dass ein paar Volt für den ESP draufgehen?

von Stefan F. (Gast)


Lesenswert?

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!

von Ar N. (ar_n)


Angehängte Dateien:

Lesenswert?

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.

: Bearbeitet durch User
von Stefan F. (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Tom (Gast)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

Der Motor hat sogar 12V Nennspannung - ist bei allen Lego Motoren mit 
diesem Anschluss so.

von Ar N. (ar_n)


Lesenswert?

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.

von Ar N. (ar_n)


Lesenswert?

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

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

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.

von Ar N. (ar_n)


Angehängte Dateien:

Lesenswert?

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.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.