Du kannst den Treiber doch ganz normal mit PWM ansteuern?
Das sollte mitm ESP auch klappen.
Du kannst den Treiber doch ganz normal mit PWM ansteuern?
Das sollte mitm ESP auch klappen.
Grüssle, Sly
..dem Inschenör ist nix zu schwör..
ich muss glaube ich etwas weiter ausholen...
im verlauf des outdoor projektes mussten ja irgendwannmal auch die antriebe drankommen: 12V getriebemotoren, 1:200 übersetzung, bordspannung ist 12V, aus der werden mit zwei stepdowns 5V und 3.3V erzeugt. Für die steuerung der antriebe habe ich ein "move-modul" gebaut:
die direkte ansteuerung der motortreiber und das auslesen der motorencoder erfolgt von dem nano aus, damit sind fast alle pins belegt. Was frei blieb ist A4,A5 für I2C und A6,A7, die sich nicht als digitale pins verwenden lassen. Die motoren werden alle per digitale pins angesteuert (für 4 motoren gab es nicht genügend PWM pins), sie lassen sich an/ausschalten und die richtung kann geändert werden. Das modul funktioniert so weit und das sollte auch so bleiben, ich würde da nicht gerne gross was ändern, ist mir zum löten jetzt schon zu eng...
Das modul ist bis jetzt "nur" über I2C erreichbar, das soll nun mit dem ESP8266 geändert werden, das modul soll wie auch das ortungsmodul per WIFI erreichbar sein, die zwei controler sollen per I2C komunizieren...
Jetzt kommt die geschichte mit der steuerung der geschwindigkeit. Eigentlich würde es reichen, wenn ich zusätzlich zu den 12V per "irgendwas" die geschwindigkeit halbieren könnte, stufenlos steuern wäre luxus und muss nicht sein...
Ich dachte an die zweckentfremdete verwendung eines motortreibers (mit dem ESP zusammen), der dann für alle vier motoren auf einmal als eine zweite möglichkeit (sozusagen einen schleichgang) die spannung von 12 auf 6 bis 7V reduziert, vielleicht gibt es aber eine einfachere möglichkeit?
gruß inka
Was sollte denn noch einfacher sein als ein Motortreiber mit PWM-Steuerung?
Da gehen auf der einen Seite 12V rein und auf der anderen kommen - sozusagen abhängig vom Tastgrad des PWM-Signals - weniger als 12 V raus - stufenlos.
Entweder verstehe ich dein Problem nicht oder du verstehst die Lösung nicht.
Dann nimm doch Motortreiber, die z.B. per I2C angesteuert werden können.
Sowas, zum Beispiel: https://www.robotshop.com/media/file...-datasheet.pdf
Bei dem müsstest du allerdings gucken, ob das mitm Arduino auch geht- das Ding hat ne 12bit-Auflösung für die PWM.
Alternativ wirf den Nano raus und bau einen Mega ein.
Wenn du keinen Platz hast: es gibt seit ner Weile auch Mega Pro Minis )oder so ähnlich, halt winzig in der Bauform, aber ein Mega).
Grüssle, Sly
..dem Inschenör ist nix zu schwör..
Ja, gibt es. Einstellbare Spannungsregler. Macht genau das, was Du möchtest. Es müssen nur die Widerstände zum Einstellen berechnet werden. Bei Steuerung über einen Widerstand gegen 0V kann man einen Transistor zwischen Widerstand und 0V einsetzen und so dann die Ausgangsspannung digital steuern. Bei einer Stufe mit Transistor wären das 2 Geschwindigkeiten (Transistor an oder aus). Bei zwei Stufen sind das vier Geschwindigkeiten. Pro Stufe wird ein Digitalausgang am µC benötigt.
Güße und frohe Weihnachtstage allen!
Moppi
Dein Problem verstehe ich immer noch nicht.
Wenn du zu wenig Pins hast, dann häng eine Porterweiterung an I2C und mach ein paar von deinen PWM-Pins frei.
Und da hängst du einen HGW-Motortreiber dran.
Was hast du denn alles an 22 Digitalpins hängen, dass du keine mehr frei hast?
siehe pdf dokument der verdrahtungmove_modul_verdrahtung.pdf Zumindest die mir bekannten digitalen pins sind belegt...
ansonsten geht es um eine änderung bzw. ergänzung ausserhalb der vorhandenen hardware. Ich kann weder einen mega 2560 oder mega-mini einsetzen, erstens wegen platz und weil ich an einer funktionierenden und - zumindest für mich - schwierigen lötarbeiten an der fertigen platine nichts ändern kann. Würde ich gerne, geht nicht. Und die erwähnte mögliche verwendung eines ESP sollte auch ein teil der lösung sein.
gruß inka
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:
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
Lesezeichen