phpBB [media]
- Спойлер
Собираем вышеприведённую, незамысловатую схему состоящую из Arduino UNO и кремниевого диода 1N4148. И заливаем нижеприведённый скетч.
Код: Выделить всё
int n = 30;// кол-во измерений для среднего значения
int t; // 0,022 мВ на 1 гр.Цельсия или 2 ед.значения А5 на 1 гр.Цельсия)
const float t0 = 27.0; // калибровка
const float t0_analog = 536; /* По показаниям эталонного градусника
задайте свое значение температуры t0, далее посмотрите значение
t0_analog в мониторе порта и укажите его */
float t_sum,t_iz,t_iz_analog,t_analog;
void setup() {
analogReference(INTERNAL);// опорное 1,1 В
pinMode(A5, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
Serial.println(t_analog,0);
Serial.println(t_iz,1);
t_sum = 0;
for (int i = 0; i < n; i++) {
t = analogRead(A5);// 545 при 26 гр
t_sum = t_sum + t;
delay(33);// общее время измерения 999 мс
}
t_analog = t_sum / n;// среднее значение
t_iz_analog = (t_analog-t0_analog) / 2;// отклонение гр.Цельсия от t0
t_iz = t0 - t_iz_analog;// вычисление температуры
}
Имея внутренние подтягивающие резисторы в ATmega (они подключены к питанию внутри микросхемы), появляется возможность ими управлять. Диод у нас питается от напряжения 5 В через внутренний подтягивающий резистор 20 кОм. При изменении температуры будет немного меняться прямое напряжение диода, которое мы и будем измерять.
Но не все диоды одинаково полезны имеют одинаковые параметры, и поэтому необходима калибровка. Измеряем окружающую температуру простым градусником и указать ее в скетче.
const float t0 = 27.0; // калибровка
. Посмотрев в монитор порта указываем цифровое значение напряжения при данной температуре.Вот и всё теперь у нас имеется датчик температуры, диапазон измерения которого может находится в пределах от -30 до 120 ºС.
Далее вы можете приспособить какой нибудь дисплей и выводить на него данные температуры. Чуть попозже сделаю с дисплеем от Nokia 5110 84x48