Технології автоматизованого контролю та регулювання освітленням у приміщенні

Технології автоматизованого контролю та регулювання освітленням у приміщенні
Технології автоматизованого контролю та регулювання освітленням у приміщенні 12.05.2022

Технології автоматизованого контролю та регулювання освітленням у приміщенні

У статті розглядаються перспективи застосування технологій автоматизованого контролю та регулювання освітленням у приміщенні. Розроблено автомат освітлення на мікроконтролері  Atmega8 та програму керування, створено та відлагоджено прототип пристрою.

Аналіз проблеми. Правильно реалізоване освітлення приміщень і робочих місць - це головна складова продуктивної діяльності, зниження ризиків тpaвмaтизму на виpoбництві та гарного самопочуття співробітників. Працюючи в погано освітлених приміщеннях, люди можуть відчувати перевтому, головні болі і зорову втому.

Порівняльна оцінка видів освітлення, за впливом на працездатність, показала значну перевагу природних джерел світла над штучними. Отже, якщо є можливість організувати освітлення робочого місця з переважанням природного світла, то упускати такої можливості не можна.

При організації системи освітлення потрібно також враховувати наступні вимоги до освітлення приміщень та робочих місць - рівномірне і достатнє освітлення, оптимально налаштована яскравість, відсутність засліпленості, спотворень і відблисків, чіткий контраст між робочим об'єктом і фоном, відтворення правильної колірної гами, відсутність пульсації світла або стробоскопічного ефекту.

Реалізовувати освітлення необхідно при спільному обліку кількісних і якісних показників. Значення освітленості на поверхні робочого столу у зоні документів має становити 300-500 лк. Серед якісних показників можна виділити найбільш значущі: фон робочої поверхні, контраст між об'єктом і фоном, засліпленість, пульсація.

Постановка задачі. Розробити такий пристрій автоматики, який би недостатньому природньому освітленні в навчальній аудиторії автоматично вмикав та регулював рівень штучного освітлення (світлодіодну стрічку) та підтримував задане значення освітленості, яке запам’ятовується у пам’яті пристрою і корегується за допомогою кнопок.

Виклад основного матеріалу. У цьому проекті будемо управляти яскравістю свічення лінійки світлодіодів за допомогою мікроконтролера ATmega8 (сімейство AVR), використовуючи апаратну ШІМ (широтно-імпульсну модуляцію). Сприймати загальний рівень освітленості будемо за допомогою фото резистора, підключеного до АЦП.

Керуючи шпаруватістю модуляції ШІМ (Pulse Width Modulation, PWM) можна регулювати силу світіння світлодіода.

Якщо вимикач буде замкнутий протягом деякого часу, то протягом цього ж часу лампочка буде горіти. Якщо вимикач буде замкнутий протягом 8ms і буде розімкнений 2ms протягом інтервалу 10ms, тоді лампочка буде горіти тільки протягом інтервалу 8ms. Можна сказати, що середня вихідна напруга (на лампочці) становитиме 80% від напруги батареї.

Якщо вимикач замикається на 5ms і розмикається на 5ms протягом інтервалу 10ms, то середня напруга на лампочці становитиме 50% від напруги батареї. Прийнято говорити, що якщо напруга батареї 5В і цикл зайнятості становить 50%, то середня напруга на навантаженні (лампочці) становитиме 2.5В.

У третьому розглянутому на рисунку випадку цикл зайнятості становить 20% і тому середня напруга на навантаженні (лампочці) становитиме 20% від напруги батареї.

У мікроконтролері ATmega8 є два ШІМ канали (PWM channels), які позначаються як OC1A, OC1B. У схемі будемо використовувати канал OC1A для зміни яскравості світіння лінійки світлодіодів.

Схема електрична автомата регулювання яскравістю на мікроконтролері AVR ATmega8 приведена на наступному рисунку 2.

Схема є досить простою. Силовий ключ на транзисторах Q1 та Q2 підключено до піну 15 мікроконтролера AVR ATmega8. Особливостями схеми ключа є - малий опір відкритого каналу, висока швидкість перемикання, можливість комутації великих струмів, можливість простого паралельного з'єднання декількох однакових приладів. Інша особливість такого ключа – інверсні сигнали керування: лог. «0» відкриває ключ, лог «1» – закриває ключ. При великих струмах навантаження транзистор Q2 можна поставити на радіатор. Так як світлодіодні стрічки живляться від +12В, то потрібно використати зовнішнє джерело живлення на необхідну потужність.

