layout/spares document

It’s becoming increasingly difficult to find service documents on the internet (that aren’t just links to torjans/viruses) so I thought I’d upload the layout/spares document I have lying around to this site …

Service Codes (copied from
https://www.wirzfamily.ch/robomow-serice-codes/# incase there sites goes down)

all change all change!!!

So as it turns out I didn’t really have enough space on the “connector board” to place all of the connectors on comfortably, therefore I’ve changed the design to have each board pretty much completely independent, the only connections between the boards being power and I2C.


The main board with the Pi just contains a single power input and 5 combined outputs each with +5v, GND, SDA and SCL

The cutting motors board just contains connectors for the H-Bridge driver, 3 thermistors and the power/I2C block
The wire sensor controller interfaces with the 4 sensors
The drive motor controller has 2 5 pin outputs for the 2 H-Bride drivers and 2 2 pin connectors for the thermistors

cutting motor control board

There are 3 cutting motors on the RL2000, there is no real need to control these independently, therefore they will be driven from a shared output. The temperature of the motors should, however, be monitored independently. The motors have in built thermistors, therefore can be monitored using a resistor ladder with the analogue inputs to the arduino.

connector block

I’ve decided to change the design to be more modular, this will allow me to develop the system incrementally, as such I will use a set of stackable boards each board having there own function.

The “top” board will contain the connectors to all of the sensors/drivers (also containing the main pi zero) as shown in the diagram

perimeter fence detection

There seems to be very little information about the robomow perimeter fence, apart from the obvious that an alternating current is passed round the perimeter wire producing a magnetic field.
To detect the magnetic field I first attempted to reuse the sensors built I to the robomow on the assumption that they were induction coils with a lm386 amplifier, but I got no signal from them.
I got hold of some 100mH induction coils and wired them up to the lm386 amplifier and discovered the signal!!!
It appears to be a square wave of about 4.5kHz with roughly a duty cycle of 25%, the following image is the data captured by the Arduino.
I could clean up the signal, either with some extra electronics, or via a software algorithm, but as I’m only interested in the amplitude of the signal (it will be larger then the inductor is over the wire) I don’t think I’ll bother …
… just as an aside the inductor goes absolutely mental when it’s near my induction hob!!! (as you’d expect)

testing the motor controller

So I’ve received the motor controller so thought I’d give it a quick (safe) test out of the mower. Basically I hooked it up to an Uno I had lying around to the motor controller (not the L298 shown in the picture, but that is all fritzing seems to have), hooked the motor controller up to a 5V supply (an Uno output) and them measured the output of the controller on one of the analog ports.

 

const int pwmPin = 5;
const int dirPin = 7;
int counter = 0;
int changeCounter = 0;
int currentSpeed = 0;
int targetSpeed = 0;
void setup() {
 Serial.begin(19200);
 pinMode(dirPin, OUTPUT);
 pinMode(pwmPin, OUTPUT);
digitalWrite(dirPin, HIGH);
 analogWrite(pwmPin, 0);
}
void setMotorSpeed(int target)
{
 if (currentSpeed < target)
 {
 currentSpeed += 5;
 analogWrite(pwmPin, currentSpeed);
 }
 else if (currentSpeed > target)
 {
 currentSpeed -= 5;
 analogWrite(pwmPin, currentSpeed);
 }
}
void loop() {
setMotorSpeed(targetSpeed);
// Change the target speed every 100 loops
 changeCounter++;
 if (changeCounter > 100)
 {
 if (targetSpeed == 0)
 {
 targetSpeed = 130;
 }
 else
 {
 targetSpeed = 0;
 }
 changeCounter = 0;
 }
double a0value = 0;
// read the average value over 100ms -ish
 double loopTime = 100;
 for (int i = 0 ; i < loopTime ; i++)
 {
 a0value += analogRead(A0) / loopTime;
 delay (1);
 }
counter++;
 if (counter > 2)
 {
 Serial.print(a0value * 5 / 1023.0);
 Serial.print("v ");
Serial.print(currentSpeed);
 Serial.print(" ");
 Serial.print(targetSpeed);
 Serial.println("");
 counter = 0;
 }
}

cutting motor investigation

With the top of the RL2000 off I put it into “service mode”, one of the service mode options is to test the cutting motors. The test puts all three motors on full speed for about 10 seconds (IIRC).
With the test running I placed a multi meter across the terminals and found that the full 25v was being applied to each of the motors, the surprising thing was the current usage. Considering they were under no load (there is no grass to cut in my garage) the 3 of them pulled a total of 3-4A,
Considering when mowing normally the total load is only 4-5A this represents a significant portion of the batter usage. The RL2000 does have a mode where the cutting motors are slowed down, with this in mind I’ve decided to use a motor controller to reduce the speed of the motors to increase mowing time.