Download presentation

Presentation is loading. Please wait.

Published byJaden York Modified over 3 years ago

1
MINOS 04 Software for Stepper Motors Pete Harrison

2
Harrison2 Why Steppers Easy to get going Simple Hardware Simple Software Open Loop Easy mechanics

3
Harrison3 Why Not Steppers Poor Power to Weight ratio High Current Drain Open Loop Tricky to drive at speed

4
Harrison4 Stepper Characteristics Open loop digital control One pulse gives one step Fixed step size Resonances

5
Harrison5 Constant speed Constant speed implies constant drive frequency Jitter can cause mis-stepping A lost step is the last step Poor torque at speed Some speeds will suffer from resonances

6
Harrison6 Acceleration Accelerate quickly through resonances Dont start too slowly Changes only happen at each step That is – a fixed distance not a fixed time so cant just add a time interval Acceleration has to be adjusted at each step

7
Harrison7 Hardware Requirements Digital controls –Step (one each) –Direction (one each) –Enable (shared) Accurate timing source for a pulse generator 2 ms -1 probably implies 2500Hz each

8
Harrison8 Software Requirements Each motor needs independent pulse train. Frequency sets speed Pulse length not critical Frequency changes on the fly to accelerate and decelerate

9
Harrison9 Timer Options Software Loops Dual timers – separate interrupts Single timer – single interrupt Single timer – Output compare/PCA Slave Processor

10
Harrison10 Software timing Simple to design and execute Step on demand Tricky to coordinate actions Low speeds Poor performance

11
Harrison11 Single Timer Frequency division/synthesis Set to a high rate – say 5kHz On each interrupt add constant to accumulator On overflow, perform action ALL motor code must run in the same time slot e.g. 16 bit accumulator, constant = 3932 => f=5000*3932/65536 = 300Hz Convenient overflow in assembler There will be jitter

12
Harrison12 Dual Timers The easy way if you have them Two 16 bit timers needed One timer interrupt per motor Independent unless the timers are simultaneous Check interrupt priorities – they need to be high

13
Harrison13 One Timer with Output Compare Fairly common –8051 derivatives (PCA) –AVR (OCRx) –PIC (Timer 1 CCPx) Single 16 bit timer with independent interrupts at user set rates Low overhead

14
Harrison14 Trapezoidal Profile

15
Harrison15 Calculating Acceleration Steppers need distance instead: Normally work with time as independent variable:

16
Harrison16 Calculating Acceleration For each step we need the interval to the next step Either –Calculate on the fly (square root) Or –Pre-calculate a lookup table

17
Harrison17 Lookup Table Use Excel or a program and load into mouse – can live in ROM/FLASH Several tables can live in memory Calculate whenever we need different speed/acceleration – needs to be in RAM May need bit values

18
Harrison18 Typical Table

19
Harrison19 Using the Table Acceleration is just working through the table, picking out values Maximum speed is a number that tells us how far into the table to go Each entry is one step so speed index is also the number of steps to come to a halt

20
Harrison20 Typical Acceleration

21
Harrison21 Sample Code // motor interrupt interrupt [TIM1_COMPA] void timer1_compa_isr(void){ UINT temp; if (!steppersEnabled) return;// global bit variable temp = OCR1A; // remember the counter value STEP_LEFT=0;// get the pulse done early delay_us(5);// we only need a short pulse STEP_LEFT=1; remaining--;// one more step done if (remaining <= 0) arrived = 1; // global flag if (currentSpeed < remaining)// accelerate if we can currentSpeed++; else// be sure we are able to decelerate currentSpeed--; if (currentSpeed > maxSpeed) // not too fast currentSpeed = maxSpeed; if (currentSpeed < 0) // or off the table currentSpeed = 0; OCR1A = temp + acc_table[currentSpeed]; }

22
MINOS 04 Software for Stepper Motors Pete Harrison

Similar presentations

© 2017 SlidePlayer.com Inc.

All rights reserved.

Ads by Google