Shop OBEX P1 Docs P2 Docs Learn Events
Propeller Servo Controller USB is now available. — Parallax Forums

Propeller Servo Controller USB is now available.

Chris SavageChris Savage Parallax EngineeringPosts: 14,406
edited 2010-04-06 03:40 in Propeller 1
Hey everyone,

The new Propeller Servo Controller USB is now available at the following URL:·
http://www.parallax.com/tabid/768/ProductID/595/Default.aspx

When we designed this Servo Controller we had a need to replace the original PSoC-based units for which the chip we used was discontinued.· We wanted to make it fully compatible with the original servo controllers, but we were also trying to be a little forward thinking on this one.· The Propeller Servo Controller USB is open-source and you can download the source files from the product page linked above.

As a fellow hacker I wanted to say that I am interested in seeing who can make the best use of this hardware to enhance the capabilities.· In September 2008 I published a 4-part collaberative·article in Servo Magazine.· In that article we built a piece of hardware based on the Propeller that was meant to fill many roles...servo controller, motor controller, light dimmer, stepper controller.· We explored each concept and built the hardware and when it came time to build the Parallax Servo Controller USB, many of these ideas were considered when the hardware was designed.

To that end I would have liked to have written some nice firmware (and may still do this when time permits) that could accept additional commands to not only move the servos, but provide PWM functions as well.· With this in mind we have already created and released an object as the core for such functionality.· And we have the hardware...so I ask...who among you is brave enough to create an open-source firmware using our PWM_32 object (linked below) or your own engine that can do the following:
  • Accept commands to move servos using intuitive commands
  • Implement true ramping and speed control for servo positioning
  • Provide fixed frequency variable duty cycle output which could be used to drive LEDs, lamps (using a driver/MOSFET) or DC motors using an H-Bridge
  • Allow controlled communication with daisy-chained modules (using on-board CMOS switch)
  • Make use of the extended 32K EEPROM for sequence storage or some other useful task
  • Allow some channels to be inputs that trigger events on other channels

Who will answer the challenge?· =)· Fame and fortune could be yours.· And who knows what else...Ken?

PWM_32_v2

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Chris Savage

Parallax Engineering
50 72 6F 6A 65 63 74 20 53 69 74 65
66 61 63 65 62 6F 6F 6B
·

