- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 23

Thema: einen PWM pin des ESP8266 als ersatz für einen poti nutzen?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    In meinem "move modul" sind inzwischen zwei microcontroler:

    1) der nano steuert zwei dual-motortreiber ( HG7881 /800mA) mit jeweils zwei 12V DC-getriebemotoren dran. Das funktioniert, mit dem nano kann ich die vier motoren ein und ausschalten, die drehrichtung wechseln und auch die vier encoder auslesen...

    2) ein ESP8266, auf dem läuft ein HTML-webserver nach fipsok, da können die 4 getriebemotoren per buttons an- und ausgeschaltet und die drehrichtung geändert werden. Auf dem webserver läuft auch ein slider, auch nach fipsok, der die drehgeschwindigkeit der motoren steuern soll.

    diese idee gab es:
    Zitat Zitat von Gnom67 Beitrag anzeigen
    Aber wozu gibts denn PWM-gesteuerte Motortreiber? Im zweifel kann jeder 20-Cent-µC (und der ESP erst recht) aus einem Analogsignal (von einem der noch freien Pins des Nano) ein passendes PWM-Signal machen. Das dürfte mit weniger als 10 Programmzeilen machbar sein.
    ich wollte in der umsetzung den letzten freien PWM-pin des nano (10) dafür nutzen per PWM die versorgungsspannung der motoren mit dem motortreiber DRV8871 eben auf z.b. 10 oder 11V zu reduzieren um die getriebemotoren (als alternative geschwindigkeit) mit halben drehzahlen drehen zu lassen.

    Der versuch war nur halb erfolreich:

    Die signale von den buttons und dem slider werden per I2C zum nano übertragen, wo sie dann mit hilfe des pins 10 des nano in PWM signale umgewandelt werden (bereich von 0 bis 255), das funktioniert...

    Wenn ich den (in der 12V spannungsversorgung platzierten) motortreiber DRV8871 mit dem slider zu steuern versuche, drehen alle vier motoren mit einer kaum merkbar langsameren geschwindigkeit bis zu dem zeitpunkt, an dem nur noch einer der vier motoren ziemlich kraftlos und langsam weiterdreht, die anderen drei bleiben stehen, und das passiert ziemlich abrupt. Ich denke, dass das daran liegt, dass die versorgungsspannung bei einem bestimmten wert des sliders nicht mehr ausreicht um alle motoren anzutreiben.

    Ist es evtl. möglich den bereich in dem die versorgungsspannung quasi zusammenbricht irgendwie zu „strecken“? Dass z.b. der bereich von 12V bis zu 11.5V über den ganzen PWM bereicht eben langsammer runtergeregelt wird? Wäre da der prescaler des PWM eine möglichkeit?
    gruß inka

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    25.12.2018
    Beiträge
    459
    Ich glaube, dass dein Ansatz falsch ist. Du kannst ja auch dein Radio nicht an 120 Volt anschließen, wenn du mit halber Lautstärke hören willst.
    Wenn ich das richtig verstehe, hast du ganz gewöhnliche Bürsten-Gleichstrommotoren.
    Der Motor brauch 12V, um genügend Kraft aufzubauen, damit er sich bewegt. Wenn du die Spannung senkst, geht er nur irgendwann in die Knie.
    Ich vermute, du musst mit der Frequenz des PWM-Signals genauer regeln. Die wird zu hoch sein. Der Motor muss kurz die vollen 12 V haben, dann fängt er an zu drehen und würde, wenn die Spannung dran bleibt, eben mit voller Geschwindigkeit drehen. Da du das nicht willst, musst du die Spannung wieder abschalten. Aber nicht zu früh. Du brauchst einen gewissen Strom durch die Spulen, damit der Motor dann überhaupt was macht. Du müsstest eigentlich mehr den Strom steuern als die Spannung. So weit ich weiß, gibts dafür auch spezielle Treiber.

    Schau dir das hier mal an. Die Steuerung arbeitet alledings rein analog. Wie sie genau aussieht, weiß ich leider nicht. Aber hier wird die Drehzahl konstant gehalten und das Drehmoment (= Strom) an die Last angepasst.

    Ich bin allerdings alles andere als wirklich gut bewandernt in Motoren... also vielleicht hat da ja noch jemand Details beizutragen.

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    Zitat Zitat von Gnom67 Beitrag anzeigen
    Wenn ich das richtig verstehe, hast du ganz gewöhnliche Bürsten-Gleichstrommotoren.
    ja
    Zitat Zitat von Gnom67 Beitrag anzeigen
    Der Motor brauch 12V, um genügend Kraft aufzubauen, damit er sich bewegt. Wenn du die Spannung senkst, geht er nur irgendwann in die Knie. Ich vermute, du musst mit der Frequenz des PWM-Signals genauer regeln.
    es reichen ihm auch vielleicht 11.8V. Aber deshalb ja auch die frage nach der streckung des regelbereichs: 11.8V bis 12V auf den PWM-bereich von 0 bis 255...

    Zitat Zitat von Gnom67 Beitrag anzeigen
    Du müsstest eigentlich mehr den Strom steuern als die Spannung. So weit ich weiß, gibts dafür auch spezielle Treiber.
    muss ich mir anschauen...
    gruß inka

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    25.12.2018
    Beiträge
    459
    Der Atmega hat einen 16 Bit Timer/Counter mit PWM. Den müsstest du aber wohl mit Registern ansteuern, wenn die Library keine 16 Bit unterstützt.
    Damit könntest du 65k Abstufungen erreichen, das wären dann fas 1100 Stufen zwischen 11,8 und 12 Volt.

    Allerdings müsstest du, um das richtig zu machen, jeden Motor einzeln ansteuern. Zumindest glaube ich nicht, dass es wirklich was bringt, die Motoren einach parallel an die gleiche Spannung zu hängen.
    Hast du irgendeine Positionserkennung der Radstellungen? Drehgeber oder sowas?

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    Zitat Zitat von Gnom67 Beitrag anzeigen
    Der Atmega hat einen 16 Bit Timer/Counter mit PWM. Den müsstest du aber wohl mit Registern ansteuern, wenn die Library keine 16 Bit unterstützt. Damit könntest du 65k Abstufungen erreichen, das wären dann fas 1100 Stufen zwischen 11,8 und 12 Volt.
    da muss ich noch suchen wie das geht, und ja, die motoren haben encoder sogar jeweils zwei...
    gruß inka

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    25.12.2018
    Beiträge
    459
    Wahrscheinlich wäre es am besten, jeden Motor einzeln zu steuern. Über die Encoder weißt du ja dann, wo sie sind und kannst die Spannung erhöhen, wenn ein Moto runter last langsamer wird.
    Eine reine Spannungsregelung wird dir nicht viel bringen, weil ja die Last auf jedem Rad anders sein kann. Eigentlich brauchst du für jeden Motor eine echte Regelung, die permanent die Drehzahl überwacht und die Pulsweite anpasst (genau dass macht die Steuerung aus dem Video - nur eben analog). Ob es praktikabel ist, mit einem Nano vier Motoren in dieser Art zu steuernm, weiß ich nicht, aber es wäre eigentlich ideal. Dann würdest du der Steuerung nur noch die Geschwindigkeit der Räder mitteilen und der Nano steuert alle vier Motoren entsprechend. Das müsste dann aber mit dem einen 16-Bit-Counter gehen.Da müsstest du etwas kreativ werden.

Ähnliche Themen

  1. Verkaufe 2 ct-Bot Roboter: einen als kompletten Bausatz & einen fertig montiert.
    Von Gastone im Forum Kaufen, Verkaufen, Tauschen, Suchen
    Antworten: 0
    Letzter Beitrag: 01.12.2014, 10:36
  2. Einen Laser zum ausrichten nutzen ?
    Von tigger im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 7
    Letzter Beitrag: 21.08.2011, 20:31
  3. Einen Port als A/D Wandler und als I/O Line nutzen !?!
    Von Charmin im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 5
    Letzter Beitrag: 09.02.2007, 20:31
  4. Antworten: 14
    Letzter Beitrag: 21.09.2005, 20:25
  5. Wie kann ich einen Integer einfach in einen Char umwandeln
    Von Andun im Forum C - Programmierung (GCC u.a.)
    Antworten: 7
    Letzter Beitrag: 14.07.2005, 14:59

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress