Development of a new mower unit control - Lacina.dev Home - LACINA.DEV

Development of a new mower unit control

During the first tests of the mower unit during the end of the summer, some shortcomings appeared. For example, regulating the mower's engine speed seems to be a good way to reduce consumption and maintain efficiency. Likewise, the possibility to set the cutting height directly by the robot and not manually seems to be a useful function. This will allow mowing to different heights of the lawn in different zones and can be used as one of the elements to release the robot if it gets stuck.

See how it works.

The whole thing is controlled by Arduino nano. A stepper motor is used to adjust the cutting height. This motor is controlled by the TMC2130 driver. A limit switch is used to calibrate the default height setting, which closes in the highest position. The mower motor is controlled by PID control and PWM signal via IBT_2 motor driver. The TLE5012B magnetic encoder provides feedback. Only one channel is used and because the 4096 ppr at higher speeds was too high for the Arduino, I used the HEF4040 counter and reduced it to 256 per revolution.

The Arduino will be connected to the Main unit via USB and will be controlled directly from the ROS via messages. The messages can be used to set the cutting height, engine speed and start or stop the engine. The Arduino sends messages about the current cutting height, engine speed, and ON / OFF status.

I had the PCB made, so when it is delivered and if it works properly, I will redo the 3D models and publish the necessary data. I would like to try it in real life in the spring :)

Parts used to control
DSC02540.JPG Overview
DSC02542.JPG IBT_2 motor driver
DSC02545.JPG DC motor XD-3420
DSC02546.JPG TLE5012B magnetic encoder
DSC02557.JPG Printed holder for magnet and encoder
DSC02549.JPG 12 bit counter HEF4040
DSC02547.JPG Arduino nano
DSC02543.JPG Stepper
DSC02551.JPG TMC2130 stepper driver
DSC02548.JPG End stop switch