Лабораторна робода №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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|