PDA

View Full Version : Unsolved Propeller USB Servo Controller 28830 - Problem and possible solution



RobotWorkshop
04-02-2012, 09:23 PM
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

RobotWorkshop
04-07-2012, 05:31 PM
There is definitely something odd about the outputs on this controller and still suspect the 3.3Vto 5V translator chips are the issue. I tried using a different servo controller this weekend and it is running all the servos ok. It looks like I'll have to try adding an inline resistor or try removing that translator chip and replacing it if I still want to use the Propeller based board. I may just set this board aside and use it in another project instead.

Robert

Publison
04-07-2012, 05:53 PM
There is definitely something odd about the outputs on this controller and still suspect the 3.3Vto 5V translator chips are the issue. I tried using a different servo controller this weekend and it is running all the servos ok. It looks like I'll have to try adding an inline resistor or try removing that translator chip and replacing it if I still want to use the Propeller based board. I may just set this board aside and use it in another project instead.

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:

91454

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

RobotWorkshop
04-07-2012, 07:11 PM
Hello 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

Publison
04-07-2012, 07:17 PM
Hello 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

RobotWorkshop
04-07-2012, 08:52 PM
Hello 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

RobotWorkshop
04-09-2012, 04:59 AM
I made up a daughter board which adds some 10K resistors inline for each servo signal and at least I can control them now which is a huge improvement. However, the servo motion doesn't appear to be nearly as smooth as I'd expect. At the moment I am just using the PSCI software to test the motion of each servo. When moving the slider I had hoped to see the servo's move closely in sync with that. As I understand it it only talking to the controller at 2400 baud so that may be why the motion isn't smooth. I know the servo's are ok since they were moving smoothly when controlled by a 12 port Pololu controller.

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.

91515

RobotWorkshop
04-28-2012, 05:11 PM
After building the adapter board to add 10K resistors inline with the servo signal line it is working well now with 7 of the 8 servos that I wan to use. However even with the 10K resistor inline I can not get it to work well with either of the larger 1/4 scale servos that I have here. I am working with a bench supply and don't have any load on the servos so I don't believe it is that they ar drawing too much current when it moves. When I try to use it all the other servos start going crazy like they did without the 10K resistors inline. I think that the input on the 1/4 scale servo is still throwing off the 3.3V to 5V translator causing the other servos to go haywire. I only need to run one of the 1/4 scale servos from this board and am looking for some other suggestions to make it work. At the moment I think that some other sort of buffer in the servo signal line for that one servo should do it. There isn't room for a DIP like the 74HC14 which may work with a couple gates back to back. Perhaps adding a couple transistors to drive the signal line would work and that I can fit on the board. Has anyone else had to do this and if so what circuit did you use? If you have an example of using transistors to drive the servo signal line let me know and I can try that.

Robert

GordonMcComb
04-28-2012, 06:33 PM
The Prop Servo Controller uses two 47 uF caps to filter the servo voltage. That's not a lot for a bunch of big servos. Try adding several some much bigger caps (and a few smaller 0.1 uFs) external to the board, but close to it. You may very well have a power supply that can handle the current, but many large servos at a time, especially GWS, will toss a whole world of hash hurt into the power supply. The resistor fix is probably just a band-aid over the larger problem of noise.

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

RobotWorkshop
04-28-2012, 09:16 PM
Hello 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

GordonMcComb
04-28-2012, 10:10 PM
You might also try a 47 uF (or thereabouts) tantalum right on the +V/gnd connection for those large servos. I've had to do that with a few projects. I use the Pololu 3" F-F precrimped wires and shells (plus some double-long male headers) to make small extensions, and solder the leads of the capacitor directly to the male header. The header goes between the short jumper and the servo wire.

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

RobotWorkshop
04-28-2012, 10:12 PM
This definitely gives me a few more things to try. I'll do some experimenting this weekend and let everyone know how it goes. I'm sure this will work with a little tweaking!

Robert

Duane Degn
04-29-2012, 01:29 AM
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.)

GordonMcComb
04-29-2012, 04:26 AM
What kind of level shifting does it use? Are they the FET variety, or something like a CMOS device with pullups?

-- Gordon

dbpage
04-30-2012, 09:29 PM
If I understand correctly, your problem is solved when using batteries and the problem returns when you use your bench power supply. Batteries act like big capacitors. This indicates that a large (>1000MF) electrolytic cap might help. Be sure to observe proper polarity and voltage. Placing closer to the motor is better.

RobotWorkshop
04-30-2012, 09:56 PM
If I understand correctly, your problem is solved when using batteries and the problem returns when you use your bench power supply. Batteries act like big capacitors. This indicates that a large (>1000MF) electrolytic cap might help. Be sure to observe proper polarity and voltage. Placing closer to the motor is better.

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

RobotWorkshop
05-05-2012, 05:56 AM
I made some more progress this evening and seem to have it working. Now I just need to see if I can make up a better circuit that takes up less room. I ran the output of the servo controller to a breadboard and then through a pair of gates in a 74HC14 chip to buffer the signal. That seems to correct the issue. It is going to be difficult to fit the 74HC14 chip so I'm leaning toward trying something like a PN2907 or 2N3906 PNP transistor as a buffer. Has anyone else tried this? If it works I can easily squeeze the parts on the board.

Robert