Stepper driver and GoTo control
SystemThis page discusses driving a telescope using stepper motors from 5.25" floppy drives ( if can you still find these...). MechanicsUnipolar stepper motors can easily be retrieved from old 5.25" floppy drives (together with a lot of other useful components: see the "Floppy Tester" page). Because the speed has to be slowed down to siderial or even lower, the effective torque will increase proportionally. Therefore it is perfectly possible to drive relatively large scopes with such small motors. Driving the stepper motorIn general a stepper drive citcuit splits up in two parts: the control logic and the current driver. The drive logic generates the signal patterns that will activate the windings of the stepper motor, and hence control the stepping rate and direction. The current driver converts these signals into a current through the motor windings, where the torque is proportional to the current. Full or half steppingThe nice thing about the unipolar stepper is that the drive circuit can be relatively simple. Given a stepping rate well away from the resonance frequency, some discrete logic combined with a 2803 octal darlington driving chip will do. Disadvantages are a jerky step behaviour, resulting in all kinds of vibrations, and relatively high minimum stepping rate (50 halfsteps per sec or so). Many examples of such simple driver circuits can be found on the web. Sine/cosine driveA better approach, allowing much lower stepping rates, is to use sine/cosine waves (or at least an approximation) to drive the motor windings. The signal is similar to the halfstep driver, but instead of blocks the positive halves of the sine wave are used to control the current in each winding. This could in principle be realized with an analogue quadrature oscillator, which delivers a sine and a cosine signal of the same frequency. The downside of this method is that a quadrature oscillator is almost impossible to make, without the phase difference, amplitude and shape of the signal to be frequency dependent. This means that a certain design can only be used in a very limited range of stepping rates. MicrosteppingThe usual way to overcome this problem is to use Pulse Width Modulation (PWM) or an A/D converter to determine the current value. Such circuits are usually microprocessor controlled and can have a wide bandwidth of stepping rates. The microcontroller divides a full step into a number of microsteps, and outputs the corresponding sine values ether by changing the PWM dutycycle, or as a binary input for an ADC. Practical examplesPIC 16F628 and ULN2803![]() Note that this circuit has not been built or tested The circuit consists of only three ICs, a ULN2803 that drives the steppers, a MAX232 for interfacing to the PC, and a PIC 16F628 microcontroller. This PIC type has built in USART circuits, that make implementation of an RS232 interface a breeze. All that is needed is to connect a RS232 line driver to the USART I/O pins of the PIC, being port B bits 1 and 2. For driving the darlington array both I/O ports are used: port A(0..3) and port B(4..7). Vdd (12V) leads directly to the stepper driver, the stepper itself and also to an LM78L05 voltage regulator, which makes the Vcc. Last two items are the crystal oscillator, and the reset circuit R1/C7. The PC interface is intended to work on 9600 baud, which should be plenty fast for the few controls that pass through it. These controls should facilitate setting the current coordinates and time, retrieving the current coordinates (and time?), slewing and possibly also some calibration of the tracking speed. An analog sin-cos driver
A digital sin-cos driverThe analog quadrature oscillator appers to be extremely hard to get stable, variable in frequency and amplitude, and to produce sine waves at the same time. Therefore the next plan is to make a digital oscillator with a PIC 18F452 and a pair of MAX534 DACs. Since the motor only consumes 150mA, and the driving voltage is fairly smooth, the need for real power transistors is relaxed. A set of darlingtons (bc517) are used instead. |