Hi, I'm building my first quad and am having problems getting the ESCs to arm. I have followed the ESC calibration instructions, several times, but no luck. On the APM (loaded with the latest code V2.1.0) I get a solid green light indicating it is armed. Radio has been calibrated. I attached a Fluke Scopemeter to the ESC drive pins on the APM to see what was going on and found everything OK, once the APM is armed I get pulses ranging from about 1.00ms to 1.80ms as the throttle is advanced. The pulse repetition rate (frequency) was 400Hz. To test the ESC I used a pulse generator and found that the ESC will not arm at any frequency above 150Hz (1.0ms pulse width). The ESC arms correctly when connected directly to my radio receiver (50Hz rep rate, 1.0ms pulse width).
The ESC is a E-flite 30 Amp Pro. Eflite technical phone support couldn't offer any suggestions.
As I see it I have two options, buy different ESCs and hope for the best or use the ones I have and change the ESC drive frequency to 150Hz in software and reprogram the APM.
Does anyone know where in the code I can change the frequency? I am not a programmer but can usually tinker with existing code to make things work.
Any ideas or suggestion would be welcome, thanks....
Anyone know if it still slows the main loop down? Looks like the functionality to change the interrupt? (or is it just a PWM (does atmel call it a CCR register?)) is not there anymore. Its seems to be less obvious in one of the libraries.
I had a similar problem to this, and wrongly assumed from the ESCs beeping that the ESCs were forgetting their calibration once powered down. Once I scoped it, I saw the real problem. I originally posted this in a thread about user hooks, but it should be here:
"To anyone following this: I've determined that my ESCs are 'special', but it's not that they forget the calibration each time they boot!
They are emitting 'bidoobidoobidoo' *pause* 'bidoobidoobidoo' *pause* on repeat once booted. This is because they won't boot until you reduce the throttle signal they're receiving to the calibrated lowest setting OR because they're receiving no signal at all. I'll investigate what signal I'm getting from the output pins of my APM (the RC output pins) using my oscilloscope and go from there."
"The scope showed that my PWM widths were identical between the receiver throttle channel and the APM output, but the continued beeping of the ESCs (and the much higher frequency that I was getting as output from the APM) indicate that they simply can't take an update rate this high.
I'll get back to the manufacturer, and move this thread where it might be more helpful, it doesn't belong here."
The manufacturer hasn't yet got back, but meantime I've recompiled with INSTANT_PWM ENABLE in APM_CONFIG.h and hey presto, the ESCs spin the motors when I arm the APM and bring up the throttle.
I have been fighting this same problem for 2 days. E-flite ESCs just don't seem to like the fast rate. I am using Arducopter version 3.0.1.
I can not find the above mentioned code in the source anywhere. This post is 2 years old so I assume it was a much older version. What do the newer versions use instead? I saw in the release notes for version 2.8 that INSTANT_PWM was removed. It didn't say why.
How can I change the update rate in the 3.0.1 code?
There's an RC_SPEED parameter that should do what you want. it defaults to 490hz.
INSTANT_PWM was removed because it really doesn't help. The idea when INSTANT_PWM was introduced was it would shorten the time between when the flight controller completed it's calculations and when they would be sent to the motors. What we found however was that there's filtering on the ESC side and this massively slows down how quickly the ESCs will process the message anyway. To get the ESCs to respond quickly what works better is to overwhelm them with messages to force what you want through their filter. This is why we send at 490hz even though the flight controller only changes the output at 100hz.