Go Down

Topic: Flysky IBUS Sensor (Read 902 times) previous topic - next topic

PetrOsipov

Hello,

I am making an RC ship right now. I am using Flysky FS-i6 transmitter and FS-IA10B receiver, which support telemetry over the IBUS protocol.

I want to make my Arduino to monitor the voltage of the LiFePo4 battery and use IBUS Telemetry to send the voltage back to receiver, and later extend it for current, RPM of the screw, etc, too. Read out voltage is easy by using a voltage divider and analog in, but I have a problem with IBUS. There are libraries which can read it, but only one which can write it - https://github.com/Hrastovc/iBUStelemetry. And there is no wiring suggestion...

IBUS is a half-duplex, and has both TX and RX on the same pin. Library defines 2 different pins for RX and TX. Is there a suggestion how to wire this? Would such connection work? https://i.stack.imgur.com/ZsepX.png

PetrOsipov

Just a small update. After reading the code, connecting pin 4 to IBUS Signal was enough. I also supplied Arduino with GND and VCC from IBUS. Worked well at first, I also read the voltage out and transmitted it, by voltage divider (100k/1M, so I get safe voltages at A0). Only limitation was that I was able to transmit only integers, so I ended up transmitting 10x of the real value (so my controls shown 99V instead of 9.9, but as I need it for low battery alarm only, I can always set it to 90V instead of 9.0V)

When there was no motor on ESC it worked fine. Then I added a motor to ESC, and tried to control it. At this moment the GND cable between IBUS and Arduino went up in flames, and second later, the ESC (cheap Chinamade 320A part) also started smouldering. Fire alarm also started howling, at midnight.... After I extinguished it, stopped alarm, opened windows, and brought my wife and daughter back to sleep, I realized that the ESC probably had no common ground on Battery side and on Receiver/Servo side, so when only one idling servo was a load, it went well, and with a big can motor taking several Amps the entire current flowed over IBUS and Arduino to the battery GND (my sensor was at balancer plug). Luckily the thinnest wire acted as a fuse - the cable was a cut protoboard connector..

Arduino seems to be optically intact, same as receiver, will need to check if they are alive tonight.... Should have been only flowing over the GND on the board.... ESC is dead for sure.

So, my task is now to make a ground-isolated sensor for voltage


PetrOsipov

I finalized it I hope. My setup is now like this:

1) Battery Balancer connector. Contains a voltage divider (1M/100k, reducing 11 times) and 3 wires out (GND is doubled for convenience)
2) DC Stepdown buck, for supplying Sensor Arduino with 5V
3) Sensor Arduino. Reads the voltage, transmits it over hardware serial at 300 baud
4) Optoisolator pair, set to double inversion (Opto LED normal OFF), worked better like this. Prevents the Short due to no common ground.
5) IBUS Arduino. Receives the Sensor Data on hardware Serial, transmits them to IBUS
6) IBUS connector

Surprisingly, both the RC Receiver and Arduino survived the fire. Arduino on the left is the one, after cleaning fire traces and soot.

Will fetch some fresh heat shrink and iso tape tomorrow, and pack it into a small plastic box (which contained 100 pcs of 3x10 wood screws earlier), leaving only both cables out.

Go Up