it's a couple of weeks that I'm flying with my modified version of ArduPPM without troubles (from the PPM encoder side) so I decided to publish my work so you can test it too and we all can have a better PPM encoder.
The reasons why I made my version are two:
- ArduPPM failsafe only triggers when all signals are missing (while most RXs keep some signal to last position as an internal failsafe) and this is preventing the ArduPPM failsafe to trigger
- ArduPPM failsafe sets throttle to 900 which means motor off, which for stabilize mode means go crash down on the floor. I don't feel confident with RTL and I prefer having a stabilize mode during failsafe but please don't shut down motors.
So I came up with my version.
By the way I was doing this, I added lot of functionalities which I think are helpful for a lot of people. Everything is configurable at compile time and in my configuration when the signals are lost, pitch, roll and yaw signals are inverted (to try go back to where we had signal) and then all of them, including throttle will go to the failsafe values (1500, 1500, 900, 1500) smoothly reaching them in 3 seconds or so.
These fancy options should be implemented in the Arducopter code in the future (with mavlink parameters and so on) but for now this might work better than what we have.
Also this version drives some unused pins in order to have a strobo light and a buzzer.
These are the main improvements:
- Possibility to monitor just the throttle signal instead of all of them (for overriding the RX failsafe)
- Failsafe only affects throttle, pitch, roll, yaw and flight mode (channel 5). Channels 6, 7 and 8 won't be affected and will mantain the last value.
- When in failsafe, the flight mode is changed to flight mode 6 (instead of 4). The throttle, pitch, roll and yaw signals are overwritten with those set as failsafe settings.
- When entering failsafe, the values for each channel can reach the failsafe values slowly instead of plain overwrite (for example the throttle can be decreased slowly). The speed is settable. There's an excel file in the .zip that shows this behaviour.
- For throttle there's an option of keeping the last value if the failsafe value is higher than last one.
- For pitch, roll and yaw, there's an option of inverting the last value before starting going toward the failsafe values (in this way, the copter could locally invert its direction in the event of TX signal lost)
- Some flight modes can be selected to have no failsafe operation from the ArduPPM (for example flight mode 5 could be a failsafe disabled flight mode). In failsafe disabled modes, the last values for throttle, pitch and roll are manteined (VERY DANGEROUS for everything but loiter, RTL or Auto).
- Added a strobo functionality on PB5. This light flashes every 1.5 second normally and blinks fast when signal is lost or external alarm is issued from PB4 (useful for battery monitor or other alarms).
- Added a buzzer functionality on PB3. This buzzer will beep once every 1.5 seconds until TX signal is found (at bootup) and then will beep fast when signal is lost or external alarm is issued from PB4..
The disclaimer says:
Read the readme.txt
I tested the ArduPPM only with my settings but having so many possibilities means lot of options to be tested so please BE CAREFUL AND TEST EVERYTHING IN MISSION PLANNER BEFORE FLIGHT. TRY TURN ON AND OFF THE TX AND LOOK AT THE RADIO INPUT ON MISSION PLANNER ALSO STARTING FROM DIFFERENT PITCH ROLL YAW THROTTLE AND FLIGHT MODE POSITION.
TEST DEEPLY YOUR CONFIGURATION BEFORE HURTING PEOPLE AROUND...
...and then let me know if this works for you and what do you think!
Need to found my AVR Programmer LOL... thanks Augusto!
Anybody compared this fix to the new one?
I made it and used it on my hexacopter with APM1. Worked good to me but it's a branch off the main project and has nothing to do with the way they are dealing with failsafe in arducopter now. At the time I made it the arducopter didn't have failsafe so this was the quick and nice (to me) way. But it has some nice and interesting features that would be nice to see on the new PPM module (the previous didn't enter failsafe mode when my radio was turned off).