-
Notifications
You must be signed in to change notification settings - Fork 13.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Cross check CPPM operation on IO v1.3 with FrSky receivers #921
Comments
Sorry not much help here except I can say that I do not see any issues with a FlySky TH9X (OpenTX) feeding EZUHF radio transmitting 12 channels on the latest master. |
On a FMU-v1 & IO 1.3? If so, where did you connect CPPM - to J4 on the IO board or to J1 on the FMU board? I had serious trouble some time back using the 3DR CPPM converter and a Spektrum Rx: frequent RC signal loss conditions and nonsense RC channel values. This was completely fixed by adding a 1K0 in series with the CPPM signal (just like what you get when you connect CPPM to J1 on the FMU board). Pixhawk uses a (different value) series resistor for the CPPM signal, too. The FrSky D4R-II Rx works fine here, although with the 1K0 fix. Haven't tried a direct connection yet and won't be able to do so soon cause I first have to rebuild my stuff after a crash. |
Not sure what CPPM is, but I am connecting my radio PPM output to the PX4IO PPM input next to the eight servo outputs. |
In an RC context, PPM by default denotes a single channel signal, so CPPM (= Combined PPM) is often used for marking the difference. Graupner called it "Summensignal" long time ago. |
Yep, we connect the FrSky D4R-II to the PX4IO (v1.x) PPM input to the far right of the eight servo outputs. I've confirmed this works very smoothly with git commit 6dce571 running on multiple PX4 1.x boards, with multiple D4R-IIs (fresh from factory, not reflashed, not running all 8 channels at max at any time). With the current "continuous" build we see throttle spikes after arming on one PX4FMU+PX4IO combo, which can cause a quad to flip on the ground if props are on. My next step is to try swapping in a different PX4IO to see if that IO is bad. |
Tried exchanging PX4IO with another and result is the same: 6dce571 shows no RC2 (throttle) spikes, whereas running latest CONTINUOUS build shows occasional full RC2/throttle spikes and throttle shutdown after arming. |
This seems to be related to #930. |
I've created #943 to track the I2C issues - if we cannot reproduce CPPM issues with current NuttX master (where the change is reverted) we can close this card and focus on the I2C aspects. |
I went through a lot of problems with the CPPM signal using Arducopter on 2 different PX4's in November. I would get input glitching on multiple/all channels simultaneously. The RCInput in logs would show Zero values, even though there was code that should never have allowed values of less than 900 (IIRC) to be returned. These were single frame errors. On one of the machines, an RC Helicopter with a belt drive, I discovered the root cause was static buildup and discharge from the belt drive. Not a lot. And not enough to cause problems with other electronic systems on this model of helicopter, the problem seemed unique to PX4 and/or my particular helicopter. I installed extensive ground wiring to eliminate the buildup, and the problem went away. The other machine however was a quadcopter. I never found the cause, there was no source of static. I eventually replaced the PX4 with a Pixhawk with no other changes, and the problem went away. I now have PX4's running on two other helicopters with no issues. Neither of these have belt drives so no static buildup. I wish I had more conclusive evidence. But I spent something approaching 100 hours on the problem, and once I solved it I didn't circle back to find out exactly what the problem was. |
Ok Rob, thanks. I think the problem is essentially noise and I'm currently looking into improving noise immunity. What I hadn't realised earlier but noticed today is that we actually use a more resilient implementation of the FMU <-> IO communication on FMUv2. Bringing some of that to FMUv1 will likely put this to rest, even in very noisy environments. |
Are those noise immunity differences in software or hardware? |
There's a link integrity check on the v2 boards that isn't currently implemented for the i2c interface on the v1 systems. I sent Lorenz a prototype that adds similar checking to the i2c link today; it will probably require some tweaking before it's ready to deploy. Note however that this is a band-aid; it will reduce the likelihood of data corruption between IO and FMU passing un-noticed, but it won't do anything about the root cause of the corruption. The edge detector in the STM32 that is used to decode the PPM signal has several clocks (my recollection is 3 @ 24MHz) of debounce filtering. If you are seeing noise glitches longer than a microsecond or so, they may be recognized as false transitions in the stream. The IO-side decoder is edge-direction sensitive, so for a short glitch it will drop the next two edges, meaning that you will normally see corruption of one or two adjacent channels. The FMU-side decoder is edge-direction agnostic, so in many cases you will lose the entire remaining PPM sequence (the channel hit by the glitch and all higher-numbered channels). Improving IO<->FMU link integrity will do nothing for either of these issues. It would help if anyone experiencing problems with PPM input glitching could try some specific interference suppression techniques.
Combining both techniques may help further, and we would appreciate feedback from anyone that has an opportunity to try this. |
Per suggestion from @LorenzMeier I tried this: cd Firmware/NuttX I first tried bench tests and could confirm that the throttle spikes and throttle shutdown/disarm problems we were seeing vanished. I then tried flying and was able to perform some very smooth flights with F450, px4fmu+io 1.x This was with main PX4 firmware commit 15e65fd |
Ah. Good to know that the hours I spent crimping my own custom shielded
|
So what Robert was seeing looked like this: The first pulse looks like an I2C transfer fail (the zero decoded values would not have been returned by the decoder and I was able to reproduce this with I2C bus errors), the 2nd pulse is not entirely clear - this could very well be a decoder error, as its trivial to generate this outlier by moving / falsely detecting an edge while its not so easy to generate the opposite change on two channels with noise / software errors on the bus. |
Is that from my logs? On 15 May 2014 10:30, Lorenz Meier notifications@github.com wrote:
|
Yes, and I also downloaded the rest of the data from your PC 8). |
Has this been fixed in the current PX4/NuttX master? I see a revert related to stm32_i2c |
Hey guys, hope this is useful to somebody out there. I just had a bunch of issues with my PX4 glitching with FrSky D4R-II w/ 27ms firmware. PX4 is being powered by external BEC. I was having glitches every 4 seconds or so, very random and severe. Tried uploading latest PX4 firmware, tried ferrite rings on power cables, tried a different RX, none worked, still glitching. Changed BEC voltage from 6.0V to 7.5V and there is no more glitching!!! Well, at least I am yet to experience a glitch. I will write back if I see any glitches. |
A bit of additional info:
|
Thanks for the report. If you check the IO docs, you'll find that the minimum input voltage for the power port is 6.4V - hence your outcome is expected, as it can't work with the lower voltages. |
Joly, if you need, I can tell you how to supply the PX4 with down to 5.2V On 18 October 2014 08:59, Lorenz Meier notifications@github.com wrote:
|
Lorenz, perfect. I was going off thePX4IO schematic on the pixhawk website, says 6-18v. The actual web page seems to have the correct info though. It seems that other people are referring to the I put as the "6-18v input" instead of "7-18v" which is confusing. E.g 3DR online store: https://store.3drobotics.com/products/px4-fmu-flight-management-unit-plus-io-input-slash-output-kit It would help a lot if these websites can somehow be updated. It makes a quick google search on the input voltage range very misleading. What's more, I was even more confused because 5.2v was giving less issues than 6.0v, I was thinking to myself, "according to the schematic it's within range!!" Rob, thanks I might do that one day in the future, but this heli uses HV servos :D I actually needed 7.5V but was starting off with lower voltages during the setup process. Luckily I won't have to modify anything. Thanks again. |
Yes, I use HV servos as well. But my concern is what happens when the 2S You won't have that problem with a regulator, but note there is some risk On 18 October 2014 15:38, Jolyon Saunders notifications@github.com wrote:
|
Good advice, appreciated. This BEC is rated to 7A continuous, 15A peak. Should be up to the job as the servos are only micro servos. I can stall one of the servos (takes much manly force) and the rail voltage doesn't budge :) I'll heed your advice and add a cap though. |
NuttX: - https://github.com/PX4-NuttX/nuttx/tree/master - PX4/NuttX@ee32b44 Changes from PX4/NuttX (PX4/NuttX@423371c) in current PX4/master (309322c) PX4/NuttX@423371c...ee32b44 ee32b44 (HEAD, origin/master) arch/mips/src/pic32mz: Add DMA support. 87499ba arch/mips/src/pic32mz/pic32mz-gpio.c: Use LAT instead of PORT when writing. 4f9623a drivers/sensors/vl53l1x.c: Fix other cosmetic coding standard issues. 696197c drivers/sensors/vl53l1x.c: Fix more upper-/lower-case problems. bbd4b22 arch/arm/src/stm32h7/hardware/stm32_ethernet.h: Correct ETH_MACMDIOAR. Correct the physical layer address bits in ETH_MACMDIOAR register. 6a75c81 Fix some lower vs upper case problems in last commit. f466d05 drivers/sensors/vl53l1x.c: Add support for VL53L1X TOF sensor. 157bf15 configs/pnev5180b/nsh-cdcecm: Adds NSH configuration with UART0 and eth0 via CDC/ECM on USB device. 9a60350 Merged in alinjerpelea/nuttx (pull request #921) 4445a78 Update a README Apps: - https://github.com/PX4/NuttX-apps/tree/master - PX4/NuttX-apps@27766d7 Changes from PX4/NuttX-apps (PX4/NuttX-apps@7db2a35) in current PX4/master (309322c) PX4/NuttX-apps@7db2a35...27766d7 27766d7 (HEAD -> master, origin/master) Merged in masayuki2009/nuttx.apps/fix_apps_industry (pull request #178) d2f3ad9 Merged in masayuki2009/nuttx.apps/wireless_gs2200m (pull request #177) 2c8e349 Merged in masayuki2009/nuttx.apps/add_system_gs2200m (pull request #176) 6561573 industry/abnt_codi, include/industry/abnt_code.h, examples.abntcodi: Adds support for ABNT CODI library. This is an energy meter protocol used in Brazil. bd14bf7 apps/netutils/json: Removed. Replaced with apps/netutils/cjson. 24e590b apps/nshlib/nsh_ddcmd.c: Seemingly nonsense change but somehow works around a compilation error using the ZDS-II toolchain. It was claiming that vtbl was undefined indd_outfopen(). 87c1083 apps/netutils/netinit: MAC address configuration was represented by type long long. That is a problem for architectures that do not support typle long long. Replaces by two long configuration items. 8c36ec3 nshlib/nsh_parse.c: Fix a warning about an uninitialized variable from the ZDS-II compiler. 6c815a8 apps/nshlib/nsh_ddcmd.c: Cosmetic edition of FAR 63de16b netutils/telnetd/telnetd_daemon.c: Fix another C89 violation that caused the ez80 build to fail.
Some users with FrSky receivers had issues. We need to work out if something particular about the D4R-II is an issue or if there is something on our side that would need to be addressed. There are no reports of issues with that receiver on Pixhawk (IO v2.3/2.4).
The text was updated successfully, but these errors were encountered: