Efterlikna en vedbrasa med LED-lampa?

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Användarvisningsbild
4kTRB
Inlägg: 21608
Blev medlem: 16 augusti 2009, 19:04:48

Efterlikna en vedbrasa med LED-lampa?

Inlägg av 4kTRB »

Jag har en LED-matris om 100 röda LED som jag kan styra intensiteten på med
en signal mellan 0V och 1V. (se mitt projekt "Tangentbordsbelysning"-http://elektronikforumet.com/forum/view ... sbelysning)

Jag har sett röda belysningar som efterliknar flammande eld typ öppen brasa.

Det jag undrar är om det finns någon "standard" signal/algoritm jag kan utnyttja för att få det
verklighetstroget? Jag har en tanke om att sampla ljuset från en öppen brasa och spela in
på en vanlig CD för att sedan låta utgången från CD-spelaren styra matrisen men det kanske
inte fungerar som jag tänkt.

Tacksam för alla tips.
sneaky
Inlägg: 1621
Blev medlem: 22 juni 2009, 18:38:42

Re: Efterlikna en vedbrasa med LED-lampa?

Inlägg av sneaky »

Jag vet att en del billiga "elektriska ljus" använder ljudet från sådana där kort som spelar en melodi när man öppnar dem som signal. Kanske inte fungerar så lysande bra för att simulera en brasa dock :)
Användarvisningsbild
4kTRB
Inlägg: 21608
Blev medlem: 16 augusti 2009, 19:04:48

Re: Efterlikna en vedbrasa med LED-lampa?

Inlägg av 4kTRB »

Det känns lite som det handlar om en slumpmässig signal.
Kanske rent av en slumptalsgenerator kan fungera?
Användarvisningsbild
prototypen
Inlägg: 11108
Blev medlem: 6 augusti 2006, 13:25:04
Ort: umeå

Re: Efterlikna en vedbrasa med LED-lampa?

Inlägg av prototypen »

De brasor som görs av ljustekniker består ofta av 3 lampor, 2 gula och 1 röd som sedan fipplas lite upp och ned på.

Slumptal ger alltför stora "hopp". en räknare som räknar uppåt o nedåt lite slumpartat är bättre. Jag har gjort "stearinljus" som ser så realistiska ut att jag själv trodde det var riktiga ljus (hemma hos en kompis), samma teknik har fått securitas att bryta upp en dörr för att släcka ett kvarglömt "ljus".

Till en brasa använder man 3 sådana ljus.

Protte
Användarvisningsbild
4kTRB
Inlägg: 21608
Blev medlem: 16 augusti 2009, 19:04:48

Re: Efterlikna en vedbrasa med LED-lampa?

Inlägg av 4kTRB »

Räknare är alltså ett tips!

Jag får ta och bygga 2 moduler med gula LED för att få det bättre.

Fast lite av effekten borde gå att ordna med enbart en röd färg även om
det du uppger känns bättre.
Användarvisningsbild
4kTRB
Inlägg: 21608
Blev medlem: 16 augusti 2009, 19:04:48

Re: Efterlikna en vedbrasa med LED-lampa?

Inlägg av 4kTRB »

Såg även det här projektet med att sända morse-kod med en sändare.
Tänke faktiskt på det i går hurvida fort det skulle gå att kommunicera med en vanlig
lampa tvärs över gatan med morse-kod. Mottagaren skulle bestå av en typ tubkikare
ansluten till en LDR.

http://sci-toys.com/scitoys/scitoys/com ... itter.html
Användarvisningsbild
4kTRB
Inlägg: 21608
Blev medlem: 16 augusti 2009, 19:04:48

Re: Efterlikna en vedbrasa med LED-lampa?

Inlägg av 4kTRB »

Finns det någon algoritm som skulle vara tänkbar för en sån här effekt?
snigelen
Inlägg: 815
Blev medlem: 8 maj 2009, 11:02:14
Ort: Lund

Re: Efterlikna en vedbrasa med LED-lampa?

Inlägg av snigelen »

Jag vet inte direkt om det liknar en brasa, det är väl upp till betraktaren. Men här är årets upplaga av läskig pumpabelysning. För att göra den extra läskig så använder jag flyttal, men den går ändå att pressa in i en attiny25. (Jag har precis kastat pumpan, den började mögla.) (Om någon undrar så är det en AR(1)-process)

