Разработка системы управления роботом

Автор работы: Пользователь скрыл имя, 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

Файлы: 1 файл

говово_2.doc

— 1.17 Мб (Скачать файл)

           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,&BCSCTL1  

                                           ; RSEL=7

           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     ; Установка внутреннего генератора частоты

Информация о работе Разработка системы управления роботом