Jump to content

Ninebot One: Pedals vibrate when descellerating...


Gunthor

Recommended Posts

This is kind of annoying:

Since upgrading to the latest Ninedroid app and firmware the pedals vibrate when descellareting! After travelling long distances (10km) this behavior stops and leaning back will then slow down the unicycle smoothly without those vibrations. I recalibrated the sensor three times (hoping to stop the vibrations) - but to no avail...

My Riding mode is set on zero, because for me this is the safest setting: The street I live on has 17%! On Riding mode 3 the ninenbot one reacts for me far too slow and I landed flat on my face once :-(   With zero however the pedals stay level and react very fast. I travelled 900 km so far and did not experiance those vibrations with the old firmware. Are there any other 9b1 users that may be able to confirm this behavior? Is there a workaround (besides riding 10km in one go)? 

Link to comment
Share on other sites

I recall that at least the original Solowheel had same kind of problem, if you started your journey going downhill or braked a lot, the wheel would shake to warn you of overcharge (due to regenerative braking and full battery). Don't know if it's the same with new Ninebot firmware, I guess it could be, if the overcharge voltage detection uses too low voltage value, so it wouldn't stop until the battery has much less charge left and the voltage has dropped... not sure on this, maybe someone who knows Ninebots better has more clues. @mengke ?

Link to comment
Share on other sites

 

I recall that at least the original Solowheel had same kind of problem, if you started your journey going downhill or braked a lot, the wheel would shake to warn you of overcharge (due to regenerative braking and full battery). Don't know if it's the same with new Ninebot firmware, I guess it could be, if the overcharge voltage detection uses too low voltage value, so it wouldn't stop until the battery has much less charge left and the voltage has dropped... not sure on this, maybe someone who knows Ninebots better has more clues. @mengke ?

Hi Esaj, 

I am so flattered. Thank you for @ me. I experienced the same thing 3 days ago by riding my friend's E+. The vibration is normal when you set the riding mode at zero if you tune it down to 2 it will be gone. You don't have to ride it to trigger, just step on the pedal with one leg and trying to press down pedal forward/backward with the Ninebot leaning to you by maybe 10 degree angle, it will start to vibrate and the harder you press down the harder the vibration is. It is strongest when you have full charge and will getting weaker as you consume some of the electricity. The vibration is not a bad thing it almost tells you that the output is max at the moment and your unit is super responsive. The vibration is more like the Unicycle trying to move due to the angle/positioning but restrained by the rider to do so. Very similar to when you drive your car, you accelerate with your brake fully pressed, so It is not moving but it engine has been engaged wildly.

Do this make sense?

If you try some other power unicycle they vibrate a bit as well. Like my rockwheel 14 inch. But  just when you have full charge. 

Jeff

Link to comment
Share on other sites

For the Solowheel, there is the overcharge warning which is not so much a vibration as it is a hard shudder/shake.  Normal riding, you feel a slight buzz from the regeneration and just normal electronic sounds.  Otherwise it is pretty smooth.  Are you getting a very strong vibration or just a light vibration?

Link to comment
Share on other sites

mengke is right about the wheel. I get the same vibration when sitting idle with one foot on my wheel. I don't get when decellerating though. When I first got the wheel it never happened. Now it's been doing for almost a month. I was able to get rid of once by resetting the Attitude Sensor twice then setting the ride to 3 (restart) then setting it back to 0 (restart). It started doing it again a couple wheeks later. Repeated the process with no luck. I set my wheel to 1 to calm down the vibration. It's still annoying but ridable. I'm going to test it somemore this weekend to see if I can get rid of it once and for all. 

Link to comment
Share on other sites

Hi Esaj, ​

I am so flattered. Thank you for @ me.

​No problem, I usually try to tag someone I know has more technical information and/or experience with the wheel in question, as they can usually answer these types of things more correctly, and typically resellers/distributors/etc have torn down the wheels and ridden more than one of them, so they might know about many not-so-usual issues that don't occur with every individual wheel of the same model, and know the internals. For IPS, it's usually Jason McNeil, for Ninebot I guess you'd be the expert  ;)

Link to comment
Share on other sites

I am flattered because I am not the only Ninebot distributor here and you referred me . Anyway, I will doing my best to help solving problems here.

At the end of day, I have the advantage to ask Cid Wang to answer questions that I don't have a clue.

Jeff

Link to comment
Share on other sites

Dear esaj & mengke,
T H A N K  Y O U !   Yes - this really does make sense because it explains why at the end of the day (riding home from work) the 9b1 does not vibrate any more. And the day following (after fully recharging) the vibrations greet me again. However, the 9b1 does not have an overcharge warning like the Solowheel (@ GQS: It is a slight vibration.) but from now on I will interpret this vibration as having overcharge;-)
And Yes again to SerpentineGX: I can confirm that the vibration is there also when sitting idle with one foot on the wheel (starting in the morning with a full charge).

