Разработка схемы и ПО для аппаратной модели

Разработка схемы и ПО для аппаратной модели заданной системы управления на PIC16F877. Устройство для светового бесконтактного управления скоростью вращения двигателя постоянного тока. Блок-схема программногО обеспечения для контроллера PIC 16F877.

Рубрика Производство и технологии
Вид контрольная работа
Язык русский
Дата добавления 29.05.2019
Размер файла 983,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на Allbest.ru

Содержание

система управление двигатель ток

Введение

Разработка схемы электрической принципиальной в среде Proteus. Методика моделирования и проверки

Разработка схемы электрической принципиальной в среде Proteus. Методика моделирования и проверки

Блок-схема программного обеспечения для контроллера PIC 16F877, реализующая заданный алгоритм управления

Исходный код программного обеспечения

Список используемых источников

Введение

PIC-контроллеры остаются популярными в тех случаях, когда требуется создать недорогую компактную систему с низким энергопотреблением, не предъявляющую высоких требований по ее управлению. Эти контроллеры позволяют заменить аппаратную логику гибкими программными средствами, которые взаимодействуют с внешними устройствами через хорошие порты. Миниатюрные PIC контроллеры хороши для построения преобразователей интерфейсов последовательной передачи данных, для реализации функций «прием - обработка - передача данных» и несложных регуляторов систем автоматического управления. Компания Microchip распространяет MPLAB - бесплатную интегрированную среду редактирования и отладки программ, которая записывает бинарные файлы в микроконтроллеры PIC через программаторы.

Взаимодействие MPLAB и Matlab/Simulink позволяет разрабатывать программы для PIC-контроллеров в среде Simulink - графического моделирования и анализа динамических систем.

Разработка схемы электрической принципиальной в среде Proteus. Методика моделирования и проверки

В данном курсовом проекте необходимо разработать ПО для м/к PIC 16F877, осуществляющее управление скоростью вращения двигателя постоянного тока (далее двигателя) с помощью ручного изменения светового потока через фотодатчик, по следующему алгоритму:

- при включении контроллера двигатель остановлен до первого нажатия клавиши «1» на клавиатуре;

- после однократного нажатия указной клавиши двигатель начинает вращаться со скоростью пропорциональной текущему уровню освещенности датчика, при этом максимальная скорость составляет 1/3 от максимально возможной для данного двигателя;

- после однократного нажатия клавиши «2» двигатель начинает вращаться со скоростью пропорциональной текущему уровню освещенности датчика, при этом максимальная скорость составляет 2/3 от максимально возможной для данного двигателя;

- после однократного нажатия клавиши «3» двигатель начинает вращаться со скоростью пропорциональной текущему уровню освещенности датчика, при этом максимальная скорость составляет 3/3 от максимально возможной для данного двигателя;

- однократное нажатие клавиши «+» в любом режиме останавливает двигатель до повторного нажатия любой из цифровых клавиш клавиатуры.

По данному техническому заданию была разработана схема электрическая принципиальная управления двигателем постоянного тока с матричной 3х3 клавиатурой в среде проектирования Proteus.

Рисунок 1 Схема электрическая принципиальная светового управления двигателем постоянного тока

Для проверки работоспособности устройства сперва надо запустить симуляцию кнопкой «Play». После запуска двигатель остановлен. После однократного нажатия клавиши «1» двигатель начинает вращаться со скоростью пропорциональной текущему уровню освещенности датчика, при этом максимальная скорость составляет 1/3 от максимально возможной для данного двигателя. При нажатия клавиши «2» двигатель начинает вращаться со скоростью пропорциональной текущему уровню освещенности датчика, при этом максимальная скорость составляет 2/3 от максимально возможной для данного двигателя. Если нажать клавиши «3» двигатель начинет вращаться со скоростью пропорциональной текущему уровню освещенности датчика, при этом максимальная скорость составляет 3/3 от максимально возможной для данного двигателя После нажатия клавиши 4 двигатель будет остановлен. Если после этого нажать кнопку 1 либо 2 либо 3 двигатель начнет вращатся в режимах описанных выше.

Для проверки работы и наглядности результатов системы в качестве двигателя используем вольтметр.

Рисунок 2 Работа ДПТ при включенной кнопке 1

Рисунок 3 Работа ДПТ при включенной кнопке 2

Рисунок 4 Работа ДПТ при включенной кнопке 3

