1 / 22

MINOS 04

MINOS 04. Software for Stepper Motors Pete Harrison. Why Steppers. Easy to get going Simple Hardware Simple Software Open Loop Easy mechanics. Why Not Steppers. Poor Power to Weight ratio High Current Drain Open Loop Tricky to drive at speed. Stepper Characteristics.

wilma
Download Presentation

MINOS 04

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MINOS 04 Software for Stepper Motors Pete Harrison

  2. Why Steppers • Easy to get going • Simple Hardware • Simple Software • Open Loop • Easy mechanics Pete Harrison

  3. Why Not Steppers • Poor Power to Weight ratio • High Current Drain • Open Loop • Tricky to drive at speed Pete Harrison

  4. Stepper Characteristics • Open loop digital control • One pulse gives one step • Fixed step size • Resonances Pete Harrison

  5. 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 Pete Harrison

  6. Acceleration • Accelerate quickly through resonances • Don’t 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 Pete Harrison

  7. 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 Pete Harrison

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

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

  10. Software timing • Simple to design and execute • Step on demand • Tricky to coordinate actions • Low speeds • Poor performance Pete Harrison

  11. 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 Pete Harrison

  12. 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 Pete Harrison

  13. 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 Pete Harrison

  14. Trapezoidal Profile Pete Harrison

  15. Calculating Acceleration • Normally work with time as independent variable: • Steppers need distance instead: Pete Harrison

  16. 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 Pete Harrison

  17. 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 1024 16 bit values Pete Harrison

  18. Typical Table Pete Harrison

  19. 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 Pete Harrison

  20. Typical Acceleration Pete Harrison

  21. 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]; } Pete Harrison

  22. MINOS 04 Software for Stepper Motors Pete Harrison

More Related