One more thing. If I switch to: new Sequencer.ChannelConfigPwmSpeed(Sequencer.Clock.CLK_250K, 750, 0, new DigitalOutput.Spec(2)); which would translate to the same input PWM freq as with the 2MHz example, the ESC does not arm.
I feel I am missing something basic but I am not sure what. Claudiu On Monday, December 22, 2014 12:54:19 PM UTC+2, [email protected] wrote: > > Thank you Ytai for jumping in. > > Just tried the value of 40000. The ESC does not arm. > Also tried the value of 2000 (the ESC specs state the Input PWM is 1KHz). > Same behavior. > > When switching back to 6100 (it works with 6200 as well and any value in > between) things work again. > Does this mean that the ESC input PWM freq is at around 350Hz? > Do you have any idea how I could probe this? > > When you say we feed the pulse width in microseconds instead of ticks, > what do you mean? > The difference I see from your way of feeding the pulseWidth is that you > multiply by 2. Is this how it should be converted from microseconds to > ticks? > If we multiply by 2 like in your example, the ESC doesn't arm. > > Thank you, > Claudiu > > On Sunday, December 21, 2014 7:45:15 PM UTC+2, Ytai wrote: >> >> Is it possible that you're confusing the motor (output) PWM rate with the >> control (input) PWM? >> Hobby ESC are almost universally 50Hz (20ms) input. >> You also used the wrong type of PWM channel and fed the pulse width in >> microseconds instead of ticks. >> >> So I imagine you should need something like: >> >> // 40000 ticks @ 2MHz == 20000us == 20ms >> // Also, the PWM rate corresponds to SPEED not POSITION >> new Sequencer.ChannelConfigPwm*Speed*(Sequencer.Clock.CLK_2M, 40000, 0, >> new DigitalOutput.Spec(2)); >> >> ... >> >> // Then: >> ChannelCuePwmSpeed cue; >> >> ... >> float power = <value between 0 (stopped) and 1 (full speed)>; >> cue.pulseWidth = Math.round((1060.f + (800 * power)) * 2); >> >> On Sun, Dec 21, 2014 at 4:29 AM, <[email protected]> wrote: >>> >>> Hello, >>> >>> I am having troubles understanding how the Sequencer works for >>> controlling a couple of ESCs. >>> The ESCs are Afro ESC from HobbyKing. Their manual can be here: >>> http://www.hobbyking.com/hobbyking/store/uploads/745353836X1335174X28.pdf >>> According to their specs: For PWM input, motor stop / arm below 1060µs, >>> full power at 1860µs. >>> That would be the pulse width for controllig the speed of the motor, >>> right? >>> >>> The code we have in our Android app to initiate the sequencer: >>> final ChannelConfigPwmPosition motorESC = new >>> Sequencer.ChannelConfigPwmPosition( >>> Sequencer.Clock.CLK_2M, 6120, 0, new DigitalOutput.Spec(2)); >>> >>> the cue value is set to 10: sequencer_.push(cue_, 10); >>> >>> and the value that we send for the pulse width are generated as follows: >>> uno_varValue = (int) (1060 + (motorsPowers.nw * 8)); >>> >>> The motor is running with these values but I just can't understand why. >>> Some of the questions we have: >>> - why only values around 6100 work for the period. The ESC should have >>> an input freq of 1 Khz (according to this: >>> http://www.hobbyking.com/hobbyking/store/__52338__Afro_ESC_30Amp_Multi_rotor_Motor_Speed_Controller_SimonK_Firmware_US_Warehouse_.html) >>> >>> though the manual says this: The default PWM frequency is 18kHz with 800 >>> distinct steps, but may be adjusted to any frequency. >>> - why only 2Mhz clock values worked. I was not able to make it work with >>> other values >>> - if the documentation says that 1860µs is the value for full power, why >>> I don't get full power when I send 1860(I can send up to 2500 and there is >>> a clear change in the motor speed) >>> >>> The whole code can be found here: >>> https://github.com/cllaudiu/vespi/tree/master/vespidrone/src/ioio/rd/vespidrone >>> >>> We are trying to build a drone based on Android and we have some >>> stability issues at this stage. It flies but we find it hard to control it. >>> Before getting into PID tuning and other elements we want to make sure that >>> the Android - IOIO part works perfectly and that we understand what happens >>> there. Thank you for your time. >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "ioio-users" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To post to this group, send email to [email protected]. >>> Visit this group at http://groups.google.com/group/ioio-users. >>> For more options, visit https://groups.google.com/d/optout. >>> >> -- You received this message because you are subscribed to the Google Groups "ioio-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/ioio-users. For more options, visit https://groups.google.com/d/optout.
