Файл: Отчет по лабораторной работе 5 ацп проверил Качалов А. В. 2020 г.docx

ВУЗ: Не указан

Категория: Отчет по практике

Дисциплина: Не указана

Добавлен: 23.11.2023

Просмотров: 35

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.




Министерство образования и науки Российской Федерации

Федеральное государственное автономное образовательное учреждение

высшего профессионального образования

«Microsoft»

(национальный исследовательский университет)

Политехнический институт

Факультет «Энергетический»

Кафедра «Автоматизированный электропривод»

ОТЧЕТ

по лабораторной работе №5

АЦП
Проверил:
______________/Качалов А.В./
«__»________________2020 г.

Автор работы
студент группы П-
___________/./
«__»________________2020 г.


Челябинск 2020
Цель работы

Освоить теоретический и практический материал по работе 10-разрядного аналого-цифрового преобразователя (АЦП) микроконтроллера AtmegaХХ. Применить приобретенные навыки при написании программы.

Созыкин Дмитрий Дмитриевич
18.05.99

Данные согласно варианту

3 канал АЦП

Левое выравнивание

Кд = 128

4 выходных разряда

Режим управления – несимметричный

ШИМ – быстрый, 8 бит

Номинальная скорость = 1700

Диапазон изменения скорости -1350 0 1350
Функциональная схема работы устройства


Рисунок 1 – Функциональная схема
Расчёт регистров ШИМ

Расчёт начинается с выбора режима в котором будет работать таймер. Режим ШИМ, фазовый.

Максимальная скорость = 1700 Об\мин. Соответственно для получения максимальной скорости, заданной по варианту необходимо произвести следующее вычисление.

max speed = 1700\1350 = 0.8. Данная скорость составляет 0.8 от максимально заполенного ШИМ. Т.е т.к ШИМ 8 бит, то максимальная заполненность достигает, когда в регистре OCR находится число 255. Соответственно по варианту 0.8 от 255+1 составляет

205 от maxPWM (256)

; всего 16 скоростей т.к. значение 4ех разрядное согласно варианту, следовательно 205 \ 16 = 13 от maxspeed на каждую скорость 13

Соответственно для получения скорости необходимо умножить полученную скорость на константу 13.

Настройка регистров АЦП


Согласно варианту присутствует левое выравнивание, соответственоо бит ADLAR в регистре ADMUX должен быть установлен, а полученный результат сдвинут на 4 бита. Также для выбора первого канала регулирования необходимо установить бит 0 и первый бит в битах MUX. Также для выбора предделителя установим биты ADPS2,1,0 в регистре ADCSRA, установим 6 и 7 бит этого регистра, чем разрешим работу АЦП и запустим преобразование

Л истинг программы

;Программа для управления электродвигателем постоянного тока.
.equ EN_WORK = 0

.equ REVERS = 1

.equ BIT_MASK = $03

.equ SPEED_MASK = $06

.equ CONST = 13
.def SPEED_REG = R18
.include"m32def.inc" ;подключение стандартной библиотеки

.cseg ;начало сегмента кода

.org$0

reset:

ldi r16,low(RAMEND) ;Инициализация стека

ldi r17,high(RAMEND)

out spl,r16

out sph,r17
clr r16;Инициализация портов ввода/вывода

out DDRA,r16 ;Порт А - на ввод информации

ser r16

out DDRD,r16 ;Порт D - на вывод информации.

out DDRB,r16 ;Порт B - на вывод информации.
clr r16

out OCR1AH,r16 ;обнуление регистров Т1

out OCR1BH,r16

out TCNT1H,r16

out TCNT1L,r16

ldi r16,0xA1 ; инициализация таймера ШИМ 8 бит, быстрый

out TCCR1A,r16

ldi r16,0x0B ;

out TCCR1B,r16

clr SPEED_REG

rcall startADC

main:

in r16,ADCSRA ;Опрос регистра ADCSRA

SBRC r16,4 ;Если бит 4 чист, то следующая команда пропускается

rcall ADC_ready ;Иначе вызов ADC_ready

rjmp main ;Возврат на main

ADC_ready:

in r23,SREG ;сохранение значения регистра SREG

ldi r16,0x97 ;Обнуление флага ADIF записью в него логической«1»

out ADCSRA,r16
in r16, PINA ; маска на вход

andi r16, BIT_MASK

sbrs r16, EN_WORK ; проверка разрешения

rjmp stop ; нет разрешения останов двигателя

rcall set_speed ; установка скорости:

out PORTB, SPEED_REG ; вывод скорости

sbrc r16, REVERS

rjmp revers_set ; если есть реверс, то переход на установки реверса

clr r17

out OCR1BL, R17 ; если реверса нет, то идем дальше

out OCR1BH, R17

out OCR1AL, SPEED_REG

quit:

ldi r16,0xA1 ; ; установка значений таймера и АЦП

out TCCR1A,r16

ldi r16,0x0B ;

out TCCR1B,r16

rcall startADC

out SREG, r23

rjmp main
revers_set: ; установки таймера для реверса



clr r17

out OCR1AL, R17

out OCR1AH, R17

out OCR1BL, SPEED_REG

rjmp quit
stop: ; Останов двигателя. Либо нет сигшнала вкл. Либо не нажата скорость

clr r16

out TCCR1A, r16

out TCCR1B, r16

out PORTB, r16 ;скорость очистили

out ADCSRA,r16 ; выключили бит 7. ADEN

rjmp main
set_speed:

in r17,ADCH ;Считывание результата преобразования из ADCH

lsr r17 ; 4 разряда

lsr r17

lsr r17

lsr r17 ; max speed = 1350\1700 = 0.8 = 205 от maxPWM (256)

; всего 16 скоростей 205 \ 16 = = 13 от max speed на каждую скорость 13

ldi r21, CONST

mul r17, r21

mov SPEED_REG, r0

ret
startADC:

ldi r16,0x63 ;Инициализация мультиплексора АЦП

out ADMUX,r16

ldi r16,0xC7

out ADCSRA,r16 ;Инициализация АЦП и его запуск

ret

Вывод: Был исследован аналого-цифровой преобразователь.