Landrumower Protected&Cool MOD

Progress update for testing of version 1.01:

Some hardware bugs/silly mistakes eliminated and reworked on all PCBs.

In video in attachement, there is shown how the BLDC motor, can act as a voltage generator.


View attachment VID_20250918_170836.mp4

When turning the wheel by hand, the voltage is generated - >red diode in ZS-X11H v2 BLDC is glowing = voltage generated in the system.

Looks like the Digital Isolators are working in Sunray BLDC motor tests? Motors are rotating/working using ZS-X11H v2 BLDC drivers.


View attachment VID_20250916_164128_0_COMPRESSED.mp4


Video in attachement (noise from motor - > in one wheel there are some fragments of the rocks that are still not taken out)

I still need to fully install Sunray and setting up config file/ communications with Cassandra/ phone for more tests.

Todo:

When software will be fully installed:

-Testing communication over I2C - PICO. If needed updating pull up/down resistors configuration.

-Check what is the logic/code of on/off/stop button that is driven from Pi Pico - > update PCB logic (or code) if needed. Replace Digital isolator with cheaper more available optocoupler for switch?

-Rearranging PCB layout (1 displaced mounting hole for Raspberry board).

-Removing unnecessary components.

-Rearranging JUMPER selection configuration drive vs mow (ZS-X11H v2 can supply board back, with 5V).

-Increasing size of labels.

-Connectors covering labels - > relocate

-Larger vias.

-Wrong name of downloaded footprint of car fuse holder. Normal vs mini fuse.

-Swap charging connector to match the +/- sign on PCB to that on connector body.

-ITS428L2 tested, switching ok. Need more components for additional safety (reverse connection).

Update PCB to possibility of using 2 ITS428L2 for more Amps.

-Tps12110, switching ok.

Need more debugging on hardware undervoltage feature.

Possible variant of PCB that combine 2 separate PCBs, to one bigger PCB (that can be still cut into 2 smaller PCBs connected with cable (when soldering connectors) or stacked). Elimination of interboard connectors? Higher price of PCB Vs smaller price of assembly 1 larger vs 2 smaller boards?

Only if all working ok:

-Update all PCBs. Upload files.
 
Update 2:

Installed Sunray + Cassandra. Over HTTP (mqtt not tested yet)

Configured GPS, to get RTK fix over USB, skipping xBee Esp32 NTRIP (Finally needed different sets of ports for configuration, than provided on official www, NTRIP provider faq).
Gga set.
In Cassandra there is information about the Fix. So probably it is working.

ISO1640 (I2C Isolators) looks like it works OK.

Basic tested ina226 (at least main total power INA226) :
Some changes are needed in pico fw (2.5.1/3.0):
In example: fw 2.5.1



to pass ina226 calibration with 0,004R shunt (up to 20,48A)

With fw calibration adjustment, INA226 seems to work ok. Current changes, when motors are running, +/- corresponds with bench power supply readings. Volts / amps are shown in Cassandra.


mpu6050 looks like it is working on 0x68 address.

But after reading so many bad reviews (like: 3 in 9 pcs are partially working). It need to be fully verified when mowing:

(...) MPU6050 is obsolete, not recommended for new designs and went out of production a few years ago. The ones you find on Amazon or Aliexpress are faulty or fake or old stock.(...)






Other sensors are not better:

MPU9250 // also choose this for MPU9255

TDK-INVN has announced MPU-9250/MPU-9255 EOL by 12/31/2018

BNO055


Will be good in future to update IMU with more modern chip version.


Mow motor working OK (start/stop from Cassandra).

The on/off pinBatterySwitch logic working as it was programmed in PICO code:

The pinBatterySwitch is initialized as an output pin with:

pinBatterySwitch = Pin(22, Pin.OUT)
In the constructor (__init__), it is set to high (1):
Self.pinBatterySwitch.value(1)

This means that at startup, the battery switch is turned ON.

(that high signal keeping on the physical switch, when start button will be depressed after few seconds, and stop supplying high signal)

The code snippet that controls when the battery switch changes state is in the keepPowerOn() method:

def keepPowerOn(self) -> None:

if (self.batVoltageLp < CRITICALVOLTAGE and self.batVoltage < CRITICALVOLTAGE) or self.requestShutdown:
(...)
Summary:

The pinBatterySwitch changes from ON to OFF (value=0) when:

The battery voltage (batVoltage and batVoltageLp) drops below the CRITICALVOLTAGE threshold (which is set to 17V).

(In fw settings)

The debounce counter (switchBatteryDebounceCtr) exceeds 40, meaning the voltage remains critically low for a certain period (~200 checks, given the debounce logic).

When exactly:

During each call to keepPowerOn(), if the voltage remains below the threshold for enough cycles, the switch is turned OFF:

self.pinBatterySwitch.value(0)

This acts as a safety shutdown to disconnect the battery power.

In short:

pinBatterySwitch changes from ON to OFF when the system detects sustained critical battery voltage levels (< 17V) and the debounce counter exceeds 40 cycles.

Todo continued:

-different footprint for shunt resistor, rewire INA226 with 4 kelwin wire scheme on PCB.

-Mounting holes for imu

-Additional jst connector for external/new IMU in future.

-make on/off PCB part as a replaceable module, with selectable version with basic switch/more advanced different efuses

-Need to properly set odometry ticks + PID parameters (currently motors working fine without stuttering in Cassandra joystick mode).

-check resistors in UVLO

-rewire PWM/SIG with shielded cable

-install battery, outdoor traction test without mowing, if that pass, all PCBs/firmware settings will be updated and reuploaded.
 
Back
Top