Ошибка базы данных WordPress: [Table './meandr_base/anzpz_usermeta' is marked as crashed and last (automatic?) repair failed]
SELECT user_id, meta_key, meta_value FROM anzpz_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC

0

Простой термостат для дома

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

Итак, приступим, сначала создадим новый проект с помощью мастера (Wizard).
Выбираем микроконтроллер ATmega 8 потом в закладке  1-Wire выбираем порт В dsts bit = 0.
File -> generate,save and exit.

стираем код что нам сгенерировал визард и вставляем вот этот код:

#include <mega8.h>
#include <delay.h>
#asm
.equ __w1_port=0x18 ;PORTB
.equ __w1_bit=0
#endasm
#include <1wire.h>

#include <ds18b20.h>
void main(void)
{

unsigned char devices;
int temp;
devices = w1_init();

PORTD = 0x00; //Выставляем все выходы порта D на 0, то есть, выключаем весь порт D
DDRD = 0xFF;
while (1)
{

temp=ds18b20_temperature(0);  //читаем температуру

if (temp>1000)                      //если датчик выдаёт больше 1000
{
temp=4096-temp;            //отнимаем от данных 4096
temp=-temp;                //и ставим знак «минус»
}

if (temp<18)                          // устанавливаем нижней порог
PORTD.0 = 1;
else PORTD.0=0;
if (temp>28)                         // установим верхний порог
PORTD.1=1;
else PORTD.1=0;

}

}

Алгоритм следующий: если температура упадет ниже +18 градусов, на ножке порта D.0 появиться логическая единица,
и если темперетура поднимется выше +28, тогда на порту D.1 будет +5вольт(лог.1),
светодиоды не будут гореть, если температура от 18 до 28 градусов.

Схема:

Статья дополнена и переделана, теперь работает с минусовой температурой.

my-avr.at.ua

admin

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *