Hi, I'm highly frustrated. I have batteries with enough voltage (measured it).
The first problem: I'm loosing connection through the serial monitor every few minutes. Closing and starting it again. Starting whole procedure from the beginning. Really annoying.
The second problem: I managed to calibrate properly but if I give any order like "d" to Nybble it moves like insane and everything is chaos.
Can you help me?
I bought some Enerpower 14500 850mAh - 2,4A batteries and managed to complete calibration. I can now reliably switch between poses and the servos return to the correct position each time.
However, I have noticed that the Nyboard resets sometimes when all the servos move either when running the WriteInstinct program or the Nybble program (Nybble beeps and I see the same text in the serial monitor as when I reset the program).
I'm guessing that the power drain causes a brownout on the controller. @Rongzhong Li is this expected? Is there a workaround?
Wow, that's really unintuitive. I hit the same issue as Boris today with Nitecore 14500 Li-ion Battery 850mAh NL1485. I've just ordered some Enerpower 14500 850mAh - 2,4A batteries.
Ok, I got new batteries. Sanyo, unprotected. Calibration is working, BUT the connection is very unstable. How can I improve that? The serial monitor is not reacting after 30 seconds.
Update: Finally it works! As assumed, rootcause had been the protected batteries.
Type: Enerpower 14500 850mAh - 2,4A WORKS!
Hi all,
it*s very intersting that using protected and not protected "batteries" matters. To me it's just like the color of the battery make any difference :) Anybody can explain WHY protcted or not protected are behaving different?
By the way.... I have build a catmini version which worked well using a powerbank (5 V, 1.5 A output max.)
At the moment I am struggeling with a catmini based "Fan Cat" using the Nybble code with eeprom extension and 2 18650 batteries or a powerbank as energy source.
Got my ones from http://eu.nkon.nl in Netherland (I am myself from Germany).
Type: Enerpower 14500 850mAh - 2,4A
Not arrived yet. I will report, as soon as they are a ailable.
@ Felix Cat ,
Please check also your type of batteries. In case, you have an issue similar to above, please report.
Thanks for supporting with your cross check. That helped a lot, as I now at least have a new chance to get Nybble working one day. Well - that behaviour as shown in your video does now look much more like my pussy cat. Oh boy. At least - another a step forward. I should get my new batteries next week.
I´ll report back, as soon as I can. Many thanks for your investigation.
Looks like, that we get closer and closer to a better product.
I would recommend to inform your supporters about this "issue" so they do not waste money as me on wrong batteries.
Based on Rongzhong Li initiative, report your batteries in this post , please.
I reviewed your observations and files. Everything looks fine except the batteries.
Here's a "good" news: I was able to reproduce the malfunctioning as you described with my longer batteries.
See the video below:
I´ve ordered a new set of "unprotected" batteries ...
https://eu.nkon.nl/rechargeable/14500-16340-18350-18490-18500/enercig-14500-800mah-2-4a.html
Followed your instruction:
1-2 Do all the servos move then stop? Yes
3. Done, report:
* OpenCat Writing Constants to EEPROM... Reset joint calibration? (Y/n)
"Y"
* Update Instincts? (Y/n)
"Y"
Will overwrite Instincts on external I2C EEPROM! Saving skill info... I nstinct: bdI ... I nstinct: zeroI *********** Notice! ********* Maximal storage of onboard EEPROM is 1024 bytes. Instinctive dictionary used 515 bytes (50.29 %)! Maximal storage of external I2C EEPROM is 8192 bytes. Instinctive data used 4473 bytes (54.60 %)! ***************************** Finished! * Assigning 43 skill addresses...
0
1
...
42
Finished! Calibrate MPU? (Y/n)
"n"
Gotcha!
4. Take a picture of your battery :
Batterie is longer as I wrote, it hardly fit to housing.
It is protected, fully charged.
Used type is:
https://www.reichelt.de/industriezelle-li-ion-14500-3-7-v-750-mah-button-top-xcell-139988-p232284.html?&trstct=pos_1
5. Wiring
6 zip the codes you are using and send them to info@petoi.com. ... will follow.
If the NyBoard can pass the diagnose code towards test 4 (I2C EEPROM), it’s unlikely to be defective. It means all the related modules are working.
If your second NyBoard behaves the same way, the probability of two defective boards is even smaller.
If you type “c0 0” as the first calibration command, all the servos should move then stop at calibration state. The first calibration command, whatever the joint is, will ask all the joints to rotate to calibration state.
If you type “d” afterwards, all the servos should move then stop at rest state.
”c3 0” calibrates joint 3. But joint 3 (tail tilt) is unused on Nybble.
I need your operation/observation:
Attach the shanks to knee joints after you type ”c0 0”. It will help to show the joints’ rotation. Don’t attach the shoulder joints.
Enter “kbalance”. Do all the servos move then stop? If not, what’s the message on the serial monitor?
Enter ‘Y’ for all the prompts (except for the MPU calibration to save time) and proceed to the joint calibration. Saving skills to EEPROM is a must. observe the difference between the serial messages if you type ‘n’ for the second prompt (save to I2C EEPROM).
Take a picture of your battery side by side with the included battery holder to show its length. I’ve tested some long batteries with protective circuits on top, but they don’t work on Nybble.
Take a picture from the belly’s both sides to show your servos’ wiring pattern. Include the joints in your picture frame.
zip the codes you are using and send them to info@petoi.com.
I finally decided to exchange my NyBoard to a new one, just to exclude specifc hardware issues on the board itself. I repeated whole step (incl. bypass mod from start).
Two issues stay:
A) If I e.g. type in "C0 0" as first step in calibration process, than not only NECK servo moves, but also some others. Same happens, if "C2 0" (TAIL) is typed in, than suddenly also NECK moves. This should not happen, right?
B) in "c" , all servos should "block" (keep) their individual calibrated position, right. Means, if I attach a limb back onto servo, it should resits a little force and keep his position, right? In my assembly, only NECK servo wants to keep its position only. All other servors can be moved freely while assembly in "c" mode.
Is something damaged? What am I doing wrong??
I am not George Lucas , but I will demonstrate the topic better maybe ...
I´ll attach a short video, to demonstrate movements of servos
Hello,
What's your battery's voltage now?
==> 7,9V
Is it properly powering the NyBoard?
==> Yes - blue LED on
Does the yellow LED lit?
==> Yes - yellow LED on
and constant after using your mod to bypass, as described in thread UNDERVOLTAGE
And for the servos, are they all good when you were running the diagnose program?
==> They were all good (but I did not run that much in detail, like checking torque,etc.)
Thanks for quick reply. I will check voltage tomorrow and send a feedback.
> After attaching all the joints, Nybble will push itself in the calibrate state <
means Nybble will stand on its knees as in the calibrate state.
“d” is a command to put Nybble to rest posture and shut down all servos.
The continuous or opposite rotation usually happen when the voltage of battery is low (<7V).
Since you are already powering the servos directly from the batteries, it won't be the problem on the chip.
What's your battery's voltage now? Is it properly powering the NyBoard? Does the yellow LED lit?
Enter 'Y' when asking whether to save skills to the board in case the rest posture is not correctly saved.
And for the servos, are they all good when you were running the diagnose program?
I think I fully understand all steps described. And I followed those really step by step.
Checklist in respect to your summary above:
1: Clear - all parts/joints are not mounted
2: upload - all parts/joints are not mounted
3: -
4: when first time - all layed flat, all parts/joints are not mounted,let´s MPU calibrate
5: enter "c" - still limbs and servos are not attached
6: > After attaching all the joints, Nybble will push itself in the calibrate state <
not fully clear, what you mean by that? But NOW I attached each limb/servo
At this stage I worked very precisely and step by step. I attached all parts back to its CALIBRATE position (L-shape), afterwards corrected each position with "c>joint< >angle<" (check position with gauge to become a perfect L) and also saved "s".
At this time that calibration process should be finalized - means; even if I turn off and on again, now the limbs should move to its REST position (as you described in 2 + 4)
Directly after calibration, I wantred to do first test of movement - so I typed "d". But as soon as I type "d" and Nybble should moves between REST and STAND , the movement are out of control, e.g head rotates, limbs turn to opposite postions, etc.. Means - it moves more chaotic, instead of symmetrical.
Again I did check all contacts - they are attached as they should. It can be also checked while calibration as I can see each individual joint moving correclty corresponding its joint number.
I am lost ...
"suddenly a lot of servos moved (not just the neck)"
Do they stop? The joints will get to absolute zero position after the servo stops.
The full process of calibration in WriteInstinct.ino is:
1. You don't know where the servos are pointing at before calibration. So you don't attach the legs.
2. Upload skills, which include one "calib" posture, it's a posture with all joints at zero position. There's also a "rest" posture. Of course, you won't see the postures because you haven't attached the legs. But you can imagine that the servos will rotate when switching between the two postures.
These postures are also shown in 6.4.3 of the instruction document.
After saving skills to EEPROM, the program will read the rest posture and rotate all servos to rest position, then shut them down to avoid vibration. Still don't attach the legs.
4. The program will ask you whether to calibrate MPU. You can enter 'n' to skip if you have already did so. You can now understand why I put Nybble to rest state before calibrating MPU. It's much easier to lay Nybble level on the table, and it won't vibrate due to the shaking of servos.
5. Now if you enter 'c', the program will read the calib posture and execute. All the servos are supposed to rotate like crazy (but they are actually transforming from rest position) until they stop at calibrate position. Then you can attach the legs one joint by one joint, perpendicular to nearby references on frames. It's easier to attach knee joints before shoulder joints.
6. After attaching all the joints, Nybble will stand on its knees as in the calibrate state. The directions of legs won't be perfect. Use the included L-shape tuner for fine tuning each joint. You can enter 's' after calibrating each servo in case of any interruption in the process.
7. The calibration values are saved to ATmega328P's onboard EEPROM. They won't change unless some voltage shock happen to cause "bit flip" when the processor is accessing the memory location. But it's very rare. Next time you want to calibrate, you don't need to take off the legs. You can also calibrate within Nybble.ino.
So I think the major problem is your operations between step 4 and 5 (step 06, 07 in your description).
If you attach legs in the direction of calibrate posture before entering 'c', the servos are actually in rest posture. Once you enter 'c', the legs are going to move, but would probably hit something in the middle. In that case, the motor will be forced to stop, and becomes a pure resistor. It will pull large current, generate heat and cause a voltage drop on the chip. That will further disturb the signals, causing more abnormal behaviors.