Разработка универсального шестиканального термометра
Министерство
образования науки РФ
Государственное
образовательное учреждение высшего профессионального образования
"Уральский
государственный технический университет–УПИ
имени
первого Президента России Б.Н. Ельцина"
Радиотехнический
институт–РТФ
Кафедра
теоретических основ радиотехники
Разработка
универсального шестиканального термометра
Отчет по
производственной практике
Руководитель
Копылов А.Е.
Студент
Хазиева М.Д.
Группа
Р-37071
Екатеринбург
2010
СОДЕРЖАНИЕ
ЗАДАНИЕ
НА ПРАКТИКУ
РЕФЕРАТ
УСЛОВНЫЕ
ОБОЗНАЧЕНИЯ, СИМВОЛЫ И СОКРАЩЕНИЯ
ВВЕДЕНИЕ
1. ОБЩАЯ ХАРАКТЕРИСТИКА ПРЕДПРИЯТИЯ
2. ПРАКТИЧЕСКАЯ
РАБОТА
2.1
Анализ
задания на практику
2.2
Описание
известных методов решения
2.3
Используемые методы
и алгоритмы решения задачи
3. ЭКСПЕРИМЕНТАЛЬНЫЕ ИССЛЕДОВАНИЯ
3.1
Цель и
методика проведения эксперимента
3.2
Анализ
полученных результатов и оценка их достоверности
ЗАКЛЮЧЕНИЕ
БИБЛИОГРАФИЧЕСКИЙ
СПИСОК
ПРИЛОЖЕНИЕ
1. Электрическая
схема
ПРИЛОЖЕНИЕ
2. Текст программы-19
ПРИЛОЖЕНИЕ
3. Копия экрана
ПРИЛОЖЕНИЕ
4. Реальная
модель устройства
ЗАДАНИЕ
НА ПРАКТИКУ.
Разработать
прибор, реализующий работу универсального шестиканального термометра(измерителя
температуры),передающий данные параметры(температуры)через последовательный
интерфейс RS-232.
Разработка
включает в себя: принципиальную и электрическую схемы, создание программы для
данного микроконтроллера и реальную модель универсального шестиканального
термометра.
РЕФЕРАТ
Отчет по
практике 21 с., 2 ч., 2 источника, 4 прил.
Разработка
универсального шестиканального термометра.
Объектом
разработки является измеритель температуры различных радиоэлектронных
устройств.
Цель работы:
разработка принципа действия, структурной и принципиальной электрической схем
прибора, измеряющего температуру в электронных блоках различного
функционального назначения, по данным температуры делается вывод о
термоустойчивости электронных приборов.
Результаты
работы: проведен обзор методов измерения температур, выбран метод, наиболее
удобный для применения в малогабаритном переносном приборе.
Основные
конструктивные, технологические и эксплуатационные характеристики: создан
экспериментальный образец , обладающий чувствительностью -40 °C до +100°C и
точностью в 1°C.
Степень
внедрения: прибор использован при выполнении проверки работы блока управления
шаговым двигателем ,фирмы "Интенсоник+" .
Итоги внедрения
результатов работы: подтверждены потребительские и эксплуатационные
характеристики прибора.
Область
применения - исследование температурного режима как в окружающей среде ,так и в
различных радиоэлектронных устройствах.
Экономическая
эффективность или значимость работы: созданный прибор позволяет решать задачи
измерения и мониторинга температуры в шести различных точках.
Прогнозные
предположения о развитии объекта исследования: введение дополнительного
индикатора отображения температуры.
\
УСЛОВНЫЕ ОБОЗНАЧЕНИЯ, СИМВОЛЫ И СОКРАЩЕНИЯ
РЭУ - радиоэлектронные
устройства
UART – универсальный
асинхронный приемопередатчик
АЦП – аналого-цифровой
преобразователь
RS-232 —
интерфейс передачи информации между двумя устройствами на расстоянии до 15
метров. Информация передается по проводам с уровнями сигналов, отличающимися от
стандартных 5 В, для обеспечения большей устойчивости к помехам. Асинхронная
передача данных осуществляется с установленной скоростью при синхронизации
уровнем сигнала стартового импульса.
ВВЕДЕНИЕ
Для любого
современного предприятия ,специализирующегося на производстве и проектировании
радиоэлектронных приборов, необходимо наличие стандартной аппаратуры,
упрощающей само проектирование, создание или проверку устройств.
К одному из
таких аппаратов, можно причислить шестиканальный измеритель температуры.
Создание
шестиканального измерителя температуры значительно облегчает задачу проверки
работы любого проектируемого РЭУ, выявления ошибок или нахождения своего рода
перегрузки .
1. ОБЩАЯ ХАРАКТЕРИСТИКА
ПРЕДПРИЯТИЯ
Практика была
пройдена на предприятии ООО"Интенсоник+",специализирующемся на
проектировании и производстве РЭУ.
ООО
"Интенсоник+" является производителем оборудования для нефтегазовой
промышленности.
Основные
направления деятельности предприятия – разработка и изготовление аппаратуры
новых технологий для нефтегазовой промышленности.
Приоритетными
направлениями являются технологии индукционного нагрева скважин и устьевого
оборудования.
Кроме этого
предприятие производит безроликовые датчики натяжения геофизического кабеля и
источники питания для основного парка геофизических скважинных приборов.
2. ПРАКТИЧЕСКАЯ
РАБОТА
2.1 Анализ задания на практику
В качестве
задания на практику предложено спроектировать шестиканальный измеритель
температуры, с выводом данных через последовательный интерфейс RS-232 .
Исходя из
наличия на складах предприятия, были выбраны следующие компоненты для
реализации задания: микроконтроллер Atmel AVR Mega8(частота 4МГц),
микросхема преобразования логических уровней MAX232, термодатчики LM335.
Для отладки
приема данных на верхнем уровне использовалась программа Microsoft Hyper Terminal версия 5.1. Для
написания программы для микроконтроллера использовалась лицензионная копия
программы IAR Embedded Workbench 2.31E
компании IAR Systems, которая на данный момент является наилучшим
программным решением для написания C/C++ кода на микроконтроллеры.
2.2 Описание известных методов
решения
Стандартным
решением для такого рода задачи является разработка устройства, содержащего
простейшее семейство микроконтроллеров, с поддержкой передачи данных по UART,
АЦП, и микросхему преобразования логических уровней (с 5 на 15 V),общеизвестной
и широко используемой платой является MAX232, которая имеет множество аналогов.
Существует
множество видов термодатчиков , различающихся по таким параметрам, как
точность, диапазон измерений, стоимость и по сложности исполнения. Мы выбрали
термодатчик LM335, так как он имеется в большом количестве на складе и
удовлетворяет всем нашим требованиям.
2.3 Используемые
методы и алгоритмы решения задачи
Решение задачи
состоит из нескольких пунктов :
2. настройка АЦП.
1)
внутренний
источник напряжения 5V
2)
прерывания
от компаратора
3)
коэффициент
деления 128(частота 31 250 ГЦ)
4)
непрерывное
преобразование
3. настройка UART
1)
асинхронный
режим
2)
прерывания
по передаче вкл.
3)
скорость
обмена 9600 Бод(бит в секунду)
4. прерывания по
таймеру, формирование задержки 500мс.
5. прерывание АЦП
от компаратора
6. формирование
буфера передачи данных (3 байта – 1-й байт- №канала, 2-й, 3-й байт - данные),
отправка буфера передачи данных.
3. ЭКСПЕРИМЕНТАЛЬНЫЕ ИССЛЕДОВАНИЯ
3.1 Цель и методика
проведения эксперимента
После того ,как была разработана
электрическая схема и написана программа ,необходимо проверить правильность
выполненного задания .Для этого написанный код записываем(прошиваем) в
микроконтроллер ,находящийся на реальной модели устройства.
Запустив разработанное устройство
,оценим правильность его работы.
3.2 Анализ
полученных результатов и оценка их достоверности
Запустив
шестиканальный измеритель температуры ,мы убедились в правильности написания
программы. Программа удовлетворяет заданным требованиям ,а именно:
§ выводит данные
температуры на экран ,в очередном порядке номер канала и температуру и
,измеренную данным каналом.
§ измерения
производятся с интервалом в 5 секунд.
ЗАКЛЮЧЕНИЕ
В процессе
прохождения производственной практики были получены следующие навыки:
1.
эксплуатация
и обслуживания радиоэлектронных систем
2.
изучение
этапов проектирования и особенностей разработки радиоэлектронных устройств
3.
проектирования
реального прибора , математическое моделирование структурной схемы измерителя,
макетирование и экспериментальное исследование отдельных узлов измерителя
4.
опыт
работы на предприятии .
Можно сделать
вывод о том ,что цели и задачи производственной практики были выполнены.
Успешному прохождению производственной практики способствовало доброжелательное
отношение руководителей предприятия и помощь с их стороны.
Библиографический список
1.
Микроконтроллеры
AVR: от простого к сложному. Голубцов М.С., Кириченкова А.В.
Москва,СОЛОН-Пресс,2004.
2.
Микроконтроллеры
AVR семейств Tiny и Mega фирмы "ATMEL".Евстинеев А.В.
Издательский
дом "Додэка-XXI",2000.
ПРИЛОЖЕНИЕ 1.Электрическая
схема
ПРИЛОЖЕНИЕ 2. Текст программы
#include <iom8.h>
#include
<ina90.h>
#include
"term.h"
unsigned
char count_time_gen=10; //счетчик времени работы генератора
unsigned
char count_time_ind=10; // счетник времени индикации
unsigned char
num_ch=6; // счетчик каналов от 0 до MAX_CH-1
int ampl=0; //
амплитуда с выхода АЦП
unsigned
char strobe_count=0; // счетчик строба измерения
unsigned
char count_50=1; // счетчик 500
ms
unsigned
char t0_ext=1; // дополнительный делитель для
TCNT0
unsigned
char bufer_led[bufer_led_size]; // 0 - led`s 1-4 BCD
char txd_bufer[txd_buf_len]={'
',TAB,' ',' ',' ',CR,LF,0 }; // буфер передачи
// N :
- 2 4
char txd_index=txd_buf_len-1;
#define
dis_measure_ok 1 // 0x0002 // измерение завершилось 1
#define
dis_measure 2 // 0x0004 // запущено измерение(счет) 2
unsigned
char dis_flag=(1<<dis_measure); // флаги диспетчера
#define
adc_start {ADCSR|=(1<<ADSC);}
__flash
const unsigned char table_ascii[]={'0','1', '2', '3', '4', '5', '6', '7',
'8','9', 'E', 'r', 'o', ' ', ' ', ' '};
void
d2_bcd(long val);
void
measure_a(void);
void
display_parm(void);
void
count_time_gen_init(void);
void
count_time_ind_init(void);
void
fotm_trx(void);
void
transmit(void);
C_task
void main(void)
{//
main
count_50=count_50_init;
// init count 500 ms
// инициализация АЦП
ADMUX=(1<<REFS0);//
Vref=VACC
ADCSR=((1<<ADEN)|(1<<ADSC)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0));
// инициализация UART
UBRRH=ubr19200>>8;
UBRRL=ubr19200;
UCSRC = 0;//
Async. mode, 8N1
// num_ch=6; //
иниц счетчика каналов
//
init and start TCNT0
t0_ext=t0_ext_init;
TCNT0=t0_init;
TIMSK
|= ((1<<TOIE0)|(1<<TOIE1)); // irq T0, T1 enable
_SEI();
// global irq enable
TCCR0=((1<<CS01)|(1<<CS00));
// start TCNT0 CLK/64(частота тактирования таймеров)
_WDR(); //сбросить
сторожевик
WDTCR|=((1<<WDE)|(1<<WDP0)|(1<<WDP1));//включить
сторожевик 130 ms
for(;;);
// LOOP FOREVER
}//
end of main
#pragma
vector=ADC_vect
__interrupt
void ADC_proc (void)
{
// АЦП закнчил
преобразование
_SEI();
_WDR(); // сброс
сторожевого таймера
ampl=ADC;
dis_flag
|= (1<<dis_measure_ok);
//set_mux;
}
#pragma
vector=TIMER0_OVF_vect
__interrupt
void ovf0_proc (void)
{
//диспетчер
TCNT0=t0_init;
// перезапуск
TCNT0
_SEI(); //
разрешить сложенные прерывания
t0_ext-=1;
if (!t0_ext)
{// счетчик
досчитал
t0_ext=t0_ext_init;
//перезапуск дополнительного делителя
//отработка 10
ms
// счетчик на
500 ms
count_50 -=1;
_WDR(); //сбросить
сторожевик
if(!count_50){//
äîñ÷èòàë
count_50=count_50_init;
// отработка 500
ms
if(count_time_ind)
count_time_ind--;
if(count_time_gen)
count_time_gen--;
// конец отработки 500
ms
} //
end if(!count_50
// измерение и
обработка его результатов
if
(!count_time_ind)
{
if
(!count_time_gen)
{
count_time_gen_init();
if(++num_ch>=MAX_CH){
num_ch=0;} // сканирование каналов
}
measure_a(); //
измерять температуру пока не будет измерено
if
(dis_flag & (1<<dis_measure_ok)){// измерение окончено
//расчет
очередного измерения
ampl=a_term*(ampl+b_term);
//расчитать текущий параметр Y=a*(f+b)
display_parm();
// формирование знакомест
fotm_trx(); //
формирование буфера для передачи
count_time_ind_init();
// инициализация счетчика иедикации
dis_flag &=
~(1<<dis_measure_ok); // по окончинии индикации возможно изменение
} //
end if измерение окончено
}//end
if (!count_time_ind)
transmit(); //
выдача в COM PORT содержимого индикатора
}//
end of счетчик досчитал
(t0_ext)
}//
end of ovf0_proc
void
fotm_trx(void)
{ //
формирование буфера передачи
txd_bufer[0]=table_ascii[bufer_led[1]];
// номер канала
txd_bufer[2]=table_ascii[bufer_led[2]];
// параметр
txd_bufer[3]=table_ascii[bufer_led[3]];
//параметр
txd_index=0;
void
transmit(void)
{
if
(txd_bufer[txd_index]){
UDR=txd_bufer[txd_index++];
}
}
void
measure_a(void)
{
ADMUX=num_ch;
// номер канала в мультиплексор АЦП
adc_start;
}
void
display_parm(void)
{// отображение
на терминале значения параметра
bufer_led[1]=num_ch+1;
// выдать номер канала (1...6 вместо 0...5)
d2_bcd(ampl);//вызов
программы обработки числа
}//
end of display_parm
void
d2_bcd(long val)
{//
2-10
bufer_led[2]=val/10;
if
(!bufer_led[2]) bufer_led[2]=blank_symb;
bufer_led[3]=val%10;
}//
end of d2_bcd
term.h
void
count_time_gen_init(void){
count_time_gen=time_gen;
}
void
count_time_ind_init(void){
count_time_ind=time_ind;
}
#define
tcnt1_freq 4000000 // частота тактирования таймера
#define
bufer_led_size 5 // длина буфера индикатора
#define
blank_symb 0x0F // символ гашения
#define
txd_buf_len 8 // äдлина буфера передачи
RS232
#define CR 13 //
перевод строки
#define LF 10 //
в начало строки
#define TAB 9 //
табуляция
#define ubr19200
12 // 19200 бит/с при 4МГц кварце
#define t0_init (256-125)
// для загрузки в таймер диспетчера
#define
t0_ext_init 5 // 125*5=625
#define
count_50_init 50 // для загрузки в счетчик 500
ms
#define
MAX_CH 6
#define
a_term 0.4883//коэффициент пересчета
#define
b_term -559// коэффициент пересчета
#define
time_gen 10 //5 сек время переключения каналов
#define
time_ind 10 //5 сек время индикации
Описание
программы
Работа программы
основывается на решении следующих задач:
1. общая настройка
портов ввода/вывода, таймеров, конфигурация и т.д.
2. настройка АЦП.
1) внутренний
источник напряжения 5V
2) прерывания от
компаратора
3) коэффициент
деления 128(частота 31 250 ГЦ)
4) непрерывное
преобразование
3. настройка UART
1)
асинхронный
режим
2)
прерывания
по передаче вкл.
3)
скорость
обмена 9600 Бод(бит в секунду)
4. прерывания по
таймеру, формирование задержки 500мс.
5. прерывание АЦП
от компаратора
6. формирование
буфера передачи данных (3 байта – 1-й байт- №канала, 2-й, 3-й байт - данные),
отправка буфера передачи данных
Содержимое
буфера передачи данных отображается на экране ,с помощью программы Hiper
Terminal.
Описание применения программы.
Программа
позволяет обрабатывать данные ,полученные с термодатчика и выводить их на экран
через последовательный RS-232. В очередном порядке выводится номер канала и температура
и ,измеренную данным каналом.
ПРИЛОЖЕНИЕ 3
Копия экрана
ПРИЛОЖЕНИЕ 4
Реальная модель устройства