Skip to content

omnister/velo

Repository files navigation

CNC stepper motor drive with optimized velocity profiling. 

velo.c, interpolate.c: reads x,y,z,w coordinate stream and optimizes
path to obey maximum velocity and acceleration limits, outputs encoded
step pulse bytestream to control stepper motor

Steps/delays are encoded as bytes

// implements simple s-code interpreter
// DELAY   (7:0) '0'nnn nnnn  ; delay n+1 counts
// DIR     (7:0) '1000' wxyz  ; direction (0=ccw, 1=cw)
// STEP    (7:0) '1001' wxyz  ; step (1=step, 0=idle)
// MODE    (7:0) '1010' 0mmm  ; set ustep mode
// STAT    (7:0) '1010' 1res  ; set reset, enable, sleep
// ----    (7:0) '1011' ----  ; undefined
// SPIN    (7:0) '11'nn nnnn  ; duty cycle is n/64 0=off


feed.c: takes byte stream from velo(1) and sends it via USB2.0 to a
PIC microcontroller chip to generate regular stepper motor pulses for
a general 4-axis stepper motor system.

A typical usage is to take a path and stream it through a pipeline:

---------- cut here -----------
# example to move a CNC cutter in
# a 1"x1" square pattern...
(
cat <<!
0 0
0 1
1 1
1 0
0 0
!
) | velo -v0.3 -a1000 -n7 | feed
---------- cut here -----------

About

Convert x,y,z stream into stepper motor pulses

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published