Принципиальная схема устройства
Принципиальная схема устройства изображена на рисунке 2.1
Рисунок 2.1 – Электрическая принципиальная схема
При прохождении объекта через ИК датчики, они передают сигнал на оптрон PC817. Сигнал с оптрона передаётся на микроконтроллер D1, тот же в свою очередь увеличивает число запомненных проходов людей на единицу, что соответствует одному пройденному объекту в помещение. Микроконтроллер D1 согласно программе передает через резистор R12, на транзистор VT1 сигнал для его усиления, усиленный сигнал передаётся на реле К1 , а он же в свою очередь замыкает цепь, вследствие чего загорается лампочка, тем самым освещая помещение.
Разъёмы:
ХР1 – подключаются к источнику питания 12 вольт;
ХР2 – к источнику света;
ХР3 и ХР4 – к датчикам прохода;
ХР5 – к датчику движения.
микросхема DA1 стабилизирует напряжения для питания микроконтроллера DD1 на уровне 5 вольт
Конденсаторы С1 с2 с3 фильтруют помехи по цепям питания
Оптроны VD2 VD3 VD4 развязывают и предохраняют тем самым входы микроконтроллера от выходов датчика, транзистор VT1 управляет реле K1
Сигнал управления на него подается через резистор R11
резисторы R5 R6 R7 ограничивают токи через светодиоды оптронов
R1 R2 R3 предохраняют светодиоды оптронов от микротоков
R8 R9 R10 "подтягивают" входы микроконтроллера к напряжению уровня логической "1"
диод VD1 предохраняет транзистор VT1 от ЭДС самоиндукции катушки реле K1
Резистор R4 не позволяет открыться транзистору VT1 от обратного тока коллектора
Микроконтроллер DD1 тактируется от встроенного RC генератора частотой 1 МГц
Вот тут я совсем не шарю, первый абзац скопирован из другого документа, остальное это то, что ты писал в аське. Посмотри пожалуйста на схему и сделай из этого нормальное описание.
В первом абзаце про D1 говориться и про R12. У тебя кажется R11 и D1 вообще нету. В общем нужно всё поправить и в нормальном порядке написать.
2.2 Алгоритм работы программы
Данный алгоритм моделирует работу системы управления освещением «Умный дом» (рис 2.2).
Рисунок 2.2 — Блок-схема системы управления освещением
Вот здесь может и не обязательно, но я думаю, что лучше описать весь этот алгоритм словами.
Текст программы
Исходный код программы разрабатывался в CodeVisionAVR C Compiler
/*******************************************************
This program was created by the
CodeVisionAVR
Chip type : ATmega32
Program type : Application
AVR Core Clock frequency: 1,000000 MHz
*******************************************************/
#include <mega32.h>
#include <delay.h>
Volatile unsigned int sec; // Время активности освещения
Volatile unsigned char d1; // Время активности датчика 1
Volatile unsigned char d2; // Время активности датчика 2
// Прерывания таймера, происходящие каждую секунду.
// Timer1 output compare A interrupt service routine
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
if (sec)sec--;
if(d1)d1--;
if(d2)d2--;
PORTD.4=~PORTD.4;
}
Void main(void)
{
// Переменная с подсчитанным количеством людей в помещении
unsigned char N=0;
// Настраиваем линии на ввод либо вывод в зависимости от функционального назначения
// Port A initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0);
// State: Bit7=P Bit6=P Bit5=P Bit4=P Bit3=P Bit2=P Bit1=P Bit0=P
PORTA=(1<<PORTA7) | (1<<PORTA6) | (1<<PORTA5) | (1<<PORTA4) | (1<<PORTA3) | (1<<PORTA2) | (1<<PORTA1) | (1<<PORTA0);
// Port B initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);
// State: Bit7=P Bit6=P Bit5=P Bit4=P Bit3=P Bit2=P Bit1=P Bit0=P
PORTB=(1<<PORTB7) | (1<<PORTB6) | (1<<PORTB5) | (1<<PORTB4) | (1<<PORTB3) | (1<<PORTB2) | (1<<PORTB1) | (1<<PORTB0);
// Port C initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);
// State: Bit7=P Bit6=P Bit5=P Bit4=P Bit3=P Bit2=P Bit1=P Bit0=P
PORTC=(1<<PORTC7) | (1<<PORTC6) | (1<<PORTC5) | (1<<PORTC4) | (1<<PORTC3) | (1<<PORTC2) | (1<<PORTC1) | (1<<PORTC0);
// Port D initialization
// Function: Bit7=In Bit6=In Bit5=Out Bit4=Out Bit3=In Bit2=In Bit1=In Bit0=In
DDRD=(0<<DDD7) | (0<<DDD6) | (1<<DDD5) | (1<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
// State: Bit7=P Bit6=P Bit5=0 Bit4=0 Bit3=P Bit2=P Bit1=P Bit0=P
PORTD=(1<<PORTD7) | (1<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (1<<PORTD3) | (1<<PORTD2) | (1<<PORTD1) | (1<<PORTD0);
// Настраиваем таймер 1 на прерывания раз в секунду
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 15,625 kHz
// Mode: CTC top=OCR1A
// OC1A output: Disconnected
// OC1B output: Disconnected
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer Period: 1 s
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: On
// Compare B Match Interrupt: Off
TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (1<<WGM12) | (0<<CS12) | (1<<CS11) | (1<<CS10);
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x3D;
OCR1AL=0x08;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (1<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) | (0<<OCIE0) | (0<<TOIE0);