Источники питания и свет Актуальные вопросы и ответы по источникам питания, световому оборудованию. |
24.09.2011, 14:09
|
#1
|
Частый гость
Регистрация: 04.12.2009
Сообщений: 36
Сказал спасибо: 18
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Лампа настроения attiny2313
Добрый день.
Наткнулся случайно на такую вот лампу. Захотелось сделать, но возникло несколько вопросов, прошу помощи у вас.
Повторить собираюсь по 2 прототипу, на ATtiny2313-20PU.
Питание хотелось бы сделать на аккумуляторах, проще всего думаю будет взять 4хАА, итого 4,8В 2000мА*ч. На часов 15 их должно хватить?
Если так, то стабилизатор для МК уже не нужен и питание можно подавать напрямую?
R1, R2, R3 - для чего они? мое предположение - токоограничивающие, если так, то не многовато 10кОм? 0,5мА вряд ли хватит для открытия транзистора или я что-то не так понимаю?
R4, R5, R6 - тоже не понимаю по какому принципу их подбирать, не уверен что смогу найти такой же светодиод(по крайней мере в ближайшем магазине их нету) вероятнее всего будут 3 одноцветных.
p.s. также к этой лампе хотелось бы добавить паузу(чтоб при нажатии кнопки замирало на одном цвете), таймер сна(чтоб, скажем,через 30 минут после нажатия лампа выключалась) и возможно смену скорости(по нажатию кнопки изменять время одного цикла, скажем, 2сек; 5сек; 10сек)
p.p.s прошивку скорее всего смогу подправить, но как реализовать задумки в железе представляю смутно. ближе к вечеру залью схемку как я себе это все представляю.
я понимаю, что вопросы довольно глупые, но мне оооччеень хочется сделать такую лампу... и разобраться что такое мк и с чем его едят тоже лишним не будет, а то про диплом инженера-электрика(заочное) даже вспоминать стыдно. вобщем, не пинайте сильно, пожалуйста.
|
|
|
|
24.09.2011, 14:42
|
#2
|
Почётный гражданин KAZUS.RU
Регистрация: 26.01.2007
Сообщений: 3,123
Сказал спасибо: 61
Сказали Спасибо 1,153 раз(а) в 624 сообщении(ях)
|
Re: Лампа настроения
Сообщение от a_leha
|
Питание хотелось бы сделать на аккумуляторах, проще всего думаю будет взять 4хАА, итого 4,8В 2000мА*ч. На часов 15 их должно хватить?
|
А Вы посчитайте . Больше всего падает напряжение на голубом светодиоде -3.5вольта при 350 мА. Резистор, ограничивающий ток в выбранном Вами варианте -5.1Ом. Максимальный ток составит (4.8-3.5)/5.1= 0.25А. Таким образом, на максимальной яркости (токе) батарейки хватит 2/0.25=8 часов на один светодиод.
А сколько будет на самом деле зависит от программы в контроллере.
P.S. А батарейка должна уметь отдавать 0.25*3=0.75А (примаксимальной яркости трех светодиодов) .
|
|
|
|
24.09.2011, 14:45
|
#3
|
Заблокирован
Регистрация: 08.08.2007
Сообщений: 2,843
Сказал спасибо: 378
Сказали Спасибо 1,368 раз(а) в 746 сообщении(ях)
|
Re: Лампа настроения
Сообщение от a_leha
|
Если так, то стабилизатор для МК уже не нужен и питание можно подавать напрямую?
|
Для таких целей потянет, а вот для питания светодиодов стабилизатор будет нужен. Иначе контроллер ещё будет работоспособен, а светодиод излучать не будет.
|
|
|
|
24.09.2011, 14:55
|
#4
|
Заблокирован
Регистрация: 08.08.2007
Сообщений: 2,843
Сказал спасибо: 378
Сказали Спасибо 1,368 раз(а) в 746 сообщении(ях)
|
Re: Лампа настроения
Сообщение от avp94
|
Резистор, ограничивающий ток в выбранном Вами варианте -5.1Ом
|
При батарейном питании от подобной запитки светодиодов следует отказаться, т.к. на балластном резисторе будет бессмысленно теряться заметная часть энергии.
|
|
|
|
24.09.2011, 15:32
|
#5
|
Частый гость
Регистрация: 04.12.2009
Сообщений: 36
Сказал спасибо: 18
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Лампа настроения
Жаль, конечно, что с аккумуляторами не получиться. тогда возникает вопрос: какой бп выбрать? Из доступного: бп трансформаторный нестабилизированный универсальный TY-1002 1,0А/3-12V AC/DC или бп импульсный стабилизированный с фиксированным напряжением SL-0106-5V1,5A-E 5V/1,5A, 100-240V AC/DC. Думаю импульсный, т.к. он уже стабилизированный, а диодам и мк не принципиально наличие трансформатора в бп.
|
|
|
|
24.09.2011, 21:41
|
#6
|
Частый гость
Регистрация: 04.12.2009
Сообщений: 36
Сказал спасибо: 18
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Лампа настроения
вот как я себе это представляю. питание напрямую от бп. R4, R5, R6 - подбирать по конкретному светодиоду. назначение R1, R2, R3 пока для меня загадка, может кто просветит?
з.ы. смотрел даташит, так и не понял, возможно одновременное считывание и передача с одного порта(как на схеме) или кнопки на другой порт перенести? честно говоря, по атмеловскому даташиту вобще мало что понимаю, нашел книгу Белова, завтра буду мучать ее(если времябудет).
|
|
|
|
24.09.2011, 21:59
|
#7
|
Заблокирован
Регистрация: 08.08.2007
Сообщений: 2,843
Сказал спасибо: 378
Сказали Спасибо 1,368 раз(а) в 746 сообщении(ях)
|
Re: Лампа настроения
|
|
|
|
24.09.2011, 22:19
|
#8
|
Почётный гражданин KAZUS.RU
Регистрация: 08.05.2008
Адрес: регион 63
Сообщений: 1,832
Сказал спасибо: 742
Сказали Спасибо 683 раз(а) в 386 сообщении(ях)
|
Re: Лампа настроения
Интересная штука , надо спаять на досуге, найти только чем RGB светик заменить. А с портом - настройте PD на вход, и цепляйте кнопки к нему PB как был так и останется , меньше придется программу кроить.
з.ы там в программе порт D уже на вход настроен с подтягивающими резисторами к 5 вольт..
з.ы.ы и зачем там 8 мега ? используется всего 3 ноги ( пусть еще три на кнопки 6 , хотя их можно совместить) остальные 16 линий портов свободные. Тут и 2313 излишеством кажется.
__________________
Да здравствует Разум,да сгинет Маразм!
Последний раз редактировалось E_C_C; 24.09.2011 в 22:31.
|
|
|
|
24.09.2011, 22:59
|
#9
|
Частый гость
Регистрация: 04.12.2009
Сообщений: 36
Сказал спасибо: 18
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Лампа настроения
Сообщение от E_C_C
|
з.ы там в программе порт D уже на вход настроен с подтягивающими резисторами к 5 вольт..
|
письмо до Штирлица не дошло... видимо пора спать...
Сообщение от E_C_C
|
з.ы.ы и зачем там 8 мега ? используется всего 3 ноги ( пусть еще три на кнопки 6 , хотя их можно совместить) остальные 16 линий портов свободные. Тут и 2313 излишеством кажется.
|
вероятнее всего потому что прототип, и что под руку подвернулось на том и лепили.
|
|
|
|
25.09.2011, 13:55
|
#10
|
Почётный гражданин KAZUS.RU
Регистрация: 08.05.2008
Адрес: регион 63
Сообщений: 1,832
Сказал спасибо: 742
Сказали Спасибо 683 раз(а) в 386 сообщении(ях)
|
Re: Лампа настроения
да чет и я к ночи затупил
вот из вашего примера
Код:
|
/************************************************** ***
This program was produced by the
CodeWizardAVR V2.03.4 Standard
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 06.08.2009
Author :
Company :
Comments:
Chip type : ATtiny2313
Clock frequency : 8,000000 MHz
Memory model : Tiny
External RAM size : 0
Data Stack size : 32
************************************************** ***/
#include ‹tiny2313.h›
#include ‹stdlib.h›
#include ‹math.h›
#include ‹delay.h›
unsigned char sred, sgreen, sblue; //showing colors
int red, green, blue; //now colors
unsigned int tred, tgreen, tblue; //tagert colors
int delta_red, delta_green, delta_blue; //величина прибавки за шаг
unsigned int time = 1; //длительность шага
void delay(unsigned int delayt) //задержка delay_ms() на вход принимает только константу(
{
while (delayt != 0)
{
delay_ms(1);
delayt--;
};
};
void main(void)
{
unsigned int temp1, temp2, temp3, temp4;
// Crystal Oscillator division factor: 1
//#pragma optsize-
//CLKPR=0x80;
//CLKPR=0x00;
//#ifdef _OPTIMIZE_SIZE_
//#pragma optsize+
//#endif
// Input/Output Ports initialization
// Port A initialization
// Func2=In Func1=In Func0=In
// State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=Out Func3=Out Func2=Out Func1=In Func0=In
// State7=T State6=T State5=T State4=0 State3=0 State2=0 State1=T State0=T
PORTB=0x00;
DDRB=0x1C;
// Port D initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 8000,000 kHz
// Mode: Fast PWM top=FFh
// OC0A output: Non-Inverted PWM
// OC0B output: Disconnected
TCCR0A=0x83;
TCCR0B=0x01;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 8000,000 kHz
// Mode: Fast PWM top=00FFh
// OC1A output: Non-Inv.
// OC1B output: Non-Inv.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0xA1;
TCCR1B=0x09;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// Interrupt on any change on pins PCINT0-7: Off
//GIMSK=0x00;
//MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;
srand(1); //инициализируем рандомайзер этим значением
while (1)
{
do
{
tred = rand()&0xFF;
tgreen = rand()&0xFF;
tblue = rand()& 0xFF;
temp1 = (abs(tred - tgreen));
temp2 = (abs(tred - tblue));
temp3 = (abs(tgreen - tblue));
}
while (( temp1 ‹ 150 ) && (temp2 ‹ 150) && (temp3 ‹ 150)); //если все цвета будут примерно равные то будет белый что не интересно
if (rand() ‹ 13100) //c вероятностью 0,4 (32767) вышибаем один цвет
{
do
{
temp4 = rand() & 0x000F ;
}
while ((temp4 == 0) || (temp4 › 3));
if (temp4 == 1) //не повезло красному
{ //гасим до 0 - 20% от исходного
do
{
temp4 = rand() & 0x0FFF;
}
while ((temp4 == 0) || (temp4 › 3276));
tred = ceil ((float) (temp4 / 32767) * tred);
};
if (temp4 == 2)
{
do
{
temp4 = rand() & 0x0FFF;
}
while ((temp4 == 0) || (temp4 › 3276));
tgreen = ceil ((float) (temp4 / 32767) * tgreen);
};
if (temp4 == 3)
{
do
{
temp4 = rand() & 0x0FFF;
}
while ((temp4 == 0) || (temp4 › 3276));
tblue = ceil ((float) (temp4 / 32767) * tblue);
};
};
delta_red = (tred - sred);
delta_green = (tgreen - sgreen);
delta_blue = (tblue - sblue);
do
{
sred=((red&0xFF00)/256);
sgreen=((green&0xFF00)/256);
sblue=((blue&0xFF00)/256);
if ((tred) != (sred))
red = red + delta_red;
if ((tgreen) != (sgreen))
green = green + delta_green;
if ((tblue) != (sblue))
blue = blue + delta_blue;
OCR1B = sred;
OCR1A = sgreen;
OCR0A = sblue;
delay(time);
}
while ((tred != (sred)) || (tgreen != (sgreen)) || (tblue != (sblue)));
delay(time * 255); //стремились к этому цвету, задержим его
time = 1 + rand()&0x0F; // 1 до 16 варьируется задержка, числа подобраны экспериментально
//делаем после что бы включалось плавно и быстро
};
} |
чтобы была подтяжка портов к плюсу надо писать
Код:
|
PORTD=0x7F;
DDRD=0x00; |
__________________
Да здравствует Разум,да сгинет Маразм!
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 17:41.
|
|