Лабораторная работа 12. Передача данных на ПК
Цель работы:
Дальнейшее ознакомление с работой термистора, а также применение полученных знаний и навыков для создания программы по получению данных о температуре и передача их на ПК, используя Arduino-микроконтроллер.
Теоретическая часть
Терморезисторы изготавливают из различных материалов, температурный коэффициент сопротивления (ТКС) которых достаточно высок (значительно превосходит металлические сплавы и чистые металлы). Непосредственно основной резистивный элемент получают посредством порошковой металлургии, обрабатывая халькогениды, галогениды и оксиды определенных металлов, придавая им различные формы, напри- мер, форму дисков или стержней различных размеров, больших шайб, средних трубок, тонких пластинок, маленьких бусинок, размерами от единиц микрон до десятков миллиметров.
Материалами для терморезисторов сегодня служат: смеси поликристаллических оксидов переходных металлов, таких как кобальт, марганец, медь и никель, соединений AIIIBV-типа, а также легированных, стеклообразных полупроводников, таких как кремний и германий, и некоторых других веществ. Терморезисторы, в целом, можно классифицировать на:
- Низкотемпературного класса (рабочая температура ниже 170 К);
- Среднетемпературного класса (рабочая температура от 170 К до 510 К);
- Высокотемпературного класса (рабочая температура от 570 К и выше);
- Отдельный класс высокотемпературных (рабочая температура от 900 К до 1300 К).
Все эти элементы могут работать при разнообразных климатических внешних условиях и при существенных физических внешних и токовых нагрузках. Однако, в жёстких термоцикличных режимах, со временем меняются их исходные термоэлектрические характеристики, такие как номинальное сопротивление при комнатной температуре и температурный коэффициент сопротивления.
Практическая часть
В данной лабораторной работе необходимо разработать программу, которая будет получать данные о температуре, и передавать их на ПК. Для этого необходимо рассмотреть и использовать функции из набора функций Serial. Чтобы увидеть значение температуры, необходимо в программе Arduino IDE после загрузки скетча на контроллер открыть во вкладке инструменты монитор порта.
Функция Serial.begin
Описание:
Функция Serial.begin инициирует последовательное соединение и задает скорость передачи данных в бит/c (бод). Для обмена данными с компьютером используйте следующие значения: 300, 1 200, 2 400, 4 800,
9 600, 14 400, 19 200, 28 800, 38 400, 57 600 или 115 200. При соединении
через порты входа/выхода 0 и 1 также могут быть использованы другие значения скорости, требуемые устройством, с которым будет осущест- вляться обмен данными. Чаще всего используют 9 600 бит/с. Функция begin не является глобальной, она принадлежит объекту с именем Serial. Объекты, если говорить условно, это - переменные, которые обладают собственными функциями, к которым обращаются через символ точки.
Синтаксис:
Serial.begin(speed)
Параметры:
speed: скорость в бит/c (бод)
Возвращаемые значения:
Нет
Функция Serial.print (Serial.println)
Описание:
Функция Serial.print начинает передачу данные через последователь- ный порт как ASCII текст. Эта функция может принимать различные типы данных. Так целые числа выводятся соответствующими им символами ASCII. Вещественные выводятся с помощью двух ASCII символов, для це- лой и дробной части. Байты передаются как символ с соответствующим номером. Симоволы и строки отсылаются как есть. Функция Serial.println отличается от Serial.print только тем, что после передачи данных будет произведен перенос курсора на следующую строку.
Синтаксис:
Serial.print(val) Serial.print(val, format)
Параметры:
val: данные для передачи через последовательное соединение format: базис для целых чисел или количество знаков после запятой
для вещественных
Возвращаемые значения:
Нет
Схема подключения:
К данной рабочей программе используется следующая схема подключения (Рисунок 12.1). Для реализации проекта потребуются следующие компоненты: макетная плата, резистор на 10 кОм (1 шт), термистор (1 шт) и провода.
Рисунок 12.1. Внешний вид схемы
После сборки схема имеет следующий вид (Рисунок 12.2):
Рисунок 12.2. Внешний вид схемы после сборки
Рабочая программа:
#include <math.h> int minute = 1;
// Параметр конкретного типа термистора (из datasheet):
#define TERMIST_B 3950
#define VIN 5.0 void setup()
{
// Для передачи данных на ПК открывается канал передачи
// данных через USB через последовательный порт.
// Для этого используется команда начала передачи
// с указанием скорости.
Serial.begin(9600);
// Передача заголовка таблицы в текстовом виде,
// печать строки. Символ «\t» является табуляцией.
Serial.println(«Minute\tTemperature»);
}
void loop()
{
float voltage = analogRead(A0) * VIN / 1024.0;
float r1 = voltage / (VIN - voltage);
float temperature = 1./( 1./(TERMIST_B)*log(r1)+1./(25. + 273.) ) - 273;
// Печать минуты и температуры, разделяя их табом.
// println переводит курсор на новую строку Serial.print(minute);
Serial.print("\t"); Serial.println(temperature);
delay(60000);
// Прибавление 1 к счётчику минут
++minute;
}
Список дополнительных вопросов:
- Какими свойствами должны обладать материалы для термисторов?
- Какие материалы используют для изготовления термисторов?
- Как классифицируют терморезисторы?
- Какие у них диапазоны для работы?
- От чего меняются характеристики термисторов?
- Как работает функция Serial.begin?
- На каких скоростях работает функция?
- О чём говорит приставка Serial.?
Список дополнительных задач:
- Изменить программу так, чтобы изменения вводились каждые 30 секунд.
- Изменить программу так, чтобы предыдущие значения температуры также выводились на экран.
- Подключить к плате светодиод, и изменить программу так, чтобы он загорался при наступлении идеальной комнатной температуры, выводил на экран это сообщение.
Center-nav