Kod: Markera allt

#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/pgmspace.h>
#include <stdlib.h>

// Random integer between 0 and n-1
#define randint(n) (random()/(RANDOM_MAX/(n) + 1))

const int8_t PROGMEM norminv[256] =
	{-127,-109,-100,-95,-90,-87,-83,-81,-78,-76,-74,-72,-71,-69,-68,-66,-65,-63,-62,
         -61,-60,-59,-58,-57,-56,-55,-54,-53,-52,-51,-50,-49,-49,-48,-47,-46,-46,-45,-44,-43,
         -43,-42,-41,-41,-40,-39,-39,-38,-37,-37,-36,-36,-35,-34,-34,-33,-33,-32,-32,-31,-31,
         -30,-29,-29,-28,-28,-27,-27,-26,-26,-25,-25,-24,-24,-23,-23,-22,-22,-22,-21,21,-20,
         -20,-19,-19,-18,-18,-17,-17,-16,-16,-16,-15,-15,-14,-14,-13,-13,-12,-12,-12,-11,-11,
         -10,-10,-9,-9,-9,-8,-8,-7,-7,-6,-6,-6,-5,-5,-4,-4,-4,-3,-3,-2,-2,-1,-1,-1,-0,0,1,1,1,2,2,3,
         3,4,4,4,5,5,6,6,6,7,7,8,8,9,9,9,10,10,11,11,12,12,12,13,13,14,14,15,15,16,16,16,
         17,17,18,18,19,19,20,20,21,21,22,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,
         29,30,31,31,32,32,33,33,34,34,35,36,36,37,37,38,39,39,40,41,41,42,43,43,44,45,
         46,46,47,48,49,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,65,66,68,69,71,72,
         74,76,78,81,83,87,90,95,100,109,127};

// Truncated standard normal from table lookup.
float randn()
{
	return pgm_read_byte(&norminv[randint(256)])*0.0235;
}

void init()
{
	DDRB = 0b10011;

	// Timer 0
        // Timer0, Set OC0[AB] on comp. match (inv). Mode 3: Fast PWM
        TCCR0A = (1<<COM0A1)|(1<<COM0A0)|(1<<COM0B1)|(1<<COM0B0)|
                (1<<WGM01)|(1<<WGM00);
        // 1:8 presc.
        TCCR0B |= (1<<CS01);

	// Timer 1
        // Enable PWM1B, Clear OC1B on comp. match.
        GTCCR = (1<<PWM1B)|(1<<COM1B1)|(1<<COM1B0);
        TCCR1 |= (1<<COM1A1)|(1<<COM1A0); //Bug fix.
        // Timer 1; 1:8 presc.
        TCCR1 |= (1<<CS12);	
}


void fade_to(uint8_t new)
{
	uint8_t i, current = OCR0A;

	if (new > current)
		for (i = current; i < new; i++) {
			OCR0A = OCR0B = OCR1B = i;
			_delay_us(200);
		}
	else
		for (i = current; i > new; i--) {
			OCR0A = OCR0B = OCR1B = i;
			_delay_us(200);
		}
}


int main(void)
{
	float x = 0.0;
	init();
	while(1) {
		x = x*0.9 + randn()*10.0;		
		fade_to(x+180.0);
		_delay_ms(20);
	}
	return 0;
}
Edit: Bytt till vettigare siffror.
Senast redigerad av snigelen 8 november 2010, 15:37:29, redigerad totalt 2 gånger.
Användarvisningsbild
4kTRB
Inlägg: 21608
Blev medlem: 16 augusti 2009, 19:04:48

Re: Efterlikna en vedbrasa med LED-lampa?

Inlägg av 4kTRB »

Borde helt klart gå applicera i ett JAVA-program då det är det som gäller för mig.
:bravo:
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: Efterlikna en vedbrasa med LED-lampa?

Inlägg av blueint »

Funderade på samma sak för en vecka sedan.. :vissla:

