Создание АЦП с последовательным выводом информации
Создание рабочего модуля аналого-цифрового преобразователя с минимальным количеством микросхем на основе микроконтроллера ATmega8L. Описание блок-схемы АЦП. Схема запуска преобразования. Программа микроконтроллера в среде программирования CodeVision.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 04.10.2013 |
Размер файла | 1,2 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Техническое задание
Амплитуда импульсов запуска, В |
-5 |
|
Длительность импульсов запуска, мкс |
2.0 |
|
Диапазон изменения входного сигнала, В |
-2 до +2 |
|
Длина выходного слова, бит |
9 |
|
Частота выходных импульсов синхронизации, МГц |
0.01 |
|
Уровни выходных сигналов |
КМОП+9В |
Целью курсовой работы было создание рабочего модуля АЦП с минимальным количеством микросхем. Кроме того в связи с широким распространением современных микропроцессорных систем полезно уметь работать с этой элементной базой.
АЦП было решено построить на основе микроконтроллера ATmega8L производства фирмы Atmel.
1. Описание блок-схемы АЦП
Базовая часть этой схемы - микроконтроллер ATmega8L.
Согласно техническому заданию диапазон входного сигнала лежит в пределах от -2 В до +2 В. Диапазон же входного сигнала АЦП от 0 до Vref (в данном случае Vref=4 В).
В связи с этим входной сигал сначала сдвигается входным сумматором на +2 В, а уже после поступает на несимметричный вход АЦП (PC0).
Импульс запуска поступает на вывод PB0 (весь порт настроен на ввод) и запускает преобразование.
По техническому заданию импульс запуска имеет амплитуду -5 В, и длительность 2 мкс. Следовательно, необходимо инвертировать сигнал запуска.
После завершения преобразования, результат измерения выводится в виде последовательных импульсов через вывод PD0 (весь порт настроен на вывод).
Так как выходные сигналы у используемого нами АЦП не превышают уровня +5 В, а по техническому заданию требуется, чтобы уровень логической единицы составлял +9 В, то на выходе АЦП нужно будет поставить компаратор, который и будет служить формирователем нужного уровня сигнала.
преобразователь микроконтроллер программа
2. Микроконтроллер ATmega8L
В состав модели ATmega8L входит модуль 10-разрядного АЦП последовательного приближения со следующими параметрами:
· Абсолютная погрешность: +/- 2 МЗР
· Интегральная нелинейность: +/- 0,5 МЗР
· Быстродействие: до 15 тыс. выборок/с.
На входе модуля АЦП имеется 8-канальный аналоговый мультиплексор. У выбранного мной микроконтроллера, выпускаемого в корпусе DIP-32, есть только 6 каналов преобразования, кроме того два канала (ADC4 и ADC5) являются 8-разрядными.
Для наших целей понадобиться только один 10-разрядный канал преобразования.
В качестве источника опорного напряжения для АЦП может использоваться как напряжение питания микроконтроллера, так и внутренний либо внешний источник опорного напряжения.
В процессе работы АЦП может функционировать в двух режимах:
· Режим одиночного преобразования, когда запуск каждого преобразования инициируется пользователем.
· Режим непрерывного преобразования, когда запуск преобразований выполняется непрерывно через определённые промежутки времени.
Для управления модуля АЦП используются несколько следующих регистров:
§ ADCSRA - регистр управления и состояния.
§ ADMUX - регистр управления мультиплексором и выбор источника опорного напряжения.
§ SFIOR - регистр специальных функций.
(Для решения поставленной задачи данный регистр не использовался.)
Табл. №1. Разряды регистра ADCSRA.
Разряд |
Название |
Назначение |
|
7 |
ADEN |
Разрешение АЦП (1-вкл, 0-выкл) |
|
6 |
ADSC |
Запуск преобразования (1- начать преобр-е) |
|
5 |
ADFR |
Выбор режима АЦП |
|
4 |
ADIF |
Флаг прерывания от компаратора |
|
3 |
ADIE |
Разрешение прерывания от компаратора |
|
2…0 |
ADPS2:ADPS0 |
Выбор частоты преобразования |
Регистр ADCSRA = 0b10001101 (0x8D) .
ADEN=1, АЦП - включен.
ADSC=0, Преобразование начинается с установкой этого бита. После завершения преобразования этот бит аппаратно сбрасывается в ноль.
ADFR=0, Режим одиночного преобразования. Каждое преобразования запускается пользователем.
ADIF=0, После завершения преобразования этот разряд устанавливается в 1-ку и генерирует запрос на прерывание.
ADIE=1, Разрешение прерывание от компаратора.
ADPS2:ADPS0 =101, Частота преобразования 125 кГц.
Для формирования тактовой частоты модуля АЦП в нем имеется отдельный определитель. Коэффициент деления и соответственно длительность преобразования определяется состоянием разрядов ADPS2…ADPS0.
ADPS2 |
ADPS1 |
ADPS0 |
Коэффициент деления |
|
0 |
0 |
0 |
2 |
|
0 |
0 |
1 |
2 |
|
0 |
1 |
0 |
4 |
|
0 |
1 |
1 |
8 |
|
1 |
0 |
0 |
16 |
|
1 |
0 |
1 |
32 |
|
1 |
1 |
0 |
64 |
|
1 |
1 |
1 |
128 |
Наибольшая точность преобразования достигается, если тактовая частота АЦП находится в пределах от 50…200 кГц.
В нашем случае тактовая частота МК выбрана 4 МГц, а тактовая частота АЦП - 125 кГц.
Табл. №2. Разряды регистра ADMUX.
Разряд |
Название |
Описание |
|
7, 6 |
REFS1:REFS2 |
Выбор источника опорного напряжения |
|
5 |
ADLAR |
Выравнивание результата преобразования |
|
4 |
MUX4 |
В данной модели МК отсутствует |
|
3…0 |
MUX3…MUX0 |
Выбор входного канала |
Для наших нужд вполне достаточно использовать один канал с несимметричным входом- -ADC0.
В данной модели выводы МК, подключенные к входу АЦП, определяются состоянием разрядов MUX3…MUX0 регистра ADMUX согласно таблице:
MUX3…MUX0 |
Несимметричный вход |
|
0000 |
ADC0 |
|
0001 |
ADC1 |
|
0010 |
ADC2 |
|
0011 |
ADC3 |
|
0100 |
ADC4 |
|
0101 |
ADC5 |
|
0110 |
ADC6 |
|
0111 |
ADC7 |
|
1000…1101 |
Зарезервировано |
|
1110 |
1.22 В |
|
1111 |
0 В (GND) |
В данном случае значение регистров MUX3…MUX0 = 0000 .
Согласно требованиям технического задания диапазон изменения входного сигнала составляет от -2 В до +2 В. Диапазон модуля АЦП ATmega 8 составляет от 0 до Vref.
Vref=4 В. В качестве источника Vref , как уже говорилось выше, можно использовать как AVcc так и внешний или внутренний ИОН.
Выбор конкретного источника питания зависит от состояний старших разрядов REFS1:REFS0 регистра ADMUX.
REFS1 |
REFS0 |
Источник опорного напряжения |
|
0 |
0 |
Внешний ИОН, подключенный к выводу AREF; внутренний ИОН отключен |
|
0 |
1 |
Напряжение питания AVcc |
|
1 |
0 |
Зарезервировано |
|
1 |
1 |
Внутренний ИОН напряжением 2.56 В, подключенный к выводу AREF. |
Регистр ADMUX = 0b00000000 (0x00).
Входной сумматор
Сумматор на входе обеспечивает нужный диапазон входного сигнала на АЦП от 0 до 4 В.
Схема выполнена на основе операционного усилителя OPA404AG.
R1=R3=R4=(R2+RV1)=R2I = 10 кОм.
§ UI - Ucc =R4*(Uвх - Ucc)/(R4 + R3)= (Uвх - Ucc)/2 ;
§ UI= (Uвх + Ucc)/2 ;
Uвых=R1* UI /R2I+ UI
Коэффициент усиления K= Uвых /UI=2
Напряжение опоры сумматора (Ucc=+2 В) формируется делителем и подается на сумматор через повторитель, реализованный на основе аналогичного операционного усилителя OPA404AG.
3. Компаратор
Компаратор на выходе обеспечивает нужный уровень выходного сигнала +9 В.
Компаратор на выходе формирует нужный уровень логического сигнала +9 В.
Для реализации данного требования технического задания был выбран компаратор LM139 фирмы PHILIPS.
Данный компаратор как раз применяется для сопряжения ТТЛ и КМОП схем.
Возможно однополярное питание от 2 до 32 В.В
4. Схема запуска преобразования
По техническому заданию импульс запуска преобразования имеет амплитуду -5 В и длительность 2 мкс.
Соответственно стояла задача инвертировать сигнал.
В стационарном режиме транзистор 2N2369 (PHILIPS) закрыт.
В момент поступления отрицательного импульса транзистор открывается.
UR10= -0.7+5=4.3 В ; IR10= UR10/R10=4.3/470=9.1 (мА).
Соответственно потенциал коллектора падает, формируя сигнал логического нуля на инверторе К155ЛН1.Логическаяединица с выхода инвертора поступает на PB.0.
Питание
Для обеспечения работоспособности представленной схемы требуются следующие номиналы напряжений:
+15 В - Питание операционных усилителей.
+9 В - Питание компаратора.
+5 В - Питание логики, самого микроконтроллера и транзисторной схемы инвертирования импульсов запуска преобразования.
Напряжение питания компаратора обеспечивается источником питания +15 В.
Напряжение +5 В удобнее организовать от отдельного источника.
Для обеспечения требуемых точных напряжений:
+4 В - Опорное напряжение для АЦП.
+2 В - Опорное напряжение для входного сумматора.
Была выбрана микросхема ИОН REF5040 производства фирмы Texas Instruments.
С помощью делителя выставляется точное значение напряжения +4 В. Ток делителя не должен превышать 10 мА, так как это максимальный ток нагрузки REF5040.Ток делителя в схеме выбран порядка 5 мА - это половина выходного диапазона вполне подходит для стабильной работы ИОН и этого тока вполне хватает для потребителей: AVcc и вход ОУ.
Входное напряжение Vin для микросхемы REF5040 лежит в диапазоне 4,296...18 В, так что можно запитывать ИОН от основного источника +15 В.
Уже с этого точного значения формируется опорное напряжение сумматора +2 В.
Делители отгорожены друг от друга повторителем на ОУ OPA404AG.
Требования к источнику питания +15 В:
Непосредственно то источника питания +15 В питаются только операционные усилители, микросхема ИОН, а также делитель напряжения формирующий напряжения питания компаратора.
§ Максимальный ток потребления ОУ OPA404AG - 10 мА *4.
§ Ток потребления ИОН REF5040 - 1 мА
§ Ток делителя на +9 В - 0.7 мА
Источник +15 В должен обеспечить ток нагрузки порядка 45 мА.
Требования к источнику питания +5 В:
От источника питания +5 В питаются микроконтроллер, инвертор К155ЛН1 и схема инвертирования импульсов запуска.
§ Ток потребления микроконтроллера в активном режиме - 3.6 мА.
§ Ток потребления К155ЛН1 - 33 мА (при низком уровне выходного сигнала).
§ Максимальный ток потребления схемы инвертирования импульсов запуска - 9.1 мА.
Источник +5 В должен обеспечить ток нагрузки порядка 46 мА.
5. Программа микроконтроллера
Программа микроконтроллера написана в среде программирования CodeVision и протестирована в программе эмуляции Proteus 7.
Текст программы:
/*****************************************************
Project : ADC Kyrkin 3
Version : 1.2
Date : 24.04.2009
Author : Гавриленко Д.Е.
Company : Home
Chip type : ATmega8
Program type : Application
Clock frequency : 4,000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*****************************************************/
#include <mega8.h>
#include <delay.h>
#include <stdio.h>
#define ADC_VREF_TYPE 0x00
unsigned char start_flag=0; // Переменная сигнала старта преобразования.
unsigned int adc_data; // Переменная данных.
// ADC interrupt service routine
interrupt [ADC_INT] void adc_isr(void)
{
adc_data=ADCW ; //Запись результата преобразования в переменную.
start_flag=2; //Установка начала вывода результатов измерений через ножку PORTD.0 в основном цикле.
//ADCSRA=0x8D; // Установка в 0 флага прерывания от компаратора(бит ADIF).
}
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTD=0x00;
DDRD=0xFF;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC Clock frequency: 125,000 kHz
// ADC Voltage Reference: AVCC pin
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x8D;
PORTD.5=1;
// Global enable interrupts
#asm("sei")
while (1)
{
int i;
if (PINB==1) //Если на PB.0 приходит импульс начала измерений.
{
ADCSRA=0xCD; //Установка в 1-ку бита ADSC.Запуск преобразования.
}
if (start_flag==2) //Вы полнение условия обработчика прерываний.
{
for (i=1;i<=9;i++)
{
PORTD.0=(adc_data>>i)&1; //Отсекли младший байт.Выводим поочередно результат.
PORTD.5=~PORTD.5;
delay_us(10);
} start_flag=0; //Сбрасываем "start_flag" в ноль.
}
if (start_flag==0) PORTD=0;
}
}
Спецификация
Элемент |
Название |
Параметры |
Номинал |
Количество |
|
R1,R3,R4,R6 |
C2-29В-0.25T |
P=0.25, Допуск 0.1 % |
10 кОм |
4 |
|
R2, R5 |
C2-29В-0.25T |
P=0.25, Допуск 0.1 % |
9.1 кОм |
2 |
|
R7 |
C2-29В-0.25T |
P=0.25, Допуск 0.1 % |
750 Ом |
1 |
|
R8 |
C2-29В-0.25T |
P=0.25, Допуск 0.1 % |
20 Ом |
1 |
|
R9 |
C2-29В-0.25T |
P=0.25, Допуск 0.1 % |
100 Ом |
1 |
|
R10 |
МЛТ |
Р = 0,25 Вт; ТКС 600 х 10-6, 1/°С; ряд Е24; допуск 10% |
1 кОм |
1 |
|
R11 |
МЛТ |
Р = 0,25 Вт; ТКС 600 х 10-6, 1/°С; ряд Е24; допуск 10% |
470 Ом |
1 |
|
R12 |
C2-29В-0.25T |
P=0.25, Допуск 0.1 % |
6.8 кОм |
1 |
|
R13 |
C2-29В-0.25T |
P=0.25, Допуск 0.1 % |
1.2 кОм |
1 |
|
R14 |
C2-29В-0.25T |
P=0.25, Допуск 0.1 % |
12 кОм |
1 |
|
RV1, RV2 |
3296W-1-202 |
Р = 0,5 Вт; ряд Е24; допуск 20% |
2 кОм |
2 |
|
RV3 |
3296W-1-201 |
Р = 0,5 Вт; ряд Е24; допуск 20% |
200 Ом |
1 |
|
U1 |
ATmega8L |
1 |
|||
U2:(A,B,C,D) |
OPA404AG |
4 (1 корпус) |
|||
U3:A |
LM139 |
1 |
|||
U4:1 |
К155ЛН1 |
1 |
|||
Q1 |
2N2369 |
1 |
|||
С1, C2, C5 |
0.2 мкФ x 8 В |
3 |
|||
С3, C4 |
50 мкФ x 8 D |
2 |
Временные диаграммы:
1. Сигнал с выхода АЦП Uвх=0.664 В.
2. Эталонный сигнал - сигнал инвертировался каждый раз при выполнении цикла.
3.Сигнал запуска преобразования.
4.Выходной сигнал компаратора. Уровень логической единицы +9 В.
Список литературы
1) П. Хоровиц, У. Хил, Искусство схемотехники, Т1, Т2, Москва, 1986.
2) У. Титце, К. Шенк, Полупроводниковая схемотехника, Москва, 1982.
3) А.В. Евстифеев, Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL, Москва 2007.
4) Ю. Ревич, Практическое программирование микроконтроллеров ATMEL AVR на языке ассемблера, Санкт-Петербург 2008.
5) Б.В. Тарабрин, C.В. Якубовский, Справочник по интегральным микросхемам, Москва, 1981.
Размещено на Allbest.ru
Подобные документы
Создание приемника команд RC5 для персонального компьютера на основе микроконтроллера ATmega8. Особенности написания файла прошивки и симулирование устройства. Порядок выполнения сборки собственной схемы и характеристика полученного микроконтроллера.
курсовая работа [2,0 M], добавлен 24.11.2013Общие сведения о микроконтроллерах AVR, их основные параметры. Функции термометра, реализованного на микроконтроллере AVR. Порядок программирования микроконтроллера с использованием программы на языке С. Передача данных сом-порт, вывод значений на ЖКИ.
курсовая работа [35,8 K], добавлен 08.04.2010Структурная схема микроконтроллера, процесс разработки принципиальной схемы и программного обеспечения. Конфигурирование регистров аналого-цифрового преобразователя. Код программы на языке Assembler, конфигурирование регистров внешних прерываний.
курсовая работа [267,5 K], добавлен 08.06.2019Назначение и применение микроконтроллеров - интегральных микросхем, предназначенных для управления электронными схемами. Описание способа адресации. Разработка программы, описание электрической и структурной схемы разрабатываемого микроконтроллера.
курсовая работа [177,6 K], добавлен 30.06.2014Структурная схема системы управления. Характеристики первичных датчиков, электронасоса, индикатора, микроконтроллера, системы прерываний. Работа регистров и аналого-цифрового преобразователя. Алгоритм работы микропроцессора - управляющего устройства.
курсовая работа [2,2 M], добавлен 06.02.2013Проектирование программного модуля в среде программирования Borland Delphi 7.0. Схемы алгоритмов решения задач по темам "Символьные переменные и строки", "Массивы", "Работа с файлами", "Создание анимации". Реализация программного модуля, код программы.
отчет по практике [961,6 K], добавлен 21.04.2012Описание структуры микроконтроллера AT90mega103 и интегрированной системы его программирования на языке Ассемблер. Создание нового файла и его сохранение. Инициализация микропроцессорной системы командой Ran/Program/Reset/, описание шагов программы.
лабораторная работа [330,6 K], добавлен 26.06.2013Проектирование схемы, выполненной на основе однокристального микроконтроллера 51 серии для получения с 8 аналоговых входов информации о изменении их состояния с течением времени. Параметры устройства, описание элементов схемы, листинг программы.
курсовая работа [627,2 K], добавлен 24.12.2012Описание и принцип действия программы-отладчика микроконтроллера I8051 (К1816ВЕ51), предназначенной для программирования микроконтроллера на уровне языка ассемблера. Компиляция программы в объектный код и специфика тестирования разработанной программы.
реферат [21,1 K], добавлен 04.12.2010Формирование тактовых импульсов микроконтроллера. Схемы входных и выходных устройств, источника напряжения питания. Проектирование модуля инициализации микроконтроллера, процедур обработки прерываний, процедур вывода информации и процедуры Main.
курсовая работа [273,1 K], добавлен 19.12.2010