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 :)