Главная
 
PDA-NN.3dn.ruСреда, 02.07.2025, 09:51



Приветствуем вас Гость | RSS
Главная
Меню сайта

Мини-чат

Наш опрос
Стоит ли удалить раздел WindowsMobile ?
Всего ответов: 17

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0


11:09
Простое термореле со светодиодной индикацией на Atmega8

Ну вот после длительного застоя решил заняться программированием микроконтроллеров и для начала решил собрать простенькое термореле.

Для начала были загружены полезные софтины:



1 . Proteus Dowanload - использую как симулятор



2. CodeVisionAVR Dowanload - среда разработки



Порыскав в сети примеры работы наткнулся на приблизительно то что я хочу.

Примером стала статья с сайта Мy-avr.at.ua









Выглядела довольно просто и материалы все у меня есть:



1. Микроконтроллер Atmega8

2. Термодатчик DS18B20

3. 3 резистра (r 100x2шт и R4700х1шт он же R4k7)

4. 2 светодиода (3.2v синий и красный)



Код прошивки
Код

#include <mega8.h>  
#include <delay.h>  
#asm  
#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(devices>0)  
{  
   
  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 (18>=temp<=28) // устанавливаем рабочую температура Желтый  
  PORTD.2 = 1;  
  else PORTD.0=0;  
   
  if (temp>28) // установим верхний порог Красный  
  PORTD.1=1;  
  else PORTD.1=0;  
   
  }  

}


Собрав подобную схему в протеусе мне показалось этого мало и я добавил индикацию интервала температур от 18 до 28 градусов желтым светодиодом а так же исполнительным механизмом (реле)



К схеме добавились:





1. Микроконтроллер Atmega8

2. Термодатчик DS18B20

3. 4 резистра (r 100x2шт, R4700х1шт (он же R4k7) и R10kх1шт )

4. 3 светодиода (3.2v синий,красный и желтый)

5. 1 конденсатор 100n

6. 1 транзистор TIP122

7. 1 Диод 1N4001

8. 1 Реле 5V



Дальше для проверки использовал моторчик и батарейку, чисто для эксперимента.

Приступим:
Итак, приступим, сначала создадим новый проект с помощью мастера (Wizard).


Выбираем микроконтроллер ATmega 8 потом в закладке 1-Wire выбираем порт В dsts bit = 0.
File -> generate,save and exit.

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

#include <mega8.h>  
#include <delay.h>  
#asm  
#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(devices>0)  
{  

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>=18 && temp<=28) // устанавливаем рабочую температура Желтый
PORTD.2 = 1;  
else PORTD.2 = 0;

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

}  

}
Просмотров: 1048 | Добавил: Дымок(R) | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Вход на сайт

Поиск

Календарь
«  Сентябрь 2015  »
Пн Вт Ср Чт Пт Сб Вс
 123456
78910111213
14151617181920
21222324252627
282930

Архив записей

Друзья сайта


Copyright MyCorp © 2025
Сайт создан в системе uCoz