CAD CAM EDM DRO - Yahoo Group Archive

Re: differential threads for extreme precision movement

Posted by john@m...
on 2000-08-11 13:54:52 UTC
--- In CAD_CAM_EDM_DRO@egroups.com, Doug Fortune <pentam@h...> wrote:
Original post at bottom:

Doug,
Drawbacks to this as far as I can see is that with these small steps
you will have to have a very rapid computer to achieve anything like
speed.
Secondly and I speak from experience here, that with diferential
threads any backlash will translate into a vast number of steps.
Possibly too many for the software to handle.

> I've been playing with different mechanical leveraging ideas
> to be used both for direct movement of the table and as a
> way to increase the resolution of rotary encoders
> HUGE number of steps per inch of advancement. For example,
> using a 180 step/rev stepper with at 10 microstep driver like the
> Geckodrive (ie 1800 steps/rev), then using a 56 TPI course and a
> Metric 56.444 TPI (ie 0.45 mm/thread), then you'd get 12,801,539
> turns per inch, or an advance ratio of 7.81E-8 inch per step
(0.000 000 0781 ").
>
> A more usable example is using a 28 TPI with the above metric thread
> to get 100012.493134 steps/inch (or approx 0.000 01" per step).
>
> With such ratio's as these, there should be no requirement to use
> pulleys to increase leverage, so the motor can direct drive the
shaft.
>
> There are of course some interesting "details", which I leave up to
> the "sufficiently curious".
>
> By using some of Marvin Klotz's thread tables and differential
thread
> formula:
>
> pc = coarse pitch (tpi)
> pf = fine pitch (tpi)
> pe = effective pitch of differential thread (tpi)
>
> (1/pe) = (1/pc) - (1/pf)
>
> I whipped up a program to compute all the different ratios one could
> expect from different thread combinations. The idea is to sort the
output
> and discover the proper combination to use to acheive a ratio near
what
> you desire.
>
> - - - diffdug.c -----
> BTW, I wrote this in about 20 minutes, so please overlook the style
:)
>
>
>
> // diffdug.c - by doug fortune, inspired by Marvin W. Klotz
> // a Q&D program to calculate steps per inch in a
> // differential thread-driven stepper motor setup
> // computes Imperial and Metric combinations too
> //
> // usage: gcc diffdug.c -o diffdug ; ./diffdug | sort -n | less
> //
> // ex: 12801539.355469 7111.966309 30 : 56.000000 42
: 56.444447
> // means using a 180 step/rev stepper with at 10 microstep driver
(ie 1800 steps/rev)
> // then using 56 TPI (Imperial index 30) course and a Metric 56.444
TPI (Metric index
> // 42-40 == 2 which is 0.45 mm/thread, then you'd get 12,801,539
turns per inch
> // or an advance ratio of 7.81E-8 inch per step (0.000 000 0781 ")
> //
> // a more reasonable combo would give approx 0.000 01" per step:
> // 100012.493134 55.562496 22 : 28.000000
42 : 56.444447
> // or using a 9.5 TPI and an 10 TP, an advance ratio of 0.000 002
924 " per step:
> // 342000.000000 190.000000 9 : 9.500000
10 :
> 10.000000
>
> #include <stdio.h>
>
> int STEPS_PER_REV= 1800; // steps per revolution of the
driver/motor
> pair
> // here 180 step/rev motor with 10 microstep
driver
>
> // Imperial threads TPI = Threads per Inch
> float arrrayI[100] = { 4.5, 4.75, 5, 5.5, 6, 6.5, 7, 8, 9, 9.5,
> 10 , 11 ,12, 13 ,14, 16 ,18,19,20, 22,
> 24, 26 , 28, 32, 36, 38, 40, 44, 48, 52,
> 56, 64 , 72, 76, 80, 88, 96, 104, 112, 122 };
> int magicI=40;
>
> // Metric threads mm/thread
> float arrrayM[100] = { 0.25, 0.3, 0.45, 0.5, 0.6,
> 0.75, 0.9, 1, 1.2, 1.25,
> 1.5,1.8, 2, 2.25, 2.4,
> 2.5, 3, 3.75, 4, 4.5,
> 4.8, 5, 6, 7.5 };
> int magicM=25;
>
> main()
> {
> int i, j, magic=magicI+magicM-1; // magic = number of elements in
both
> arrays
> float val;
>
> for(i = magicI, j = 0; j < magicM; i++, j++) // conversion
to TPI
>
> arrrayI[i] = 25.4 / arrrayM[j] ; // stuff it
onto end
> of arrrayI
>
> // for( i = 0; i < magic; i++) check conversion of
Metric to
> Imperial TPI
> // printf("%f \n", arrrayI[i]);
> //exit(0);
>
>
> for( i = 0; i < magic; i++) // dump out all
possible
> combinations
> for( j = i+1; j < magic; j++) {
> val =1.0/ ((1.0/arrrayI[i]) - (1.0/arrrayI[j])) ;
> if( val < 0) val *= -1.0;
>
> // steps/inch multiplier Imp Index, TPI, Met Index,
TPI
> printf("%f \t%f \t%2d : %f \t%2d : %f\n",
> val*STEPS_PER_REV, val,
> i, arrrayI[i], j, arrrayI[j] );
> }
>
> }

Discussion Thread

Doug Fortune 2000-08-10 22:50:22 UTC differential threads for extreme precision movement john@m... 2000-08-11 13:54:52 UTC Re: differential threads for extreme precision movement John Stevenson 2000-08-12 03:41:01 UTC Re: differential threads for extreme precision movement Doug Warner 2000-10-18 19:58:29 UTC The History Channel Machine Tools show was great!. Catch it on 10/22