Step 3: Modifying the Encoder Gear.

Now we have to modify one of the gear wheels, the brown one in fact, to turn it into the encoder wheel.

The very nice people who made this gear wheel, left 6 small circular markings on the underside of the gear wheel, these are in a perfect position for the holes that we want. Basically the more holes we have, the better the final resolution. I certainly wouldnt advise going for more then 6 holes, as it would leave the wheel too weak. The first picture shows the 6 markings, highlighted with a pen.

Great care needs to be taken with the next step, as the wheel can be easily damaged, Please DONT be tempted to drill each hole out in one go, The finished hole size is 4mm. I first took a piece of wood, and drilled a hole big enough to take the smaller half of the gear wheel, to allow the larger face to sit on a flat surface. The first hole i drilled was 1.5mm, this was my pilot hole, the next size up was 2.5mm, and for the last drilling, i did this by hand holding the drill bit with a cloth wrapped around it. The hole being so close to the edge, i didnt want the risk of the drill  bit grabbing, and wrecking the gear wheel.

With the gear wheel drilled, we can now move onto the next step.
<p>Hi, I've owned an OWI kit for some time and felt there was some great potential if only it could be interfaced to a microcontroller. I wasn't happy with some suggestions which mounted external potentiometers and didn't take it any further. I then stumbled across your post which provided the inspiration I needed to give it a go. </p><p>The only change I made was to incorporate the pull-up and in-line resistors inside the gearbox to tidy things up (although it is tight in there!). The next step was to interface this with an Arduino Mega which included building a shield with a couple of quad h-bridge drivers to run the motors.</p><p>The real fun was then interface this with a PC where I used wrote a sketch using Processing which included an animated 3D model of the robot arm. </p><p>The only shortcoming I found with this project was even using the Arduino's external interrupt feature to count pulses, it doesn't grab every one resulting in inaccuracies. To overcome this I included a calibrate feature in the Processing sketch where the user points the arm vertically and then clicking a button resets the pulse counts.</p><p>In the end, without your blog I would never have embarked on this project and learnt all I have about Arduino and Processing - Thank you! </p>
<p>Hey,<br>I bought OWI kit from amazon. It seems the speed of the motors is a bit slow.<br>Are there any methods to increase the speed of the motors?<br>Something like passing more current. But i doubt more current may burn the motors.</p>
<p>The speed is slow probably because the arm applied a relative high load to the motor. And motor is a simple, low torque DC motor. To make it fast, we can either change a motor or change the gear ratio to increase the torque. </p>
<p>Hi, as a retired robotics software engineer I have looked at this robot arm before as something to dabble with but have been put off by the lack of positional feedback. I came across this post and have been inspired to have a go and have just been given an arm kit for my birthday. The motors all have a worm gear on the motor shaft and I agree with chrism that this will give an overall ratio of 131:1 or 393 pulses per 180 degrees of movement. However, if the pulse sensing circuit/software generates a count on each pulse edge this would give 1572 counts for 180 degrees.</p><p>One question I have is do you have any means of automatically finding a datum position for each joint? It would be nice to home all the joints without reaching the end of travel. </p>
Hi David, this was a cheap and cheerful set up, my prime objective was to improve the accuracy of the arm, which is what i succeeded in doing. When i worked in the motor industry on ASEA robot arms, they employed 2 types of positional feedback, one was a dead stop using a proximity sensor, and the other a 'soft' stop defined during setup. When i did this arm, i used just a soft stop, the arm was mounted on the board, with a peg sticking up in one corner. The arm was manually 'jogged' to that peg and when the peg was dead centre within the jaws, all counts were reset. I had planned to go one step further and program the arm to move to a reset point, when it reached this point, if it was still zeroed ok, it would allow the arm to continue.<br><br>There are many ways of doing this, another way could be to use another IR detector sensing something on the arm itself. Some of the posting was actually written some months after i had finished the arm, and i was relying on 'faulty' memory..:o)
<p>ottimo lavoro, gli opto controller possono essere quelle dei mouse tipo vecchio?</p><p>great job, the opto controller may be those old type of mouse?</p><p>che ne pensi di riprodurre la ruota dentata con stampa 3D?</p><p>what do you think of playing the sprocket with 3D Printing?</p><div><div><div><div><div><div></div></div></div></div></div></div>
Hi, have just found this whilst looking to automate my robot arm - looks like a cool mod. I have a few comments and questions: <br>You claim 1024 steps for 180 degrees - I've checked the gearing in mine and from the brown cog it has 3 reduction stages of 10/32 to the output shaft of the motor assembly, then a 10/40 reduction stage to the arm. I make that a total ratio of 131:1, which with 6 holes gives 393 pulses for 180 degree rotation (half a turn of the arm). Are your cogs different ratio to mine or is there something else I'm missing? <br>There's a previous comment about getting replacement cogs - I'd be wary of getting standard replacement cogs of the correct pitch - the grey ones beneath are standard cogs, but the brown one has slanted teeth to engage with the worm drive. I've not found a replacement for that, and I'm not sure they are readily available. <br>Is there any reason not to drill more holes in the cog for better resolution? You recommend drilling a small hole to start and then opening it out - do the holes actually need to be that big to work with the opto? <br> <br>I am a software geek, so looking forward to playing with this - I'm hoping it should be possible to slow the motors down using PWM control when nearing the stop for better precision.
I think you may have a different gearbox to the one i had, the pulses for 180 degrees was in fact 1024 as i stated, and there was certainly NO worm drive in the gear chain whatsoever. <br> <br>However you mod your gearbox the main aim is to get as many pulses for a given % of rotation. If you used just the infa red emitter and receiver removed from a slotted opto, you could even mount them either side of the first gear wheel, instead of the 2nd giving you a higher resolution. <br> <br>As these are simple opto's the holes would need to be pretty big to get a good and clean signal when switching at a higher speed. Just remember that there is nothing special about these opto's, pretty much any will do. <br> <br>There are also reflective sensors that can be used, these shine a broad infra red beam onto an object and the receiver senses the light and dark reflections coming back. <br> <br>Slowing the motors down is what i did with mine, just keep an eye on the pulse count, and when you get near to where you want to be, start to reduce the drive to the motor in stages.
It is a nice surgery. I am wondering if you let me know the size of the opto coupler you used. I have purchased a small opto coupler, named TCST2300 from Vishay. Its dimension is : 24.5 x 6.3 x 10.8, gap 3.1 mm. When trying to install in the gearbox, it seems rather large.
i checked on the Vishay's website for the dimensions of the opto that you have bought and they are exactly the same size as the general Electric H21B1 i used. You have to look closely at how the opto is mounted and which pieces of plastic to cut. Also remember that i cut OFF one of the opto's mounting lugs to get it to fit into the motor housing. Once you realise how its done, the mounting is quite simple although a little fiddly. The first one i modified took me ages, but the rest took about 40 mins to modify. I hope that helps?
I want to do this but also keep the original gears in case I decide to try it another way. <br>To help me gather up the materials BEFORE I disassemble my arm it would be really helpful to know the dimensions of the 10/32 gear wheel so that I can try to buy a bagful of them on eBay. <br>Did you happen to keep a record, or do you have one lying about that you can measure? <br>Many thanks <br>Nick <br>
Hello Nick, <br> The mods were done to the original gears, if you look at the 10/31 gear wheel from inside, you will see on the surface 8 little circles from the casting, all i did weas to drill 4 small holes using half of these circles as a guide. Doing this doesnt really stop you from trying something else. Saying that, these gear wheels are pretty standard, look in any hobby model magazine or catalogue and you will see these, they are pretty much a standard tooth pitch as BILLIONS of Chinese toys and cogs all use the same pitch. Any problems just shout! <br> <br>John
This is great! I have one of these robot arms and we have fun playing with it to move things around. I have been thinking about how I can hook it up to my Arduino for basic control. This adds another lever to what I could do with automated movement! S.W.E.E.T!!!!
Hello AT,<br> The next level is not as high as you think,actually its quite easy even if you have even basic programming skills.<br><br>each of the gearbox's is quite simple,its just a motor driving a gearbox. In the original, the system was basically very stupid, there was NO feedback to tell the micro at what position.<br><br>Here's my simple advice, take one of the motors out and connect it to your micro, just focus on the one, and not all of them, this will just confuse you. Now that you have added an opto to it, you now have a form of feedback, so your basic motor/gearbox is now a servo. Just play until you can control the new servo the way you want, when you are happy, just apply the rules to the other 'new' servo's
Great advice. In looking through your instructable, it makes total sense how you are doing that. It is basically how the Rhino robotic arm that we had in college worked for positioning.<br><br>At one point I was tempted to look into replacing the motors with stepper motors. Another idea was to use servos. Your idea should be much cheaper and more fun as it gets into how the whole thing works.<br><br>My version does not have the USB inter face. I didn't even know it came with one! I was going to set up my Arduino with several MOSFETs to replace the switches in the controller box. That approach along with what you did would allow me to program the arm for repeated tasks.<br><br>A pressure sensor in the pincher wouldn't hurt either.<br><br>My son and I call my robot arm Whiny because of the sound the motors make as we move it around.
Using steppers was an idea i originally considered, but when i sat down and had a think, the first problem was the extensive mods required to the plastics, and the second was the backlash in the gears negating the advantages of a stepper!.<br><br>The original DC motor can be compensated for within the micro if you calculate the backlash and 'overshoot' your stop point in either direction.<br><br>The 'pressure' sensor was nothing more then a simple current monitor, eventually i used a small Sparkfun current sensor module that was cheap. I used a 5 amp module which i modified. The current shunt was just PCB foil on both sides of the PCB and plated through. I first removed the plated through connectors to use one side, this effectively made it a 2.5 amp current shunt. A little more hacking with a modelling knife brought the module down to about 800Ma for full output (0 to 255Mv output for 0 to 800 Ma) It didnt need to be accurate just needed to feedback the amount of stalling current on the grippers.<br><br>The only weak point of the whole arm IS the gripper assembly. I have seen more robust ones for sale and that will be the next mod.
this is great, excited to start working. two questions though: <br> <br>-- where did you get the optos? where would you suggest I scavenge/buy some? <br>-- would you please put up more detailed instructions for putting in the low current sensor and gaining pressure sensitivity? <br> <br>once again, thanks for a great project -- its exactly what I want to get me started in learning about digital fabrication arms!
The opto's are LITERALLY the cheapest you can find, there is NOTHING special to them, one half is the LED 'transmitter' the other half is the LED 'reciever' just look for the cheapest slotted opto you can find, it will do the job perfectly. Here is an example.. http://www.ustudy.in/node/7519 It is simply a photo transistor one side, and a transmitting LED the other. To test it, put 2v on the transmitting side, and your multimeter the other side set to the OHMS range. The meter will read a low resistance, if not, reverse the test meter leads. then just interrupt the beam in the slot, the meter will then show a higher resistance... another example.. http://www.reuk.co.uk/Optocouplers.htm <br> <br>This is what they look like... http://teacher.en.rmutt.ac.th/ktw/04-710-409/OPTOCOUPLER%20APPLICATIONS.htm <br> <br>There is nothing scary about the opto,s I used some that i had in my junk box, i didnt even check what they were, i just used them. For those really unsure, buy 1 and test them using the examples above. <br>For the pressure sensor, this is just as simple....I used a current sensor from sparkfun like this.... https://www.sparkfun.com/products/8883 <br> <br>when the fingers grip an object, effectively the motor hits a brick wall and stalls. The current then starts to rise and this board will sense this. Whatever micro you use, just simply program it to read the rising current when the fingers grip something.
thanks so much for the reply! I will be in touch as I move forward with the project.
Hi,<br><br>I considering a project like this. <br><br>Regarding the suggested Sparkfun current sensor board - the spec as I read it say &quot; 66 to 185 mV/A output sensitivity.&quot; <br><br>On my arm, measured gripper motor current is about 200 mA when the grip is just moving, and about 350 mA when the grip motor is stalled and the mechanical clutch starts to slip. <br><br>Given these low current values is seems like the sensor board voltage output would be quite low. Has the recommended Sparkfun board actually been tested in this application?<br><br>Thanks
I am considering purchasing the OWI 535 robot arm. I have found one for as little as $34US. I have a few questions about the robot that I hope you or some of your commentors will answer for me. Some of these are a little off-topic but all relate to the OWI 535 or to the optos.<br><br>I have a small pile of 'dead' PC mice. I know that many of the older ball-type use optos to 'count' the movements of two rollers touching the ball. How would those optos compare in size and function to the ones being used in this 'Ible? Would it likely be possible to salvage optos from PC mice for this? could an opto sensitive enough to count the actual gear teeth be obtained?<br><br>Is this robot worth purchasing? I've had both the original Armitron robot arm and it's clone from the Discovery Store. Those two 'toys' are the extent of my robot arm experience.<br><br>If it is &quot;new in box&quot; how much assembly is required? Does one have to actually build each gearbox? This would be a benefit to me as I will inevitably end-up taking the thing apart if I DON'T have to assemble it from scratch ;)<br><br>Can someone tell me in layman's terms how much the gripper can lift? I know everywhere says &quot;100 grams&quot; but I'm honestly not sure how much that is &gt;.&lt;<br><br>Can people please show pictures of how they've cleaned up all the dangling wires around the arm? These are a real turn-off to me &gt;.&lt; The OP mentions adding flat cables. I would like to see examples.<br><br>I look forward to any and all answers and if this is too off topic, will the OP please ask commentors to PM me with their answers instead?<br><br>Michael, at &quot;DieCastoms&quot;
The author mentions that any opto will work. However I have a salvaged collection and I can tell you this isn't quite true. Some opto have longer distances in between emitter/receiver for them to fit. So a small one from a mouse would probably work. It took me about 2.5 hours to assemble this non-stop with about two times having to redo gearboxes cause I forgot/messed up a step. It can lift up a single AA battery. The most I have tried to lift with mine was a small knife. Um cable management is key. the original contents include small cable harness with sticky stuff on the bottom. These attach to the arms and body of the robot down to the core control. No way around it. Keep in mind if you do this, you will have lots of wires to work with
I do have a question, I'm currently designing a series of PCB's (Arduino clones and clone shields) I'm just wondering what input would you connect the RX out to? an analog input? or a digital input for HIGH/LOW ?
It's analog. Check out datasheet <br>http://pdf1.alldatasheet.com/datasheet-pdf/view/105412/ETC/EE-SX1235A-P2.html<br><br>at page two on bottom right corner it give you an idea on how it works. Let me know if you need further help
Nice - I just finished melding joint M2 on mine with a hacked Hitec HS300 servo to turn the motor into a proper servo (the potentiometer actually fits into the bit where the gripper rotates quite nicely). But, I think your way may be simpler.
Great work! I've been looking for something like this for my Orbduino project.<br>http://www.tnhsmith.net/Other/Orbduino/<br>Thanks again!
Dude. Tha is the coolest thing ive ever seen! <br>Do you have an instructable on this? <br>
Thank you Bob. I've been meaning to write one up, but haven't gotten to it yet. However, wiring diagram and source code are published on my site.
this is seriously cool. well done. i was thinking of getting one of these yellow robo arms because they are available and cheap - thanks for saving me the trouble of having to figure out how to retro-fit better controls! as a return favour check out my video of TANK TRACKs robot with LEGO NXT controller and SONY PLAYSTATION PS2 remote at www.robotscience.co.za
I've ordered the arm and still waiting for it to arrive. <br><br>@Anobium, is it possible to make an howto from your setup ? I really like how it works !
Project completed! Thank you for the initial gearbox concept! <br> <br>See http://www.zen21667.zen.co.uk/ <br> <br>Anobium
This is the current state of my development program - I have added more mods to the gearbox and added a psuedo CNC controller. <br> <br>http://www.youtube.com/watch?v=5wiKAZYmUq0 <br> <br>Thank you for the inspiration. <br>
Hi Anobium, what software are you using? and how do you make the interface with picAxe? <br> <br>Best Regards from Mexico.
The software is a language I have developed, this language is very simple.<br> <br> The command strings are interpreted and then sent from the PC to the Picaxes.&nbsp; The interpretor is written in AWK and the communication interface in Perl, both are very simple. I chose these languages for portability.<br> <br> The Picaxes control the axis movement, sense the position and find the &lsquo;home position.<br> <br> An example may help.<br> <br> <strong>&nbsp;&nbsp;&nbsp;&nbsp; G91A25B50C75D100E50<br> &nbsp;&nbsp;&nbsp;&nbsp; G28ABCDE </strong><br> <br> The <strong>G91</strong> is the instruction to move an axis. Each axis is given a unique identifier A, B, C, D or E. The number is the unit of travel.<br> The <strong>G28</strong> is the instruction to send an axis to its home position. S0, with two commands I can find any location within the span of the robot arm movements. These &lsquo;G&rsquo; codes, called GCODES, are then interpreted and sent to the Picaxes which then move the axis appropriately. See <a href="http://en.wikipedia.org/wiki/G-code">http://en.wikipedia.org/wiki/G-code</a>&nbsp;(I am currently documenting the codes for this robot arm).<br> <br> So,&nbsp;I have written&nbsp;few pieces of software and some microcode in the Picaxes.<br> <br> Interested in trying to adapt a robot arm?
Yes I'm working in that, but i don't using picaxe, i need more flexibility in the software, thinking in opensource and C++ programing language.
I am interested as I gave my mods a lot of thought. In the software I have a huge amount of flexibility. I currently have the robot executing 'Towers of Hanio' in the Gcode language - this means no changes to the microcode, the comms or the PsuedoCNC software - very cool! <br><br>What approach will you be using? Opensource and C++ - do tell more. I want to learn more. <br><br>
have written the first manual, I think the first of many.... <br> <br>See http://www.zen21667.zen.co.uk
Same comment. What opto did you use? Part number? Or, any recommendation? <br> <br>I have tried to fit two different types this evening with no luck.... So, I am asking the Oracle. <br> <br>Most grateful of a response. <br> <br>Anobium
I have been looking at Farnell's offerings and have found this one:<br><br>Vishay Semiconductor - TCST1202<br>Farnell Number: 1470058<br>&pound;0.97 for 1 off<br><br>I think it would do the job required. I haven't bought and tested this yet but I think this would work.<br><br>Hope this helps<br><br>Phoenix62_80
Yes you are right Phoenix, however this opto doesnt have the mounting lugs that the GE one did, if you remember, i used one of the lugs to glue the opto in place.<br><br>Also this one is a simple transistor output, this i havent tried, just the darlington output.
Set up your Opto first with a multimeter on the receiving diode, then connect a 3 volt button cell to the transmitting diode, you have 4 combinations of connection to get it right (8 if you dont know which is the transmitter or receiver!). In the correct combination the meter will change from high resistance to low resistance when you connect the button cell to the transmitting side, leave connected, and then break the beam with a piece of card, the meter will then show high/low resistance.
The Opto i used was a General Electric H21B1 as i had loads in my junk box, they can be simply tested using a multimeter and a 3 volt battery. There is nothing special about them. If you connect the receiver side to your multimeter, and then connect a 3v button cell to the transmitter or diode side, when the transmitting led transmits, the multimeter will show that the receiving diode is now turned on and conducting.<br><br>More information can be found on the Digikey site, the Opto i used had darlington outputs, but literally ANY opto that you can get to physically FIT will work.<br><br>http://parts.digikey.com/1/parts/947374-sensor-opto-slot-3mm-darl-thru-h21b1.html
Excellent Instructable!! <br> <br>I'm looking to do these mods but I was wondering which infra red slotted opto did you use? Do you have a part number and somewhere I can buy them. I have loads of general electronic components but I don't think I have any slotted infra-red optos....Obviously I need to get some!!! <br> <br>Could you post your code at some point too? Coding is not my strong point either!
Hi Phoenix,<br> There no code, i dodnt get any further, i used a Seeeduino to count the feed back. There isnt even a reference point to reset back to, you have to use basic software to count the pulses back from each joint.<br><br>The sensors were from my junk box, any slotted opto will do, as long as the size fits in, my opto was an &quot;off the shelf&quot; device, the hard and critical bit is the drilling of the holes in the gear wheel, take care and fit the cheapest opto's they will all work.<br><br>Jomac
Nice job.<br>I have built the same kind of thing only I put potentiometers on the outside. Not as clean as yours.<br>you can view the video at:<br>http://www.youtube.com/watch?v=ArEjPsYxM4A
Im impressed Travster with your site, since i finished this project, i have now modified my arm with a proper wrist, so the jaws now rotate 180 degrees. I may add this as another instructable, if i get the time.
Thanks Jomac! <br>Rotating wrist sounds great, looking forward to that. Any pics/vids?
SInce i finished this, i didnt like all of the extra cables dangling all over the place, so i removed the flat 3 core and the two single strands of cable, nd replacedit with 1 sigle cable with 4 cores and a screen. This now looks a lot neater.
I was really surprised with the results, i am still playing with the software, which isnt my strong point, but ive even managed to allow for the back lash or slack in the gears along the horizontal axis. i can move the arm back to the same point each time to within 3 or 4 mm, certainly a lot better then the original set up.

About This Instructable



Bio: A semi retired engineer with too much time on his hands, I just love, building and tinkering with anything electrical or mechanical. I also love ... More »
More by jomac_uk:Modifications to Robot Arm for Opto Coupler Feedback, OWI 535, Edge etcARDUINO/SEEEDUINO Breadboard station for less then $10Easy prototype breadboard unit with DUAL PSU's and less then $10
Add instructable to: