RoπLawnMow

ullisun58

Well-known member
roπLawnMow

logoNeu.png

Hier will ich mein neues Projekt vorstellen. Nach dem großem umgebauten und noch nicht fertigem Alko Mäher (Hybrid) und dem kleinen MiniPiMowBot will ich meinen letzes Jahr für 30€ gekauften Robolinho Mähroboter umbauen. Denn in der Zeit, in der man nicht draußen im Garten arbeiten kann muss man Indoor Projekte suchen. Das Innenleben vom roπLawnMow wird aus einem RaspberryPi bestehen, daher das π im Projektnamen.
Dank @Bernard aus diesem Forum habe ich für die Brushless Motore die richtigen Treiber Platinen ZS-X11H gefunden. Die kommen auch hier zum Einsatz.
Im ersten Schritt werde ich in den nächsten Tagen einen Raspberry Pi 3 mit meiner PiMowBot IT Software betanken. Die Brushless Controller werden von einem PCA9685 angesteuert. Dieser ist I2C Bus mit dem Pi verbunden. (Fritzing Doku folgt dann)
Mein erster Meilenstein: Antriebsmotoren und den Messer Motor mit dieser Fernberdienung steuern.


1698771602260.png

Die Antriebsmotore werde ich über den Joystick steuern, der Messermotor wird dann über den Button im Joystick Ein und Aus geschaltet.
Der roπLawnMow ist auch so klein, dass ich ihn bequem in der Wohnung testen kann. Wenn ich ihn dann in der Wohnung - oder bei schönem Wetter draußen - mit der Fernbedienung ordentlich steuern kann, wäre mein Plan die Hall Impulse der Antriebsmotore auszuwerten um dann gezielte Drehungen oder kurze vordefinierte Trips durchzuführen. Erst wenn das richtig funktioniert, wird er nach und nach mit Sensorik ausgestattet.
 
Ich bin gespannt und werde das hier weiter verfolgen. Soabld ich wieder etwas Zeit habe, werde ich die PowerPCB noch einmal überarbeiten und habe dann hoffentlich alle Fehler behoben. Dann ist die ja durchaus auch für dein Projekt interessant.
 
Da kommt das INA 226 zum einsatz, richtig?
Das kann lt. Datenblatt nur bis 800mA, habe ich mich da u.U. verlesen? Denn gerade die Gleichstrommotore benötigen doch i.d.R. mehr. Oder?
 
Der Shunt muss dafür gewechselt werden, dann kann er bis 8A eingesetzt werden, wenn ich mich nicht irre.
Steht irgendwo zur PowerPCB beschrieben.
 
Wenn ich mich nicht täusche, kann man die INA's auch gleich mit dem 10mOhm Shunt kaufen, dann müsste das passen.
 
PowerPcB is only use to check the sense on 5 24V output (2 drive motor and 3 cutter motor for example RL1000 mower) and manage the 24V battery, so you can use it with a 3.3V mcu like ESP32 raspberry etc..... (Need 2 output and 2 I2C bus on basic config).
If you use a Li-ion charger; the charging output is not necessary and certainly some change on the Ina226 module can reduce the Ic2 line to only one.
 
Hallo ich habe gestern Abend meine Motore aus dem roπLawnMow an die Motorcontroller angeschlossen und die Tics der Hall Sensoren gezählt, sowie das dann mit einem kleinen Python Scritp getetstet. Der nächse Schritt ist nun das Empfängerscript der Fernbedienung auf die Motorsteuerung anzupassen. Vielleicht schaffe ich das am Wochenende. Im Vidoe könnt ihr sehen, dass ich den Levelshifter für die HAll Ausgänge und Break & Dir Eingänge noch auf einem Steckbrett habe. Das muss ich noch ordentlich Dokumentieren und im ersten Schritt werde ich mir dafür Eine Lochrasterplatine löten. Aus der Erfahrung mit dem PiMowBot soll da noch ein Taster zur Aktivierung des Empfangerscriptes, und eine LED zur Anzeige des BT Status platz finden. Das gehe ich aber erst nach der ersten fahrt mit der Fernbedienung an.
Fortsetzung folgt
.
 

Attachments

  • TicTacs.mp4
    26.4 MB
  • pimotor.py.zip
    1.4 KB · Views: 1
Perfect.
How did you manage the regulation speed according distance to drive ?
I saw this in your Arduino Code, but i didn't remember exectly so i told the script I want to see 12 revelutions. and after 11.75 revolutions i reduced the duty cycle. gr is the amount of right tic and gl is the omount of left tics, i is the value of the duty cycle. So not a big deal.
if gr> ticksperRev*12-ticksperRev/4 and i > 34:
i=32
if gl> ticksperRev*12-ticksperRev/4 and i > 34:
i=32
I think the challange to code this for a real situation. e.g Turnaround for 180°. Then I have to know what value is needed that the Wheels are moving, and how long it needs to slow down, that he stops at the right position.
 
I did by this way:
If movement is > 1 full rev
Always accel and break for one full revolution (ticks count can tell you when you need to start reduce speed)
If movement is < 1 full rev
Accel during the total ticks to drive /2 and brake during the same itcks.
 
