This is 3 axis stepper motor driver which can be compiled as a loadable kernel module or as a usermode program. The hardware required is just 4 high gain power transistors and 4 resistors per stepper motor; up to 3 stepper motors may be connected to a single PC parallel port. Step speed may be up to 100pps using the internal jiffie clock. Higher speeds are possible by connecting an external oscillator to the Ack pin on the parallel port.
Currenlty, multiaxis moves will only be linear if the move angle is a multiple of 45 degrees. I need to write a multiaxis implementation of the Bresenham line drawing algorithm.
The software can be donwloaded from stepper.tar.gz under the terms of This License. The schematic is availble in Xfig format, schematic.fig, as a postscript file, schematic.ps, a PDF file, schematic.pdf, and as a bitmap image, schematic.png.
Compiles fine. You need to remove the definition for KERNEL2_2 in the makefile, however.
There are some significant incompatibilities between the 2.0.x and 2.2.x kernels where device drivers are concerned. I have a modified version that compiles cleanly but it hasn't been tested yet. The download link now points to the updated version but I do not have reports of whether or not it works.
Kernel version 2.4 introduces more incompatibilities in the device driver API. A large number of warnings are produced under 2.4. I do not know if the driver works or not. I would say not. It is being ported (see below)
stepper.c:656: warning: initialization from incompatible pointer type stepper.c:657: warning: initialization from incompatible pointer type stepper.c:658: warning: initialization from incompatible pointer type stepper.c:661: warning: initialization from incompatible pointer type stepper.c:663: warning: initialization from incompatible pointer type stepper.c:667: warning: initialization from incompatible pointer type stepper.c:683: warning: initialization makes integer from pointer without a cast stepper.c: In function `bottom_half': stepper.c:696: warning: passing arg 1 of `__wake_up' from incompatible pointer type stepper.c:720: warning: passing arg 1 of `__wake_up' from incompatible pointer type stepper.c: In function `cleanup_module': stepper.c:806: warning: passing arg 1 of `__wake_up' from incompatible pointer type stepper.c:808: warning: passing arg 1 of `__wake_up' from incompatible pointer type stepper.c:853: warning: passing arg 1 of `sleep_on' from incompatible pointer type
Newer 2.4 kernels such as that included in Redhat 8.0 cause even more problems. As I am porting this driver, I am making some notes at a page entitled Porting old device drivers to linux kernel 2.4
Note that the names of the parameters are backwards on verbose_outb() in some versions even though the values are given in the correct order when the function is used.
This file is maintained by Mark Whitis (whitis@freelabs.com).
|
Software Development - Electronic Design - Embedded Systems - Device Drivers - System/Network Administration and Security - Motor Control, RobotCNC - Linux/Un*x - 25+ years experience The author of these pages is looking for a new gig. [RESUME] |
| Engineers and electronic hobbyists: The new Open Symbol Project is creating open schematic symbols and PCB footprints for a variety of different CAD packages. |
| Mark Whitis's Website | Home Page | Linux | Book: Linux Programming Unleashed | My Resume | Genealogical Data | Contact Info | Security | About |
All email messages received must pass the turing test or they will be considered SPAM. If it could have been written by a machine, it was.
Under no circumstances are you to email me with questions regarding windoze, any other microsoft operating system or application, or any software which runs under any form of windoze.
*