During accelerator sensor testing one of our servos gave up.
- experiment started without any load
- all servos suddenly stopped
- BEC was a bit hot
- power bus was also hot where main power cable was connected
- one servo moved slowly to end position (against control signal -> lost reference voltage -> overloaded power supply -> high current -> short-circuit?)
- the moving servo started to produce smoke
Summary autopsy report:
Assumption : internal short-circuit because of unknown reason
Investigation team: Robot Builder Team
Opening the body: mechanical parts seems to be ok.
Checking vital organs: one IC has serious injuries.
Further investigation is not required. Internal injury located on leg level. Clearly visible short-circuit. Original assumption confirmed.
End of autopsy report.
Just a quick check on speed. In my opinion these new servos are a bit faster than the previous ones we used.
Offsets are ok now so we can move on to test standing and walking, My only issue is that I use now a single BEC and this could be easily overloaded. The best would be to parallelly connect at least 2 of them using few diodes against reverse current.
I developed a simple form with 12 seekbars where each bar is assigned to a servo. This tool can help me to test any leg orientation and check possible internal leg collisions.
Android application GUI for 12 servo positioning:
My camera holder built in few mins :)
Normally this task is very boring but finally I found the most comfortable way to do it. With a simple Android application I could config all the 12 servos (big white value is the uSec control value, yellow shows the controlled servo). Using bluetooth connection this was almost funny! :)
This video shows only the capabilities of the application. The real task is to find the absolute precise servo control value when it’s in 90 degrees middle position. Then this value can be used for real positioning. Remember, 1500 uSec is very far from real center position…
In all the previous cases I wanted to have 5V used globally by any unit (Arduino, servos, sensors, etc.) Unfortunately I don’t remember the reason (simplicity maybe?) but in our new model (cellbot) almost every unit has its own supply voltage. Arduino powered by a simple 9V battery, normal mobile/cell phone with built-in Li-Ion 2370 mAh battery, servos require 7.2V.
For prototype development I use my good old Chieftech PSU and its 12V output. Question: How do you connect ATX terminal to a servo via an UBEC? With a little luck I found the magic part :) This was born to do the job! You can easily connect the servo cable without soldering and it’s simply compatible with the ATX terminal in terms of size.
Corona DS339HV Digital Metal Gear Servo 5.1kg/ 32g/ 0.13sec
Now I have 7.2V and I can start the servo offset project… most boring task ever! :D
This time we selected black base color and developed a middle size body. I hope the below pictures can give you some sort of “sight”. I know the black background was not the best choice but soon tons of pictures will be uploaded. Giving name to this black monster is the real task :)
Just to have a complete test in terms of communication I would have liked to know more about Arduino and its compatible bluetooth module. The one I found:
Documentation I used to start:
Having all these details I started soldering the minimum required 4 legs only :) TX/RX/Vcc/GND:
I did not know anything about these type of castellated holes so I just added a bit more solder and prepared the wires:
I could solder the wires to the edge of the board with a simple touch (1-2 secs) of soldering iron:
and connect to Arduino: Bluetooth board Vcc to Arduino 3.3V, GND to GND, RX to Serial 1 TX and TX to Serial 1 RX.
This was the hardware part. When it was turned on my PC could discover as a “HC-06” device. This little amount of info went immediately to Google search. HC-06 specification found in few mins. Let me summarize what I really needed to complete the test:
- This little board starts in 9600 baud rate mode
- and it is in AT command mode before paired state
- wait minimum 1 sec after each AT command
- password for pairing is 1234
Based on it I simply sent two AT commands (using Serial1.print()) to change baud rate from 9600 to 115200:
“AT” to test if the answer is OK and we are really talking :) and
“AT+BAUD8” to change baud rate.
(Not used commands: change the password with AT+PINxxxx or the device name with AT+NAMExxxx but these are not important now.)
This is a one time action and could be implemented in Arduino setup() function (the loop() can be empty this time):
while(Serial1.peek() != -1)
while(Serial1.peek() != -1)
In serial monitor I got these answers from the device as it is specified in the docs:
When this was completed I could change Serial1.begin(9600); to Serial1.begin(115200); and upload the new sketch leaving the same AT command related code :) Now I could pair the device and add real serial communication in Arduino loop().
Let’s check the result!
This could work as an alternative Arduino – Android connection replacing the USB cable and of course I should add a 9V battery too but I am still hesitating. Comparing them on mass level:
USB cable = 43g vs 9V battery + cable + bluetooth device = 50g