Microstepping with optical feedback

From RepRap
Revision as of 16:04, 17 April 2010 by Fdavies (talk | contribs)
Jump to: navigation, search
Crystal Clear action run.png
Microstepping with optical feedback

Release status: unknown

FD microstep04 board front view.JPG
Description
Microstepping with optical feedback
License
unknown
Author
Contributors
Based-on
Categories
CAD Models
External Link


Overview

Stepper motors with fewer than 400 steps per rotation are easy to find as surplus equipment, either by themselves, or in old computer printers. Optical encoder strips and quadrature optical encoders are easy to get from junk ink-jet printers. In order to allow retrofitting of existing systems, it is desirable to have a setup that can take the PULSE and DIRECTION command signals usually accepted by stepper motor driver boards. These items can be combined to make high precision motion control setup that is quite useful.

Interface to gcode interpreter

I intent was to make this setup act like a stepper motor driver board, which it does. Because the step signal (PULSE) is being sampled by firmware, I have a simple pulse stretcher circuit that makes the pulses a little longer. The gcode interpreter Arduino that I am using makes 5 microsecond pulses.

Stepper motor

This is a NEMA 17 motor on one axis, and larger cylindrical stepper on the other axis.

Drive Circuit

<schematic> The drive circuit uses a L2 This is connected directly to the stepper motor in a bipolar configuration. It is being driven with a 30KHz PWM signal. There is no output filtering on this signal, but I have not had EMI problems.

Feedback Loop

This system is a little different from a servo loop with a DC motor. If you put a voltage across the terminals of a DC motor, it revs up to a certain speed and will continue to rotate at that speed while the voltage is present. If you put voltages on the terminals of a stepper motor, it moves to a certain position, and then holds that position. This actually makes things easier.

Firmware

See attached file. This is an Arduino type .PDE file and can be compiled with the arduino development software. It does use a custom made interrupt routine, though.

Optical encoder

This is a quadrature optical encoder removed from a inkjet printer. It has built-in signal conditioning which means that it has digital outputs that can go directly to the arduino pins. They are also strong enough to drive a pair of diagnostic LEDs. These let you check the alignment of the optical strip. I use the optical strip from the same printer as the encoder, since the encoder is optimized for a certain stripe spacing.


Downloads

Photos and Drawings