Mahlzeit!
Wie ich aus zahlreichen Posts in diversen Foren entnehmen konnte und letztendlich (glaube ich) selbst verstanden habe, ist die Motoransteuerung beim Probot 128 sagen wir mal „suboptimal“. Daher habe ich mir ein paar Gedanken gemacht, wie man die Ansteuerung (im ersten Schritt hardwareseitig, Software muss dann natürlich auch angepasst werden) verbessern könnte. (bin Elektro-Laie, also bitte nicht allzu sehr maßregeln, wenn ich etwas falsch erkläre)
++++++ Zum Bestand ++++++
Verwendete Bauteile:
- C Control Pro Mega 128 (Microcontroller)
- CD4093 (NAND-Gatter)
- L293D (Motortreiber)
Schaltung:
2x PWM Signal (von Pin X1_2 = OC1B bzw. Pin X1_3 = OC1A) wird über ein NAND-Gatter (CMOS 4093) an die Input Pins 1+2 bzw. 3+4 vom Motortreiber L293D verteilt.
Ein PWM-Signal wird über jeweils 2 der 4 NAND-Gatter so invertiert, dass am Motortreiber IN1 High ist, wenn IN2 Low ist und umgekehrt. Das gleiche gilt sinngem. für IN3 und IN4.
Der Pin X1_1 (OC1C) schaltet beide Enable-Eingänge bei Bedarf permanent auf high.
Die Motorgeschwindigkeit ist im Bereich von 0-255 einstellbar; allerdings mit der Besonderheit, dass die Motoren bei einem Wert von 128 (50/50 Puls/Pause) stillstehen und bei Werten >< als 128 in die jeweilige Richtung drehen. Als ich die Funktionsweise endlich verstanden / nachvollzogen hatte, habe ich gestutzt, da die vorhandene Steuerung der Drehrichtung und der Geschwindigkeit über ein PWM-Signal pro Motor ja bedeutet, dass die Motoren quasi ständig im Wechsel vorwärts und rückwärts fahren. Je nachdem in welche Richtung sie dann drehen sollen eben mehr vorwärts als rückwärts oder umgekehrt.
Selbst mir als absoluter Laie war nach dieser Erkenntnis klar, dass das nicht effektiv sein kann. Ein Auto fährt man ja auch nicht 50m im Vorwärtsgang und dann wieder 5 oder 10m zurück, nur um langsamer zu fahren. Außerdem vermute ich, dass der permanente Richtungswechsel nicht grade materialschonend ist.
Diese Ansteuerung spart zwar (auf den ersten Blick) Pins am Controller, bedeutet aber, dass die Motoren nicht auf voller Leistung laufen (korrigiert mich, wenn ich falsch liege).
++++++ Zur geplanten Veränderung ++++++
1. IC-Sockel Adapter:
Um die Motorplatine im Originalzustand belassen zu können und die schon vom Controller zur Motorplatine geführten Pins weiter benutzen zu können, habe ich mir mittels Platinenstückchen und Stiftleisten bereits einen Adapter für die beiden vorh. IC Sockel zurechtgedengelt.
Vom Sockel des CD4093 greife ich über 4 Stifte die Pins X1_2 und X1_3, sowie VSS (inkl. Pufferkondensator auf Platine) und VDD (GND) ab. Vom Sockel des L293D greife ich den PIN X1_1 (im Bestand Enable 1), VSS (inkl. Pufferkondensator auf Platine), GND (4x) und Output 1-4 ab.
2. Motorsteuerplatine
Auf die beiden Sockeladapter klebe/stecke ich dann eine zweite Platinenebene, auf der ich dann die Schaltung mit einem CD4093 und dem L293D neu aufbaue.
Ich plane die beiden PWM-Signale (X1_2 und X1_3) an die Enable-Eingänge des L293D zu führen. VSS und GND wie im Bestand. VS (Motorversorgung) kommt dann direkt von meinem Akkupack mit 6x2/3 A Akkus (7,2V bzw. voll geladen ca. 8,4V / 1300mAh).
Die Richtungsansteuerung über die Inputs 1+2 bzw. 3+4 will ich über jeweils einen Controllerpin (X1_1 und einen beliebigen anderen) mit entsprechend vorgeschaltetem NAND-Gatter realisieren. Ich denke mal, dass ich auf die „Vollbrems-Option“ durch kurzschließen der Inputs gut verzichten kann. Den zusätzlich notwendigen Controllerpin könnte ich dann über die noch freie Leitung auf dem einen Wannenstecker auf die Motorplatine herunterführen.
Schaltbilder kann ich heute Abend nachreichen.
Viel Text, ich weiß…J
Ich bitte um Kritik und Verbesserungsvorschläge!
Danke!
Lesezeichen