Разработка схемы и ПО для аппаратной модели
Разработка схемы и ПО для аппаратной модели заданной системы управления на 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