На приведенных выше рисунках была показана работа устройства при уровне освещенности 55% для наглядности приведем те же данные для уровня освещенности 100%.

Рисунок 5 Работа ДПТ при включенной кнопке 1

Рисунок 6 Работа ДПТ при включенной кнопке 2

Рисунок 6 Работа ДПТ при включенной кнопке 3

Блок-схема программного обеспечения для контроллера PIC 16F877, реализующая заданный алгоритм управления

По данному техническому заданию были разработаны 2 блок-схем, реализующих заданный алгоритм управления и работы, светового управления двигателем постоянного тока:

Рисунок 1 Алгоритм работы программы

Рисунок 2 Алгоритм работы драйвера матричной клавиатуры (Keyboard)

Исходный код программного обеспечения

; LIST P=PIC16F628A

#INCLUDE P16F877A. INC

; Пpимеp базового кода для демонстpационной пpогpаммы

; __config (3F58)

; ячейки ОЗУ

N EQU 0x20; Резервируем ячейку по адресу 20h под счетчик циклов.

N1 EQU 0x21; Резервируем ячейку по адресу 21h под счетчик циклов.

R0 EQU 0x22; Резервируем ячейку по адресу 22h под

R1 EQU 0x23; Резервируем ячейку по адресу 23h под

R2 EQU 0x24; Резервируем ячейку по адресу 24h под

R3 EQU 0x25; Резервируем ячейку по адресу 25h под

REZ EQU 0x26; Резервируем ячейку по адресу 26h под

ADCPWM EQU 0x27; Резервируем ячейку по адресу 26h под

PWMADC EQU 0x28

D3 EQU 0x29

STEPCOUNT equ 0x30; обозначение регистров для хранения числа дис-

COUNTER equ 0x31; кретов и числа повторений периодов ШИМ

Key1 equ 0x32; Регистры, которые хранят состояние клавиш в драйвере

Key2 equ 0x33; клавиатуры Keyboard

Key3 equ 0x34

Key4 equ 0x35

Key9 equ 0x36

Key5 equ 0x37

Key6 equ 0x38

Key7 equ 0x39

Key8 equ 0x3a

NumPressKey EQU 0X40

fCOUNTER equ 0x41; вспомогательные регистры процедуры задержки

fCOUNTER2 equ 0x42

fCOUNTER1 equ 0x43

; -------------------------------------------------------------------------------------------

BEGIN

; Инициализация портов

BCF STATUS, RP1; Выбор банка 0

BCF STATUS, RP0; Выбор банка 0 (00)

CLRF PORTA; Очистить регистр PORTA

CLRF PORTB; Очистить регистр PORTB

CLRF PORTC; Очистить регистр PORTC

CLRF PORTD; Очистить регистр PORTD

CLRF PORTE; Очистить регистр PORTD

BSF STATUS, RP0; Выбор банка 1 (01)

movlw b'00111000'; конфигурируем контакты порта D как входные

movwf TRISD

MOVLW. 255; Загpузить в pегистp W

MOVWF TRISA; установить разряды порта А

MOVLW B'00000000'; Загpузить в pегистp W

MOVWF TRISB; Все разряды порта А установить как выходы 1100

movlw b'00000000'; конфигурируем контакты порта D как входные

movwf TRISE

; PWM

bcf TRISC, 1; конфигурирование контакта RC1 как выходного

movlw. 255

movwf PR2; запись значения периода ШИМ

; ADC

movlw b'00000000'; ADFM=1, all inputs analogue, +VREF enabled.

movwf ADCON1; Save it.

; ////////////////////////////////

; настройка таймера0

BCF STATUS, RP0; Выбор банка 0 (00)

clrf INTCON; запрет прерываний

; ------------------------------------------------------------------------------------------

START

call keyboard; Читаем клавиатуру

btfsc Key1, 0; Проверка нажатия клавиши «1», если нажата, то переходим

call k1; k1, нет - тогда проверяем клавишу 2

btfsc Key2, 0; Проверка нажатия клавиши «2», если нажата, то переходим

call k2; к k2, нет - тогда проверяем клавишу 3

btfsc Key3, 0; Проверка нажатия клавиши «3», если нажата, то переходим

call k3; k3, нет - тогда едем дальше

btfsc Key4, 0; Проверка нажатия клавиши «4», если нажата, то переходим

call Stop; start, нет - тогда едем дальше

