Finally! A breakthrough.
Enough background.
----------
Limit switches were selected. Ordinary levered micro switches were stocked and a good choice due to their rugged design and light operating pressure. Placement was at the extents of the travel range just outside of the servo hub's radius. Modeling holes in the chassis of the wrist-mount would extend the front of the unit slightly. Consideration was given to attaching the switches to the mount where the outer hinges attach but that would extend the overall width which was not desirable.
Dimensions for the switch were taken. Hole side was measured by inserting drill bits until a snug size was found. This use of drill bits meant that one measurement on the drawing was in imperial units while the rest were in metric.
A device claimed it could make ordinary servos rotate 180º without any modifications to the servo. It was not a common device and it wasn't cheap. But this sort of thing would eliminate the need for limit switches and would servo modification. On this speculation a simple program was written which would send pulses to the servo that were outside the established time frame.
A couple times this blog has mentioned the PWM which controls servo movement. Every 20 milliseconds a pulse is sent that is 1000 microseconds to 2000 microseconds. The length of that pulse determines what the servo does. The program was written to test times outside of those limits. Arduino supplies a servo library and example which causes a stock servo to turn all the way in one direction, 1000 microseconds, spin all the way the other directions, 2000 microseconds, then repeat. Instead of relying on the servo library and convention of these times new times were input which did permit 180º of rotation with a stock servo.
The program went a step further by simultaneously making a second servo rotate in the exact opposite way so they were mirrored of each other. Their movement was so synchronous they could be held together by the servo horns and not slip off each other. With this type of range the continuous rotation servo was not necessary.
Stock servos rotating 180º
Changes to the operating program will be necessary to rely on servo positioning instead of limit switches. The terminal board can also be replaced with a smaller version since two inputs will not be necessary. A potentiometer will be added so adjustments to speed can be made "on the fly" which can also help with debugging.
----------
Servos have been a focus for a while on this project which has been good and bad. I learned a lot working with them this time around. For the most part I've relied on Arduino's servo library and the conventional wisdom around the internet. Struggling with the Digispark paved the way for getting away from the servo library and surfing eBay revealed a product which claimed to exceed the bounds of ordinary servo movement.
It has been frustrating so hit so many road blocks but this has also taught me a lot about the electronics I work with. Experimenting with the servos was a timegamble that paid off. I try a lot things which don't pan out so I leave them out of the blog because it would be boring. In this case the it paid off in a big way. This discovery saved me several days of work.
Timegambles don't often get published here but my failures sure do. The first two paragraphs of this post are about a limit switch even though I won't be using them. It's important to me to show the path I took even if it's not the path I want people to follow. There's more than one right way to do this but there's not point in taking the harder path.
Now I can use these modified servos in another project. Dunno what yet.
Downloadable Files:
The rest of the posts for this project have been arranged by date.
First time here?
Completed projects from year 1.
Completed projects from year 2.
Enough background.
----------
Limit switches were selected. Ordinary levered micro switches were stocked and a good choice due to their rugged design and light operating pressure. Placement was at the extents of the travel range just outside of the servo hub's radius. Modeling holes in the chassis of the wrist-mount would extend the front of the unit slightly. Consideration was given to attaching the switches to the mount where the outer hinges attach but that would extend the overall width which was not desirable.
Holding a switch over the chassis
Dimensions for the switch were taken. Hole side was measured by inserting drill bits until a snug size was found. This use of drill bits meant that one measurement on the drawing was in imperial units while the rest were in metric.
Switch sketch with relevant dimensions
A device claimed it could make ordinary servos rotate 180º without any modifications to the servo. It was not a common device and it wasn't cheap. But this sort of thing would eliminate the need for limit switches and would servo modification. On this speculation a simple program was written which would send pulses to the servo that were outside the established time frame.
A couple times this blog has mentioned the PWM which controls servo movement. Every 20 milliseconds a pulse is sent that is 1000 microseconds to 2000 microseconds. The length of that pulse determines what the servo does. The program was written to test times outside of those limits. Arduino supplies a servo library and example which causes a stock servo to turn all the way in one direction, 1000 microseconds, spin all the way the other directions, 2000 microseconds, then repeat. Instead of relying on the servo library and convention of these times new times were input which did permit 180º of rotation with a stock servo.
The program went a step further by simultaneously making a second servo rotate in the exact opposite way so they were mirrored of each other. Their movement was so synchronous they could be held together by the servo horns and not slip off each other. With this type of range the continuous rotation servo was not necessary.
Stock servos rotating 180º
Changes to the operating program will be necessary to rely on servo positioning instead of limit switches. The terminal board can also be replaced with a smaller version since two inputs will not be necessary. A potentiometer will be added so adjustments to speed can be made "on the fly" which can also help with debugging.
----------
Servos have been a focus for a while on this project which has been good and bad. I learned a lot working with them this time around. For the most part I've relied on Arduino's servo library and the conventional wisdom around the internet. Struggling with the Digispark paved the way for getting away from the servo library and surfing eBay revealed a product which claimed to exceed the bounds of ordinary servo movement.
It has been frustrating so hit so many road blocks but this has also taught me a lot about the electronics I work with. Experimenting with the servos was a timegamble that paid off. I try a lot things which don't pan out so I leave them out of the blog because it would be boring. In this case the it paid off in a big way. This discovery saved me several days of work.
Timegambles don't often get published here but my failures sure do. The first two paragraphs of this post are about a limit switch even though I won't be using them. It's important to me to show the path I took even if it's not the path I want people to follow. There's more than one right way to do this but there's not point in taking the harder path.
Now I can use these modified servos in another project. Dunno what yet.
Downloadable Files:
- Common OpenSCAD files
- Servo footprints for OpenSCAD.
- Arduino Code for wired keyboard
- Spreadsheet for chords.
- Wrist mount
- Servo arms
- 40mm longer
- Straight
- 2 hinged
- 2 servo ended
- Program
- New times for servos. 500µS to 2500µS
- 3000µS to stop
- Potentiometer input, A0
- Speed. 1-100
- Refresh once positioned
- Terminal board
- Short wires
- 2 servo connections
- Screw terminals for wrist switch
- Potentiometer
- Input voltage
- USB
- 6-15volts
- Make base for keyboard
- Integrate:
- Servos
- Enclosure for each controller
- Potentiometer access
Limit switches- Activation switch
- Power connection
- Debug
- Test
- Refine
- Repeat
- Write instructions
- Compress and link to all files
- OpenSCAD files
- STL models
- Arduino code
- Make diagram with every part labeled
- Schematic for servo controller
The rest of the posts for this project have been arranged by date.
First time here?
Completed projects from year 1.
Completed projects from year 2.
Disclaimer for http://24hourengineer.blogspot.com/
This disclaimer must be intact and whole. This disclaimer must be included if a project is distributed.
All
information in this blog, or linked by this blog, are not to be taken
as advice or solicitation. Anyone attempting to replicate, in whole or
in part, is responsible for the outcome and procedure. Any loss of
functionality, money, property or similar, is the responsibility of
those involved in the replication.
All digital communication regarding the email address 24hourengineer@gmail.com becomes
the intellectual property of Brian McEvoy. Any information contained
within these messages may be distributed or retained at the discretion
of Brian McEvoy. Any email sent to this address, or any email account
owned by Brian McEvoy, cannot be used to claim property or assets.
Comments
to the blog may be utilized or erased at the discretion of the owner.
No one posting may claim claim property or assets based on their post.
This blog, including pictures and text, is copyright to Brian McEvoy.
2015-09-24 (Th)
Comments
Post a Comment