Контур измерения температуры с выводом информации на светодиодную шкалу
Автор: demidov2121 • Январь 8, 2023 • Лабораторная работа • 1,174 Слов (5 Страниц) • 237 Просмотры
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
федеральное государственное автономное образовательное учреждение высшего образования
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»
ИНСТИТУТ НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ
КАФЕДРА ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ И СЕТЕЙ
ОЦЕНКА
ПРЕПОДАВАТЕЛЬ
должность, уч. степень, звание | подпись, дата | инициалы, фамилия |
ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ |
Контур измерения температуры с выводом информации на светодиодную шкалу |
по дисциплине: Схемотехника |
РАБОТУ ВЫПОЛНИЛ
СТУДЕНТ ГР. № | |||||
подпись, дата | инициалы, фамилия |
СТУД. БИЛЕТ № | |
Цель работы:
Разработать принципиальную электрическую схему системы контроля температуры, разработать и отладить программу для реализации системы на микропроцессорном контроллере Arduino Uno R3 в среде TINKERCAD.
Исходные данные:
Организовать контур измерения температуры с выводом информации на светодиодную шкалу. Для отображения данных о текущем значении температуры использовать светодиодную ленту типа «NeoPixel Ring 12», с рабочим диапазоном -50...+50°С. Шкала светодиодной ленты имеет дискретность 10°С, так в положительной части диапазона измерения шкала разбивается на ряд интервалов: +0…+9, +10…+19, +20…+19 и т.д. При изменении температуры на шкале последовательно загораются красные или синие индикаторы в зависимости знака измеренного значения температуры. В начале работы шкала полностью заполняется зелеными светодиодами
Состав комплектующих для выполнения работы:
№ | Наименование компонента | Тип | Количество |
1 | Микропроцессорный контроллер | Arduino Uno R3 | 1 |
2 | Датчик температуры | TMP36 | 1 |
3 | Светодиодная лента | NeoPixel Ring 12 | 1 |
4 | Макетная плата | 1 |
[pic 1]
Рисунок 1 – список элементов, сгенерированный средствами Tinkercad
[pic 2]
Рисунок 2 – элементы и их соединения в среде Tinkercad
[pic 3]
Рисунок 3 – электрическая принципиальная схема
Листинг программного кода:
#include <Adafruit_NeoPixel.h> #ifdef __AVR__ #include <avr/power.h> #endif #define PIN 8 // Количество диодов NeoPixels подключенных к Arduino #define NUMPIXELS 12 Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); const int sensorPin = A0; // Базовая температура в Цельсиях const float baselineTemp = 0; void setup() { Serial.begin(9600); pixels.begin(); // устанавливаем LED пины как OUTPUT for (int pinNumber = 2; pinNumber < 5; pinNumber++) { pinMode(pinNumber, OUTPUT); digitalWrite(pinNumber, LOW); } } void loop() { // Считываем значение с аналогового входа A0 int sensorVal = analogRead(sensorPin); // Переводим данные с сенсора в напряжение float voltage = (sensorVal / 1024.0) * 5.0; // Переводим напряжение в температуру float temperature = (voltage - .5) * 100; // Выводим значение температуры Serial.print(", Температура: "); Serial.print(temperature); Serial.print(" \xC2\xB0"); // Символ градусов Serial.println("C"); // Закрашиваем по умолчанию все светодиоды зеленым цветом for (int i=0; i<12; i++) { pixels.setPixelColor(i, pixels.Color(0, 128, 1)); pixels.show(); } if (temperature > 0 && temperature < 9) { for (int i=0; i<1; i++) { pixels.setPixelColor(i, pixels.Color(255, 0, 0)); // Устанавливаем цвет светодиодов pixels.show(); // Посылаем сигнал на изменение цвета } } if (temperature > 10 && temperature < 19) { for (int i=0; i<2; i++) { pixels.setPixelColor(i, pixels.Color(255, 0, 0)); pixels.show(); } } if (temperature > 20 && temperature < 29) { for (int i=0; i<3; i++) { pixels.setPixelColor(i, pixels.Color(255, 0, 0)); pixels.show(); } } if (temperature > 30 && temperature < 39) { for (int i=0; i<4; i++) { pixels.setPixelColor(i, pixels.Color(255, 0, 0)); pixels.show(); } } if (temperature > 40 && temperature < 49) { for (int i=0; i<5; i++) { pixels.setPixelColor(i, pixels.Color(255, 0, 0)); pixels.show(); } } if (temperature > -10 && temperature < -0) { for (int i=11; i<12; i++) { pixels.setPixelColor(i, pixels.Color(0, 77, 255)); pixels.show(); // Посылаем сигнал на изменение цвета } } if (temperature > -20 && temperature < -11) { for (int i=10; i<12; i++) { pixels.setPixelColor(i, pixels.Color(0, 77, 255)); pixels.show(); } } if (temperature > -30 && temperature < -21) { for (int i=9; i<12; i++) { pixels.setPixelColor(i, pixels.Color(0, 77, 255)); pixels.show(); } } if (temperature > -40 && temperature < -31) { for (int i=8; i<12; i++) { pixels.setPixelColor(i, pixels.Color(0, 77, 255)); pixels.show(); } } if (temperature > -50 && temperature < -41) { for (int i=7; i<12; i++) { pixels.setPixelColor(i, pixels.Color(0, 77, 255)); pixels.show(); } } delay(5000); pixels.clear(); } |
...