Министерство образования науки РФ
Государственное образовательное учреждение высшего профессионального образования
"Уральский государственный технический университет–
УПИ
имени первого Президента России Б.Н. Ельцина"
Радиотехнический институт–
РТФ
Кафедра теоретических основ радиотехники
Разработка универсального шестиканального термометра
Отчет по производственной практике
Руководитель Копылов А.Е.
Студент Хазиева М.Д.
Группа Р-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 Используемые методы и алгоритмы решения задачи
Решение задачи состоит из нескольких пунктов :
1. общая настройка портов ввода/вывода, таймеров, конфигурация и т.д.
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;
UCSRB= (1<<TXEN)|(1<<RXEN); //разр прием/перед
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
Реальная модель устройства