@SerpentineGX,
Do you remember updating your firmware about a month ago? I did not have those vibrations prior to my firmware update so maybe the new firmware now allows a slight overcharge which causes the vibrations when starting riding. And Yes, I know that on Riding mode settings > 0 this vibration is gone. Nevertheless I love Riding mode 0 and will not change it. In case you may be able to find out how to get rid of these vibrations (with Riding mode setting being zero) please share...

Link to comment
Share on other sites

Now, this is pure speculation, but I suspect something like this could be going on: The wheel firmware reads the forward/backward angle of the gyroscope. In hard riding setting, it reacts faster and/or with smaller "deadzone" (the allowed difference from 0-degree position) to deviation from the 0-position. When riding in general, the wheel could change the motor rotation speed hundreds, if not thousands of times per second. If the battery has full/high charge, the torque of the motor is higher than with low charge, when the voltage has dropped. When you start accelerating or breaking, the wheel tries to return to the 0-position, as you lean it forwards or backwards. With high torque, the correction slightly "overshoots", so when the firmware tries to correct the angle from, say, -0.5 degrees (backwards) towards 0 degrees, it ends up turning the wheel to +0.5 degrees (forwards), then tries to correct it back to 0, it overshoots again, and you get a sort of a "pendulum" or "oscillating" effect happening very fast, which feels like vibration.

If this did not happen before the firmware upgrade, it could be that they have changed the reaction speed of the software or made the "deadzone" smaller, or changed the motor driving logics to use more power when doing slight balancing, or use different kind of filtering/driving logics. It could be even that the correction works differently between forward lean (acceleration) and backwards lean (deceleration).  The usual way to deal with this seems to be some sort of filtering for the angle difference and acceleration sensor, and limiting the maximal change at a time, as seen in the "Segway Clone" -source code (https://github.com/ovaltineo/SegwayClone/blob/master/SegwayClone.ino):

float complementaryFilter(float accel, float gyro, long micros, float filtered_accel, float angle)
{
  angle = ALPHA * (angle + (gyro * micros/1000000.0));
  angle += (1-ALPHA) * filtered_accel;
  
  return angle;
}

 

float complementaryFilterSlow(float accel, float gyro, long micros, float filtered_accel, float angle)
{
  angle = ALPHA_SLOW * (angle + (gyro * micros/1000000.0));
  angle += (1-ALPHA_SLOW) * filtered_accel;

  return angle;
}

float getBoardPitchAngle(float accel, float gyro, long micros)
{
    static float filtered_accel = 0;
    static float angle = 0;

    filtered_accel = lowpassFilter(filtered_accel, accel, ACC_FILTER);
    angle = complementaryFilter(accel, gyro, micros, filtered_accel, angle);
    return angle;
}

 

In the main program:

if (dt >= 10000) // check if 10000 microseconds (10 milliseconds) has elapsed
{
        pastMicros = currMicros;        // reset timer
        board_accel = getBoardAccel();    // get board pitch accelerometer value
        board_gyro = getBoardGyro();    // get board pitch (tilt) gyro value
        board_angle = getBoardPitchAngle(board_accel, board_gyro, dt);    // compute board pitch angle

...and then

            // make small changes to offset to avoid jerk which causes oscillation
            if (last_board_offset - board_offset/BOARD_OFFSET_DIVIDER >= .1)
                last_board_offset = last_board_offset - .1;
            else if (board_offset/BOARD_OFFSET_DIVIDER - last_board_offset  >= .1)
                last_board_offset = last_board_offset + .1;
            else
                last_board_offset = board_offset/BOARD_OFFSET_DIVIDER;
            speed_adjust = computePID(board_angle + last_board_offset, board_gyro, riderOn);

 

 

 

So, the gyro-input and difference between 0-position isn't used DIRECTLY to drive the motor(s), but more gradually by sampling the gyro values every 10 milliseconds, applying some filtering with accelerator meter-values to make it "smoother" (like low-pass -filtering to avoid high frequency jitter)  and then still finally limiting (in the "make small changes to offset...") the maximal change at one time to make it more gradual to prevent "too fast" changes in motor speed. I believe that fiddling with the values, you could reproduce the "hard"- and "soft"-drive modes and values in between. Probably something might have gone a miss in the latest firmware upgrade, and with high voltage/full battery, the adjustment isn't gradual enough, but causes the oscillation when braking (and maybe accelerating, unless they use different types of driving logics for it).

The driving logics are probably different in "real" unicycles than in the Segway Clone -source, but the basic ideas still hold: you don't want to change the motor speed "too fast", or you end up with the angle overshooting and the wheel doing a "seesaw"-motion (like what Austin Marhold described in the F-Wheel video, the wheel oscillates back and forth while riding) if it happens slower, or "vibration" if it happens faster over a smaller angle difference.

Many manufacturers advertise "sine wave"-logics, which I'm lead to believe means that the motor driving power uses sine wave-easing curve to drop the force of readjusting the position the closer to the 0-position the gyro reports the wheel being, like here (so x-axis is the offset from the 0-position (pitch), and y-axis is the driving power change):

http://www.blackberry.com/developers/docs/6.0.0api/net/rim/device/api/animation/doc-files/CURVE_SINE_INOUT.PNG

At x = 0 (the pitch is correct), no need to adjust, x = "max" => full power, and gradual sine-wave adjustment in between 0 and max. The above is actually "Sine In/Out"-easing curve, they could also just use "Sine In"-easing, like this:  http://www.blackberry.com/developers/docs/6.0.0api/net/rim/device/api/animation/doc-files/CURVE_SINE_IN.PNG

EDIT: Scratch the above, the sine-wave driving is actually this:  https://www.electricbike.com/sine-wave/  , but the idea of using sine wave-easing curves for more gradual changes could very well still work ;) 

What I'd really like to see would be for some manufacturer actually give the riders the opportunity to more fine-tune these settings than just "hard" and "soft" and some in-between modes...

Link to comment
Share on other sites

Dear esaj,

W O W! Your skill explaining electricunicycle-mechatronics in a way that I can follow and immediately understand what you are talking about is truly amazing. I am so happy to have found this forum. It offers such a wealth of information concerning the little wheel I now trust for mobility's sake (I've read a few of your other posts in the meanwhile...).​ ;)
And just to confirm your humble and modest "speculation", other 9b1 riders interested in this annoying vibration issue may take a look at this video (only ~30s and starts at 2:50):
https://www.speedyfeet.uk/kb_results.asp?ID=12