CALL PWM

CALL ADC

GOTO START

keyboard; драйвер клавиатуры

bcf STATUS, RP0; переход в нулевой банк, для нормального вызова функции из тела программы

bcf STATUS, RP1

clrf NumPressKey; обнуление кодов клавиш

clrf Key1; обнуление регистров в которых хранится состояние клавиш

clrf Key2

clrf Key3

clrf Key4

clrf Key5

clrf Key6

clrf Key7

clrf Key8

clrf Key9

col1

bsf PORTD, 0; подача питания

bcf PORTD, 1

bcf PORTD, 2

movlw. 24; вызов процедуры задержки

call small_delay

movf PORTD, W; читаем порт А в W и выполняем поразрядное умножение битов порта на число 0011 1000.

andlw 0x38

btfsc STATUS, Z; если Z=1 (т. е. не нажата ни одна из кнопок) переходим на метку col2

goto col2; для сканирования второго столбца клавиатуры. Если Z=0, то пропускаем строк

movlw. 250; если Z=0 вызываем процедуру задержки

call small_delay

btfsc PORTD, 3; определяем нажатия клавиши «1», проводя опрос первой строки

incf Key1, F

btfsc PORTD, 4; определяем нажатия клавиши «4», проводя опрос второй строки

incf Key4, F

btfsc PORTD, 5; опрос третей строки

incf Key7, F

col2

bcf PORTD, 0; подача питания

bsf PORTD, 1

bcf PORTD, 2

movlw. 24; вызываем задержку

call small_delay

movf PORTD, W; аналогичная проверка смотреть выше

andlw 0x38

btfsc STATUS, Z

goto col3

movlw. 250

call small_delay

btfsc PORTD, 3

incf Key2, F

btfsc PORTD, 4

incf Key5, F

btfsc PORTD, 5

incf Key8, F

col3

bcf PORTD, 0; подача питания далее по анологии см выше

bcf PORTD, 1

bsf PORTD, 2

movlw. 24

call small_delay

andlw 0x38

btfsc STATUS, Z

goto cnt

movlw. 250

call small_delay

btfsc PORTD, 3

incf Key3, F

btfsc PORTD, 4

incf Key6, F

btfsc PORTD, 5

incf Key9, F

movf PORTD, W

cnt; метка начала подсчета числа одновременно нажатых клавиш обнаруженых в этом цикле работы процедуры

btfsc Key1, 0; анализ проводится путем последовательной проверки значения младшего разраядакаждого из регистров

incf NumPressKey, F; Key1-Key-9 так если Key1=1 то numpresskey увеличивается на 1 если нет анализируем кеу2=1 и опять добовляем 1 в numpresskey

btfsc Key2, 0; оказывается записанным число равное числу одновремменно нажатых клавиш

incf NumPressKey, F

btfsc Key3, 0

incf NumPressKey, F

btfsc Key4, 0

incf NumPressKey, F

btfsc Key5, 0

incf NumPressKey, F

btfsc Key6, 0

incf NumPressKey, F

btfsc Key7, 0

incf NumPressKey, F

btfsc Key8, 0

incf NumPressKey, F

btfsc Key9, 0

incf NumPressKey, F

return; выход из процедуры

small_delay

movwf fCOUNTER1

clrwdt

decfsz fCOUNTER1, F

goto $-2

return

PWM

bcf STATUS, RP0; установка 0-го банка

MOVFW PWMADC

movwf CCPR2L; запис в W 8-ми старших бит

movlw b'00001100'

movwf CCP2CON

movlw 0x04

movwf T2CON

RETURN; выход из подпрограммы

; ==============================================

ADC

movlw b'00000001'

movwf ADCON0; Сахраним число в ADCON0

call PAUSE; вызов паузы.

DO_ADC bsf ADCON0, GO

WAIT_A btfsc ADCON0, GO; Бит еще установлен?

goto WAIT_A; Да, так что переходим в цикл и ждем окончания преобразования.

MOVFW ADRESH

MOVWF ADCPWM

RETURN; выход из подпрограммы

; ==============================================

PAUSE

MOVLW. 10; За даем количество внешних циклов

MOVWF N1; N1.

Cyc0_1; На чало внешнего цикла.

MOVLW. 250; За даем количество внутренних циклов

MOVWF N; N.

Cyc0_0; Начало внутреннего цикла.

NOP

NOP

NOP

NOP

