Skip to content

Лабораторная работа 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. Внешний вид схемы после сборки

Рабочая программа:

cpp
#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;
}

Список дополнительных вопросов

  1. Какими свойствами должны обладать материалы для термисторов?
  2. Какие материалы используют для изготовления термисторов?
  3. Как классифицируют терморезисторы?
  4. Какие у них диапазоны для работы?
  5. От чего меняются характеристики термисторов?
  6. Как работает функция Serial.begin?
  7. На каких скоростях работает функция?
  8. О чём говорит приставка Serial.?

Список дополнительных задач

  1. Изменить программу так, чтобы изменения вводились каждые 30 секунд.
  2. Изменить программу так, чтобы предыдущие значения температуры также выводились на экран.
  3. Подключить к плате светодиод, и изменить программу так, чтобы он загорался при наступлении идеальной комнатной температуры, выводил на экран это сообщение.