So "Yes", ninebot changed the motor driving logics by making the "deadzone" smaller. The result is that driving at high speed (in riding mode 0) is a lot easier now and offers more fun. The side effect of this change seems to be the pedal vibrations at very low speeds when fully charged. Maybe a future firmware update changing riding mode settings (only in Riding mode 0) at very low speeds automatically to offer more softness (and to avoid the pedal vibrations ) could be an answer to this...
    < 2km/h: Riding mode 3
    2 until 3km/h: Riding mode 2
    3 until 4km/h: Riding mode 1
    > 4km/h: Riding mode 0
I will observe this behavior within the next days more carefully and when no other solution can be found to get rid of the vibrations I'll think about writing to service(at)ninebot.com in order to trigger a firmware change in this direction for one of its future releases...

As for today I am happy to have found "birds of a feather" and to go to bed more clever than this morning. :D

Greetings from Germany.

Link to comment
Share on other sites

  • 1 month later...

@SerpentineGX,
Do you remember updating your firmware about a month ago? I did not have those vibrations prior to my firmware update so maybe the new firmware now allows a slight overcharge which causes the vibrations when starting riding.

It can not be. The input power charges the battery directly, without mainboard. The BMS cut off the power when battery is full. Moreover, there is no communication between the mainboard (where the firmware lives) and battery. So I believe that is not the case.

Link to comment
Share on other sites

  • 3 months later...
On 6/26/2015, 9:42:33, mengke said:

 

 

Hi Esaj, 

I am so flattered. Thank you for @ me. I experienced the same thing 3 days ago by riding my friend's E+. The vibration is normal when you set the riding mode at zero if you tune it down to 2 it will be gone. You don't have to ride it to trigger, just step on the pedal with one leg and trying to press down pedal forward/backward with the Ninebot leaning to you by maybe 10 degree angle, it will start to vibrate and the harder you press down the harder the vibration is. It is strongest when you have full charge and will getting weaker as you consume some of the electricity. The vibration is not a bad thing it almost tells you that the output is max at the moment and your unit is super responsive. The vibration is more like the Unicycle trying to move due to the angle/positioning but restrained by the rider to do so. Very similar to when you drive your car, you accelerate with your brake fully pressed, so It is not moving but it engine has been engaged wildly.

Do this make sense?

If you try some other power unicycle they vibrate a bit as well. Like my rockwheel 14 inch. But  just when you have full charge. 

Jeff

Had to call BS on this. I just had the exact same issue occur on a crapbot one e+ after replacing the control board. This is NOT normal it's a MALFUNCTION and all the explanation the above post provides for the MALFUNCTION is a bunch of garbage. How do I know this is a malfunction? Because prior to changing the power board it never operated like that. Why is the ninebot one e+ a piece of junk? Because it's a toy that's designed to work like a dream for a week or 2, then starts having problems. The company should be ashamed, embarrassed, sued, and quite frankly legally prosecuted for blatantly ripping off the public. (In case you'd like to know how I really feel about ninebot, a little peeved after finding out I invested $1000 into a piece of JUNK!) All I can do is hope for the day company goes out of business and stops stealing from the public. 

BTW, if anyone's had a malfunction and the ninebot crashes as a result of the malfunction, Ninebot is LEGALLY OBLIGATED TO REPLACE THE ENTIRE UNIT UNDER WARRANTY, NOT JUST THE MALFUNCTIONING PARTS. ANY DAMAGE THAT OCCURS AS A RESULT OF A MALFUNCTION IS NINEBOTS RESPONSIBILITY.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...