NOP

NOP

NOP

NOP

DECFSZ N, 1; Вычитание из счетчика внутренних циклов единицы

GOTO Cyc0_0; и проверка условия выхода из цикла.

DECFSZ N1, 1; Вычитание из счетчика внешних циклов единицы

GOTO Cyc0_1; и проверка условия выхода из цикла.

RETURN; выход из подпрограммы PAUSE

k1

movfw ADCPWM

; здесь делим на 3

CALL DIV3

MOVFW D3

movwf PWMADC

return

k2

movfw ADCPWM

CALL DIV3; делим на 3 и умножаем на 2

MOVFW D3

rlf D3, f

movfw D3

movwf PWMADC

return

k3

movfw ADCPWM

movwf PWMADC

return

Stop

movlw. 0

movwf PWMADC

return

DIV3 CLRF D3

DIV31 addlw 0xFD; вычитаем 3 (путем прибавления) и проверяем на займ

btfss STATUS, C

goto EX_DIV3

incf D3, f

goto DIV31

EX_DIV3

RETURN

END;

Список используемых источников

Корабельников Е. А. - Программирование микроконтроллеров с нуля

Катцен С. PIC - микроконтроллеры. Все, что нужно знать

Заец Н. И. Радиолюбительские конструкции на PIC - микроконтроллерах Книга 1-4

Кениг А. М. Полное руководство по PIC - микроконтроллерах

Размещено на Allbest.ru


Подобные документы

  • Синтез регуляторов системы управления для электропривода постоянного тока. Модели двигателя и преобразователя. Расчет и настройка системы классического токового векторного управления с использованием регуляторов скорости и тока для асинхронного двигателя.

    курсовая работа [3,3 M], добавлен 21.01.2014

  • Определение параметров автоматизации объекта управления: разработка алгоритма управления и расчёт параметров устройств управления, моделирование процессов управления, определение показателей качества, параметры принципиальной электрической схемы.

    курсовая работа [1,7 M], добавлен 18.09.2009

  • Разработка схемы управления на магнитном пускателе с кнопочной станцией для трехфазного асинхронного двигателя. Технические характеристики магнитного пускателя. Принципиальная схема пуска двигателя постоянного тока параллельного возбуждения по времени.

    контрольная работа [301,4 K], добавлен 05.12.2013

  • Выбор частоты вращения, числа валов и цилиндров турбины. Миниатюризация блока контроля и управления скоростью вращения турбины. Описание схемы электрической структурной и принципиальной. Расчет стабилизатора напряжения. Алгоритм работы программы.

    дипломная работа [514,0 K], добавлен 30.06.2012

  • Анализ путей автоматизации стана ХПТ-55. Декомпозиционный анализ задачи модернизации системы управления и разработка декомпозиционной схемы. Разработка схемы электрической соединений системы управления. Разработка блок-схемы алгоритма управления станом.

    дипломная работа [1,6 M], добавлен 24.03.2013

  • Характеристика системы управления двигателя постоянного тока, элементы электропривода. Определение структуры и параметров объекта управления, моделирование процесса, разработка алгоритма и расчет параметров устройств. Разработка электрической схемы.

    курсовая работа [419,9 K], добавлен 30.06.2009

  • Разработка системы плавного пуска двигателя постоянного тока на базе микроконтроллера. Выбор широтно-импульсного преобразователя. Разработка системы управления транзистором и изготовление печатной платы. Статические и энергетические характеристики.

    курсовая работа [1,5 M], добавлен 29.04.2009

  • Построение модели структурной схемы САР, оценка устойчивости разомкнутого контура. Стабилизация контура изменением параметров усилителя. Анализ частотных характеристик и предварительная коррекция САР, введение ПИ-регулятора в контур управления.

    курсовая работа [3,3 M], добавлен 27.03.2012

  • Разработка схемы электрической принципиальной математической модели системы автоматического управления, скорректированной корректирующими устройствами. Оценка устойчивости исходной системы методом Рауса-Гурвица. Синтез желаемой частотной характеристики.

    курсовая работа [172,1 K], добавлен 24.03.2013

  • Разработка схемы планировки роботизированного технологического комплекса (РТК) горячей штамповки и ее элементов, техническое обеспечение системы управления, схема подключения программируемого логического контроллера (ПЛК), алгоритм и программа управления.

    курсовая работа [4,7 M], добавлен 13.11.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.