This can be done, but you still need a microcontroller to control the servos in the arm OR a radio control transmitter and receiver.
Using a microcontroller, it can be programmed to interpret the button presses of switches and execute the code to do whatever action you want for that button. I think this is the solution you would probably want.
The result would be whatever you desired, when using a microcontroller. The micro can be programmed to react any way you want to button presses, single or multiple at the same time.
Wow, I had an image in my mind of just rigging up the servos to a power supply via some switches! Looks like I may have to get a bit more refined than that.
Okay, as I said, I’m a total noob, but someone once said to me “there are no stupid questions” so let’s see if I prove them right or wrong…
Basically all I want is for a button press to control one movement on one servo (for as long as you are holding the button or until it reaches its limit of movement). eg hold button A and the gripper opens, hold B and the gripper closes; hold C and the wrist rotates right, hold D and it rotates left and so on throughout all the movements. Is a microcontroller is still required with this level of simplicity?
You said the microcontroller can be programmed to interpret button presses etc. Is it programmed using a PC? Once programmed, does it require a PC to operate or will it work autonomously interpreting information directly from the buttons? I’m looking for a self contained system that doesn’t require a PC after the initial setup.
Could you give me a list of the components I would need? eg:
what Lynx 6 arm set up?
what microcontroller?
Anything else?
And finally - how hard do you think this will be to make? Will a beginner with a LOT of coffee manage?
Servos receive a signal that tells it where it should be and it will then do its best to more there. This signal is pulse-width-modulated, so some ‘smart’ device is needed to send the signal, for the arm the SSC-32 is used, but this needs to be told what to do via a serial connection. This is why a microcontroller is needed.
The microcontroller will be needed to talk to the servo controller via a serial link. This is the best way to do it unless you have it connected to a computer.
It is programed using a PC, and then will operate on its own, given the right program and inputs. Also a microcontroller will give you heaps of room for more automation if you want to go that way in the future.
This is hard to answer for someone else. I guess you’ll need the lynx 6 arm with ssc-32. I am hesitant to recommend a microcontroller, but there will be a lot of support on this site if you go for a basic atom on the ABB (atom bot board). I don’t have one of these, but it looks like you could use it to drive the servos from, so you would not need the ssc-32. Make sure you have enought inputs and outputs though. I hope others will post more support on the microcontroller.
Make sure you think about the power supply for this setup also.
It is also hard to estimate the time required as it depends on how quickly you get a hold of the programing of the microcontroller amongst other things.
If you really want something as simple as you have said here, arms have been made with just some motors in them which are switched on and off by switches. The lynx 6 offers a lot more benifits in terms of automation and positional input.
Hope this helps.
It’s interesting that the servo gets a message telling it what position to go to, then it tries to get there. Is it then possible to have a simple “keep moving until I let go of the button or you reach your limit” control?
Perhaps I am overcomplicating this by becoming attached to the Lynx 6 model. All I want is something that is robust, looks impressive and has reasonable speed and power, with the manual controls I have described. Are there any kit versions of this kind of thing available, using motors instead of servers? Or anyone who makes them to order? (I’m in Australia too)
(I tried a “robotic arm trainer” which is just too slow and weak - loads of examples on google if you want to see the model I mean)
Some way of controlling the speed of movement would also be good, but not absolutely necessary - I guess you would need a slide or a dial, so maybe I’m just overcomplicating again.
Ideally I’d like to be able to power from batteries and from a transformer depending if there is power available - any words of wisdom there?
I played around with this on mine. I have not yet put it to practice, but I think it would work. In your program you would have the limits set so it would not try to move past them. What I was going to do was set the speed of the servo movements and give the servo position as the limit when the button is pressed. Then when the button is released, I planned to query the possition of the servo, and then send that value straight back to it. It would need a high data rate, but that is no problem. So yes it can be done.
The lynx 6 is quite fast and nice to work with, but it is not a very strong arm for lifting heavy objects. The strength can be improved by using better servos, but that is very expensive. The lynx 6 is actually rated to lift 3 oz (85g) I think, as opposed to the robotic arm trainer which says 4.6 (130g).
The problem is that anything much stronger than these requires paying a lot more.
The ssc-32 is a very good servo controller, so controlling the speed is quite easy, but you will need to use more inputs (buttons or dials), I would use a dial to vary the speed. Slide pots are harder to find and cost more.
Battery or transformer is deffinitely an option, so you can get both.
Also, I was wondering where you were planning on buying from? I found it a struggle being in oz. Lynxmotion charges way too much for postage (I think it was close to US$100 when I checked last), by the way Jim, it would be great if you could offer other post options to keep the cost down. RobotOz doesn’t seem to stock a lot of stuff, and can be a bit hard to get other stuff from. And World of Robotics prices are through the roof!
If you don’t mind opening the servos and attaching a wire to each motor lead, then you could control the servos with buttons. They would then essentially be gear motors operated by the buttons.
That is an option zoomkat, but bear in mind that using this option, the servos would be operating at full speed, which I believe would be too fast for an arm. I think, the amount of times you would end up binding them would break the gears very quickly.
The other thing is when you let go of the switch, the arm would drop to the ground as the servo would not be trying to keep it in the required position.
You could use a motor controller on the common power supply to control the servo speed. It is important to note that when power is removed from the servo, it will probably sag and not hold position if it has any load on it. There are simple servo controller designs made from 555 chips that might be of interest for controling each servo via a pot (often called servo testers).
for a “total noob”, from which I am assuming little to no electronic or programming skills (yet), the simplest path is probably to use as much canned equipment as you can and avoid custom electronics or hacking servos. the downside is a bit more cost. the upside is this reduces the number of variables for things to go wrong. it also puts the majority of development in the software end of things.
for example you can buy an L6 arm and RIOS, put it together and prove it all out using the tutorials and canned documentation. Now you buy an ABB and a BA or BAP (abbreviated ABB+BA§ by me), wire some radio shack switches and maybe a potentiometer or two up to it, and learn how to write some simple code to poll switches and send serial output (to the debug window initially.) Finally you merge the two where you connect the ABB+BA§ to the SSC-32 and change your code to send serial commands rather than just debug text.
There are tutorials and examples available to lead you though just about all of the things I have outlined and it is all simple enough that troubleshooting help should be easy to ask for and receive.
By this time your understanding of how the arm, servos, and microcontroller work will be above the total noob line and you may even go to the next step where you eliminate the SSC-32 and control the servos directly from the ABB+BA§, or not depending on how inclined you are to optimize things vs. just getting something to work and walking away happy.
Obviously this is not the least expensive nor is it the quickest way to immediate gratification. Thinking it through though, it is the lowest fustration approach with the largest amount of documentation and help readily available that I could think of.
:mrgreen:
Even with what seems like a very simple design, you still need a way to tell the servos where to go based on the switch being pressed and how long it is pressed. This requires some sort of processing to accomplish, which is normally done with a microcontroller or a PC. The microcontroller is specially designed for control applications such as this.
There is software called an IDE (Integrated Development Environment) that runs on your PC. You connect the PC to the microcontroller on an Atom Bot Board using a standard 9-Pin serial cable. You write the program for the microcontroller in the IDE and when you are ready, push the program button and it will be compiled and uploaded to the microcontroller. Once programmed, the microcontroller is fully self contained and does not require a PC except for program changes and/or experimentation using RIOS.
If I were going to do this, I would get the Lynx 6 Robotic Arm Combo Kit for PC (serial port) to start out with, which comes with everything except a power source. It includes the SSC-32 servo controller. This would allow you to build the arm, connect it to your PC, and use the PC to control the SSC-32 using the RIOS software. By doing this you can learn how the arm works and how to control it using RIOS. From there, you can move on to getting a microcontroller and controlling everything with momentary push buttons or whatever type of switch you end up deciding on.
I would go with something like a BASIC Atom 28 Pin Programming Starter Pack, which comes with the microcontroller (Basic Atom), Mini Atom Bot Board to put the microcontroller on, and documentation (really just a command reference for programming). There are books available for learning how to program the microcontroller, but I have never had any of them so can’t say how good they are.
You would need a power source, such as a walwart power supply or battery. My own preference is toward a good battery pack, since many (if not most) walwart power supplies don’t have much to offer. It really depends on how much you want the arm to be able to lift and move around, because this will determine what servos you should be using because there are several different torque (or load) ratings.
If you tell us a bit more about what you want to do with the arm, we can help you more with this. It may be more desirable to put together your own Lynx 6 arm package using different servos to avoid buying components you won’t use.
This would be difficult to tell since it depends on your level of experience with this kind of stuff. You said you are a complete beginner, so there will naturally be a learning curve you will have to go through before you can create your final project. How long the learning takes depends on how fast you learn everything you need to know. These forums are an excellent place to ask questions and get help. That’s why I suggest starting with some basic stock components first. You can always upgrade to more powerful servos later on if you need them.
An easy way to do what you want is to attach a servo tester on each servo.
This will give you the ability to control each servos position with a knob instead of switches. It doesn’t require any servo controller or microcontroller at all. However, there’s always a catch… The servo tester only provides 90° of rotational control. And there’s the fact that controlling a multi axis robotic arm in this manor is very difficult. Move the shoulder, oops, now the elbow needs adjusting, ah now the shoulder needs adjusting again, now the wrist is in the wrong position, etc…
Why not just buy the arm without electronics, then get the SSC-32, and the Basic Atom 28 programming pack. Then follow the instructions in this tutorial. lynxmotion.com/images/html/build091.htm
Behold the power IK (inverse kinematics). Now you control the position of the end of the gripper in 3D space. You move the gripper up, down, left, right, for, aft, all from a popular play station game controller. Yes it’s a little more difficult to set up. but we are here to help. I think you must agree this is a much better way to control an arm.
I’ve been away for a couple of weeks and have not had opportunity to get this long overdue reply sent.
Firstly a huge thanks to everyone who has taken the time to share information!
I’m wanting to use this with school groups to show them the relationship between different movements, so they have to be able to directly control each servo. Therefore the ‘play station controller’ solution will not really work.
I believe I now understand my options for making this work. I can buy the components and start experimenting. The learning curve will be pretty steep, but I like a challenge!
Kroony - I’ve only found robotoz and WOR as suppliers in Australia, so unfortunately we are in the same boat! Even worse is that I find them both very hard to contact.
Look out for a new topic in the next couple of months titled “Help, Rygo has run out of coffee still does not have manual control of his arm…”
Hi there. I’ve been considering buying one of these robot arms(most likely the lynx 6, with wrist rotate). If I get this robot arm, and maybe later buy one of those four wheel thingys.
Will I be able to use one playstation controller for both driving the vehicle/robot and the same playstation controller to control the arm?
I am interested in one of these robot arms, but im afraid I might get tired of it fast and just throw it in a closet or something
I read trough the guide you posted there, and is it really as easy as it seems?
Yes it’s pretty easy, and if you get stuck we are here to help. The tutorial I gave you was just to control an arm. The following tutorial is for a 4wd rover with an arm.
I’m back! After gathering dust on the shelf for a couple of years this project has been resurrected, and hoping to demo it to a school group next week.
I’ve got the botboardII and basic atom linked to the SSC-32, and successfully programming the basic atom to send simple positional data from the basic atom (thanks to all the info on this site
However, I’m now stuck.
How do I connect a simple push-button switch to the botboardII in such a way that when pressed it will send an input to the basic atom, so that I can do some if-then statements allowing the button to control the arm? All I can find is info on sensors, but I will just have a very simple switch which is either on or off.
Once I can get user input into the basic atom I can start to design a program which will make the arm move when buttons are pushed.
(ps I downloaded the latest basic micro studio, but it did not recognise my basic atom - is this because I have an older model? IDE 2.2 works fine.)
I put a switch on the bot board between the i/o row and the system ground row on pin 12, then used this code to test if the input is working:
aa var bit
start
loop:
aa=in12
serout s_out,i9600,[dec aa]
pause 300
;repeat
goto start
Results were as expected when viewed in the terminal - a series of 1s when the button is not pressed, a series of 0s when it is pressed.
This works for pins 12-15
However, with pins 0-11 the result is not the same. I get a mix of 1s and 0s in the terminal regardless of whether the button is pressed.
If I press the button when a series of 1s is coming through, then it appears to work and changes the 1s to 0s.
But I don’t know why the microcontroller is generating its own 0s
I’m going to need about 12 inputs to complete my project, so can’t just rely on pins 12-15
Are pins 0-11 different from pins 12-15?
Am I connecting the switch properly ie between the i/o row and system ground?
Is there an error in the code I am using?
Feels like I’m getting very close, but can’t get past this hurdle
Thanks in advance for help.
The inputs that are working properly have “pull ups”. These are resistors, usually 1k-10k that are connected to the I/O pin and 5vdc. The inputs that are bouncing around are “floating” meaning they are high impedance, not set to high or low. Add one 10k resistor per I/O pin. One end goes to 5vdc, the other goes to the I/O pin. Then they will all work.