Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Лабораторна робода №7. Проектування системи керування кроковим двигуном




Лабораторна робода №7. Проектування системи керування кроковим двигуном

Тема: Проектування системи керування кроковим двигуном.

Мета: Вивчити взаємодію контролера із пристроями механічного приводу, зокрема керування кроковим двигуном.

 

Порядок виконання роботи:

1. Вивчити режими роботи уніполярного крокового двигуна (повнокроковий, півкроковий, мікрокроковий) та алгоритми задання їх.

2. Розробити алгоритм індивідуального завдання до початку заняття.

3. Розробити програму і скомпілювати її.

4. Завантажити програму в стенд, переконатись в правильності її роботи, при негативному результаті виявити допущені помилки і виправити їх. Повторити завантаження схеми в стенд.

 

 

Рисунок 7. 1 – Схема для лабораторної роботи №7

 

Короткі теоретичні відомості

Для керування кроковими двигунами на стенді передбачено додатковий регістр, виходи якого можуть комутувати 8 ключів, зібраних на МОН-транзисторах типу IRF7501. Транзистори дозволяють переключати струм до 2, 4А при температурі 25°С або 1, 9А при температурі до 70°С. Опір каналу ключа в увімкненому стані приблизно становить 0, 135 Ом. Напруга стік-витік до 20В, що цілком достатньо для керування двигуном типу ДШ-200 або аналогічних.

Діоди, увімкнені між стоками (drains) і додатною напругою живлення необхідні для захисту ключів від напруг само-е. р. с., які наводяться в обмотках двигуна під час переключення напруги. Контакти роз'ємів типу WH-8 увімкнено паралельно для збільшення надійності з'єднання і навантажувальної здатності.

Слід пам’ятати, що навіть якщо двигун не обертається, а на одну із обмоток подана напруга, то він споживає значний струм, і існує можливість перегрівання як двигуна, так і блока живлення. Тому якщо використовувати цей режим роботи двигуна (режим утримання), необхідно забезпечити, щоби споживаний струм був у межах норми для даного типу двигуна і не лишати його в такому режимі протягом тривалого часу.

Частоту обертання двигуна можна регулювати як зміною періоду переривання таймера, так і зміною кількості переповнень таймера на один крок. В даній програмі було використано останній спосіб, однак для забезпечення плавного регулювання частоти потрібно використовувати перший, або їх комбінацію.

 

Приклад програми для лабораторної роботи №8

Скласти програму керування кроковим двигуном. Режим роботи двигуна визначається натисканням кнопок першого рядка клавіатури (наприклад, перша кнопка – пуск/стоп, друга – реверс, третя – збільшення швидкості обертання, четверта – зменшення).

Алгоритм роботи драйвера:

 

 

Рисунок 7. 2 – Алгоритм основного циклу програми керування кроковим двигуном (обробка переривання таймера 0)

 


 

 

sbit F1  = 0xD1        //Declare flag F1

DAT     equ R0 //Data transfer register

ADDR    equ R1 //Address transfer register

ST_CNT equ R2      //Steps counter

PS_CNT equ R3      //step to step pause

V_cnt equ R4

Flags_a equ 0x004

 

C_TL0 EQU 0FFh

C_TH0 EQU 00Ah    //07FFh - max stab. vel. of rotation

SM_addr EQU 009h //Step motor address

Step_11 EQU 000000001b

Step_12 EQU 000000100b

Step_13 EQU 000000010b

Step_14 EQU 000001000b

Step_21 EQU 000000101b

Step_22 EQU 000000110b

Step_23 EQU 000001010b

Step_24 EQU 000001001b

 

Pause EQU 003h

 

ORG      0x0000

JMP     RESET

ORG      0x000B

JMP      Tim0_ovf

 

ORG      0x0030

RESET:

  MOV ST_CNT, #001h //Step 1

  MOV PS_CNT, #Pause //pause...

  MOV V_cnt, #Pause //program flags

  MOV DAT, #0FFh

  MOV ADDR, #007h

  CALL write

  MOV DAT, #000h

  MOV ADDR, #SM_addr

  CALL write

  CALL Timer0_init

  wait:

        JMP wait

 

Timer0_init:

MOV      TH0, #C_TH0           //1, 0XX ms

MOV      TL0, #C_TL0

MOV      TMOD, #001h           

MOV      TCON, #010h //Run timer

MOV      IE, #010000010b

//Enable global interrupt and Timer0 interrupt

MOV      IP, #000000000b

//interrupt priority

RET

; **********************************

; Step subroutine

Tim0_ovf:

MOV      TH0, #C_TH0           //1, 0XX ms

MOV      TL0, #C_TL0           //Reload timer 0

      

  CALL Read_row1

  MOV A, DAT

  JB ACC. 4, RUN

  JB ACC. 5, Revers

  JB ACC. 6, V_inc

  JB ACC. 7, V_dec

      

  JMP M_CNTRL

  RUN: //starting and feet by turns

        CPL F0

        JMP M_CNTRL

  Revers:      

            

        JMP M_CNTRL

  V_inc:

        INC V_cnt

        CJNE V_cnt, #000h, M_CNTRL

        DEC V_cnt

        JMP M_CNTRL

  V_dec:

        DEC V_cnt

        MOV A, V_cnt

        SUBB A, #003h

        JNC M_CNTRL

        MOV V_cnt, #003h

        JMP M_CNTRL

  M_CNTRL:

  DEC PS_CNT         //decrement step to step pause counter

  CJNE PS_CNT, #000h, E_T0_ovf

               // exit from interrupt

               // if pause is full

  MOV A, V_cnt

  MOV PS_CNT, A             //reload step to step pause counter

  JNB F0, E_T0_ovf

step1:

  CJNE ST_CNT, #001h, step2

        MOV DAT, #Step_11

        MOV ADDR, #SM_addr

        CALL Write

  MOV ST_CNT, #002h

  RETI

step2:

  CJNE ST_CNT, #002h, step3

        MOV DAT, #Step_12

        MOV ADDR, #SM_addr

        CALL Write

  MOV ST_CNT, #003h

  RETI

step3:

  CJNE ST_CNT, #003h, step4

        MOV DAT, #Step_13

        MOV ADDR, #SM_addr

        CALL Write

  MOV ST_CNT, #004h

  RETI

step4:

  CJNE ST_CNT, #004h, step1

        MOV DAT, #Step_14

        MOV ADDR, #SM_addr

        CALL Write

  MOV ST_CNT, #001h

  RETI

E_T0_ovf:

  // mov zero to step motor latch

  MOV DAT, #000h

  MOV ADDR, #SM_addr

  CALL write

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...