HybridDiskEncoder
HybridDiskEncoder copied to clipboard
Making a test joint to validate control loop improvement
The encoder provides a capability that I believe is not well understood in control systems. First some background:
- Control loops take in a commanded desired position or motion and read the current position (hopefully of the output shaft / joint rather than the motor shaft) then send commands to the motor driver (irrespective of the type of motor / driver) to correct the error; bringing the joint to the desired position or motion.
- Standard control loops, in order to accomplish this goal effectively, need to account for the physical attributes of the load, such as inertia, friction, etc... For example the I and D terms in the standard PID loop compensate for ongoing positional error (Integral) and future overcorrection (Derivative). Feedforward, input shaping, etc... all need to understand those attributes accurately in order to compensate for them.
- Robotics, especially, make understanding the physical attributes nearly impossible, because they keep changing. Picking up a load, changing orientation, etc... all completely rearrange the control system inputs making tuning a nightmare. This is true for many applications, but not all. e.g. input shaping is great for cartesian 3D printers because the load isn't changing. But on a router, the load when cutting is not the same as the load when doing a rapid.
- A control loop that doesn't need to understand the load is valuable. The Dexter robot appears to have that control system. It only has one primary adjustment. Although there are many other parameters which can be set for e.g. digital friction, max error, beta, etc... the only setting commonly used was the PID_P. And yet, the arm was able to accommodate a wide range of positions and loads with precision. When gain scheduling of the PID_P setting was enabled in firmware, the response was rapid. And yet, oscillation was avoidable.
Good Tracking w/o Complex Control
Why don't the joints on the Dexter robot oscillate over a wide range of loads? Good question. I've spent years trying to understand it. I think there are two answers:
-
Rate vs Force output The output goes to a rate generator which steps a stepper motor. Most PID systems send a voltage to a DC motor. This represents a force based control vs a velocity based control. This makes the I term in the PID control redundant. The output as a velocity just regulates the speed of the correction; faster when the error is large, slower as the error decreases, but never going to zero until the position is perfect. Compare that to a force based output, where there is no force unless there is some positional error. This allowed lower PID_P settings, while still providing complete reduction of positional error.
-
Encoder sensitivity The need for a D term (derivative, prediction of the future) or other "thinking ahead" type compensations increases as the time required for the control loop to react increases. If your control loop is slow, you need better predictions to avoid under or over compensation. But the converse is also true: If your control loop is fast, you don't need to rely on those predictions as much. You can compensate for an error quickly, before it gets out of control. I was told for years that the FPGA is what made that speed of correction possible, but recently, I've had a revelation: The time it takes for a change in position on the joint to be reported by a low CPR encoder absolutely swamps any other time delays in the system. It's the
encoderhaving a stunning CPR (over 100,000 CPR) that speeds up the loop!
To validate (or disprove) this idea, I need a better physical rig for testing: One that has not only an encoder operated by hand, but a full joint with links to attach loads, a transmission, gearbox, motor, and motor driver. And if that's going to happen, there are some features I think it should have:
Mechanical Design
- Passthrough Not a joint shaft, but a METAL tube, with a space in the center to pass through wires, air, optics, or whatever. The larger diameter also helps with stability.
- Enclosure A strong METAL box which the rotating tube passes through which can contain the encoder disk and sensing electronics which protects them from electrical noise, optical interference, dust, and mechanical damage. These are the weakest, most sensitive parts of the joint and the wires and disk were always getting damaged, gunked up, and the signals were noisy. This noise might be important, but controlling it is best; it can be added back on purpose if needed. This box would be easy to mount the lower link to and would need to hold the tube securely without mechanical slop in any dimension. Mechanical deformation and slop was a horrible problem on the robot.
- Better bearings To mount the tube to the box, 45 degree "cross" roller bearings or needle bearings or (for lower cost) standard rollers in combination with thrust bearings, are important to avoid slop in any dimension. Standard bearings (alone) do not manage axial load well and lead to out of plane deformations at the joint.
- Flange To attach the upstream link, the tube needs a strong (read: "metal"), large, flange on either end, outside the box.
- Agnostic drive coupling The method of driving the joint constantly changed during the design of the robot, but was always inbuilt into the design, meaning any change required re-design. Instead, the outside of the tube flange should support attachment of any of the following: Pulley, sprocket, cable spool, bevel gear, driven worm gear, etc... Outer mounting will make changing this simple.
- Separate drive Instead of including the electrically noisy, dirty, and heavy motor and gearbox in the joint box, they should be mounted in a separate metal box, which is easily attached directly to the joint box, or separately mounted along a link. This box should contain the motor, motor driver, power connections, control connector, gearbox and an output shaft with matching flange for all the above mentioned drive transmission possibilities. If needed, the coupling could be inline; with the joint shaft axis and the drive shaft axis aligned. Obviously, that plugs one end of the passthrough, but in those applications, it's probably not needed. Some motor types (e.g. hoverboard motors) can have a passthrough, and so are ideal to mount directly to the joint tube, on the outside of the joint box.
These design requirements seem clear to me, and are based on many years of experience in the field; watching what goes wrong, and wondering why the obvious issues aren't addressed. Usually, a lack of time was blamed.
Having said that, these mechanical goals are (likely) beyond my ability. I am not an ME, and my fabrication skills are minimal. To that end, I would deeply appreciate any offers of collaboration. Either to help me understand why my goals are wrong, or to design and fabricate a working system. Coupled with the (now) working Ras Pi Pico based encoder design, I firmly believe this could be a game changer in robotics in general, and open source hardware specifically.
Just a nit pick: "the load when cutting is not the same as the load when doing a rapid." should probably be the load when cutting is not the same as the load when doing a rapid motion.
Ideas for test hardware:
- "Cheese plates" are basically cheap, little optical breadboards for camera gear. An easy and portable platform for building.
- Plumbing "faucet extension adapters" are available with threads on the outside and about a 1/2 inch hole in the middle. They also have flange(ish) nuts which should work to hold the encoder disk and perhaps pack the cross roller bearings into the sides. I also found these generic extender pipe adapter parts "BSP 1/2" 14mm ID, 20mm OD, but only from the one source. I think these flange nuts will work with that stock very nicely. Not sure how to keep them centered in the bearings; a "ramp" on the ID of a nut which drives into the center of the bearing? A 3D printed adapter might not be horrible, if it's not thick. I can't seem to find an industrial source for a tube (not a rod) threaded on the outside. McMaster has "Hollow Threaded Stud" but the threads stop in the middle.
- Crossed Roller Bearings are /crazy/ expensive. It might be worth starting with bushings, but I really want to avoid stiction as it messes up the graphs. Perhaps the best option is combining a standard roller bearing with a flat thrust bearing as these are not terribly expensive. For example, these flat needle bearings should fit the generic pipes mentioned above. And 20mm ID bearings are common e.g. these should also fit and are low cost.
"Crossed Roller Bearings are /crazy/ expensive." Is this due to current supply chain issues or that's always been true? If the former, not so bad for a few to experiment with but long term, you know I like low cost.
On Sat, Dec 21, 2024 at 1:55 PM JamesNewton @.***> wrote:
Ideas for test hardware:
- "Cheese plates" are basically cheap, little optical breadboards for camera gear. An easy and portable platform for building.
- Plumbing "faucet extension adapters" are available with threads on the outside and about a 1/2 inch hole in the middle. They also have flange(ish) nuts which should work to hold the encoder disk and perhaps pack the cross roller bearings into the sides. I also found these generic parts https://www.ebay.com/itm/186674139277, but only from the one source. Not sure how to keep them centered in the bearings; a "ramp" on the ID of a nut which drives into the center of the bearing? I can't seem to find an industrial source for a tube (not a rod) threaded on the outside. McMaster has "Hollow Threaded Stud" but the threads stop in the middle.
- Crossed Roller Bearings are /crazy/ expensive. It might be worth starting with bushings, but I really want to avoid stiction as it messes up the graphs. Perhaps the best option is combining a standard roller bearing with a flat thrust bearing as these are not terribly expensive.
— Reply to this email directly, view it on GitHub https://github.com/JamesNewton/HybridDiskEncoder/issues/9#issuecomment-2558204220, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAJBG7NNQNQ3SQBKZ6VOCUT2GW2QVAVCNFSM6AAAAABTU4AGWOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKNJYGIYDIMRSGA . You are receiving this because you commented.Message ID: @.***>
Thanks to the promise of a kind donation, I've ordered the bearings listed above. I'm looking for a local supplier of the ebay threaded tubing and flange nuts, but I'll probably just order those as they are not expensive and /sometimes/ stuff from China comes quickly, but if I order it now, it will get here before the end of time.
I'm still looking into components for the box. Some of these "cheese plates" have holes on the /edges/ which means they could be attached as the /sides/ of a box made with a cheese plate bottom. https://www.amazon.com/CAMVATE-Cheese-Monitor-Mounting-Socket/dp/B0918YTKLS/ref=sr_1_25
Here is another, larger, one, which could be the base plate, but with holes on the side where a smaller regular plate could attach to make the sides. https://www.amazon.com/dp/B06XXLWYK7/ref=sspa_dk_detail_3
And then maybe just a sheet steel or clear plastic cover on top. For the final product, it should be a closed up box to avoid light pollution and dust, but for a demo / development version, it's fine if it has holes and lets some light / dust in. The holes won't admit electrical noise (faraday cages are often just metal screens).
The "Generic Pipe Adapter" has an OD slightly larger than the ID of the bearings, so to grind down those threads, the old trick of spinning it with a drill while grinding with a dremel is used. Chucking the pipe isn't possible in a simple drill, or drill press (it would need a lathe chuck) so a 3D printed spindle adapter can be used:
Note that the fn parameter is reduced on the outer diameter to provide high points which can be mashed down, and set to 6 on the inner diameter to mate with a hex drive. Then a philips or star bit can be inserted with the hex drive in the plastic, and the (round) bit shaft in the drill chuck.
// title : Tube Turning Spindle
// author : James Newton
// license : MIT License
var len = 10
var dia = 14.65
var taper = dia * 3/100 //percent taper
var fudge = 0.16 //width of extrusion.
function main () {
return difference(
cylinder({
r1: (dia+taper)/2
, r2: (dia-taper)/2
, h: len, center: true
, fn:20 //reduce resolution to provide compression ridges
})
//use this one for a hex drive
,cylinder({r: 7/2+fudge*2, h: len, center: true, fn: 6})//.translate([0,0,len/2])
//and this one for a smooth shaft drive
// ,cylinder({r: 7/2+fudge*2, h: len, center: true})//.translate([0,0,-len/2])
).translate([0, 0, len/2]);
}
I ended up using a wood bit with a round shaft and a hex end which chucked nicely and allowed me to support the cylinder at both ends with the bit in the workbench. That combined with the dremel to get it close and a flat file to finish. Video in the photo album: https://photos.app.goo.gl/QqwU3tJMakaB3hPU9
Next is to get some cheese plates and figure out how to drill out the larger holes for the tube / shaft.
I've realized that finding a cheese plate with a hole large enough to support this tube is not going to be possible, so I'm switching to using pillow bearings. These have a nice set screw and are the same size ID. https://www.amazon.com/dp/B0BTNCJV47 I think I can more easily hack out the slot in the bottom of this cheese plate so the encoder disk can dip down into it https://www.amazon.com/dp/B06XXLWYK7 or raise these a bit with something on the side, like these maybe: https://www.amazon.com/dp/B01NCK79G2 by hacking them up into smaller blocks and stacking them.
I really wish there was a competent fabricator in the area who could work with metals. I don't want to use plastics because plastic is plastic, and I want something stiff to ensure I'm really reading the position of whatever link I connect and not the deformation of the joint mount.
Starting to come together: 3D printed flanges (See the flange.jscad file) to hold the lasercut disk. Next I have to figure out how to mount the sensors. They will eventually be a ring, for the STGC, but maybe I'll start with only the sine / cosine for now?
that picture clear as a bell. Good work!
On Fri, Jan 17, 2025 at 10:50 PM JamesNewton @.***> wrote:
Starting to come together: 3D printed flanges (See the flange.jscad file) to hold the lasercut disk. Next I have to figure out how to mount the sensors. They will eventually be a ring, for the STGC, but maybe I'll start with only the sine / cosine for now?
image.png (view on web) https://github.com/user-attachments/assets/6e62fb24-2929-4c6a-a48c-8a9b8636babd
— Reply to this email directly, view it on GitHub https://github.com/JamesNewton/HybridDiskEncoder/issues/9#issuecomment-2599509957, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAJBG7IODLLPNMM64QQ2L232LHFQZAVCNFSM6AAAAABTU4AGWOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKOJZGUYDSOJVG4 . You are receiving this because you commented.Message ID: @.***>
It has taken forever but I'm finally making progress on this again. I've switched to a metal tube which I had turned down by a friendly local machinist on his lathe so that it would fit in the bearing blocks. Also, the blocks don't actually hold the bearings firmly, so I had to add another block to support the tube on both sides. Grinding open the inside of the plumbing flange to fit, then drilling and tapping for set screws to hold it against the shaft took (again) far longer than it should have. I am really a bad fabricator.
But now I can add a 3D printed pulley, lasercut a new disk, print an opto block that will mount at the bottom, figure out how to mount a stepper (probably to the underside to save having to buy a larger cheese plate) and then... then... I can validate the operation of the encoder / control system as a servo. And finally, move on to building a real servo, with a joint box, drive box, etc... as described under "Mechanical Design" above.
P.S. MANY THANKS to Fry for his help in acquiring the parts and tools for this.
The image lof your construction looks pretty good to me. Just like "programming" we need "end user fabrication" ! A lot of the work is in, guess what, user interface.
On Mon, Mar 10, 2025 at 3:49 PM JamesNewton @.***> wrote:
It has taken forever but I'm finally making progress on this again. I've switched to a metal tube which I had turned down by a friendly local machinist on his lathe so that it would fit in the bearing blocks. Also, the blocks don't actually hold the bearings firmly, so I had to add another block to support the tube on both sides. Grinding open the inside of the plumbing flange to fit, then drilling and tapping for set screws to hold it against the shaft took (again) far longer than it should have. I am really a bad fabricator.
image.png (view on web) https://github.com/user-attachments/assets/fe1a445c-e2ec-4a75-966e-22291bf93e85
But now I can add a 3D printed pulley, lasercut a new disk, print an opto block that will mount at the bottom, figure out how to mount a stepper (probably to the underside to save having to buy a larger cheese plate) and then... then... I can validate the operation of the encoder / control system as a servo. And finally, move on to building a real servo, with a joint box, drive box, etc... as described under "Mechanical Design" above.
P.S. MANY THANKS to Fry for his help in acquiring the parts and tools for this.
— Reply to this email directly, view it on GitHub https://github.com/JamesNewton/HybridDiskEncoder/issues/9#issuecomment-2711662575, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAJBG7JPCBKSGD5MYL55PFL2TX3GNAVCNFSM6AAAAABTU4AGWOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDOMJRGY3DENJXGU . You are receiving this because you commented.Message ID: @.***> [image: JamesNewton]JamesNewton left a comment (JamesNewton/HybridDiskEncoder#9) https://github.com/JamesNewton/HybridDiskEncoder/issues/9#issuecomment-2711662575
It has taken forever but I'm finally making progress on this again. I've switched to a metal tube which I had turned down by a friendly local machinist on his lathe so that it would fit in the bearing blocks. Also, the blocks don't actually hold the bearings firmly, so I had to add another block to support the tube on both sides. Grinding open the inside of the plumbing flange to fit, then drilling and tapping for set screws to hold it against the shaft took (again) far longer than it should have. I am really a bad fabricator.
image.png (view on web) https://github.com/user-attachments/assets/fe1a445c-e2ec-4a75-966e-22291bf93e85
But now I can add a 3D printed pulley, lasercut a new disk, print an opto block that will mount at the bottom, figure out how to mount a stepper (probably to the underside to save having to buy a larger cheese plate) and then... then... I can validate the operation of the encoder / control system as a servo. And finally, move on to building a real servo, with a joint box, drive box, etc... as described under "Mechanical Design" above.
P.S. MANY THANKS to Fry for his help in acquiring the parts and tools for this.
— Reply to this email directly, view it on GitHub https://github.com/JamesNewton/HybridDiskEncoder/issues/9#issuecomment-2711662575, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAJBG7JPCBKSGD5MYL55PFL2TX3GNAVCNFSM6AAAAABTU4AGWOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDOMJRGY3DENJXGU . You are receiving this because you commented.Message ID: @.***>
3D printed a pulley using the attached OpenSCAD design which is modified from this old script I wrote many years ago: timingPulley-v5.scad.txt
I have a super long G2 belt that I will cut and attach around that, so I need to figure out some way to secure the ends into the pulley. It doesn't need to rotate more than 180' so I think I'm just going to hotmelt a set of threaded inserts into the side of the pulley and then screw down a... something... into that which holds the two ends of the belt, folded over. Some sort of... clamp... thing.... something that the back of the belt can fold back over, which won't move, and then something that will hold down the folded back bit, not allowing it to move. Like a strap buckle on a backpack. Or perhaps I can just punch a hole through the end of the belt and use a washer on a bolt into the threaded insert. Thinking...
And then I need adjustable tensioning rollers that can mount into the edge of the cheese plate.
Anything that doesn't slip! If there was a slot into the pulley interior that the end of the belt could fit thru then that end on the inside of the pulley got glued or clamped somehow, that might work as long as it didn't weaken the pulley too much.
On Sat, Apr 5, 2025 at 3:16 PM JamesNewton @.***> wrote:
3D printed a pulley using the attached OpenSCAD design which is modified from this old script I wrote many years ago: timingPulley-v5.scad.txt https://github.com/user-attachments/files/19617975/timingPulley-v5.scad.txt
I have a super long G2 belt that I will cut and attach around that, so I need to figure out some way to secure the ends into the pulley. It doesn't need to rotate more than 180' so I think I'm just going to hotmelt a set of threaded inserts into the side of the pulley and then screw down a... something... into that which holds the two ends of the belt, folded over. Some sort of... clamp... thing.... something that the back of the belt can fold back over, which won't move, and then something that will hold down the folded back bit, not allowing it to move. Like a strap buckle on a backpack. Or perhaps I can just punch a hole through the end of the belt and use a washer on a bolt into the threaded insert. Thinking...
— Reply to this email directly, view it on GitHub https://github.com/JamesNewton/HybridDiskEncoder/issues/9#issuecomment-2781049880, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAJBG7LCZ7TDICFVXNFGR6T2YATZRAVCNFSM6AAAAABTU4AGWOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDOOBRGA2DSOBYGA . You are receiving this because you commented.Message ID: @.***> [image: JamesNewton]JamesNewton left a comment (JamesNewton/HybridDiskEncoder#9) https://github.com/JamesNewton/HybridDiskEncoder/issues/9#issuecomment-2781049880
3D printed a pulley using the attached OpenSCAD design which is modified from this old script I wrote many years ago: timingPulley-v5.scad.txt https://github.com/user-attachments/files/19617975/timingPulley-v5.scad.txt
I have a super long G2 belt that I will cut and attach around that, so I need to figure out some way to secure the ends into the pulley. It doesn't need to rotate more than 180' so I think I'm just going to hotmelt a set of threaded inserts into the side of the pulley and then screw down a... something... into that which holds the two ends of the belt, folded over. Some sort of... clamp... thing.... something that the back of the belt can fold back over, which won't move, and then something that will hold down the folded back bit, not allowing it to move. Like a strap buckle on a backpack. Or perhaps I can just punch a hole through the end of the belt and use a washer on a bolt into the threaded insert. Thinking...
— Reply to this email directly, view it on GitHub https://github.com/JamesNewton/HybridDiskEncoder/issues/9#issuecomment-2781049880, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAJBG7LCZ7TDICFVXNFGR6T2YATZRAVCNFSM6AAAAABTU4AGWOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDOOBRGA2DSOBYGA . You are receiving this because you commented.Message ID: @.***>
Well, the stepper motor is mounted. I wasted a bunch of time trying to get store bought junk from China to work and ended up making a mount myself from a bit of old bed frame we were throwing out. Now I need a belt of the right length (probably 600mm) and then I can cut some slots and shorten the mount to fit.
A tiny bit of progress after far to long.
- The NEMA 23 stepper motor is mounted
- A pulley has been 3D printed and mounted to the joint shaft with a belt to the motor
- The 200W stepper driver has been pulled from a working project
- Headers with color pinout labels have been soldered to a new RasPi Pico and it's been placed in a soldered breadboard.
I think I will take it out of that breadboard PCB and put it in a longer one I have to give room for more connectors and spaces, but I generally really like that mounting. I can easily see the pin label from the outside, I can stick jumper wires in the top, or in the case of power and ground, I have an extra row on the bottom as well as the solder points which I will use to duplicate the existing encoder electronics in a more permanent form since I don't need to worry about changing that now. There is also just a bit of each header pin showing above the socket where I can clip on a scope or meter lead as needed.
Very clean!
On Sun, Jun 1, 2025 at 9:28 PM JamesNewton @.***> wrote:
JamesNewton left a comment (JamesNewton/HybridDiskEncoder#9) https://github.com/JamesNewton/HybridDiskEncoder/issues/9#issuecomment-2928346775
A tiny bit of progress after far to long.
image.png (view on web) https://github.com/user-attachments/assets/8a505c47-13af-4ab4-a675-29fdb962411a
- The NEMA 23 stepper motor is mounted
- A pulley has been 3D printed and mounted to the joint shaft with a belt to the motor
- The 200W stepper driver has been pulled from a working project
- Headers with color pinout labels have been soldered to a new RasPi Pico and it's been placed in a soldered breadboard.
I think I will take it out of that breadboard PCB and put it in a longer one I have to give room for more connectors and spaces, but I generally really like that mounting. I can easily see the pin label from the outside, I can stick jumper wires in the top, or in the case of power and ground, I have an extra row on the bottom as well as the solder points which I will use to duplicate the existing encoder electronics in a more permanent form since I don't need to worry about changing that now. There is also just a bit of each header pin showing above the socket where I can clip on a scope or meter lead as needed.
— Reply to this email directly, view it on GitHub https://github.com/JamesNewton/HybridDiskEncoder/issues/9#issuecomment-2928346775, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAJBG7MC37W6YNELCOKIO3T3BOSFJAVCNFSM6AAAAABTU4AGWOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDSMRYGM2DMNZXGU . You are receiving this because you commented.Message ID: @.***>
Finally making a bit of progress on the mechanical side (which I suck at) with a better belt tensioner.
The small pulley needs to be better attached to the motor shaft and I think a set screw will do that. Then I can focus on mounting the new encoder disk and the opto block and the reflective sensors for the STGC. Sigh.
Pretty picture! You need a belt tensioner because the belt stretches. The advantage of a metal chain is it doesn't stretch, right? But needs oil, is more expensive, and since it is heavier, more energy to accelerate, is that right? It shocked me the first time I saw a Harley with a belt in place of a chain.
You need a belt tensioner because the belt stretches.
No, the belt stretching is actually not a problem, as long as it's not too much. And the best doesn't stretch, but the teeth bend which is more or less the same thing. The reason for the tensioner is because it's really difficult to tighten it enough by sliding the motor mount over to the side, and (main reason) the small pulley slips easily because not many teeth of the belt wrap around it. So really, it could be called a "belt around the pulley wrapper" as much as a tensioner.
The advantage of a metal chain is it doesn't stretch, right?
That's actually a disadvantage because then I can't measure torque in the same way. #10 I could re-introduce "stretch" in a chain with a tensioner on a spring so as the torque increases it would pull the tensioner to the side. If I do a more powerful version in the future, I will probably do that and use a chain.
Just to document my thinking, I'm going to make the tensioner a bit less long, so it rotates more into the belt (it's almost rubbing on the flat as it is, instead of just rolling over the bearings) and so that it wraps around the small pulley a tiny bit more, and the end will clear that motor mounting bolt.
I've always wondered how to measure the tension of such belts. My first solution is "twang it" with a guitar pick and listen to the frequency. but I also like your "idler wheel on a spring" approach and just measure the angle of pivot point of the idler wheel arm with, well an encoder, perhaps the new magnetic ones you told me about;.
One of the observations I have about chains is, like in a bike change, the top of the chain is a straight line under tension (when we're powering forward) and the bottom half can be sagging and everything is fine because we're only cranking the pedal sprocket in one direction, so we don't need a tensioner.
On Mon, Sep 22, 2025 at 11:04 PM JamesNewton @.***> wrote:
JamesNewton left a comment (JamesNewton/HybridDiskEncoder#9) https://github.com/JamesNewton/HybridDiskEncoder/issues/9#issuecomment-3322200762
You need a belt tensioner because the belt stretches.
No, the belt stretching is actually not a problem, as long as it's not too much. And the best doesn't stretch, but the teeth bend which is more or less the same thing. The reason for the tensioner is because it's really difficult to tighten it enough by sliding the motor mount over to the side, and (main reason) the small pulley slips easily because not many teeth of the belt wrap around it. So really, it could be called a "belt around the pulley wrapper" as much as a tensioner.
The advantage of a metal chain is it doesn't stretch, right?
That's actually a disadvantage because then I can't measure torque in the same way. #10 https://github.com/JamesNewton/HybridDiskEncoder/issues/10 I could re-introduce "stretch" in a chain with a tensioner on a spring so as the torque increases it would pull the tensioner to the side. If I do a more powerful version in the future, I will probably do that and use a chain.
Just to document my thinking, I'm going to make the tensioner a bit less long, so it rotates more into the belt (it's almost rubbing on the flat as it is, instead of just rolling over the bearings) and so that it wraps around the small pulley a tiny bit more, and the end will clear that motor mounting bolt.
— Reply to this email directly, view it on GitHub https://github.com/JamesNewton/HybridDiskEncoder/issues/9#issuecomment-3322200762, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAJBG7MUCBB5L67WCNBF6433UC2ELAVCNFSM6AAAAABTU4AGWOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZTGMRSGIYDANZWGI . You are receiving this because you commented.Message ID: @.***>