| Меню сайта |
|
 |
| Мини-чат |
|
|
 |
| Наш опрос |
|
 |
| Статистика |
Онлайн всего: 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;
}
}
|
|
Просмотров: 1055 |
Добавил: Дымок(R)
| Рейтинг: 0.0/0 |
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]
| |
 | |  |
|
| Вход на сайт |
|
|
 |
| Поиск |
|
 |
| Календарь |
| « Сентябрь 2015 » |
| Пн |
Вт |
Ср |
Чт |
Пт |
Сб |
Вс |
| | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 8 | 9 | 10 | 11 | 12 | 13 | | 14 | 15 | 16 | 17 | 18 | 19 | 20 | | 21 | 22 | 23 | 24 | 25 | 26 | 27 | | 28 | 29 | 30 | |
 |
| Архив записей |
|
 |
| Друзья сайта |
|
 |
|