Moin,
If the wheel diameter and the number of ticks per revolution are known, you can also calculate the distance traveled, of course without slippage or similar deviations. I have the formula somewhere. I'll have to look it up.
 
Der Shunt muss dafür gewechselt werden, dann kann er bis 8A eingesetzt werden, wenn ich mich nicht irre.
Steht irgendwo zur PowerPCB beschrieben.
Hast Du Bezugsquellen für den Shunt? bei 10mOhm und max 70mV - 85mV am INA Eingang ergäben sich ein maximaler Strom von 7 - 8,5A. Der shunt müsste eine Leistung von rechnerisch 680mW haben wobei sicher 300mW auch reichen würden, denn es sollten eigentlich bei den Motoren nie mehr als 3A fließen, jedenfalls habe ich bei mir bisher 1,5A am Messermotor gemessen, die anderen sind sparsamer.
 
Moin,
If the wheel diameter and the number of ticks per revolution are known, you can also calculate the distance traveled, of course without slippage or similar deviations. I have the formula somewhere. I'll have to look it up.
Zuerst müssen wir die Umfangslänge des Rads berechnen und dann die Anzahl der Ticks pro Umdrehung durch die Umfangslänge teilen, um die Anzahl der Ticks pro Zentimeter zu erhalten.

Ein paar Code Schnipsel:
Code:
WHEEL_SIZE_CM = 28
WHEEL_BASE_CM = 30
TICKS_PER_ROTATION = 1200

wheel_circumference = WHEEL_SIZE_CM * 3.14159265359  # Umfangslänge = Durchmesser * π
ticks_per_cm = TICKS_PER_ROTATION / wheel_circumference

print("Ticks pro Zentimeter:", ticks_per_cm)

Aber keine Ahnung ob, das so richtig ist, habe ich mir mal irgendwann gespeichert.
 
Zuerst müssen wir die Umfangslänge des Rads berechnen und dann die Anzahl der Ticks pro Umdrehung durch die Umfangslänge teilen, um die Anzahl der Ticks pro Zentimeter zu erhalten.

Ein paar Code Schnipsel:
Code:
WHEEL_SIZE_CM = 28
WHEEL_BASE_CM = 30
TICKS_PER_ROTATION = 1200

wheel_circumference = WHEEL_SIZE_CM * 3.14159265359  # Umfangslänge = Durchmesser * π
ticks_per_cm = TICKS_PER_ROTATION / wheel_circumference

print("Ticks pro Zentimeter:", ticks_per_cm)

Aber keine Ahnung ob, das so richtig ist, habe ich mir mal irgendwann gespeichert.
Danke, ja das ist wichtig dann wenn man ihm vorgibt wie weit er fahren soll, oder wie weit es bis zum Hindernis ist. Im Moment erledigt das die PiMowBotSW mehr oder weniger. Der Entwickler - Dirk - war von der Genauigkeit des stoppens der Motoren so begeistert, dass er schon seinen Code aktualisiert hat, ich konnte es aber noch nicht testen. Bin eben mit meinem roπLawnMow schon mal mit der Fernbedienung durch mein Zimmer und über den Flur gefahren, Video Beweis kommt noch.
 
Yes, that's exactly what it's for, so you can tell it, for example, to drive tracks with a length of 8 metres...
 
Hier das erste Video von der Fahrt mit der BT Fernbedienung, draußen regnet es also musste wieder das (nicht aufgeräumte) Zimmer als Kulisse her halten.
Erkennnisse: Bei Betätigung der Z Achse der Fernbedienung reagiert der sehr stark, da muss ich mal schauen wie das auf dem Rasen ist. ggf muss da die Geschwindigkeit reduziert werden.
Als Script läuft auf dem Pi das aus der PiMowBot Lizenz exportierte python MotorScript und das python Fernbedienungsscript. Funktion ist ganz einfach. Der Fernbedienungsempfänger gerneriert 2 Dateien auf dem Pi "/run/shm/.PiMowBot_Motor.right" und "/run/shm/.PiMowBot_Motor.left" In den Dateien stehen dann werte zwischen 0 und 100. Diese Werte werden von dem Motorscript ausgelesen, als PWM Signal aufbereitet und dann an die Kontroller übergeben.
 

Attachments

  • firstMove.mp4
    14.2 MB
Heute habe ich den ersten Schnitt mit dem roπLawnMow durchgeführt. Den MesserMotor schalte ich jetzt über ein HW-548 später will ich ihn noch in der Geschwindigkeit regeln und auch den Strom für den Motor über ein INA auswerten und dann ggf, die Drehzahl korrigieren. Ich steuer ihn nur über die Fernbedienung Das Fahrverhalten von diesem Mäher ist schon erheblich anders als das von dem großen ALKO Mäher. Nun werde ich die Lochraster Platine für den Levelshifter, Taster und LED als nächstes planen damit der Kabelsalat beseitigt wird. INAS habe ich heute bestellt und auch die passenden Shunt Widerstände, Danke @Sascha für den Link. Dafür das heute erst Montag ist, war das schon ein guter Start in die neue Woche. Ich denke auch dass es richtig ist ersteinmal den Antrieb perfekt zu haben, um dann mit den Sensoren zu beginnen.
 

Attachments

  • firstCut.mp4
    21.1 MB
Back
Top