Налаштування ШІМ. Постійна часу τ = R * C повинна бути багато більшою періоду тактування, щоб амплітуда пульсацій на виході була набагато меншою напруги, що знімається з ШІМ. Опір R1 резистора повинний бути меншим вхідного опір подальшого кола, яким буде керувати ШІМ, щоб мінімізувати вплив цього вхідного опору на амплітуду пульсацій і на постійну складову вихідної напруги.

Тепер розглянемо код:

{

            DDRB |= 1; // Встановлюємо пін 1 порту B на вихід

            OCR1 = 0; // Коефіцієнт заповнення 0%

            TCCR1 = 0x6C; // Частота ШІМ = clk/64, clk - частота мікроконтролера

                                   // Fast PWM

                                   // Онулення OC1 при досягненні лічильником значення OCR1, і установка «1» при досягненні лічильником нуля

}

Код складається всього з 3-х інструкцій мовою C. У першій інструкції пін 15 мікроконтролера AVR ATmega8 налаштовується на вихід (output). Потім, записом в регістр TCCR1, включається сам ШІМ, встановлюється його режим і задається тактова частота. В документації на мікроконтролер AVR докладно описані всі режими, а також як розраховується тактова частота. У нашому випадку частота генератора контролера 1 МГЦ, то частота ШІМ складає 15 625 Гц. Тому на таких високих частотах мерехтіння світло діодів непомітне.

Після ініціалізації, записом в 8-бітний регістр OCR1 значення, можна змінювати коефіцієнт заповнення. Це значення постійно порівнюється зі значенням 8-бітного лічильника, коли значення в лічильнику досягає значення рівного значенню регістра OCR1, скидається стан виходу OC1А (пін 15); при переповненні лічильника воно встановлюється в «1».

Коефіцієнт заповнення регулюється простим записом в регістр OCR1. Відразу після запису він змінюється відповідно до числа, яке туди записано.

Наприклад, якщо записати 0, то вийде коефіцієнт заповнення 0%, якщо записати 255, вийде коефіцієнт заповнення 100%, а якщо записати число 114, коефіцієнт заповнення буде 44.71%. Як відомо, постійна складова напруги на виході ШІМ пропорційна коефіцієнту заповнення. Таким чином, можна управління напругою в діапазоні від 0 до Vcc, а отже і яскравістю світлодіодної стрічки. У нашому випадку – запис числа 255 у OCR1 відповідає мінімальній потужності світлодіодної стрічки, запис числа 0 – максимальній.

Датчиком освітленості слугує фоторезистор, опір якого обернено пропорційний рівню освітленості. Фоторезистор підключається за схемою дільника напруги, де у верхнє плече встановлений постійний резистор 1K, а в нижнє сам фоторезистор. Середня точка підключається до піну ADC0 мікроконтролера.

ATmega8 має вбудований 10-бітний АЦП. Це означає, що опорна напруга Uоп буде лінійно розбита на 210 частин. Мінімальний код дорівнює 0, максимальний 210-1 = 1023. Наприклад, Якщо опорна напруга на вході МК становить 5В, то крок вимірювання складає 5/1023 = 0.0049В, тобто 4.9мВ. Виміряна напруга перетвориться в 10-бітове число і зберігається в регістрах ADCL і ADCH.

Так як у регістрі ADCH зберігається вісім старших бітів, а у регістрі ADCL лише два наймолодших бітів виміряної напруги, то можемо використовувати 8-бітний режим АЦП, збільшивши похибку у 4 рази, що у нашому проекті є допустимим. Тоді діапазон вимірювання складе від 0 до 255.

У проекті використовується ADC0 канал АЦП (ніжка 23) і безперервний режим дискретизації. Як опорну напругу АЦП використовуємо зовнішнє джерело +5В (Вхід AVCС).

Так як напруга на фоторезисторі змінюється приблизно пропорційно освітленню,   то виміряне значення на вході АЦП також пропорційне освітленню.

