Hi, we have a strange behavior with the serial of the pololu.
We set on Arduino a baudrate of 115200 and in the pololu maestro control center 115385. When we move 4 motors at the same time the pololu works well and the servos moves smootly and like we want; however if we move more than 4 servos (we have 19 of them) the servos moves badly and strange.
In the tab errores of pololu maestro control center appear the error “Serial signal error” and we can not understand why we have this. We even tried to set auto detect baudrate and in that specific case we have a Serial protocol error.
The pololu is supplied by the arduino.
Any suggestion or other information?
Oh, and this is the Arduino code:
I am sorry you are having trouble getting your servo system to work. Since your system has trouble when multiple servos are commanded to move, but not when controlling only a few, it sounds like you might be having a power issue. If your servos are drawing more current than your power supply can handle, the voltage from the supply can drop as it tries to satisfy the current demand of the servos. If that voltage drops low enough, and you are powering your Maestro’s processor (through VIN) from the same supply, the Maestro could momentarily lose power. The Maestro might interpret this kind of brownout behavior as a serial signal error.
To correct a power issue like that, there are a few things you can try. You could use a power supply that can provide enough current for all of your servos. You could separate the servo power rails into separate power banks like Brandon describes in this post, and connect a single battery or supply to each one. For the Maestro 24-channel, you can modify the servo power rails to create up to 4 separate power banks. If you need more, you could supply power directly to your servos (be sure that your servos share a common ground with the Maestro), and/or create your own custom external power busses.
We can exclude the power issue because we tried to move many servos by a pololu script and they move smootly and well.
It could be that send many movement to the pololu by serial Interface could clog the comunication between pololu and Arduino?
If the Maestro falls behind in processing many serial commands, the reported error would be “Serial buffer full” or maybe even “Serial overrun error”, but not “Serial signal error”.
At this point, the Maestro’s auto-detect baud rate feature creates additional complexity and adds another point of failure to the system. So, to ensure that future tests are more reliable, I recommend setting fixed baud rates for each device like you mentioned trying in your first post. (115385 is very close to 115200, and using those baud rates should not cause a serial communication issue.)
Can you tell me more about your setup? Which Arduino are you using? Can you link to the product page(s) or datasheet(s) for the servos you are using? What are you using to supply servo power? What happens when you turn off or disconnect your servo power supply while you are trying to control more than four servos at once? Do you still get that serial signal error?
Can you also send pictures that clearly show your setup and connections?
We use an Arduino Mega. Power supply is a litio battery of 7.4V with 5200 mAh. The servo that we are using are Savox SV-1232MG, SC-1267SG, SC-1268SG, SV-1272SG, SB-2231SG and SB-2290SG, they have a torque from 5KG to 50KG and we use 19 of them on a 24 channel pololu.
Now I’m going to explain more precisely our situation:
We got two different usages of our system, record mode (we rec some movemente and then we play) and the live mode.
We implemented an algorithm for the record mode that compress movement, for example if a servo starts from x position and has to go to z position passing for y1 and y2 we omit y1 and y2 so the servo goes directly to z and this works good.
For live mode we read values from our controllers (they all potentiometers) and then we send directly to the pololu; this don’t work well and is a mess, not only is not smooth but many movements are lost.
We are pretty sure that there is a problem when we sends lots of movement in short time to the pololu from the Arduino, we use the official pololu library so we can exclude problems regarding the way that we sends commands.
We even try to double the battery amperage but nothing seems to changed.
Can you try the test I suggested in my last reply:
Can you also try running your servos while powering both your Arduino Mega and Maestro from a supply that is separate from your 7.4V battery? One simple way to do this is to power each of them through USB power. (You should first disconnect your Mega’s 5V line from the Maestro, since it sounds like that is how you are currently powering it.)