Микропроцессорная система управления скоростью вращения двигателя постоянного тока
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
?Н5А
На рисунке 3.5. обозначены:
- вход;
- общий;
- выход.
Несмотря на то, что основное назначение этого прибора - источник фиксированного напряжения, он может быть использован и как источник с регулированием напряжения и тока путем добавления в схемы его применения внешних компонентов. Внешние компоненты могут быть использованы для успокоения переходных процессов. Входной конденсатор необходим только в том случае, если регулятор находится далеко от фильтрующего конденсатора источника питания.
Основные параметры стабилизатора фиксированного напряжения 5 вольт типа КР142ЕН5А приведены ниже:
-выходное номинальное напряжение - 5В;
-выходное минимальное напряжение - 4,9В;
-выходное максимальное напряжение - 5,1В;
-входное максимальное напряжение - 15В;
-коэффициент нестабильности напряжения, максимальный - 0,05%/B;
-коэффициент нестабильности тока, максимальный - 1,33%/A;
-выходное сопротивление - 17мОм;
-ток КЗ - 750мА;
-максимальный выходной ток - 1,5А;
-рабочий диапазон температур кристалла -45… +125 С.
4. Разработка программного обеспечения
.1 Алгоритм работы устройства
Для реализации функции построенной принципиальной схемы необходим алгоритм, с помощью которого будут реализованы эти функции. На основе этого алгоритма будет написана программа для микроконтроллера. Первоначально вводим с клавиатуры заданную скорость вращения двигателя (от 2000 до 3000 об/мин), далее нажимаем кнопку пуск и начинается процесс запуска двигателя (задаётся предварительная скважность импульсов для разгона). Сигнал с датчика скорости поступает на вход внешнего прерывания INT1 микропроцессора. С помощью встроенного таймера-счетчика происходит определение скорости вращения вала ДПТ. Это значение сравнивается с заданным и если оно больше, то скважность импульсов увеличивается и наоборот если меньше. Далее данное значение выводится на вторую строку ЖКИ. Определение и вывод скорости вращения происходит каждый раз по приходу сигнала с датчика скорости, т.е. на каждом обороте.
4.2 Блок-схема алгоритма программы
Подпрограмма DEL
Подпрограмма UM
Подпрограмма SUM
Подпрограмма VICH
Подпрограмма обработки прерывания по INT1
4.3 Текст программы на языке ASSEMBLER
$nolist
$include (org.prc)
$include (pic_io.mac)
$include (lcd_io.mac)
$include (kbrd_io.mac)
$include (552asm.inc)
$listSTART; переход на основную программу8003h; подпрограмма обработки прерывания по INT0; выход из подпрограммы обработки прерывания по INT08013h; подпрограмма обработки прерывания по INT1A, TL1PSW.0, M11; переход если поступило прерывание останавливающее таймерTCON.4M12:CLR TCON.4; остановка таймераIEN0,#00h; блокировка прерыванийTL1,#00h; обнуление счётчика импульсов:RETI; выход из подпрограммы обработки прерывания по INT1:CALL I2cinit; проверка связи с сопроцессором
%PicGet (PIC_flg)PROG:%SEND_STR_LCD(ERR1)START:CLR CY; обнулить бит переносаLCDinit; инициализировать ЖКИACC, (Scan_8_lines+INTenable+AutoRepeat_en+Beep_enable); (8 линий + прерывание по INT0)initKBRD; инициализировать клавиатуру:%SEND_CMD_LCD(01h); очистить экран
CALL D; подпрограмма временной задержки
%PICGET (PIC_flg); проверка состояния сопроцессораACC.KBRDRQU, NEW; переход если клавиша не нажата
%PICGET (KBRD_STS); чтение кода нажатой клавиши
%KBRD_COD; преобразование в коды ЖКИLCDD; вывод на экран заданного числа тысяч об/минA, R0; преобразование кода нажатой клавиши в число об/мин
SUBB A,#30hR0, A
MOV R1,#64hUMR6, A; запись числа оборотов в регистры R6 и R7R7, B; в регистре R7 - старшие разряды, а в R6 - младшие
M1:%PICGET (PIC_flg)ACC.KBRDRQU, M1
%PICGET (KBRD_STS)
%KBRD_CODLCDD; вывод на экран заданного числа сотен об/минA, R0; преобразование кода нажатой клавиши в число об/мин
SUBB A,#30hR0, AR1,#0AhUMR0, A
MOV R1, R6SUM; операция сложения тысяч и сотен об/мин в регистах R6 и R7
M2:%PICGET (PIC_flg)ACC.KBRDRQU, M2
%PICGET (KBRD_STS)
%KBRD_CODLCDD; вывод на экран заданного числа десятков об/мин
MOV A, R0A,#30h
ADD A, R6; получение окончательногоR6, A; числа об/мин в регистрах R6 и R7R0,#00hLCDD; добавка нуля к полученному результату:MOV R3, R7; определение времени которое должно быть получено на счётчикеR2, R6; между двумя импульсами от датчика скоростиR0,#02hDEL; деление скорости на 2 (N/2)
MOV R0, R2R3,#27hR2,#10hDEL; 10000/(N/2)R1, R2R0,#05hUM; 10000*5/(N/2)
MOV R6, A; занесение в регистры R6 и R7 времениR7, B; скоторым будет сравниваться время полученное на счётчикеPWMP, 7Fh; задание начальной частоты повторения ШИМTCON,#01h; установка прерывания INT0 по уровню (переход из 1 в 0)IEN0,#81h; снятие блокировки прерываний и разрешение прерывания по INT0:JNB TCON.1, M3; ожидание прерывания по INT0 (включение двигателя)TMOD,#D1h; Разрешение управлять счётчиком 1 от INT1 и выбор 1 - ого режима счётчика 1 и таймера 0TCON,#44h; запуск счётчика 1 и установка прерывания INT1 по уровню (переход из 1 в 0)IEN0,#84h; снятие блокировки прерываний и разрешение прерывания по INT1:JNB TCON.3, M4; ожидание прерывания по INT1 (с датчика скорости запускающего таймер):JNB TCON.3, M5; ожидание прерывания по INT1 (с датчика скорости останавливающего таймер):MOV A, TH0; операция сравнения заданного времени и времени с счётчика
MOV B, TL0CYA, R7UVELA, BA, R6
JC UVEL
JMP UMEN
UVEL:MOV A, PWMP; операция увеличения скважности импульсов
CJNE A,#01h, M6PWMP M6
UMEN:MOV A, PWMP; операция уменьшения скважности импульсов
CJNE A,#FFh, M6PWMP:MOV R0,#02hR3, TH0R2, TL0DELR0, R2R3,#27hR2,#10hDEL R0, R2; преобразование времени счётчика в текущую скорость
MOV R1,#05h; двигателя и отображение её на ЖКИ
LCALL UMR4, AR5, BR0,#64h MOV R3, R5R2, R4DELA, R2A,#30hR0,#C0h
LCALL LCDC; установка курсора в начало второй строки ЖКИR0, ALCDD; вывод количества тысяч об/мин
MOV R1, R2R0,#64hUMR3, R5R2, R4