Алгоритм роботи. При ввімкнені контролера налаштовується ШІМ на мінімальну яскравість (і = 255). Визначається поточне значення освітленості як середнє із 16 вибірок та порівнюється із необхідним. Якщо поточне значення освітленості менше заданого, то збільшуємо рівень яскравості на 1 (і = і - 1), якщо поточне значення освітленості виявиться більшим заданого, то зменшуємо рівень яскравості на 1 (і = і + 1), якщо однакові – значення ШІМ залишається без змін. Значення заданого рівня освітленості можна змінювати у межах 0 – 255 за допомогою кнопок та зберігати у EEPROM.

Лістинг програми:

#include <mega8.h>

#include <delay.h>

#define ADC_VREF_TYPE 0x60

unsigned int i = 255; //поточне значення ШІМ

unsigned char read_adc(unsigned char adc_input) //Функція вимірювання АЦП

      { ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);

delay_us(10);

ADCSRA|=0x40; // Старт АЦП

while ((ADCSRA & 0x10)==0);

ADCSRA|=0x10;

return ADCH;        }

eeprom char Z=128; //код рівня освітленості

void main(void)

{unsigned char j; //лічильник замірів

unsigned int NA; //код АЦП

ADMUX=ADC_VREF_TYPE & 0xff;

ADCSRA=0x81;

PORTB=0x02;

DDRB=0x02;

PORTC=0x02;

DDRC=0x02;

PORTD = 0x03;

DDRD = 0x00;

/***Налаштування таймера***/

TCCR1A |= (1 << COM1A1)|(0 << COM1A0) |(1 << WGM11)|(0 << WGM10);

TCCR1B |= (1 << WGM13)|(1 << WGM12)|(0 << CS12)|(0 << CS11)|(1 << CS10);

TCNT1 = 0x00;

ICR1 = 0xFF;

OCR1A = 0xfc; // початковий коефіцієнт заповнення ШІМ

while (1)

    {        if (PIND.0==0) //якщо кнопка "більше" натиснена

            {   if (Z < 255)

                        { Z=Z+1; // збільшуємо заданий рівень яскравості на одиницю

                         delay_ms(30);                         }

            }

        if (PIND.1== 0) //якщо кнопка "менше" натиснена

            { if (Z > 0)

                    { Z--; // зменшуємо заданий рівень яскравості на одиницю

                       delay_ms(30);                    };

            }

NA=0;

        for (j=0;j<16;j++) {NA+=read_adc(0);}

        NA/=16; // рівень поточної яскравості

if (NA < Z)

        {if (i < 255)                

{ i=i-1; збільшуємо яскравість

                   OCR1A = i; //нове значення ШІМ

                   delay_ms(30);

                 }

        }

if (NA > Z)

        {if (i > 0)

              { i=i+1; // зменшуємо яскравість

                 OCR1A = i;

                 delay_ms(30);

             }

        }  

    }

}

Скомпілювавши код, «прошиваємо» мікроконтролер та вставляємо його у прототип. Друкована плата пристрою має розміри 50*40 мм. Напруга +5В на контролер подається від вторинного джерела живлення на LM7805.

Тестування прототипу підтвердили правильність розв’язку поставленої проблеми. Автомат функціонує згідно розробленого алгоритму, володіє достатньою чутливістю та чітко витримує заданий рівень освітленості, реагуючи на зміни зовнішнього освітлення.

Висновок. Розроблено та реалізовано автомат керування освітленням. Він дозволяє заощаджувати електроенергію, а головне, берегти зір та здоров’я людини. Сам пристрій є простим, дешевим, зручним у налаштуванні та експлуатації. Крім того, його можна доповнити іншими додатковими функціями – виявляти наявність/відсутність осіб, виявляти ознаки пожежі інші.

Слід зазначити, що ефективні системи керування можуть бути створені за умови, якщо їх розробка, проектування та відлагодження проводяться одночасно і взаємопов'язано. Тільки такий підхід дозволяє створювати найбільш ефективні системи з мінімальними витратами на її реалізацію.


Назва конкурсу:  Конкурс передових ідей та технологій «Інтернет речей»
ПІБ Співвиконавців:  Петленко Владислав Ігорович
ПІБ конкурсанта:  Міронов Нікіта Олександрович
Країна:  Україна
Область:  Волинська область
Назва НЗ:  Технічний фаховий коледж Луцького національного технічного університету
Учасник фіналу:  Ні
Файл статті (pdf):  Завантажити

Повернення до списку