Repairing a Robotic Pool Cleaner : Zodiac Vortex 3 - Page 1
Forum section: electronics / repair

author: folays
author_rank: Contributor
timestamp: October 20, 2024, 02:12:36 am
content: Repairing a Robotic Pool CleanerHello, my friend's robot pool cleaner wasn't working anymore (a Zodiac Vortex 3 2-wheel drivers).It was going in some sort of default mode when trying to start it up. I set myself to trying to repair it, and I observed the following :=== A) Always out-of-water console box :It has 3 buttons, (a) clean bottom (b) clean bottom + climb/clean walls (c) STOPAnd when it is unhappy, it signals it by flashing some red leds.It has 3 wires going to the in-the-water robot : common ground, +12V, +28V=== B) in-the-water robotNot much is going on. The 3 wires go into a (normally) waterproof motor block, inside it there is a motherboard, connected to 1 motor propeller, and 2 sides motors (each motor doing wheeling + brushing).When I opened up the motor block, I saw humidify, and dried that.Once dried, the propeller was working, but after 5s, as said in the manuals, the robot detects that it is out of the water (can happen in pool having a "beach") and goes to default.I figured out that until it would be put in the water again, I couldn't know if the side motors were still working.The robot has multiple years, labels are not much readable, I didn't know the side motors Voltage, and I didn't have any Test Equipement to slowly raise the Voltage of the side motors until noticing them either working of being defective.I took a leap of faith, and briefly connected them DIRECTLY and briefly to the +28 V raid, and they were working.I closed back the motor block, but each times you do that, there is an impact on the waterproofability, because the screws clamping shut waterproof block are screws were the nuts side is just the plastic of the opposite piece, so you do that 3 times and you aren't waterproof anymore.So I closed back the motor block, knowing that the 3 motors works, but sadly only one of the side motor works : the motherboard has a problem, and were driving only one of the motorI bought a remplacement motherboard for 92 Euros (for references, the whole assembly of the waterproof motor block including the IC motherboard + 3 motors is 300 Euros brand new).The replacement was an old-but-seller-checked board, not a brand new one (which are going for 150 Euros).I opened up and replaced the board, and closed it up, and the robot was working.Then sadly it failed again 1-2 months, and this time it was not humidy, it was hugely watered.Since then, I decided I wanted to learn electronics more seriously, because that's very much not the only electronic item which died recently, but with enough Test Equipment, the whole process would have been way simplier, and I probably could have replaced the damaged item on the old board board if I were to find out which one was (which should be not so hard, considering the board has symmetry, and only one side motor doesn't work, so we can easily compare diodes, relays, etc... between the non-working and the working side...).Here is a picture of roughy what the board looks like :https://www.atelier-piscine.com/3930-large_default/carte-embarquee-pour-moteur-vortex-3.jpgThis is not quite exactly the same than my old one (nor the replacement), those I have a relays to switch on the motors, I guess in brand new one, there are going for MOSFET instead.Since then, now I have a rather serious scope, a lab power supply so I'm engaging in more serious reparation that just "welp just buy a replacement board everytime a capacitor dies" or whatever.For the story, one of the side motors died this time, it's 28 euros, and another 30 for the torque reductor, which I have yet to determine if I also need to replace it or not (I don't known which part is responsible of preventing water ingress, if it is the front of the motor, or if it is the torque reductor).Well, clearly I'm doing that for the sake of the fun of learning electronics, because I don't think I will ever recoup money I spent on the various Equipements, but I least I get the auto-satisfaction of the know-how.To try to being study the board under power, I connected it to a SPD4036X to provide it +12V and +28V.But it didn't start any motor, not even the propeler.If I were to connect it back to the official control console, the propeller were starting, but was stopping after 5s (for not being in water). In any case, the side motors.This very much annoys me, because I wanted to start analyzing the board by checking the voltage of the relays, compare them, etc etc... working my way up the chain of whatever MOSFET is probably driving the relays etc...I then connected a SDS3034X HD, and I observed that :the +28V rails is not powered, at least until we push the start button (otherwise it's a 0V)When we push the start button, the +28V rails is immediatelly brought up to +28V, but that doesn't start any motor (not even the propeller), whichstarts[]b/ to rotate like only 1-2s after the +28V is brought upWhen the propeller stops after 5s, the +28V rails is still at +28V, and only goes back to +0V some seconds after the propeller completely stopped.So it is clear that the +28V rail only "provides" power, which isn't directed to the motor until some logic IC/MOSFET decides to bridge it to the motor(s)The +12V rails has a signal, which I measured very precisely to be exactly 9600 bit/s (I put some scope's cursos 4 rising edge appart, and the scope was telling me 2401 Hz, so 9604 Hz accounting for the 4 bits).Some random infos :The +0V, +12V, and +28V seems to be galvanically isolated from the mains, and neither of them referenced to ground/eath. The BM869s oscillates widly and does achieve to find any DC voltage between Earth and none of the 3 rails.The scope probes also measures nonsense until we connect the ground of the probe somewhereI very, very carefully, after doing lot of research and learning past weeks on the implications of the oscilloscope ground, connected probe-ground to the +0V of the robotIt made the scope reading sensible values (observing precisely +12V and +28V)Of course it's not Mhz stuff, so I quickly put aside the probe-ground-clip, and instead crocodile-clipped the scope-ground-terminal (the one used to adjust probe compensation) to the +0V of the robotConnecting the earth of the scope to +0V of the robot indeed made the rails stopping to be floated, and correctly referenced them all to ground.I then wanted to try for the fun to decode the 9600 Hz signal of the +12V rail, which I guess has some info inside telling the motherboard to start motors, because just pure +12V weren't doing anything.The +12V signals is by default idling HIGH between (long) pauses, and pulling LOW when there is activity.I tried (in this order) the scope decoder : LIN, UART (TX), CAN-FD.LIN annoyed me a long time. It only accepts to consider a "Idle LOW", whereas I had a "Idle HIGH" on my +12V.(it is different w.r.t. CAN-FD and UART which can be set idle LOW or HIGH).Well, I told myself that anyway the 3 rails were floating when unreferenced, so I unclipped the ground, and instead I connected the earth terminal of the scope, to the +12V of the robot, to get instead a "idle LOW / signal HIGH" (to make the floating motherboard, having it's varying 12V signal being referenced to earth, and making the +0V appears to be rising to "signal HIGH, idle LOW").Reminder :below it's ME that is calling the +0V rail of the robot, the +0V, because it very seemed unreferenced w.r.t. to earth, so I called them +0/+12/+28V, but of course I could have called them instead -12/+0/+16V ...(I found the original relatives potential by measuring the robot wires with a BM869s).Weirdly enough, when I connected the scope earth terminal to the robot +0V, the BM869s measured +12V on the +12V rail, relatively to the common-earth-&-robot-0V-rail.But when I instead connected the scope earth terminal to the robot +12V, Ithe BM869s measured -17V on the robot +0V, relatively to the common earth-&-robot-12V-rail.I don't understand why, when reading with the BM869s, the Voltage potential between the +0V and +12V rails, was reading 12V Voltage potential when applying Earth reference to the floating +0V, but was jumping to 17V Voltage potential when applying Earth reference to the floating +12V.I guess they weren't floating as much as I thought they would...Anyway, I finally used a differential probe to reverse-measure the 12V rail, so that I could provide a idle LOW, signal HIGH.Finally, I couldn't get LIN to decode anything remotely useful, UART I couldn't get any combination of parity/length/etc... decoding to anything useful.I finally maybe achieved to decode as CAN-FD, see my two screenshots above.So here are my two questions, for now :1) Do you think that I correctly decoded the +12V signal (capture below) as CAN-FD ?I may want to play with that sometimes, to try to send myself commands to the robot. Binary waveform capture (4 MB) athttps://transfert.free.fr/sp5fpCt2) The fact that the robot thinks that it is NOT in a pool is annoying me, because it wont start the side motors. I measured the propeller at consuming (out of water) 0.5 Amp when running, so around 56 Ohm. Do you think that If I buy a DC load, namely SDL1020X-E , i could connect it instead of the propeller, and slowly lower the 56 Ohm load resistance, to try to fool the motherboard into thinking it's a propeller being in water ?It would then start the side motors, and I could analyze more easily the board...Thanks & Best Regards,

