Motorsteuerung

  • Hallo René,


    ich hatte gefragt, wie es sein kann, dass bei der Compilierung eines Sketches die widersinnige Meldung kommt "analogWrite was not declared in this scope". Inzwischen habe ich herausgefunden (mehr durch Zufall), wann diese Meldung auftritt :

    Als ich einen von dir für den Turtle-Roboter geschriebenen Sketch compilieren liess, war bei mir unter TOOLS noch das ESP32-Board, das ich habe (DOIT ESP32 DEVKIT V1) eingestellt.


    LG Eberhard

  • Hallo René,

    danke für die nachträgliche Antwort ;-). Ja, ich denke das Eberhard das gleiche Shield verwendet wie ich damals und da waren die vielen Pins ( drei pro Motor) wirklich nervig. Es hatte auch diesen Enable-Pin, der dann per PWM-Signal auch die Drehzahlsteuerung übernehmen konnte.


    Gruß Tom

  • Hallo Tom,

    diese Frage ist wohl irgendwie untergegangen. Invertierende Bausteine gibt es viele. Man findet sie unter dem Begriff NOT - Gatter. NOR und NAND - Gatter lassen sich ebenfalls verwenden, was man halt so in der Bastelkiste herumliegen hat. Notfalls genügt auch ein einfacher Transistor.


    Diese Lösung kann aber auch Nachteile haben. Es gibt H-Brücken ohne einen zusätzlichen Enable - Pin. Dann erfolgt das Ausschalten durch Anlegen von LOW an beiden Eingängen. Das geht natürlich nicht mehr, wenn man die Eingänge mit einem Inverter verbindet.


    Gruss

    René

  • Hallo Eberhard und René,

    ich möchte hier noch kurz was dazu sagen. Ich hatte das gleiche Problem mit den Pins eines Motorshields. Es mussten immer die beiden Pins entgegen gesetzt werden und da hast du dieses Problem sehr elegant mit einem "Invertierenden Baustein" umgangen und so einen Pin gespart. Ich fand diese Lösung sehr rafiniert und habe dich nach einem solchen Baustein schon mal gefragt, in diese Richtung jedoch keine Antwort bekommen. An das Video kann ich mich nicht mehr so genau erinnern. Könnte aber sein, dass es eine Plauderei war.

    Gruß Tom

  • Hallo Eberhard,


    wenn ich das noch richtig im Kopf habe, wird eine normale H-Brücke angesteuert. Die Geschwindigkeit wird aber nicht durch einen zusätzlichen Enable-Pin oder etwas ähnliches festgelegt, sondern direkt über einen der zwei Eingänge der H-Brücke.


    So wird zum Beispiel die H-Brücke des rechten Motors mit motor_rechts_richtung_Pin (4) und motor_rechts_geschwindigkeit_Pin (5) angesteuert. Wenn beides digitale Pins wären, könnte man damit nur die Richtung festlegen. Dadurch dass an motor_rechts_geschwindigkeit_Pin ein PWM-Signal angelegt wird, lässt sich zusätzlich die Geschwindigkeit steuern.

    Die Richtung wird also durch Pin 4 und 5 festgelegt, die Geschwindigkeit durch das Pulsverhältnis auf Pin 5. Dadurch spart man einen Pin.


    Deine Fehlermeldung verstehe ich auch nicht. analogWrite() gehört zum Kern der Arduino-Software und sollte immer verfügbar sein. Schalte in der Arduino-IDE die ausführlichen Fehlermeldungen ein, vielleicht ergeben diese weitere Informationen.


    2020-06-10_21-53-30.png


    Gruss

    René

  • Hallo René,


    mit grossem Interesse beschäftige ich mich gerade mit dem von dir erläuterten Programm des Turtle Roboters, das für mich Weiten eröffnet ( bin relativer Anfänger im Programmieren). Ich habe eine Reihe von Fahrzeugen mit zwei Motoren gebaut, die aber mit schlichten Arduino-Programmen gesteuert werden.

    Meine Frage: Bei meiner Programmierung brauche ich für die Vorwärts-Rückwärtssteuerung eines Motors immer zwei Signale, die auf zwei Pins des Arduinos ausgegeben werden (müsse). Die Motortreiber-Boards brauchen beide Signale. Dahinter steckt ja die H-Brücke, die auf beiden Seiten umgeschaltet werden muss, damit der Strom durch den Motor umgepolt wird. Für die Geschwindigkeit reicht ein PWM-Pin.

    Im Turtle-Programm ist für die Richtungssteuerung nur ein Pin (2 bzw 4) angegeben. Wie geht das zusammen?

    Ein Zweites: die Compilierung von Modul1 (Beispiel) über Sketch/compile_verify schlägt fehl mit der Meldung "analogWrite was not declared in this scope" (vgl Bild).

    Dieselbe Meldung erhalte ich bei meinen Programmen auch immer wieder, ohne dass ich weiss warum. Sicher kannst du sofort weiterhelfen.

    Vielen Dank im Voraus


    Gruss Eberhard