Автор работы: Пользователь скрыл имя, 24 Января 2011 в 21:24, дипломная работа
В данной выпускной бакалаврской работе была произведена разработка системы управления роботом. Для этого требовалось обеспечить управление двигателем постоянного тока, приводящим робот в движение, с персонального компьютера. По предложению технического руководителя были выбраны следующие управляющие звенья: программируемый логический контроллер ОВЕН ПЛК 150УL и микроконтроллер MSP430C1101 для формирования управляющего сигнала с ШИМ; было решено, что помимо этих звеньев для визуализации проекта будет применен микроконтроллер PIC16F628A.
ВВЕДЕНИЕ …………………………………………………………………….. 6
1 Разработка устройства управления двигателем постоянного тока 12
1.1 Разработка схемы электрической принципиальной 12
1.2 Разработка печатной платы 13
1.3 Разработка сборочного чертежа 14
1.4 Выбор элементов системы управления 15
1.5 Выбор двигателя постоянного тока 16
1.6 Выбор фотоимпульсного датчика (энкодера) 17
1.7 Выбор конденсаторов, диодов, резисторов, транзисторов 19
2 Разработка схемы алгоритма управления двигателем постоянного тока 21
2.1 Разработка схемы алгоритма работы ОВЕН ПЛК-150 21
2.2 Разработка схемы алгоритма работы PIC16F628A 23
2.3 Разработка схемы алгоритма работы MSP430C1101 25
2.4 Разработка схемы алгоритма включения ДПТ 27
2.5 Схема алгоритма работы энкодера 28
3 Разработка программы управления двигателем постоянного тока 30
ЗАКЛЮЧЕНИЕ 31
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ ………….……………….. 33
ПРИЛОЖЕНИЕ А (Обязательное) Настройка и конфигурирование ПЛК в среде программирования CoDeSys ………………………………………….…
34
ПРИЛОЖЕНИЕ Б (Обязательное) Разработка программы …………………. 36
ПРИЛОЖЕНИЕ В (Обязательное) Руководство программиста ……………. 46
ПРИЛОЖЕНИЕ Г (Обязательное) Руководство пользователя ………........... 47
ПРИЛОЖЕНИЕ Д (Рекомендуемое) Характеристики MAХ232 ……………. 48
ПРИЛОЖЕНИЕ Е (Рекомендуемое) Микроконтроллер MSP430C1101……. 50
ПРИЛОЖЕНИЕ Ж (Рекомендуемое) Основные характеристики ОВЕН ПЛК-150 ……………………………………………………………………........
52
ПРИЛОЖЕНИЕ И (Рекомендуемое) Среда программирования CoDeSys…………………………………………………………………………..
54
ПРИЛОЖЕНИЕ К (Рекомендуемое) Инкрементные фотоимпульсные датчики (ФИД) ………………………………………………………………….
56
ПРИЛОЖЕНИЕ Л (Рекомендуемое) Принцип управления скоростью вращения двигателя постоянного тока с помощью широтно-импульсной модуляции ……………………………………………………………………….
58
movlw 04h
movwf COUNT1
loop
movf PORTB,W
btfsc PORTB,3
goto new
goto loop
new
iorwf TEMP1
movlw 01h
andwf TEMP1,0
iorwf TEMP
rlf TEMP,1
movlw 00h
movwf TEMP1
decfsz COUNT,1
goto again
goto loop1
again
btfsc PORTB,3
goto again
loop1
decfsz COUNT1,1
goto loop
rrf TEMP,1
movf TEMP,W
movwf PORTA
cycle
btfsc PORTB,3
goto cycle
movlw 00h
movwf TEMP
movlw 00h
movwf TEMP1
movlw 04h
movwf COUNT
movlw 04h
movwf COUNT1
clrf PORTA
clrf PORTB
goto loop
END
Рисунок Б.5. Продолжение.
LIST P=16F628A, R=DEC ; Использовать десятичную систему счисления
#include "P16F628A.INC" ; Подключение библиотеки
__config _INTRC_OSC_NOCLKOUT & _LVP_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_ON
ORG 0x000 ; Program starts at 0x000
;
; ----------------
; INITIALIZE PORTS
; ----------------
;
movlw b'00000000' ; Установка portA
movwf PORTA
movlw b'00000100' ; RB2(TX)=1 остальные 0
movwf PORTB
bsf STATUS,RP0
; Банк памяти 1
movlw 0xFF
movwf TRISA
; Все разряды portA входы
movlw b'11110010' ; RB7-RB4 and RB1(RX)=входы, остальные выходы
movwf TRISB
; ------------------------------
; SET BAUD RATE TO COMMUNICATE WITH PC
; ------------------------------
; Скорость = 9600 бод, без паритета, 1 стоповый бит
;
movlw 0x19 ; 0x19=9600 bps (0x0C=19200 bps)
movwf SPBRG
movlw b'00100100' ;
movwf TXSTA
; включение асинхронной передачи
bcf STATUS,RP0
; Банк памяти 0
movlw b'10010000' ; включение асинхронного приема
movwf RCSTA
;
; ---------
; MAIN LOOP
; ---------
;
call message ; послать строку
loop call receive ; ожидание символа
call send ; посылка символа
goto loop
;
; ------------------------------
; Принятие символа через RS-232 и сохранение его в регистре W
; ------------------------------
Рисунок
Б.6. Текст программы для PIC16F628A.
; Этот цикл не заканчивается пока символ не принят
;
receive btfss PIR1,RCIF ; (5) проверка на наличие поступающих данных
goto receive
movf RCREG,W ; сохранение поступивших данных в W
return
;
; ------------------------------
; Отправка символа через RS-232 и ожидание окончания отправки
; ------------------------------
;
send movwf TXREG
; скопировать в регистр W посылаемый символ
TransWt bsf STATUS,RP0 ; Банк памяти 1
WtHere btfss TXSTA,TRMT ; (1) если 1 то передача завершена
goto WtHere
bcf STATUS,RP0 ; Банк памяти 0
return
;
; -------
; Сообщение
; -------
;
message movlw 'B'
call send
movlw 'a'
call send
movlw 'k'
call send
movlw 'a'
call send
movlw 'l'
call send
movlw 'a'
call send
movlw 'v'
call send
movlw 'r'
call send
movlw 's'
call send
movlw 'k'
call send
movlw 'a'
call send
movlw 'i'
call send
movlw 'a'
Рисунок Б.6. Продолжение.
call send
movlw ' '
call send
movlw 'r'
call send
movlw 'a'
call send
movlw 'b'
call send
movlw 'o'
call send
movlw 't'
call send
movlw 'a'
call send
movlw ' '
call send
movlw 'P'
call send
movlw 'o'
call send
movlw 'd'
call send
movlw 'g'
call send
movlw 'u'
call send
movlw 'z'
call send
movlw 'o'
call send
movlw 'v'
call send
movlw ' '
call send
movlw 'A'
call send
movlw '.'
call send
movlw 'V'
call send
movlw '.'
call send
movlw 0x0D ; CR
call send
movlw 0x0A ; LF
call send
return
END
Рисунок Б.6. Продолжение.
Текст программы для микроконтроллера MSP430C1101 представлен на рисунке Б.7.
#include
"msp430x11x1.h" ; Standard Equations
NAME DCmotorspeedcontroller
#define Duty_cycle R6
;*****************************
;Константы
;*****************************
PWM_OUT equ 004h ; bit2 of Port1 / TA1
Period equ 0ffh ; Counts for D/A, 8bits = 256
;*****************************
RSEG CSTACK
DS 0
;*****************************
RSEG CODE
;*****************************
RESET mov #SFE(CSTACK),SP ; Инициализация стека
call #Init_Sys
; Процедура инициализации
Mainloop bit.b #BIT0,&P2IN ; проверка был ли подан сигнал уменьшения скважности ШИМ
jz Next1
bit.b #BIT1,&P2IN ; проверка был ли подан сигнал уменьшения скважности ШИМ
jz Next2
jmp Mainloop
; ожидание подачи управляющего сигнала
Next1 cmp #0,Duty_cycle ; если значение скважности ШИМ минимально
jz Mainloop ; то переход на ожидание нажатия
dec Duty_cycle ; увеличение скважности ШИМ
jmp SendPWM
Next2 cmp #0ffh,Duty_cycle ; если значение скважности ШИМ максимально
jz Mainloop ; то переход на ожидание нажатия
inc Duty_cycle ; уменьшение скважности ШИМ
SendPWM mov Duty_cycle,&CCR1 ; Вывод ШИМ сигнала на выход
call #Delay ; Вызов процедуры задержки
jmp Mainloop ; ожидание подачи управляющего сигнала
;*****************************
Init_Sys; Инициализация
;*****************************
StopWDT mov
#WDTPW+WDTHOLD,&WDTCTL ; Останов сторожевого
таймера
SetupBC mov.b
#XTOFF+RSEL2+RSEL1+RSEL0,&
mov.b #0ffh,&DCOCTL
; Режим максимальной частоты.
SetupP1 mov.b #0,&P1OUT ; P1OUT сброс
bis.b #PWM_OUT,&P1SEL ; P1.2/TA1 настраиваем на ШИМ выход
bis.b #0ffh,P1DIR
; остальные выводы P1 не используем
SetupP2 mov.b #03ch,&P2DIR ; P2.0,P2.1 входы,P2.2 to P2.5 не используются
mov #Period,&CCR0 ; Установка периода длительности ШИМ
mov #0,&CCR1 ;
mov #OUTMOD_7,&CCTL1 ; Настройка режима таймера
SetupTA mov #TASSEL1+MC0,&TACTL ; Установка внутреннего генератора частоты