• (Обучение бесплатно)
  • Приглашаем учащихся 2-11кл попробовать свои силы на занятиях объединения "Радиотехническое конструирование"
  •  (Обучение бесплатно)
  • Запись проводится с 22 августа 2017г
  •    по адресу г. Комсомольск-на-Амуре МБОУ ДО КВАНТОРИУМ
  •    ул Краснофлотская, д 22, корп 2. Телефон: (4217) 54-79-88
  •    Начало занятий - сентябрь 2017 г.
  •    *OK
  •    JUNRADIO*
                           










                                               


  • I






      
           

Научно-популярный образовательный ресурс для юных и начинающих радиолюбителей - Popular science educational resource for young and novice hams

Основы электричества, учебные материалы и опыт профессионалов - Basics of electricity, educational materials and professional experience

КОНКУРС
language
 
Поиск junradio

Радиодетали
Искать на DESSY.RU
Сервисы

Stock Images
Покупка - продажа
Фото и изображений


 
Выгодный обмен
электронных валют

Интересно
Немного подработать
Есть свободное время?
Можешь немного подработать.
Загрузка...
Друзья JR



JUNIOR RADIO





Ночник на AT89C2051






Эта новая версия имеет внутреннюю резервную батарею Ni-MH, кнопку сброса и простую настройку времени.  Настроен на период с 18:00 до 22:00 каждый день. Период времени можно перепрограммировать на SDCC.

Схема использует бестрансформаторное питание,

необходимо соблюдать правила электробезопасности!

Описание аппаратного обеспечения 

Прибор защищен F1, 1А предохранителем.  R1 и С1 ограничение тока для стабилитрона D3 (+ 5V). R2 разряжает конденсатор С1, когда прибор подключен. Конденсатор С2, + 5В 0.01Fявляется фильтром питания постоянного тока. D4 действует как переключатель для однонаправленного тока, подаваемого на MCU. BT1 будет Ni-MH аккумулятор для резервного копирования MCU (+ 3В 60mAh), когда нет питания сети. Зарядный ток 2 мА.

 

Рисунок 1: Монтаж ночника

 

BT1 подводит 4 мА к MCU. При полной зарядке резервное время составит 15часов. MCU работает с + Vbackup. SW1 помогает сбросить MCU, в случае понижения напряжения на BT1. MCU (89C2051) работает с кварцем на 3.579MHz. SW2 для установки часов (когда нажата, время будет 18:00).  R5, 4.7K дает менее одного мА на D5. P3.0 обеспечивает 5 Гц тактовый сигнал для калибровки. Выходной бит P1.6,  приводит в действие PNP транзистор (Q1). R3 ограничивает ток базы. R4 ограничивает постоянный ток в Q2, MAC97 небольшой симистор. LP1 - лампа накаливания 25 Вт. Мощность лампы может быть до 40 Вт.

 

Рисунок 2: Полная схема ночника

 

Я собрал устройство на простой макетной плате и расположил ее под лампой прибора. SW1 и SW2 там же.

 

Рисунок 3: Вид снизу с Ni-MH аккумулятором

 

Программное обеспечение 

Для разных установок времени, вы можете редактировать исходный код или перекомпилировать в SDCC.

КОД

/*
   Lamp.c
   night light saver V6.0, 89C2051 runs with 3.579MHz xtal
   The source code was compiled with sdcc.
Copyright (C) 2004 Wichit Sirichote, kswichit@kmitl.ac.th, 20 December 2004
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

*/
#include <at89x051.h>
#define tick_test P3_0 // 10Hz/2 output for clock calibration
#define LED P3_7
#define output1 P1_6
char status;
int count, i;
char tick, flag1, temp, timer1, timer2;
char hour,min,sec,sec10;
// you may press set time button whenever you want the lamp turns on
// for winter season you may press ealier than local time
// for summer more late, time will shift relatively!
// period will be 22:00 - 18:00 = 4 hours
code char time_on1[] = {18,00};
code char time_off1[] = {22,00};
// another scheduler, the 3rd byte will write to P1
// you may replace control_output function by scan_pgm function
code char pgm1[]={18,00,0x80,19,00,0,20,0x80,1,21,00,0};
char _sdcc_external_startup()
{
return 1; // skip static and global variables initialization
}
scan_pgm()
{
char i;
for(i=0; i<4; i++)
{
if(hour == pgm1[i*3] && min == pgm1[i*3+1])
P1 = ~pgm1[i*3+2];
}
}
control_output()
{
if(hour == time_on1[0] && min == time_on1[1])
status = 0;
if(hour == time_off1[0] && min == time_off1[1])
status = 1;
}
blink_led()
{
if(flag1&1)
{
if(++timer1>1)
{
flag1 &= ~1; // clear flag1.0
timer1=0;
LED = 1; // turns off led
}
}
}
void time ()
/* update real-time clock */
{
if (++sec10 >= 10) /* 100ms * 10 = 1 s */
{
LED = 0;
control_output(); // control output every second
sec10 = 0;
flag1 |=1;
if (++sec >= 60)
{sec = 0;
if (++min >= 60)
{min = 0;
if (++hour >= 24)
{hour = 0;
}
}
}
}
}
set_time()
{
if((P3&4)==0)
{
status = 0;
hour = 18;
min = 0;
sec = 0;
timer2=0;
}
}
update_output()
{
if(status) output1 = 1;
else output1 =0; // update output bit
}
void timer_isr(void) interrupt 1 using 1
{
TH0 = 0x8b;
TL0 = 0x7f; // reload with 35711 for 10Hz
tick++;
tick_test ^= 1; // test tick for 10Hz/2 or 5Hz
time();
set_time();
blink_led();
update_output();
}
main()
{
TMOD = 0x01; // timer1 and timer0 = mode 1
EA = ET0 = TR0 = 1; // enable timer0 interrupt, start timer
PCON |= 1; // enable IDLE mode, to extend backup period
for(;;)
;
}

 

Рисунок 4 показывает время 18:00, когда была нажата SW2. Лампа не включится до 22:00 каждый день.  Если вы хотите изменить время на пример в летний сезон, просто нажмите SW2 и установите 19:00. Время выключения автоматически сдвинется к 23:00.

 

Рисунок 4: Предустановленное зимнее время

 

Рисунок 5: Ночник в сборе с 25W лампой и крышкой

 

Скачать

 

МАТЕРИАЛЫ К СТАТЬЕ

 







Просмотров: 855 | Добавил: Chinas | Рейтинг: 0.0/0








Необходимо добавить материалы...
Результат опроса Результаты Все опросы нашего сайта Архив опросов
Всего голосовало: 267



          

Радио для всех© 2017