Главная страница
Навигация по странице:

  • Расчетно-графическое задание на тему

  • РГЗ Микроконтроллеры. Измерение интенсивности света по дисциплине


    Скачать 2.38 Mb.
    НазваниеИзмерение интенсивности света по дисциплине
    АнкорРГЗ Микроконтроллеры
    Дата08.04.2023
    Размер2.38 Mb.
    Формат файлаdocx
    Имя файлаKosheleva_T_RGZ_MIM_AT-93.docx
    ТипДокументы
    #1046820

    МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РФ

    ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

    НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

    Кафедра систем сбора и обработки данных



    Расчетно-графическое задание

    на тему: «Измерение интенсивности света»

    по дисциплине: «Микроконтроллеры и микропроцессоры»

    Выполнила:

    Кошелева Т.Ю.

    Проверил:

    Баран Е.Д.

    Группа: АТ-93




    Факультет: АВТ





    Новосибирск

    2022 г.

    Техническое задание:

    Измерить интенсивность света с помощью фоторезистора, результат измерения вывести на семисегментный индикатор.

    Основная часть:

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

    Фоторезисторы изготавливаются из полупроводников, чтобы обеспечить им зависимые от света свойства. Принцип действия фоторезисторов основан на так называемой "фотопроводимости". В соответствии с данным принципом, с увеличением количества света, падающего на фоторезистор, его сопротивление уменьшается, а при снижении интенсивности падающего света его сопротивление увеличивается. Данные свойства во много обусловлены использованием полупроводниковых материалов для изготовления фоторезисторов. Наиболее часто фоторезисторы применяются для обнаружения наличия света или измерения его интенсивности.



    Рис. 1. Схема подключения фоторезистора.

    На выходе получим аналоговый сигнал, который необходимо подать на аналоговый вход микроконтроллера ATMEGA324PB, после чего с помощью АЦП микроконтроллера конвертировать аналоговый сигнал в цифровой.

    Будем использовать линию 0 порта A:



    Рис. 2. Распиновка микроконтроллера.

    Изучив Datasheet ATMEGA324PB, выяснилось, что в микроконтроллере находится 10-битный аналого-цифровой преобразователь:



    Рис. 3. Характеристики микроконтроллера.

    Чтобы получить результат с датчика, в нашем случае с фоторезистора, необходимо настроить АЦП программно. Для этого нужно изучить конфигурацию регистров ADMUX и ADCSRA.

    Регистр ADMUX:



    Рис. 4. Описание регистра ADMUX.

    REFS - биты 6,7 - выбор источника опорного напряжения. Будем использовать внешний источник опорного напряжения.



    Рис. 5. Конфигурация опорного напряжения в регистре ADMUX.

    ADLAR - 5 бит - конфигурирует способ записи результата преобразования АЦП в регистр ADC. При установке нуля в бит ADLAR регистра ADMUX старшие 9 и 8 биты результата преобразования будут находиться в старшем байте регистров результата ADCH, младшие 0-7 биты будут записаны в младший байт регистра результата ADCL.



    Рис. 6. Запись результата преобразования при установке ADLAR = 0.

    При установке единицы в бит ADLAR регистра ADMUX младшие 0 и 1 биты результата преобразования будут находиться в младшем байте регистров результата ADCL, старшие 2-9 биты будут записаны в старший байт регистра результата ADCH.



    Рис. 7. Запись результата преобразования при установке ADLAR = 1.

    Запишем единицу в ADLAR.

    MUX - биты 0-4 - конфигурация канала, на котором будет осуществляться преобразование АЦП. Будем использовать канал ADC0, поэтому в программе в регистр ADMUX запишем в итоге 01100000.



    Рис. 8. Конфигурация канала измерения АЦП в регистре ADMUX.

    Регистр ADCSRA:



    Рис. 9. Описание регистра ADCSRA.


    ADEN - 7 бит - разрешение работы АЦП. Выставляем единицу.
    ADSC - 6 бит - разрешение замерять. Выставляем единицу.

    ADATE - 5 бит - многократный режим измерения (running mode). Выставляем нуль.
    ADIF- 4 бит- флаг ставится, после того как АЦП производит замер, из за флага срабатывает прерывание.
    ADIE- 3 бит - разрешение прерываний. Выставляем нуль.
    ADPS - биты 0-2- выбор частоты преобразования. Выставляем 011.


    Рис. 10. Биты ADPS.


    В итоге в программе в регистр ADCSRA запишем 11000011.

    При такой настройке регистров АЦП будет преобразует сигнал с датчика один раз. Чтобы производить конвертацию сигнала в цикле через промежуток времени будем использовать прерывание таймера по переполнению.

    Будем использовать таймер 1, поскольку он 16-ти битный, то есть максимальное число, которое можно записать в его счетный регистр – 65536, таймер 1 обеспечит большую задержку, чем это может сделать 8-ми битный таймер 0, максимальное число счетного регистра которого – 256. Наибольшая задержка, которую может обеспечить таймер 0 – 256/1000000*1024=0.26 секунд. (1024 –предделитель, устанавливаемый регистром TCCR0B)

    Используя таймер 1 можно обеспечить значительно большую задержку. Поставим задержку в несколько секунд. Для этого подберем предделитель. 65536/1000000*64=4.19 секунд.

    Для настройки прерывания по переполнению таймера нужно прописать вектор прерывания, который содержит адрес на первую команду обработчика прерывания.



    Рис. 11. Вектора прерываний.

    Нужный вектор: 0x001E.

    Следующим шагом нужно произвести конфигурацию таймера.

    Выше уже был подобран преддедитель таймера. Настройка первых битов регистра нам не нужна, поэтому запишем в регистр TCCR1B 00000011, следуя рисунку 13.



    Рис. 12. Описание регистра TCCR1B.



    Рис. 13. Таблица предделителей таймера.

    В счетный регистр запишем 0. Это значит, что счет таймера будет идти от 0 до 65536. Флаг переполнения будет подниматься каждые 65536 «тиков» таймера.

    Рис. 14. Счетные регистры таймера.

    Последний регистр, который необходимо настроить – TIMSK1. Он отвечает за разрешение прерываний таймера. Чтобы разрешить прерывания по переполнению, нужно установить единицу в его бит TOIE1.



    Рис. 15. Регистр TIMSK1.

    Итоговая схема подключения:



    Для вывода значения с АЦП будут использоваться линии 0-3 портов B,C,D.

    Результат с АЦП будет обрабатываться подпрограммой, вычисляющей разряды результата, затем каждый разряд будет отправлен на порт, с порта подключен к дешифратору КР514ИД2, а дешифратор подключен к семисегментному индикатору.

    Результаты работы программы:



    Рис. 17. Показания индикаторов при низкой освещенности.



    Рис. 18. Показания индикаторов при низкой освещенности.

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

    .CSEG

    ;вектора прерываний

    .ORG 0x00

    rjmp RESET ;вектор прерывания вызываемый по сбросу микроконтроллера

    .ORG 0x1E

    rjmp TIMER1_OVF ;прерывание таймера T1 по переполнению
    RESET:

    ;инициализация вершины стека

    ldi r16, low(ramend)

    out SPL, r16

    ;разрешение линий 0-7 порта б на выход для вывода результата преобразовая с ацп

    ldi r16, 255

    out DDRB,r16

    ldi r16, 0b01100000

    sts ADMUX, r16 ;настройка ацп

    sts TCNT1H,r16 ;настройка таймера для измерения ацп

    sts TCNT1L,r16

    ldi r16, 0x03

    sts TCCR1B,r16 ;частота синхронизации Timer1 = Fosc/64;

    ldi r16,0x01 ; разрешить прерывания по переполнению

    sts TIMSK1,r16

    sei ;поднятие флага I для глобального разрешения прерываний

    rjmp PC
    TIMER1_OVF:

    in r16, SREG

    push r16 ;сохранение флагов процессора

    ADC_Conversion:

    ldi r16, 0b11000011

    sts ADCSRA, r16 ;настройка ацп

    lds r18, ADCH

    out PORTB, r18 ;выводим результат с ацп на порт б

    rcall output ;вызов подпрограммы вывода значения с аца на индикаторы

    pop r16

    out SREG, r16 ;восстановление флагов

    reti ;конец обработчика прерывания
    output: ;подпрограмма вычисляет разряды 8-разрядного числа

    in r16, portb ;сохраняем значение с порта б в регистр

    DIGITS8:

    CLR R26

    CLR R27

    CLR R28

    CLR R29

    CLR R30

    LDI r17,100

    DIG8_1:

    CP r16, r17

    BRLO DIG8_2

    SUB r16, r17

    ; сотни

    INC R26

    RJMP DIG8_1

    DIG8_2:

    LDI r17,10

    DIG8_3:

    CP r16, r17

    BRLO DIG8_4

    SUB r16, r17

    ; тысячи

    INC R27

    RJMP DIG8_3

    DIG8_4:

    ; в Temp1 остались только единицы

    MOV r18, r16

    MOV r16, R26

    MOV r17, R27

    Clr r20

    Out PORTB, r20

    ldi r20, 0x0F

    out DDRB, r20 ;линии 0-3 порта b хранят разряд единиц результата преобразования

    out PORTB,r16

    ldi r20, 0x0F

    out DDRC, r20 ;линии 0-3 порта c хранят разряд десятков результата преобразования

    out PORTC,r17

    ldi r20, 0x0F

    out DDRD, r20 ;линии 0-3 порта d хранят разряд сотен результата преобразования

    out PORTD, r18

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

    Вывод:

    В ходе выполнения расчетно-графического задания была разработана схема подключения фоторезистора для измерения освещенности, были настроены регистры АЦП, регистры таймера для использования прерывания по переполнению, чтобы обеспечить запуск преобразования АЦП каждые несколько секунд. Также, была собрана схема для вывода показания с АЦП на семисегментные индикаторы через дешифраторы.


    написать администратору сайта