Arduino. Эксперимент 15. Термометр

В этом эксперименте мы измеряем температуру окружающей устройство среды и с помощью шкалы показываем, на сколько она превышает заданный порог.

 

СПИСОК ДЕТАЛЕЙ ДЛЯ ЭКСПЕРИМЕНТА

 

-   1 плата Arduino Uno;

-   1 беспаечная макетная плата;

-   1 светодиодная шкала;

-   1 резистор номиналом 10 кОм;

-   1 термистор;

-   10 резисторов номиналом 220 Ом;

-   14 проводов «папа-папа».

 

ДЕТАЛИ ДЛЯ ДОПОЛНИТЕЛЬНОГО ЗАДАНИЯ

 

-   1 пьезопищалка;

-   еще 2 провода.

 

ПРИНЦИПИАЛЬНАЯ СХЕМА

 

 

СХЕМА НА МАКЕТНОЙ ПЛАТЕ

 

 

ОБРАТИТЕ ВНИМАНИЕ

 

СКЕТЧ

скачать скетч для Arduino IDE
// Огромное количество готового кода уже написано другими людьми
// и хранится в виде отдельных файлов, которые называются
// библиотеками. Для использования кода из библиотеки, её нужно
// подключить (англ. include). Библиотека «math» даёт разные
// математические функции, в том числе функцию логарифма
// (англ. log), которая нам понадобится далее
#include <math.h>
 
#define FIRST_LED_PIN 2
#define LED_COUNT 10
 
// Параметр конкретного типа термистора (из datasheet):
#define TERMIST_B 4300 
 
#define VIN 5.0
 
void setup()
{
 for (int i = 0; i < LED_COUNT; ++i)
 pinMode(i + FIRST_LED_PIN, OUTPUT);
}
 
void loop()
{
 // вычисляем температуру в °С с помощью магической формулы.
 // Используем при этом не целые числа, а вещественные. Их ещё
 // называют числами с плавающей (англ. float) точкой. В
 // выражениях с вещественными числами обязательно нужно явно
 // указывать дробную часть у всех констант. Иначе дробная
 // часть результата будет отброшена
 
 float voltage = analogRead(A0) * VIN / 1023.0;
 float r1 = voltage / (VIN - voltage);
 
 
 float temperature = 1./( 1./(TERMIST_B)*log(r1)+1./(25. + 273.) ) - 273;
 
 for (int i = 0; i < LED_COUNT; ++i) {
 // при 21°С должен гореть один сегмент, при 22°С — два и
 // т.д. Определяем должен ли гореть i-й нехитрым способом
 boolean enableSegment = (temperature >= 21+i);
 digitalWrite(i + FIRST_LED_PIN, enableSegment);
 }
}

 

ПОЯСНЕНИЯ К КОДУ

  • Директивы для подключения библиотек #include включаются в начало программы.
  • В этом эксперименте мы подключаем библиотеку math.h для того, чтобы использовать функцию взятия натурального логарифма x log(x).
  • В переменных типа float можно хранить дробные числа, числа с плавающей точкой.
  • При использовании переменных данного типа имейте в виду:
    • при операциях с их использованием, указывайте нулевую дробную часть у целых констант, как в примере
    • они могут принимать значения от -3.4028235×1038 до 3.4028235×1038,
    • при этом количество значащих цифр может быть 6-7: всех цифр, не только после запятой!
    • точность вычислений с такими данными невелика, у вас могут возникнуть неожиданные ошибки, например, при использовании float в условном операторе. Не полагайтесь на точность!
    • вычисления с float происходят медленнее, чем с целыми числами
  • Показания термистора связаны с температурой нелинейно, поэтому нам приходится использовать такую громоздкую формулу.

 

ВОПРОСЫ ДЛЯ ПРОВЕРКИ СЕБЯ

  1. Как нужно подключить термистор, чтобы получать на Arduino данные о температуре?
  2. Каким образом можно воспользоваться ранее разработанными функциями, не переписывая их в программный код?
  3. Чем неудобно использование чисел с плавающей точкой на Arduino?
  4. Что за выражение стоит справа от = при объявлении булевой переменной enableSegment?

 

ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ

  1. Измените код программы таким образом, чтобы индикатор включался при 0 градусов и его показания прирастали на одно деление каждые 5 градусов.
  2. Добавьте в схему пьезопищалку и доработайте программу так, чтобы срабатывала звуковая сигнализация при достижении температуры, например, 25 градусов.

 

С оригиналом статьи вы можете ознакомиться на сайте Amperka.ru


ЭКСПЕРИМЕНТ 14 | ОГЛАВЛЕНИЕ | ЭКСПЕРИМЕНТ 16

Категория: Простые эксперименты | Добавил: Decay_Dance (15.03.2016)
Просмотров: 4647 | Теги: электрические цепи, основы схемотехники, основы робототехники, терморезистор, микроконтроллеры, Arduino, простые эксперименты, электричество | Рейтинг: 0.0/0