http://poradumo.pp.ua

Online Журнал-Світ порад.
Головна сторінка
» » Електронний симулятор світанку

Електронний симулятор світанку

Електронний симулятор світанку


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


Електронний симулятор світанку

Електронний симулятор світанку

Електронний симулятор світанку


Крок 1: Світло

Далеко не секрет, що існують вже готові подібні пристрої, які можна купити в магазині електроніки. Весь проект залежить від електронних годинників марки Soleil Alarm, які можна придбати на офіційному сайті однойменної компанії.

Також не обійтися і без покупки інших електронних елементів в різних інтернет-магазинах.

Крок 2: Компоненти

  1. Мікроконтролери Atmel ATMEGA8-16PI (краще придбати відразу декілька, якщо раптом згорить).




    Оптрон 4N35.




    Коробка зі світлодіодами синього кольору.




    Регулятор на 5 Ст.




    Резистори на 1 кОм і на 470 Ом.




    Проводи.
    [ol]


    Електронний симулятор світанку


    Крок 3: Годинник

    Контролер на 300 Вт зчитує сигнал 0-5 В, який йде з data-порту.


    Електронний симулятор світанку

    Електронний симулятор світанку

    Електронний симулятор світанку


    Крок 4: Світлодіод

    Якщо задуматися про додавання зовнішнього транзистора, то тут можна зіткнутися з низьким рівнем яскравості.

    Тому краще відразу придбати мікроконтроллер для створення гарного ШІМ сигналу в 16 біт, щоб тримати стійкий світло при частоті в 130 Гц.

    Електронний симулятор світанку


    Крок 5: Функція

    PWM сигнал йде аж ніяк не лінійно. У наших годин є 44 дискретних кроку. Відповідно, можна побудувати експоненційну функцію:
    f(x) = A(1-exp( (Bx + D)x + C) ) .

    Електронний симулятор світанку

    Електронний симулятор світанку

    Електронний симулятор світанку


    Крок 6: Ланцюг

    Збираємо електричну ланцюжок за наведеною схемою.

    Крок 7: Мікроконтролери

    Нам потрібно скомпілювати код для мікроконтролерів через WinAVR і AVR Studio.

    Електронний симулятор світанку


    Крок 8: Дроти

    Дроти йдуть від програматора до AMEGA8 для пінів 1 7 (VCC), 8 (GND), 171819 20 (AVC), 21 (AREF) і 22 (GND).

    Крок 9: Програма

    В даному випадку мікроконтролер виступає як нелінійний ШІМ фільтр. Програма вираховує час запуску, рівень контролю світлодіодів і випуску сигналу ШІМ.

    Сам код Еріка Вільгельма наведено нижче з його коментарями.

    [spoiler] /* LED microcontroller dimmer for use with Soleil Sun AlarmWritten for Atmel ATMega8 and avr-gccEric J. WilhelmSquid Labs, LLCAttribution-NonCommercial-ShareAlike 2.5You are free: * to copy, distribute, display, and perform the work * to make derivative worksUnder the following conditions:by Attribution. You must attribute the work in the manner specified by the author or licensor.Noncommercial. You may not use this work for commercial purposes.Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under a license identical to this one. * For any reuse or distribution, you must make clear to others the license terms of this work. * Any of these conditions can be waived if you get permission from the copyright holder.*/#include #include #include #include #include # define OC1 PB1# define DDROC DDRB# define OCR OCR1Avolatile uint16_t xtimer;volatile uint16_t timer0;volatile uint8_t status;SIGNAL(SIG_OVERFLOW0){timer0++; TCNT0=96; //preload the with timer 96 to make this interrupt occur every 20 us.}SIGNAL(SIG_OVERFLOW1){//The interrupts don't work properly without this definition.}//falling edge PWM signal (rising edge at clock; reversed due to optoisolator)SIGNAL(SIG_INTERRUPT1) {//Zero timer0 to count the length of the positive pulse timer0=0; status=1;}//rising edge PWM signal (falling edge at clock; reversed due to optoisolator)SIGNAL(SIG_INTERRUPT0) {//record the length of the positive pwm signal in xtimer //if timer0 is greater than approximately 263 (at 20 us per interrupt) than the pulse was missed if(timer00;i--) {x(i) = x(i-1);} x(0) = xtimer; y=0; for(i=0;i 0;i--) {t(i) = t(i-1);} //determine what to do if(timer0>270 && status == 1 && on == 1) {//Turn light on t(0) = 0; on=1;} else if(timer0>270 && status == 0) {//Turn light off, t(0) = 65535; xtimer=0; on=0; oncounter=0;} else if(timer065535) t(0) = 65535; if(t(0)270 but there's a positive pulse on the PWM //this happens during the very start of a sunrise, when the clock's PWM hasn't quite turned on at the right frequency else if(timer0>270 && status == 1) {if(++oncounter==5) {on = 1; oncounter=0;}} //average the output so it doesn't jump around u=0; for(i=0;i <100;i++) { u=u+t(i); } //Change the output PWM OCR = u/100; } return (0);}

    Електронний симулятор світанку

    Електронний симулятор світанку


    Крок 10: Кабель

    Використовуємо 2 штепселя і провід, щоб змайструвати повноцінний кабель.

    Крок 11: З'єднання

    Підключіть коробку зі світлодіодами до годинника.
of your page -->

Популярні поради

загрузка...