Dom tankar som dök var:
* RGB för att kunna blanda, fast kanske man kan eliminera blå ?
* Färgmodell så att referensen till vitt blir korrekt (vitbalans?).
* Additiv RGB modell.
* Olika lumen/ampere responser för lysdioderna i kombination med olika känslighet i ögat för basfärg.
* Räcker en punkt, eller behöver man flera ?
* Om man t.ex bara använder röd, blir det mest verklighetstroget att spela in en riktigt eld med endast det röda spektrat. Eller bör man blanda RGB till en luminanssignal som sedan används till den röda färgen ?

Antingen kan man "spela in" genom att filma och plocka ut ett fält som man medelvärdesbildar. Och klippa ut det i flera delar som kombineras slumpvalt. Eller så efterliknar man det med en algoritm. Metoder kan vara kurvanpassning eller analys av funktionen även om den är rätt slumpvis kan jag tänka mig.
Fast med google kan man säkert hitta någon vettig algoritm.
Användarvisningsbild
PeterH
Inlägg: 8647
Blev medlem: 15 mars 2006, 15:57:10
Ort: Gävle/Valbo

Re: Efterlikna en vedbrasa med LED-lampa?

Inlägg av PeterH »

Jag byggde för ett tag sedan en ljuslykta med "värmeljus" som hade ganska verklighetstrogen effekt, se denna tråd
Användarvisningsbild
4kTRB
Inlägg: 21608
Blev medlem: 16 augusti 2009, 19:04:48

Re: Efterlikna en vedbrasa med LED-lampa?

Inlägg av 4kTRB »

Jag kollade på Film1 där och det ser riktigt bra ut.
Fast det handlar om många lyktor där så de skapar väl
lite av effekten tillsammans?

Läser också om den "Autoregressive model" och den kräver en del tid att sätta sig in i
men den verkar väldigt intressant. Vitt brus ska tydligen finnas med på något sätt.
snigelen
Inlägg: 815
Blev medlem: 8 maj 2009, 11:02:14
Ort: Lund

Re: Efterlikna en vedbrasa med LED-lampa?

Inlägg av snigelen »

Jo det finns väl många sätt att få till något som mer eller mindre liknare ett flimrande ljus eller en brasa.
Vill man göra något som baseras på slumptal så kan man väl tänka sig som följer, utan gräva ner sig i teoretiska detaljer.

I mitt fall hade jag 8 bitars PWM kopplad till lysdioden(erna). Så ett slumptal mellan kanske 80 och 250 kunde vara lämpligt. Men tar man en helt okorrellerad sekvens av slumptal blir det väldigt hoppigt och ser inte alls naturligt ut. Man kan kanske tänka sig en smallare fördelning eller så men då fladdrar det kanske för lite i stället.

Så i stället för att låta slumpen bestämma det nya värdet, så kan man, t.ex, ta lite av föregående värde och lägga till ett (mindre) slumptal. Så slumpen bestämmer i stället förändringen av signalen.
För att detta skall funka (så att det bara inte brakar iväg) så måste man bara ta en del av föregående värde (inte hela eller mer) samt slumpstörningen bör vara "vitt brus" (en okorrellerad likafördelad sekvens som i medeltal är noll (som väl är en av definitionerna av vitt brus)). Då har man fått en (stabil) AR(1)-process.

I mitt fall så valde jag att ha x = 0.9*x + randn()*10.0; där randn() ger ett normalfördelat slumptal (som i medeltal är noll). Men det behöver inte vara normalfördelning (som går att generera på bättre sätt, men jag brände min tiny45 (min första brända AVR) och hade bara tiny25 i lådan så jag fick snabb-banta programmet så det fick plats). Detta x håller sig i krokarna av -60 -- 60 så jag skalar om det som x + 180 innan det skickas på PWM-kanalerna. Sen kan man ju prova att ändra lite på parametrarna (0.9, 10.0, 180 och tiden mellan uppdateringar) för att få lite olika effekter.

Man kan förståss tänka sig andra modeller, t.ex. att även ta lite av förr-förra värdet (AR(2)). Sedan finns det ju metoder för att välja en modell och dess parametrar utifrån en uppmätt sekvens. Men det får bli till Jul eller nästa höst.

Vill man ha olika färger kan man kanske välja en (het) färgskala som man indexerar med den genererade sekvensen (modellera t.ex. RGB var för sig blir nog lite komplicerat).

Edit: Bytt till vettigare siffror, motsvarande i förra inlägget.
Skriv svar