PWM-Kanaler AVR
Re: PWM-Kanaler AVR
Ni jämför *BAM-lösningar där alla lysdioder ändras varje period, mot en "vanlig PWM"-lösning där lysdioderna ändras var 16:e period. Om PWM-lösningen istället görs så att alla lysdioder ändras varje period blir flimmret ungefär lika vid samma frekvens. Skillnaden är att *BAM flimmrar lite mindre vid högre intensiteter. Vid låga intensiteter flimmrar det lika mycket som vanlig PWM.
Re: PWM-Kanaler AVR
> Jag är inte säker på att det behövs så mycket som 14 bitar, men jag vill inte att man ska se stegen när man gör långsamma förändringar vid låga värden.
Hm... Hur som helst...
Du har nog underlag nu för att räkna på det och se vad som fungerar eller inte fungerar.
Har du kollat på de LED-drivers som t.ex Maxim har ? Där man alltså bara skickar över en
ljusstyrka för varje LEd och så sköter kretsen resten ?
> ...men vad skulle problemet med att köra BAM eller MIBAM vara?
Inte en susning. Jag vet inte vad det är (och är inte så där väldigt intresserad
).
Hm... Hur som helst...
Du har nog underlag nu för att räkna på det och se vad som fungerar eller inte fungerar.
Har du kollat på de LED-drivers som t.ex Maxim har ? Där man alltså bara skickar över en
ljusstyrka för varje LEd och så sköter kretsen resten ?
> ...men vad skulle problemet med att köra BAM eller MIBAM vara?
Inte en susning. Jag vet inte vad det är (och är inte så där väldigt intresserad

-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: PWM-Kanaler AVR
Jag skulle satsa på MIBAM för det kräver mycket mindre cpu-tid, är lika lätt att koda och flimrar i snitt mindre än PWM.
När man ska reglera ljus ser jag ingen fördel med PWM. Ska man reglera andra saker som tex motorer är PWM bättre.
Om du sätter dina led i en 4*8 matris och parallell kopplar alla anoder i X-led och alla katoder i Yled(Jag antar att dina led är GemensamKatod) så har du 4*3 pinnar till anoder och 8st katoder som du måste styra.
Jag hade valt att koppla alla katoder via tex en uln2803 som dy styr med din AVR.
Du aktiverar en kolumn av katoder och sedan ger du en cykel med MIBAM på alla anoder.
Du aktiverar sedan nästa kolumn av katoder och ger en cykel med MIBAM på alla anoder osv.
Om du inte förstår kopplingen så läs på om multiplexing och fattar du fortfarande inte så kan jag måla ett simpelt schema.
När man ska reglera ljus ser jag ingen fördel med PWM. Ska man reglera andra saker som tex motorer är PWM bättre.
Om du sätter dina led i en 4*8 matris och parallell kopplar alla anoder i X-led och alla katoder i Yled(Jag antar att dina led är GemensamKatod) så har du 4*3 pinnar till anoder och 8st katoder som du måste styra.
Jag hade valt att koppla alla katoder via tex en uln2803 som dy styr med din AVR.
Du aktiverar en kolumn av katoder och sedan ger du en cykel med MIBAM på alla anoder.
Du aktiverar sedan nästa kolumn av katoder och ger en cykel med MIBAM på alla anoder osv.
Om du inte förstår kopplingen så läs på om multiplexing och fattar du fortfarande inte så kan jag måla ett simpelt schema.
- Gildebrand
- Inlägg: 1108
- Blev medlem: 8 maj 2009, 21:40:49
- Ort: Falun
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: PWM-Kanaler AVR
Du kan inte få maximal intensitet på lysdioderna om du inte kör ganska hög ström genom dem.
Du kommer bara kunna köra din led 1/8 av tiden om du kopplar som jag sa, jag antar att AVR kan sourca ca 20mA vilket är ungefär vad en led ska ha normalt sätt så du kommer inte få maximal intensitet på leden.
Om du kopplar 4+8*3 istället så kan varje led vara på 1/4 av tiden.
Du kommer bara kunna köra din led 1/8 av tiden om du kopplar som jag sa, jag antar att AVR kan sourca ca 20mA vilket är ungefär vad en led ska ha normalt sätt så du kommer inte få maximal intensitet på leden.
Om du kopplar 4+8*3 istället så kan varje led vara på 1/4 av tiden.
- Gildebrand
- Inlägg: 1108
- Blev medlem: 8 maj 2009, 21:40:49
- Ort: Falun
Re: PWM-Kanaler AVR
Ja det verkar ju rimligt.
Jag har inte i dagsläget någon färdig matris utan har bara labbat lite med en atmega128, TLC5921, och 16 ledar. Skulle gärna vilja få detta att funka med MIBAM innan jag ger mig på att göra "stora" matrisen.
victor_passe, det verkar som att du hade väldigt bra koll på MIBAM och har använt dig utav det, du råkar inte ha någon kod där du använder dig utav det som jag skulle kunna kolla på? Google gav inte så mycket
Jag har inte i dagsläget någon färdig matris utan har bara labbat lite med en atmega128, TLC5921, och 16 ledar. Skulle gärna vilja få detta att funka med MIBAM innan jag ger mig på att göra "stora" matrisen.
victor_passe, det verkar som att du hade väldigt bra koll på MIBAM och har använt dig utav det, du råkar inte ha någon kod där du använder dig utav det som jag skulle kunna kolla på? Google gav inte så mycket

Re: PWM-Kanaler AVR
När jag kollade runt förut hittade jag den här. Förklaringar och färdig AVR-kod för BAM (Bit Angle Modulation).
http://www.batsocks.co.uk/readme/art_bcm_3.htm
MIBAM verkar ju vara samma sak fast sekvensen körs baklänges varannan gång. Varför det skulle ha fördelar vid LED-drivning förstår jag inte?
http://www.batsocks.co.uk/readme/art_bcm_3.htm
MIBAM verkar ju vara samma sak fast sekvensen körs baklänges varannan gång. Varför det skulle ha fördelar vid LED-drivning förstår jag inte?
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: PWM-Kanaler AVR
Om du driver en led med 8-bitars BAM och just nu har du 127 i intensitet, du går sedan upp 1 nivå till 128.
Det gör att du får 255 under 1 cykel.
Det får LED:en att blinka till ganska mycket vid den omvandlingen och omvandlingar rent allmänt blir väldigt dåliga.
Har man MIBAM istället så slipper man det.
Det gör att du får 255 under 1 cykel.
Det får LED:en att blinka till ganska mycket vid den omvandlingen och omvandlingar rent allmänt blir väldigt dåliga.
Har man MIBAM istället så slipper man det.
- Gildebrand
- Inlägg: 1108
- Blev medlem: 8 maj 2009, 21:40:49
- Ort: Falun
Re: PWM-Kanaler AVR
MIBAM är väl egentligen BAM fast andra halvan är cykeln är en spegling utav första halvan?
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
- Gildebrand
- Inlägg: 1108
- Blev medlem: 8 maj 2009, 21:40:49
- Ort: Falun
Re: PWM-Kanaler AVR
Då borde det alltså vara ganska enkelt att göra om BAMkod så att det blir MIBAM istället. Om någon sitter på "färdig" kod för detta så får denne gärna dela med sig utav den 
Själva koden som pratar med skiftregistret borde väl bli densamma med MIBAM?

Själva koden som pratar med skiftregistret borde väl bli densamma med MIBAM?
Re: PWM-Kanaler AVR
I koden från sidan länkad ovan behöver nog endast interruptrutinen ändras så att sekvensen går baklänges varannat varv, dvs att byts till samt motsvarande ändringar på övriga variabler och startvärden.
Kod: Markera allt
g_bitpos ++ ;
Kod: Markera allt
g_bitpos -- ;
Kod: Markera allt
// Timer interrupt handler - called once per bit position.
ISR( TIMER2_COMP_vect )
{
g_bitpos ++ ;
g_bitpos &= 7;
PORTD = g_timeslice[ g_bitpos ] ;
// now set the delay...
TCNT2 = 0;
OCR2 <<= 1 ;
if (g_bitpos == 0) OCR2 = 1 ; // reset the compare match value.
if (g_bitpos == 7) g_tick = 1 ; // give the main loop a kick.
}
- Gildebrand
- Inlägg: 1108
- Blev medlem: 8 maj 2009, 21:40:49
- Ort: Falun
Re: PWM-Kanaler AVR
Nu skulle man haft en sån där logikanalysator
Det är ju så otroligt smart BAM, och ändå så enkelt. Binärt och fint
Att det skulle dröja så innan det kom, för visst är det en helt nytt?
Det är ju så otroligt smart BAM, och ändå så enkelt. Binärt och fint

Att det skulle dröja så innan det kom, för visst är det en helt nytt?
Re: PWM-Kanaler AVR
I MPLAB finns logikanalysator i simulatorn. Finns motsvarande funktion i någon simulator/debugger för AVR?
- Gildebrand
- Inlägg: 1108
- Blev medlem: 8 maj 2009, 21:40:49
- Ort: Falun