Propeller USB Servo Controller 28830 - Problem and possible solution
RobotWorkshop
Posts: 2,307
I just started using a new Propeller USB Servo Controller (Part # 28830) and immediately ran into a problem.
http://www.parallax.com/StoreSearchResults/tabid/768/List/0/SortField/4/ProductID/595/Default.aspx
Most of the servos would act erratically and I couldn't control any of them. I was however able to verify connectivity with the board from the PSCI software and watch the status LED's blink whenever I tried moving the sliders. Just in case it was a firmware issue I downloaded the firmware off the Parallax site and reloaded that. I had a hefty bench power supply which should easily handle the load. I know my servos are fine since I have a separate servo tester and checked each one.
I then substituted the servos with a few tiny micro servos and those ended up working ok. I didn't believe it was a poor power problem and upon searching the forums I found these helpful threads:
http://forums.parallax.com/showthread.php?119982-propeller-servo-controller-problem&highlight=28830
http://forums.parallax.com/showthread.php?118121-Digital-servo-s-on-USB-servocontroller\
I'm not using digital servos but two of them are larger 1/4 scale servos. I think I am running into the same issue mentioned in the threads about the 3.3V to 5V translators. Those translator chips have their place but since the servo controller is mainly output only I don't believe they were the best choice here. It sounds like just adding a 5K or higher resistor inline with the signal line may fix the problem. I should be able to verify this in the next couple evenings.
If that is the case then this issue really needs to be prominently noted in the documentation and perhaps even on the webpage. Without that I can only imagine what would happen to someone with less experience. If it doesn't work as expected it may turn someone off...
I'd like to verify what the package style is for the voltage translator chips. I believe I may have a solution that can be implemented without much redesign needed on the board. Instead of using the voltage translators (which seem to be nothing but trouble in my opinion) how about replacing them with some 1K or slightly larger resistors? That is pretty much the standard for connecting servos to the propeller and has worked well for me.
It appears that I can just remove the translator chips and substitute a surface mount resistor pack like one of these is I can get the same footprint:
http://search.digikey.com/us/en/products/SOMC20031K00GEA/SOMC1.0KPCT-ND/2713916
http://search.digikey.com/us/en/products/OSOPTA1001AT1/OSOPT-1KATR-ND/1769986
From what I can tell the connections from side to side match up so the resistors would just bridge the gap. Before soldering I'd just clip leads 2 and 10 from the resistor pack so the power leads won't go pass through. It certainly looks like just swapping these two parts would make the issue with the translators go away.
I'm willing to try this on my board if I can get confirmation on the package style.
Any thoughts or comments??
Robert
http://www.parallax.com/StoreSearchResults/tabid/768/List/0/SortField/4/ProductID/595/Default.aspx
Most of the servos would act erratically and I couldn't control any of them. I was however able to verify connectivity with the board from the PSCI software and watch the status LED's blink whenever I tried moving the sliders. Just in case it was a firmware issue I downloaded the firmware off the Parallax site and reloaded that. I had a hefty bench power supply which should easily handle the load. I know my servos are fine since I have a separate servo tester and checked each one.
I then substituted the servos with a few tiny micro servos and those ended up working ok. I didn't believe it was a poor power problem and upon searching the forums I found these helpful threads:
http://forums.parallax.com/showthread.php?119982-propeller-servo-controller-problem&highlight=28830
http://forums.parallax.com/showthread.php?118121-Digital-servo-s-on-USB-servocontroller\
I'm not using digital servos but two of them are larger 1/4 scale servos. I think I am running into the same issue mentioned in the threads about the 3.3V to 5V translators. Those translator chips have their place but since the servo controller is mainly output only I don't believe they were the best choice here. It sounds like just adding a 5K or higher resistor inline with the signal line may fix the problem. I should be able to verify this in the next couple evenings.
If that is the case then this issue really needs to be prominently noted in the documentation and perhaps even on the webpage. Without that I can only imagine what would happen to someone with less experience. If it doesn't work as expected it may turn someone off...
I'd like to verify what the package style is for the voltage translator chips. I believe I may have a solution that can be implemented without much redesign needed on the board. Instead of using the voltage translators (which seem to be nothing but trouble in my opinion) how about replacing them with some 1K or slightly larger resistors? That is pretty much the standard for connecting servos to the propeller and has worked well for me.
It appears that I can just remove the translator chips and substitute a surface mount resistor pack like one of these is I can get the same footprint:
http://search.digikey.com/us/en/products/SOMC20031K00GEA/SOMC1.0KPCT-ND/2713916
http://search.digikey.com/us/en/products/OSOPTA1001AT1/OSOPT-1KATR-ND/1769986
From what I can tell the connections from side to side match up so the resistors would just bridge the gap. Before soldering I'd just clip leads 2 and 10 from the resistor pack so the power leads won't go pass through. It certainly looks like just swapping these two parts would make the issue with the translators go away.
I'm willing to try this on my board if I can get confirmation on the package style.
Any thoughts or comments??
Robert
Comments
Robert
Robert,
I would defiantly try the in-line resistors first before removing the translator chip. This worked for me on Analog and Digital servos. I was in on the testing of the the previous posts you cited. This is the workaround I came up with:
I used a 10K DIP resistor network, but it was said a 5K would work the same, maybe better. That is all I had at the time.
I had designed some board with SMD networks, but never had them made.
Never had a problem since. Which servos are you using?
Jim
That is a neat solution that you have! I should have some extra DIP resistor packs but that would be easy to replicate just using a set of 8 regular resistors. I think I'll give that a try.
To answer your question I am having the issues with three different GWS servos. Those same servos are now running ok from a Pololu 12-channel Mini Maestro 12 controller. However it looks like I will probably end up modifying that board too. It doesn't have any caps across the servo supply lines and should have them. The Parallax board does have caps on it. So, I'll give the little adapter board a try and see how that works out. I'd prefer using the Parallax board instead since I can load my own firmware on it and use the high 8 channels to do PWM for some full color LED's. Looks like I'll have another project to work on this weekend.
Robert
Hi Robert,
Are the GWS analog or digital? I have no problem with all the Hitec analog servos I have, but my JR DS8711 digital's gave me fits before the inline resistor fix.
Jim
I have to make some adjustments to the servo horns so I will double check the model # and confirm if they are digital or analog servos. There are three different sizes of servos (all GWS) that seem to exhibit the problem. I'll also try making a small daughter board with the resistors and see if that helps.
Robert
I'd like to get the Parallax board working properly with the servos I am using. The Propeller board will definitely be a lot more flexible and I can edit the firmware so the upper servo lines can be re-purposed to drive some LEDs. I rewired the daughter board and added the appropriate NPN transistors for the LEDs. Attached is a picture of the board.
Robert
I don't know what kind of filtering caps are on the Maestro (even though I have several of the boards!) but it's a completely different approach anyway.
Also be sure to test with the USB disconnected (power external). Wire up a UART from another Prop for sending simple commands. It won't be a graphical interface, but it'll remove another element that -- surprisingly -- can cause these or similar problems.
-- Gordon
Thanks for the response. I still think the voltage translator chips have been the root of my issues with this board but I will double check the other items. It isn't shown in the picture but there are some extra caps on the daughter board for the servo power on the component side which is hidden from view. I am powering the servos from a large bench supply but have been keeping the USB connected. Although I eventually will be running this from another Propeller I want to keep the option open of using the USB working too so I need to get it operating properly when connected to the USB port.
I think I will try to bring that servo signal out to a breadboard so see if isolating the signal will help. I may try to use a couple of the inverters of a 74HC14 back to back to condition the signal (which has helped with other interfacing) or see if I can just use a couple transistors. If it is mainly the feedback on the signal line causing the voltage translators to act up then buffering that line may fix it. If I can do it with a couple transistors I can fit that on my daughter board which would be perfect for my project. I really prefer to use the Propeller since I can tweak the code and am using the upper 8 servo ports to control LED lighting.
When I started having all the issues with the Propeller servo controller I did pickup one of the Maestro 12 port boards. It is a nice little board but I was surprised to see that it does seem to have any filtering caps on the servo power lines (at least that I could find) so those should be added on. I'm sure I'll find a different project to use that on.
Robert
The voltage translator chips do seem like they aren't helping matters. Will placing a small germanium diode in line help?
The Pololu Maestros are indeed great chips. The ability to record and store scripts can be very useful.
-- Gordon
Robert
My bench top power supply hasn't been able to keep the voltage consistent when I've used it to drive some motors. The motors weren't particularly large; they were the motors on a Rover 5 chassis. I was surprised to find a good battery pack (2,650mAh 2-cell LiPo) solved the issues I was having with the Prop resetting.
It might be worth trying a battery pack as a power supply instead of your bench supply.
My bench supply isn't anything expensive, but I sure thought it would handle the Rover 5 motors.
BTW, do you know if the Prop is resetting?
I'm not a fan of level shifters unless they're absolutely required. I think the level shifters in the S2 have severely impaired it (many (most?) Ping sensors wont work with the S2). I have many other devices, I would have liked to have used with the S2 that wont work with it because of the level shifters on the hacker port. (Sorry for the S2 rant.)
-- Gordon
I haven't completely ruled out that there isn't some power issue and will eventually be testing on battery power since that is what I will ultimately use on the project. At the moment I don't believe it is the most likely cause of the issue I am seeing, I'll be doing more tests to help isolate and confirm the problem. I am powering the servo controller from a large bench top supply. For control I keep the USB cable connected and am using the Windows application to control the servos. I could control some of the nano servos fine but once I tried some standard servos or the 1/4 scale servo all of the servos would start acting erratically. I then tried the trick of adding 10K resistors inline and with that I can now use all the standard servos as well. The 1/4 scale servo is still a problem and with that plugged in all the servos start acting up. There isn't any load on the large servo and it doesn't seem to be taking much current. I can leave the power connected but use a hand held servo exerciser to control the 1/4 scale servo. All the other servos can be controlled fine and everything is powered from the same bench supply. The only difference is that the signal lead isn't being driven from the 3.3V to 5V translators. So, it doesn't seem to be a power issue otherwise I would expect it to act weird both ways.
If the Propeller was resetting I would expect the servos to settle down during the reset while the propeller is reloading the code but that doesn't happen.
I'm back to buffering that signal line since it seems that the 1/4 scale servo may generate more noise in that input line causing the 3.3V to 5V translator chips to act up. As so as I get a chance I am going to try using a pair of inverters from a 74HC14 or 4069 chip back to back in order to buffer the servo signal line. if that fixes it then that pretty much proves the voltage translator chips are the problem. At that point I'll see if I can just use a couple transistors instead since those will be easier to fit on my board. Otherwise I'll just find a way to add the DIP to the board.
If that doesn't do it then I will try a hefty set of batteries for power, extra filtering, etc to see if that fixes it.
Robert
Robert