author: Poroit
author_rank: Frequent Contributor
timestamp: October 21, 2024, 04:47:57 am
content: G'day Folays,Can you determine what the "Water Presence"sensor is?Maybe you can bypass it so you can properly bench test the Pool Cleaner.Post a pic if you are not sure.

author: folays
author_rank: Contributor
timestamp: October 21, 2024, 08:51:33 am
content: There is literally no water sensor, it's like a submarine without pressure gauge nor periscope, how can it known whether it is submerged or not.The robot starts the propeller for 5s, and then stops if outside water... I think it measures the Amperes of the propeller rail to figure it out.Contrary to the 2 side motors, the propeller has in addition a small capacitor near to it. I guess it's used to measure charge time across a known a known resistor and deduce Ampere,and deduce whether the robot is in water or not.I ordered a DC load to simulate a less resistive load than an out-of-water motor...

author: folays
author_rank: Contributor
timestamp: October 25, 2024, 03:44:19 pm
content: When replacing the propeller motor with a DC load and reducing the resistance to half of the propeller-in-air, the robot correctly thinks that it is in water, and no longer goes to default mode.Here below are two pictures of the board. Please note that I "mirrored horizontally" the bottom (reverse side) photo, so that visually the component can overlap to figure out traces more easily.The 2 relays are not commanding the motors independently. They're only for reversing the polarity on both side motors (wheels) so that it may go backwards.The is 4 MOSFETs :top-left : probably a buck or boost, there is a small cap and a small inductormost right, edge of the board : propeller MOSFETthe one having its gate attached to the RED probe : the working motorthe one having its gate attached to the BLACK probe : the not-working side motorWhen I bridge both gates together, the two motors works. So the BLACK-probed MOSFET works.On the BLACK gate, I don't see the same voltage level as on the RED one.When I will have some time, I will use the Multimeter beep-mode to climb up the trace and find which component is missdriving the BLACK-gated MOSFET.

author: Poroit
author_rank: Frequent Contributor
timestamp: October 26, 2024, 07:26:27 am
content: You seem to be making good progress

author: Kean
author_rank: Unknown
timestamp: October 26, 2024, 03:44:11 pm
content: It seems likely that the circuitry at far left of the PCB is a buck regulator to get 5V to power the ICs.The R100 (0.1 ohm) resistors will be for current sensing of the motors as you predicted.The IC and circuit at upper left to the central microcontroller is probably for level shifting the 9600 baud communications bus.Can you read the part number markings on those two 8-pin ICs in the middle of the PCB. They could be MOSFET driver ICs. I see a couple of small transistors which probably control the relay coils.I wonder what S1 and (unpopulated) S2 components are. Maybe ball bearing (mercury?) switches to detect orientation (e.g. if it is upside down).I also wonder if the code in that PIC18F2520 is protected...

author: Sportline
author_rank: Newbie
timestamp: November 05, 2024, 01:17:16 pm
content: S1 is a tilt switch, it detects the angle of the robot, the box in which the metal ball rolls and makes contact with these 4 legs. And the missing S2 I think is built into robots that clean in the other direction as well 🤷🏼‍♂️