Comments

  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2009-08-25 22:10
    Chris,

    Your last bullet point is interesting. The first thing I did when I saw the product announcement was to look at the schematic, and what struck me was that the servo pins were all fed with bidirectional level shifters. That struck me as odd, since 74HCT buffers would have been much less expensive and would work just as well for servo outputs. But the bidirectional chips do open some interesting possibilities, making this board more than just a servo controller!

    -Phil
  • TimmooreTimmoore Posts: 1,031
    edited 2009-08-25 22:25
    I was also looking at the schematic and it looks like D3/D4 are incorrect in the notes. D4 says power but D3 is actually connected to +3.3V.
  • Bill HenningBill Henning Posts: 6,445
    edited 2009-08-25 22:31
    Chis, it looks like a great little board! The bi-directional level shifters are very interesting indeed.

    Looking at the schematic, P16-P24 seem not to be connected... is that correct? Or are they brought out to pads on the back of the board?

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Please use mikronauts _at_ gmail _dot_ com to contact me off-forum, my PM is almost totally full
    Morpheus & Mem+dual Prop SBC w/ 512KB kit $119.95, 2MB memory IO board kit $89.95, both kits $189.95
    www.mikronauts.com - my site 6.250MHz custom Crystals for running Propellers at 100MHz
    Las - Large model assembler for the Propeller Largos - a feature full nano operating system for the Propeller
  • Nick MuellerNick Mueller Posts: 815
    edited 2009-08-25 22:47
    Seems I'm too stupid for that, but where did you find the schematic?


    Nick

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Never use force, just go for a bigger hammer!

    The DIY Digital-Readout for mills, lathes etc.:
    YADRO
  • TimmooreTimmoore Posts: 1,031
    edited 2009-08-25 22:48
    Its on the product page just under the link to the product doc
  • Nick MuellerNick Mueller Posts: 815
    edited 2009-08-25 23:04
    > Its on the product page just under the link to the product doc

    Cleaned my glasses, THX!

    Nick

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Never use force, just go for a bigger hammer!

    The DIY Digital-Readout for mills, lathes etc.:
    YADRO
  • LawsonLawson Posts: 870
    edited 2009-08-26 01:36
    It wouldn't hurt to include the datasheet of the logic level shifters. Google doesn't find this datasheet easily. www.ti.com/lit/gpn/TXB0108 A quick search on a distributor web-site found it though. (not the most clear datasheet I've ever seen though)

    Lawson

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Lunch cures all problems! have you had lunch?
  • TimmooreTimmoore Posts: 1,031
    edited 2009-08-26 03:01
    You could build one of these with it. The picture is the ardinuo bot pcb from sparkfun with the original propstick on it but you can replace the propstick with the servo controller.
    Output 4 pwm for the h-bridge, servo for the pan, use 2 of the pins for 5V I2C for the sensor. Use 4 of the pins for input for wireless. Just add a 5V regulator to the bot pcb.

    Post Edited (Timmoore) : 8/26/2009 6:35:37 AM GMT
    730 x 548 - 61K
  • Roger LeeRoger Lee Posts: 339
    edited 2009-08-26 03:12
    @Chris Savage

    This is OT, but what's up with the facebook reference.?

    Cool, Looks good.


    Roger

    Post Edited (Roger Lee) : 8/26/2009 3:42:35 AM GMT
  • Chris SavageChris Savage Parallax Engineering Posts: 14,406
    edited 2009-08-26 06:01
    @Phil – Glad you noticed…as I said, it will be interesting to see if someone can implement that in some useful way.

    @Timmoore – I will look into this tomorrow. An error is possible and we would, of course want to get it corrected.

    @Bill – The extra I/O pins are not connected. In order to keep the PSCU the same size as the previous servo controllers space became scare on the board and there wasn’t much room for the unused lines to go anywhere.

    @Roger – Most of my finished projects are going on my project website, however there are certain projects which end up being ongoing discussions that may never materialize or never ending design concepts shared with others. These have often resulted in OT posts on the forum so someone suggested I use Facebook as a place to host such discussions. Like the project site, I don’t have it completely rounded out yet, so the sig line was a bit premature. I will fix that now.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Chris Savage

    Parallax Engineering
    50 72 6F 6A 65 63 74 20 53 69 74 65
    ·
  • KyeKye Posts: 2,200
    edited 2009-08-26 12:48
    I'm interested in taking a shot at this. However I'll need to buy one of those boards.

    As for your points:

    Accept commands to move servos using intuitive commands ---

    I'm not really sure what you mean... like accept commands for the servos from any terminal program by having the user just type a string in? I can make a piece of code take command in like "Set sevro 5 to 100" without any problems using the drivers I have created. The user would still need to follow the command syntax.

    Implement true ramping and speed control for servo positioning --

    Doesn't your object have this? Or would you like the ability to intuitively control the ramping? I wrote a dual servo controller object a while back which gives the user the ability to do all this type of stuff. I could then extend that object so that it works for more than two servos.

    Provide fixed frequency variable duty cycle output which could be used to drive LEDs, lamps (using a driver/MOSFET) or DC motors using an H-Bridge --

    I think Phil posted the pwm 8 object a while back that did this. I could then run two cogs with that to do what you want.

    Allow controlled communication with daisy-chained modules (using on-board CMOS switch) --

    That would require me to buy two of these boards.

    Make use of the extended 32K EEPROM for sequence storage or some other useful task --

    ??? Yeah... That's pretty hard.

    Allow some channels to be inputs that trigger events on other channels --

    Easy, triggers could be set up no problem.

    .................................................................................................................................

    Unfortunately school just started for me so I have a whole bunch of class work now to do. Higher level math and electro physics will be eatting up my time. I may be able to hack some stuff togheter but my time will be limited to code new servo and pwm drivers.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Nyamekye,
  • william chanwilliam chan Posts: 1,326
    edited 2009-08-26 13:02
    Does this new servo controller replace both the old serial and old usb servo controllers?

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    www.fd.com.my
    www.mercedes.com.my
  • KyeKye Posts: 2,200
    edited 2009-08-26 13:05
    Wait, I could roll a much smaller pwm 32·object in about a day hacking togheter some parts of my other libraries. I could also make a really small servo 32·object too.

    Yeah, I could do this...



    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Nyamekye,
  • TimmooreTimmoore Posts: 1,031
    edited 2009-08-26 15:30
    For anyone who is interested. a version of beau's pwm that you can use multiple times but will only start 1 cog. and a h-bridge driver that uses the pwm file. I use these for my bots. I include hte pwm file where I need servos and in the h-bridge driver but only use 1 cog for all servo/pwm activities.
  • Chris SavageChris Savage Parallax Engineering Posts: 14,406
    edited 2009-08-26 15:48
    @Kye – Intuitive commands in the sense that the current controller uses the command structure of the original two servo controllers. They were made to be more BASIC Stamp friendly and so their pulse values were always in 2uS increments, just like the BASIC Stamp 2. That isn’t very intuitive for non-BASIC Stamp users. Also, because the pulse width, channel and ramping values are in binary format they can’t be sent by a terminal easily. This may or may not be an issue as sending everything as ASCII text would most likely require more bytes per command. The ramping function is really speed to match the old servo controllers. I am familiar with Phil’s PWM object, however we have a 32-channel PWM object that was listed in my post which was originally intended for some of the above mentioned functions. As a note, our PWM_32_v2 object has servo commands built-in. Really what is lacking is a good front-end to handle communication and formatting/parsing the commands.

    @William Chan – Yes, this servo controller is considered a direct replacement.

    @Timmoore – That object was written to support the PSCU and the Stingray robot.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Chris Savage

    Parallax Engineering
    50 72 6F 6A 65 63 74 20 53 69 74 65
    ·
  • TimmooreTimmoore Posts: 1,031
    edited 2009-08-26 16:16
    @Chris, makes sense. Its probably why i found it useful for my bots. I switched from using Phils PWM object to that one. The changes I did, was since it supports PWM and servo, it made sense to allow the object to be used multiple times in a program e.g. for an H-bridge for hte motor drive and for servos for a pan/tilt turret without having to use 2 cogs or without having to arrange the code to put the h-bridge and servo together. SO I just took Beaus object, made the data DAT rather than VAR. Put a lock round the shared data so you can use it across multiple cogs and check whether the cog is started before starting the asm cog. At that point I saved a cog when I used servos as well as a h-bridge. Since it supports 32 pins I dont see a reason why you would need 2 copies of the pwm object. I use this object now in all my prop bots (~15), its been very useful.
    For bots with an external H-bridge or need servo signals for the motor controller the servo controller can replace the main controller, since you made the signals bi-directional you can connect sensors to the servo controller.
  • Chris SavageChris Savage Parallax Engineering Posts: 14,406
    edited 2009-08-26 17:51
    A few Stingray robots ran around here powered by Phil’s PWM object while the PWM_32 object was in development. It’s easy to use and works well. Of course, we wanted to have an official Parallax object released with the product. =)

    Also, the error in the PSCU schematic has been corrected and an updated version is on the website. Thanks for pointing that out for us. Take care.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Chris Savage

    Parallax Engineering
    50 72 6F 6A 65 63 74 20 53 69 74 65
    ·
  • KyeKye Posts: 2,200
    edited 2009-08-27 20:52
    Okay, I bought a board. I'm going to develope something real serious for this.

    I'm thinking of giving the prop chip a command to go into terminal mode where the user can do a whole bunch of additional stuff.

    I'll get all these working and more for right now however.

    ---

    Accept commands to move servos using intuitive commands
    Implement true ramping and speed control for servo positioning
    Provide fixed frequency variable duty cycle output which could be used to drive LEDs, lamps (using a driver/MOSFET) or DC motors using an H-Bridge
    Allow controlled communication with daisy-chained modules (using on-board CMOS switch)
    Make use of the extended 32K EEPROM for sequence storage or some other useful task

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Nyamekye,
  • hover1hover1 Posts: 1,929
    edited 2009-08-27 23:01
    And the cat's meow would be to use the extended storage of the EEPROM for real time·input recording (Joystick or RC input). RC input being easier to do with no A/D, just an RC reciever that's already putting out nice digital pulses.

    Jim
    Kye said...
    Okay, I bought a board. I'm going to develope something real serious for this.

    I'm thinking of giving the prop chip a command to go into terminal mode where the user can do a whole bunch of additional stuff.

    I'll get all these working and more for right now however.

    ---

    Accept commands to move servos using intuitive commands
    Implement true ramping and speed control for servo positioning
    Provide fixed frequency variable duty cycle output which could be used to drive LEDs, lamps (using a driver/MOSFET) or DC motors using an H-Bridge
    Allow controlled communication with daisy-chained modules (using on-board CMOS switch)
    Make use of the extended 32K EEPROM for sequence storage or some other useful task

    Post Edited (hover1) : 8/27/2009 11:07:39 PM GMT
  • KyeKye Posts: 2,200
    edited 2009-09-05 21:33
    Hey Chris,

    What do you mean by true ramping? What exactly is wrong with the ramping currently?

    Thank you for you help.

    ...

    I have the board right now and I have been playing arround with it. I could add support for more software ports and this would also fix the issues with any device addressing command problems. However, that would break compatibility.

    Hopefully I can get to adding the new requested features soon.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Nyamekye,
  • Bill ChennaultBill Chennault Posts: 1,198
    edited 2009-09-05 23:10
    Chris--

    I started dropping in on the Propeller board once PropBASIC became a somewhat popular topic. This new firmware concept is truly exciting! But, I am wondering about the rewards, especially the last one, which I quote . . .
    Fame and fortune could be yours. And who knows what else...Ken?
    Gee. I know he is your boss, but who would want him? I have seen a PICTURE of him! Therefore, as long as he is a potential prize, I will not participate in this contest. (I bet he eats a lot, too.)

    --Bill

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    You are what you write.
  • KyeKye Posts: 2,200
    edited 2009-09-06 21:18
    I need to keep this post alive until my question is answered.

    The new firmware is coming along great. The resolution for pwm is now at 6us per channel. More todo.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Nyamekye,
  • BigFootBigFoot Posts: 259
    edited 2009-09-08 02:04
    I had some problems with the auto direction sensing in the TXB0108 but found that the
    SN74LVCC3245A with its manual direction control worked very well.

    http://focus.ti.com/lit/ds/symlink/sn74lvcc3245a.pdf

    We implemented an 8 bit parallel bus with the propeller and just switch directions with
    the read line. The bus drives a large 5V LCD display.

    Russ
  • KyeKye Posts: 2,200
    edited 2009-09-08 19:38
    Now that people are back at the office I would like to see if I could get my question answered...

    Which is, what is wrong witht he current ramping capabilites. Is it because you cannot just set a time diff for the value to increase over and it will do that? Because you have to specify an arbitary speed?

    Thanks,

    (So far, all 16 servo controls now implemented with 8us resolution on all channels. True ramping has also been implemented. I think I'll manage to use every core on the new firmware.)

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Nyamekye,
  • MacTuxLinMacTuxLin Posts: 821
    edited 2010-04-06 03:40
    Hello,

    I am new to Parallax but after reading the manual on Propeller, I was hooked! Now, I'm starting projects using Propeller & the SPIN language. I've purchased quite a number of items including many proto boards & 3 PSCU. I notice in the product section for PSCU (#28830), you have a Java Stamp example code. In it, it imports stamp.core.*, stamp.math.*, is there anywhere for me to code in Java & access the firmware (SPIN) directly?

    Thanks for your help in advance.
Sign In or Register to comment.