Розробка мікропроцесорної системи управління та керування об'єктом на базі RISK AVR-мікроконтролера ATMega1281V-8AU
p align="left">3.6 Система аналогового вводу інформації
Дана система призначена для прийому та обробки інформації від зовнішніх датчиків. Обробка виконується за допомогою вбудованого аналогово-цифрового перетворювача (АЦП), входи якого можуть конфігоруватись як несиметричні, і як симетричні, при цьому на входи подаються різні рівні напруги. 3.6.1 Підсистема аналогового вводу інформації з несиметричними входами Так як АЦП із несиметричними входами може приймати та опрацьовувати напругу, що знаходиться в діапазоні від 0 до рівня зовнішньої опорної напруги, котра становить +5В, так як й напруга з датчиків, згідно варіанту, може подаватись в діапазоні від 0 до +5В,
3.6.2 Підсистема аналогового вводу інформації із симетричними входами Для формування даної системи використовується АЦП, входи якого включені симетрично, тобто попарно, для передачі інформації від датчиків до МК для подальшої її обробки. При виконанні реальної задачі може постати необхідність у усередненні результату перетворення АЦП, тобто видачі сигналу з АЦП через певну кількість виконаних перетворень. Розрахуємо кількість перетворень АЦП (КОАЦП) при частоті опитування датчиків (fд), що становить . Для цього скористаємось наступною формулою:
де fАЦП - часота роботи АЦП, 62,5кГц; Кt - кількість тактів перетворення, 14 тактів.
Таким чином видача результату перетворення сигналів з датчиків буде виконуватись через кожні 30 циклів АЦП. Проте необхідно пам'ятати, що перше перетворення при одиночному режимі роботи АЦП займатиме на 12 тактів більше, під час яких виконується ініціалізація АЦП. 3.7 Система аналогового виводу інформації
Дана система призначена для перетворення та виводу інформації у аналоговому вигляді. Складається вона із цифро-аналогового перетворювача (ЦАП) реалізованого на базі ШІМ. В свою чергу останній реалізується на базі таймера лічильника МК Т1. Нам необхідний 10-розрядний ШІМ, отримаємо його при 10 режимі роботи Т1. Максимальне значення (ТОР), що прийматиме лічильник, розраховується за наступною формулою:
ТОР=2N-1 ТОР=210-1=1023 Коли стан лічильника, що зберігається у регістрі, TCNT1, збігається із змістом регістру OCR1, на виводі ОС1 МК встановлюється рівень лог. 0, таким чином завершуючи імпульс ШІМ-сигналу. Лічильник продовжує рахувати до максимального значення ТОР, після чого змінює напрямок руху. Як тільки стан лічильника знову співпаде із змістом регітру OCR1, на виводі ОС1 МК встановлюється рівень лог. 1. Частота повторювання лічильних циклів fШІМ складає:
Якщо прийняти, що стан регістру OCR1 дорівнює Z, тоді час одного періоду імпульсу сигналу tн складатиме 2Z. Виходячи із цього, коефіцієнтом заповнення N-розрядного ШІМ-сигналу g можна керувати за допомогою змісту регістру OCR1:
Таким чином, коефіцієнт заповнення прямо пропорційний складу Z регістру порівняння OCR1. Середнє арифметичне UМ вихідної напруги Т/С1 на виході ОС1 МК, що отримується при проходженні ШІМ-сигналом фільтру нижчих частот, може бути розраховано за наступним рівнянням:
де - рівень логічної 1; - рівень логічного 0; g - коефіцієнт заповнення прямокутних імпульсів напруги Z. Сигнал, що отримується з виходу ЦАП, необхідно профільтрувати для отримання достовірного сигналу постійної напруги. Для цього використовується активний фільтр низьких частот Баттерворта другого порядку, що дозволяє подавляти 40 Дб/дес. Схема фільтру Баттерворта другого порядку представлена на рисунку 4.4 Рисунок 3.2 - Схема фільтру Баттерворта другого порядку Розрахунок параметрів схеми. Для фільтру Баттерворта другого порядку час запізнювання сигналу (tv) становить 0.228Tg , а тривалість фронту (ta) - 0.342Tg , час зворотного значення граничної частоти - нормована величина. Викид складає 4,3%, час встановлення сигналу дорівнює 3Тg . Підсилення постійної напруги схеми фільтра низьких частот приблизно рівно . Воно має негативне значення, оскільки базується на інвертуючій схемі ОП. Для розрахунку параметрів фільтру низьких частот необхідно задати номінали конденсаторів С1 та С2 і розрахувати опори R1 та R2 згідно з наступними формулами. (4.6) (4.7) (4.8) При цьому V0 являється найбільш достовірним підсиленням постійної напруги фільтра, а1 и b1 - коефіцієнти фільтра, що дорівнюють 1,4142 та 1,0000 відповідно. При виборі С1 та С2 необхідно дотримуватись наступої умови:
(4.9) Характеристики фільтра Баттерворта др TCNT1угого порядку при V0=-1 представлено у таблиці 4.1
Таблиця 4.1 - Характеристики фільтра Баттерворта другого порядку |
Резрешение, разряды | Tint,мкс | 1LSB, мВ | Аt max, мВ | V(TP) | fшим, Гц | fg max, Гц | ta, мс | tv, мс | | 10 | 15 | 2,5 | 1,25 | 0.000383 | 32,55 | 4,56 | 84,96 | 98,57 | | |
Обираємо номінал С1, що становитиме 122,2нФ, та розрахуємо С2 згідно формули (4.9).
Згідно із номінальним рядом Е192 номінал конденсатора С2 становитиме 252нФ. Розраховуємо значення R2 згідно із формулою (4.6):
Найближче значення із ряду Е192: Значення резистору R3 розраховуємо по формулі (4.8):
Найближче значення із ряду Е192: Значення резистору R1 розраховуємо по формулі (4.7):
Найближче значення із ряду Е192: 3.8 Система дискретного вводу-виводу
Системи дискретного вводу та виводу інформації являють собою системи прийому та видачі сигналів дискретної форми сигналу, тобто цифрові сигнали. Для підвищення точності сигналів та уникнення неоднозначності у інтерпретації даних необхідно ввести у склад обох систем гальванічні розв'язки сигналів. У якості гальванічного елемента використано оптрон АОД130, що являє собою пару: фотодіод та світло діод, що розташовані в одному чотирьох контактному корпусі. 4. Розробка програмного забезпечення
Згідно завдання на курсову роботу необхідно розробити програму ініціалізації МК для роботи із усіма пристроями, що входять до складу системи. Для цього, по-перше, необхідно сконфігурувати регістри портів вводу-виводу на виконання операцій, що були зазначені для них, під час розробки принципової схеми. Конфігурування відбувається шляхом встановлення та скидання необхідних бітів у регістрах PORTх (рядки 25-38) та DDRх (рядки 39-50), а також читанням стану виводів портів через регістр PINx. По-друге, сконфігорувати регістри вводу-виводу, що відображають внутрішнє налаштування периферійних пристроїв МК, а саме АЦП, таймера-лічильника Т1, зовнішнього ОЗП, модуля USART. Для конфігурування АЦП необхідно встановити регістри ADCSRA та ADMUX (рядки 4-7, 52-57). Для конфігурування таймера-лічильника Т1, щоб він працював як ШІМ, необхідно сконфігурувати регістри TCCR1A, TCCR1B, TCCR1C (рядки 13-15, 73-87). Для конфігурації роботи із зовнішнім ОЗП використовуються регістри XMCRA, XMCRB (рядки 8, 9, 58-63). Для конфігурування модуля USART використовуються UCSR0A, UCSR0B, UCSR0C (рядки 10-12, 64-72).
Лістинг програми |
№ | Мітка | Команда | Операнди | Примітка | | 1 | | .nolist | | | | 2 | | .include | "С:\Kursovoy\PMS_Kursovoy \"m1281def.inc" | | | 3 | | .list | | | | ;--Содержимое регистров | | 4 | | .equ | ADCRS = 0b10000101 | ;ADEN=1 - АЦП включ., ADSC=0, ;ADATE=0 (одиночный режим), ADIF=0, ;ADEN=0, ADFPS[2..0]=101 (делитель ;частоты на 32) --> рабочая частота ;АЦП=2МГц : 32 = 62,5кГц | | 5 |
| .equ | ADMX0 = 0b00000000 | ;несимметричный вход ADC0, внешнее ;опорное напряжение | | |
| | | | | № | Мітка | Команда | Операнди | Примітка | | |
| | | | | 6 |
| .equ | ADMX6 = 0b00000110 | ;несимметричный вход ADC6, внешнее ;опорное напряжение | | 7 |
| .equ | ADMX3_1 = 0b00010011 | ;симметричный входы ADC3-1, внешнее ;опорное напряжение | | 8 |
| .equ | XMCR_A = 0b10000001 | ;SRE=1 (разрешена работа с вн. ОЗУ), ;SRL[2..0]=0 (один сектор), ;SRW[11..00]=0001 (один такт ожидания) | | 9 |
| .equ | XMCR_B = 0b00000100 | ;XMBK=0, биты 6-3 зарезервир ;XMM[2..0]=100 (выводы РС[7..4] могут ;свободно использоваться как порты ВВ) | | 10 |
| .equ | UCSRA = 0b00100000 | ; регистр А управления USART | | 11 |
| .equ | UCSRB = 0b00000010 | ; регистр B управления USART | | 12 |
| .equ | UCSRC = 0b00100110 | ;UMSEL[01..00]=00 (асинхр. режим ;работы), UPM[01..00]=10 (проверка на ;четность), UCSZ[01..00 (8-ми битный ;формат посылок)] | | 13 |
| .equ | TCCRA = 0b00110010 | ;COM1A[1..0]=00 отключен вывод ;OCR1A, COM1B[1..0]=11 OCR1B при ;прямом счете на выходе равен 1, при ;инверстном счете - 0, COM1C[1..0]=00 ;отключен вывод OCR1C, ;WGM[11..10]=10 определяет 10 режим ;работы | | 14 |
| .equ | TCCRB = 0b00010010 | ;WGM[13..12]=10 определяет 10 режим ;работы, CS[12..10]=010 источник ;тактового сигнала (clk_IO/8) | | 15 |
| .equ | TCCRC = 0b00000000 | ; регистр управления Т1 | | ;--Рабочие регистры | | 16 |
| .def | t0 = r16 | ; регистру r16 присвоить имя t0 | | 17 |
| .def | t1 = r17 | ; регистру r176 присвоить имя t10 | | ;--Начало | | 18 |
| .cseg | | ; начало сегмента кода | | 19 |
| .org 0 | | | | 20 |
| rjmp | Initial | ; переход к подпрограмме Initial | | |
| | | | | № | Мітка | Команда | Операнди | Примітка | | ;--Инициализация МК | | 21 | Initial: | ldi | t1, low(RAMEND) | ;инициализация | | 22 |
| out | SPL, t1 | ;младшего и старшего байтов | | 23 |
| ldi | t1, high(RAMEND) | ;указателя | | 24 |
| out | SPH, t1 | ;стека | | ;--Конфигурация портов ввода-вывода ;--Включаем подтягивающие резисторы и задаем начальное значение выводов | | 25 |
| ldi | t0, 0x00 | ; для порта А не требуются | | 26 |
| out | PORTA, t0 | ; подтягивающие резисторы | | 27 |
| ldi | t0, 0b00111111 | ; для выводов PB5-0 включить | | 28 |
| out | PORTB,t0 | ; подтягивающие резисторы | | 29 |
| ldi | t0, 0b11110000 | ; для выводов PС7-4 включить | | 30 |
| out | PORTC,t0 | ; подтягивающие резисторы | | 31 |
| ldi | t0, 0b11000000 | ; для выводов PD7, PD6 включить | | 32 |
| out | PORTD,t0 | ; подтягивающие резисторы | | 33 |
| ldi | t0, 0b11111101 | ; для всех выводов портаЕ, кроме РF1, | | № | Мітка | Команда | Операнди | Примітка | | 34 |
| out | PORTЕ,t0 | ;включить подтягивющие резисторы | | 35 |
| ldi | t0, 0xFF | ; для всех выводов порта F | | 36 |
| out | PORTF,t0 | ;включить подтягивющие резисторы | | 37 |
| ldi | t0, 0b11100000 | ; для выводов порта PG7-5 | | 38 |
| out | PORTG,t0 | ;включить подтягивющие резисторы | | ;--Конфигцрируем выводы портов (режим работы) | | 39 |
| ldi | t1, 0xFF | ;выводы РА | | 40 |
| out | DDRA, t1 | ;определить как выходы | | 41 |
| ldi | t1, (1<<DDB7)|(1<<DDB6) | ;выводы РВ7, РВ6 определить как | | 42 |
| out | DDRB,t1 | ;выходы, остальные - как входы | | 43 |
| ldi | t1, (1<<DDC3)|(1<<DDC2)| (1<<DDC1)|(1<<DDC0) | ; выводы РС3-0 определить как выходы | | 44 |
| out | DDRC,t1 | ; остальные - как входы | | 45 |
| ldi | t1, (1<<DDD5)|(1<<DDD4)| (1<<DDD3)|(1<<DDD2)| (1<<DDD1)|(1<<DDD0) | ; выводы PD6, PD7 определить как ; входы | | 46 |
| out | DDRD,t1 | ;остальные выводы - как выходы | | 47 |
| ldi | t1, (1<<DDE1) | ; вывод РЕ1 установить как выход, | | 48 |
| out | DDRE,t1 | ;остальные как вход | | 49 |
| ldi | t1, (1<<DDG4)|(1<<DDG3)| (1<<DDG2)|(1<<DDG1)| (1<<DDG0) | ;выводы PG7-5 установить как входы | | 50 |
| out | DDRG,t1 | ;остальные как выходы | | 51 |
| nop | | | | ;--Инициализация АЦП | | 52 |
| ldi | t1, ADMX0 | ;записать в регистр ADMUX значение | | 53 |
| ldi | XL, ADMUX | ;соответствующее необходимому режиму | | 54 |
| st | X, t1 | ;работы мультиплексора АЦП | | 55 |
| ldi | t1, ADCRS | ;записать в регистр ADCSRA значение | | 56 |
| ldi | XL, ADCSRA | ;соответствующее необходимому режиму | | 57 |
| st | X,t1 | ;работы АЦП | | № | Мітка | Команда | Операнди | Примітка | | ;--Инициализация работы с внешним ОЗУ | | 58 |
| ldi | t1, XMCR_A | ;сконфигурировать регистр А | | 59 |
| ldi | XL, XMCRA | ;управления | | 60 |
| st | X, t1 | ; внешним ОЗУ | | 61 |
| ldi | t1, XMCR_B | ;сконфигурировать регистр В | | 62 |
| ldi | XL, XMCRB | ;управления | | 63 |
| st | X, t1 | ; внешним ОЗУ | | ;--Порт USART | | 64 |
| ldi | t1, UCSRA | ;сконфигурировать регистр А | | 65 |
| ldi | XL, UCSR0A | ;управления | | 66 |
| st | X, t1 | ; модулем USART | | 67 |
| ldi | t1, UCSRB | ;сконфигурировать регистр B | | 68 |
| ldi | XL, UCSR0B | ;управления | | 69 |
| st | X, t1 | ; модулем USART | | 70 |
| ldi | t1, UCSRC | ;сконфигурировать регистр C | | 71 |
| ldi | XL, UCSR0C | ;управления | | 72 |
| st | X, t1 | ; модулем USART | | № | Мітка | Команда | Операнди | Примітка | | ;--Инициализация ШИМ | | 73 |
| ldi | t1, TCCRA | ;сконфигурировать регистр А | | 74 |
| ldi | XL, TCCR1A | ;управления | | 75 |
| st | X, t1 | ;таймером-счетчиком Т1 | | 76 |
| ldi | t1, TCCRB | ;сконфигурировать регистр В | | 77 |
| ldi | XL, TCCR1B | ;управления | | 78 |
| st | X, t1 | ;таймером-счетчиком Т1 | | 79 |
| ldi | t1, TCCRC | ;сконфигурировать регистр С | | 80 |
| ldi | XL, TCCR1C | ;управления | | 81 |
| st | X, t1 | ;таймером-счетчиком Т1 | | 82 |
| ldi | t0, 0x07 | ; установка коеффициента | | 83 |
| ldi | XL, ICR1H | ; пересчета ТОР | | 84 |
| st | X, t0 | ; равного | | 85 |
| ldi | t0, 0xFF | ; ТОР=2^(N-1), где | | 86 |
| ldi | XL, ICR1L | ; N=11, т.е. | | 87 |
| st | X, t0 | ; ТОР=2047 | | ;--Инициализация ЖКИ | | 88 | initLCD_1: | ldi | t0,$20 | ;4-битный интерфейс, 1-строка, шрифт-5х7 точек | | 89 | initLCD_2: | ldi | t0,$0C | ;включить дисплей, выключить курсор | | 90 | initLCD_3: | ldi | t0,$01 | ;очистить дисплей и установить курсор в начальную позицию | | 91 |
| nop | | | | 92 |
| ret | | | | |
Висновок В данній курсовій работі була розроблена система управління та керування об'єктом на базі одно кристального RISK AVR-мікроконтролера ATMega1281V-8AU , що складається з: - Системи аналогового вводу інформації; - Системи аналогового виводу інформації; - Системи дискретного вводу інформації; - Системи дискретного виводу інформації; - Клавіатура; - Індикація; - Зовнішній ОЗП; - Інтерфейс зв'язку з ПЕОМ. Список використаних джерел 1. Евстифеев А.В. Микроконтроллеры AVR семейства Mega. Руководство пользователя. - М.: Издательский дом «Додэка-ХХІ», 2007. - 592с.: ил. 2. Голубцов М.С., Кириченкова А.В. Микроконтроллеры AVR: от простого к сложному. Изд.2-е, испр. и доп. - М.: СОЛОН-Пресс, 2004. - 304с. 3. Трамперт В. Измерение, управление и регулирование с помощью AVR микроконтроллеров.: Пер. с нем. - К.: «МК-Пресс», 2006. - 208с. 4. Микропроцессоры: В 3 кн. Кн. 2. Средства сопряжения. Контролирующие и информационно-управляющие системы: Учеб. для втузов/В.Д. Вернер, Н.В. Воробьев, А.В. Горячев и др.; Под. ред. Л.Н. Преснухина. - М.: Высш. шк., 1986. -383 с.: ил. 5. http://atmel.ru/Articles/Atmel17.htm 6. http://tehdoka.ru/BP/mst.php 7. http://www.gaw.ru/html.cgi/txt/interface/rs232/
Страницы: 1, 2
|
|