Gray code is good. I use HalfStepping with both pases on. Similar as used in linistepper. But if I use lines directly there is not enougth pins on lpt port. As I use old laptop and can't instal new one I manage that in reality I need only 3 bits and simple xor gate (74HC86). The drive is completed and work great. As I try to manage how to do with gray code same thing I can't find result. So I use straight binary and work well.As I say my driver work now just don't want to recompile every time new relases comes on. I'm looking how to expand port too. As this way i have 3 motors. But in future I want styrofoam cutter and that need at least 4 drives. The idea is to use EPP port in simplest way. Writing data to latch 8 bits, Writting adress to latch next 8 bits and same thing for read. So in this way I can get 16 bits for input in 16 bits for output. The hardware is just 74HC375 latches and similar. Complete breakout price under 5 eur.
Mario. pravi: > I had a similar idea long time ago, and I implemented it in the file, > but never used. Not yet. > > First of all, the output encoding should use GRAY CODE format! > In other words, quadrature output in 2-bit gray code. Between any two > adjacent positions, there is only SINGLE bit change. > Also, gray codes are used on absolute position linear and rotary > encoders, which allowed useful automation back in the steam engine era ;-) > The advantage of that system would be - in the era of analog > microstepping - that you could change the stepper output by more than > one step at a time. > that would allow for high RPM of the motor, while still attaining the > microstepped precision. It does consume a LOT of output pins still - > but has very low latency. > > The theory behind that is the output code is directly translated to A > and B phase currents by the motor controller from a lookup table. > The disadvantage is that even for a nothing-special 32-steps per > electrical period, you need already 5 pins. That is only 8x better > resolution than bipolar full step (which it improves by using sine and > cosine waveforms for A and B phase.) > > I used 32, 40, 80, 160 steps per electrical phase with great deal of > success, but since the EMC2 can give output of only about 50k changes > per second, that results in very slow maximum RPM. > (common stepper motors have 200 steps per revolution, that is 50 > electrical periods per revolution, 160*50 is 8000 per revolution.) > You get the idea... > > Mario. > > On Fri, Feb 26, 2010 at 7:27 AM, Slavko Kocjancic <[email protected] > <mailto:[email protected]>> wrote: > > Hello... > > I'm already post that question/wish on the linuxcnc forum and I got > response that here is the right place to ask that. Se here is copy. > > > > ;-------------------------------------------------------------------------- > > Hello... > > I'm have homemade stepper driver and have phase inputs. The input to > driver is 3 bit wide and is simply binary count from 0 to 7. After > thinkering I modified stepgen.c and append my sequence to lokup > table so > modified part of stepgen.c is now like > [code] > /* lookup tables for stepping types 2 and higher - phase A is the > LSB */ > > static const unsigned char master_lut[][10] = { > {1, 3, 2, 0, 0, 0, 0, 0, 0, 0}, /* type 2: Quadrature */ > {1, 2, 4, 0, 0, 0, 0, 0, 0, 0}, /* type 3: Three Wire */ > {1, 3, 2, 6, 4, 5, 0, 0, 0, 0}, /* type 4: Three Wire Half > Step */ > {1, 2, 4, 8, 0, 0, 0, 0, 0, 0}, /* 5: Unipolar Full Step 1 */ > {3, 6, 12, 9, 0, 0, 0, 0, 0, 0}, /* 6: Unipoler Full Step 2 */ > {1, 7, 14, 8, 0, 0, 0, 0, 0, 0}, /* 7: Bipolar Full Step 1 */ > {5, 6, 10, 9, 0, 0, 0, 0, 0, 0}, /* 8: Bipoler Full Step 2 */ > {1, 3, 2, 6, 4, 12, 8, 9, 0, 0}, /* 9: Unipolar Half Step */ > {1, 5, 7, 6, 14, 10, 8, 9, 0, 0}, /* 10: Bipolar Half Step */ > {1, 2, 4, 8, 16, 0, 0, 0, 0, 0}, /* 11: Five Wire Unipolar */ > {3, 6, 12, 24, 17, 0, 0, 0, 0, 0}, /* 12: Five Wire Wave */ > {1, 3, 2, 6, 4, 12, 8, 24, 16, 17}, /* 13: Five Wire > Uni Half */ > {3, 7, 6, 14, 12, 28, 24, 25, 17, 19}, /* 14: Five Wire > Wave Half */ > {1, 2, 3, 4, 5, 6, 7, 0, 0, 0} /* 15: CAA MODE */ > }; > > static const unsigned char cycle_len_lut[] = > { 4, 3, 6, 4, 4, 4, 4, 8, 8, 5, 5, 10, 10, 8 }; > > static const unsigned char num_phases_lut[] = > { 2, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 3, }; > > #define MAX_STEP_TYPE 15 > > [/code] > > Now I have no clue how to update that this to be included in next > relase > (I don't want to recompile each relase to work with my driver) > > I have better idea for other's too. > Maybe is possible to make step_type 15 custom. So when I startup > stepgen > with > [code] > loadrt stepgen step_type=15,15,15 > [/code] > > to use something like > > [code] > loadrt stepgen step_type=15,15,15 step_phases=3 step_cycle_len=8 > step_phase_table 1,2,3,4,5,6,7,0 > [/code] > > In this way all other phase sequences can be supported. > I'm just not a C programmer to do that. > > Is there some herro to do that?!? > > > Thanks > Slavko. > > > > ------------------------------------------------------------------------------ > Download Intel® Parallel Studio Eval > Try the new software tools for yourself. Speed compiling, find bugs > proactively, and fine-tune applications for parallel performance. > See why Intel Parallel Studio got high marks during beta. > http://p.sf.net/sfu/intel-sw-dev > _______________________________________________ > Emc-developers mailing list > [email protected] > <mailto:[email protected]> > https://lists.sourceforge.net/lists/listinfo/emc-developers > > > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------------ > Download Intel® Parallel Studio Eval > Try the new software tools for yourself. Speed compiling, find bugs > proactively, and fine-tune applications for parallel performance. > See why Intel Parallel Studio got high marks during beta. > http://p.sf.net/sfu/intel-sw-dev > ------------------------------------------------------------------------ > > _______________________________________________ > Emc-developers mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/emc-developers > ------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev _______________________________________________ Emc-developers mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/emc-developers
