Hur uppnå 3x 16bit PWM
-
- EF Sponsor
- Inlägg: 544
- Blev medlem: 8 december 2006, 11:18:14
- Ort: Tågarp, Svalöv
Re: Hur uppnå 3x 16bit PWM
PIC18F1330 har 18pinnar och 3*14bitars PWM. Sedan finns det en 28pins med 4 PWM.
//A
//A
- Gildebrand
- Inlägg: 1108
- Blev medlem: 8 maj 2009, 21:40:49
- Ort: Falun
Re: Hur uppnå 3x 16bit PWM
Jag fick känslan att sodjan var lite skeptiskt till att man skulle behöva sådan hög upplösning
>Hur många olika ljustyrkor behöver du, tror du ? Det är tveksamt
om man kan uppfatta så värst många fler steg än 1000...
Men när man dimmrar från 0-255 under över två sekunder, så är 8-bitars upplösning ingen höjdare, man ser stegen jättetydligt.
Jag har hållit på ganska mycket med ljus, och nästan samtliga viftare använder 16bitars upplösning på bla dimmer av den enkla anledningen att man inte ska se stegen.
Satsa på 16-bitars, så ska du se att det blir bra.
>Hur många olika ljustyrkor behöver du, tror du ? Det är tveksamt
om man kan uppfatta så värst många fler steg än 1000...
Men när man dimmrar från 0-255 under över två sekunder, så är 8-bitars upplösning ingen höjdare, man ser stegen jättetydligt.
Jag har hållit på ganska mycket med ljus, och nästan samtliga viftare använder 16bitars upplösning på bla dimmer av den enkla anledningen att man inte ska se stegen.
Satsa på 16-bitars, så ska du se att det blir bra.
Re: Hur uppnå 3x 16bit PWM
> Jag fick känslan att sodjan var lite skeptiskt till att man skulle behöva sådan hög upplösning
Ja, eftersom det från början inte framgick vad det skulle användas till, så var jag tveksam.
> Men när man dimmrar från 0-255 under över två sekunder, så är 8-bitars upplösning ingen höjdare, man ser stegen jättetydligt.
Det är ca 120 steg/sek. Visst, har du testad det praktiskt så är det väl så, men det
känns som att det skulle vara lite svårt att se 120 ändringar/sekund "jättetydligt".
Men, som sagt, har du testat det praktiskt så är det så.
Nu så är det ju inte helt klart vad "jättetydligt" betyder, men poängen i hela mitt resonemang
är att man sannolikt ser stegen 1, 2, 3, 4, 5 väldigt tydligt, men stegen 252, 253, 254, 255
som betydligt mjukare övergågar. Grejen med att ha hög upplösning på PWM signalen (d.v.s
högre än vad antalet steg teoretiskt skulle kräva) är att kunna göra en mer anpassad "kurva",
inte att ha 2^16 *olika* steg, det tror jag fortfarande inte behövs. Och i så fall blir
problemet i alla fall det samma, d.v.s stora steg 1, 2, 3, 4, 5 och små steg 65534, 65535, 65536...
Men detta är ju ganska tydligt nu när det även framgår vad PWM signalen ska användas till.
Ja, eftersom det från början inte framgick vad det skulle användas till, så var jag tveksam.
> Men när man dimmrar från 0-255 under över två sekunder, så är 8-bitars upplösning ingen höjdare, man ser stegen jättetydligt.
Det är ca 120 steg/sek. Visst, har du testad det praktiskt så är det väl så, men det
känns som att det skulle vara lite svårt att se 120 ändringar/sekund "jättetydligt".
Men, som sagt, har du testat det praktiskt så är det så.
Nu så är det ju inte helt klart vad "jättetydligt" betyder, men poängen i hela mitt resonemang
är att man sannolikt ser stegen 1, 2, 3, 4, 5 väldigt tydligt, men stegen 252, 253, 254, 255
som betydligt mjukare övergågar. Grejen med att ha hög upplösning på PWM signalen (d.v.s
högre än vad antalet steg teoretiskt skulle kräva) är att kunna göra en mer anpassad "kurva",
inte att ha 2^16 *olika* steg, det tror jag fortfarande inte behövs. Och i så fall blir
problemet i alla fall det samma, d.v.s stora steg 1, 2, 3, 4, 5 och små steg 65534, 65535, 65536...
Men detta är ju ganska tydligt nu när det även framgår vad PWM signalen ska användas till.
Re: Hur uppnå 3x 16bit PWM
Sodjan och jag är nog på samma bana. Hade det inte varit för att "stegen" är lika stora (mätt i mängd utstrålad energi / luminous flux) över hela området så hade det inte behövts alls samma upplösning. Vid allt över 10% ljusstyrka så räcker mina 8 bitar till gott och väl för att uppleva en övergång mellan stegen som omärkbar. Att ha 16bitars upplösning i denna region är i det närmaste löjligt - vid lägre ljusstyrkor behövs den däremot utan någon som helst tvekan. Att jag med 16bitars PWM får denna höga upplösning över hela dynamikomfånget är mest en bi-effekt av en enklare implementation än något som faktiskt behövs. Att "korrigera" signalen enligt en logaritmisk kurva efter PWM-generatorn tror jag nämligen inte blir aktuellt - men hade det varit möjligt så hade det (som tidigare nämnt) troligen räckt med 8-10 bitar. En vanlig datorskärm är ju faktiskt ett bra exempel, med endast 8 bitar som insignal genererar skärmen en logaritmisk ljusstyrka för varje pixel och färg med resultatet att du inte se någon direkt skildnad mellan RGB 0,0,0 och 1,1,1.
Jag sitter just nu och leker med att dimma mitt befintliga 8-bitars system upp och ner (under ca 2 sekunder). I linjärt läge går det rackarns undan vid låga ljusstyrkor medan vid högre ljusstyrkor ser det nästan ut att "stå stilla". Stegen är inte tydligt märkbara men dom finns där. Toningen upplevs dock mer som studsande än jämn - kanske inte den bästa beskrivningen, men alla som någonsin dimmat en lysdiod upp och ner (brukar väl vara första pic-projektet?) borde veta precis vad jag menar =)
När jag slår på logaritmiskt korrigerat läge upplevs cykeln som helt jämn - precis så som jag vill ha det. Här blir stegen däremot mycket tydliga vid låga ljusstyrkor. Effekten av korrigeringen i detta fall blir ju i praktiken att tiden mellan stegen blir längre ju närmare 0 vi kommer. Då handlar det inte längre om 120 steg per sekund utan kanske 5-10.
Jag sitter just nu och leker med att dimma mitt befintliga 8-bitars system upp och ner (under ca 2 sekunder). I linjärt läge går det rackarns undan vid låga ljusstyrkor medan vid högre ljusstyrkor ser det nästan ut att "stå stilla". Stegen är inte tydligt märkbara men dom finns där. Toningen upplevs dock mer som studsande än jämn - kanske inte den bästa beskrivningen, men alla som någonsin dimmat en lysdiod upp och ner (brukar väl vara första pic-projektet?) borde veta precis vad jag menar =)
När jag slår på logaritmiskt korrigerat läge upplevs cykeln som helt jämn - precis så som jag vill ha det. Här blir stegen däremot mycket tydliga vid låga ljusstyrkor. Effekten av korrigeringen i detta fall blir ju i praktiken att tiden mellan stegen blir längre ju närmare 0 vi kommer. Då handlar det inte längre om 120 steg per sekund utan kanske 5-10.
- Gildebrand
- Inlägg: 1108
- Blev medlem: 8 maj 2009, 21:40:49
- Ort: Falun
Re: Hur uppnå 3x 16bit PWM
Skrev fel, men om man börjar närma sig fade-tider på kanske 10 sekunder så börjar man se stegen
Re: Hur uppnå 3x 16bit PWM
Tack för tipsen!barbarossa skrev:PIC18F1330 har 18pinnar och 3*14bitars PWM. Sedan finns det en 28pins med 4 PWM.
//A
Önskar jag kunde skylla på tryckfelsnisse men 4x 16bit PWM skulle det iallafall ha varit. Jag hade uppbart lite för bråttom.
28pinnar är för mycket om jag inte ska gå över till ytmonterat, men jag har kikat på dessa kretsarna också. Det finns ju gott om kretsar med 4x PWM á 16bitar i de lite kraftfullare familjerna.
PIC18F1330 har jag lekt lite med och den hade varit en bra ersättare om jag skulle bygga om mitt befintliga system med bara tre kanaler. Jag tittade på denna när jag skulle bygga första prototypen men då hade jag inte tillgång till en programmerare som klarade den. Nu har jag däremot en ICD 3'a och det är inte omöjligt att jag bygger om med sådana när jag plockat ner det gamla för att sätta upp version 2. Då hade ju nästa ägare iallafall sluppit problemen som stört mig i alla år.
Re: Hur uppnå 3x 16bit PWM
Det kan jag mycket väl tänka mig. Jag upplever som sagt stegen bråkdelen av en sekund kring 0% ljusstyrka (även om det är knappt) redan vid 2 sekunders toningsperiod - men det kan ju ha att göra med att jag har tryck nog till att lysa upp ett helt rumGildebrand skrev:Skrev fel, men om man börjar närma sig fade-tider på kanske 10 sekunder så börjar man se stegen

Re: Hur uppnå 3x 16bit PWM
Det borde väl inte vara så svårt.
Att värden kommer från en omvandling är ganska likgiltigt, själva grejen är den 16-bit PWM.
Rent generellt ser jag att t.ex. en Renesas M16C processor kan klara biffen, den har ett antal timers och PWM'en kan ju faktisk läggas upp så att den är en tid på och en tid av. Kruxet är att overheaden inte får vara längre än 1 bit PWM och det ställer ju en del krav på programmeringen samt CPU-klockan men med lite fiffig programmering kan man nog få till det. Jag vet att varje timer A kan ställas till att vara en 8 eller 16 bit PWM men jag har inte datablad här så jag kan inte kolla om den kan komma upp i 200Hz+ i 16-bit läget men jag har för mig att det skulle vara möjligt.
Jag har själv ett par applikationer där jag kör dom i 8-bit läget och det fungerar kanon.
Att värden kommer från en omvandling är ganska likgiltigt, själva grejen är den 16-bit PWM.
Rent generellt ser jag att t.ex. en Renesas M16C processor kan klara biffen, den har ett antal timers och PWM'en kan ju faktisk läggas upp så att den är en tid på och en tid av. Kruxet är att overheaden inte får vara längre än 1 bit PWM och det ställer ju en del krav på programmeringen samt CPU-klockan men med lite fiffig programmering kan man nog få till det. Jag vet att varje timer A kan ställas till att vara en 8 eller 16 bit PWM men jag har inte datablad här så jag kan inte kolla om den kan komma upp i 200Hz+ i 16-bit läget men jag har för mig att det skulle vara möjligt.
Jag har själv ett par applikationer där jag kör dom i 8-bit läget och det fungerar kanon.
Re: Hur uppnå 3x 16bit PWM
Nope, absolut inte svårt. Problemet var inte tekniken - här finns gott om val - utan utrymmet och det faktum att jag helst ville köra DIL-kapslat. Med DIL-kapsling känns det som att jag har landat på 2xATTiny44. Annars får jag gå över till ytmonterat och då finns det en hel värld av möjligheter, aldeles säkert även Renesas M16CIcecap skrev:Det borde väl inte vara så svårt.
Att värden kommer från en omvandling är ganska likgiltigt, själva grejen är den 16-bit PWM.

-
- Inlägg: 7106
- Blev medlem: 31 augusti 2006, 16:42:43
- Ort: Jamtland
Re: Hur uppnå 3x 16bit PWM
Det blir nog svårt att komma närmare med så lite pinnar.
De är så pass snabba att det kanske skulle gå att trixa till en mjukvaru-pwm istället för den ena 8-bitars kanalen så att den ger 3*16 pwm. Då skulle du bara behöva en krets.
Har dock svårt att förstå varför 28pin är för mycket men 2*14 går bra!
De är så pass snabba att det kanske skulle gå att trixa till en mjukvaru-pwm istället för den ena 8-bitars kanalen så att den ger 3*16 pwm. Då skulle du bara behöva en krets.
Har dock svårt att förstå varför 28pin är för mycket men 2*14 går bra!

-
- Inlägg: 15895
- Blev medlem: 21 juni 2003, 21:26:56
- Ort: Väster om Lund (0,67 mSv)
Re: Hur uppnå 3x 16bit PWM
kan du inte ha en linjär utsignal a 8 bitar från din controller , som sedan logaritmeras i analogvärlden.
Tex styr du en digitalpot a 256 steg som du "o-linjäriserar" mha en parallellkopplad resistor mellan löpare och jord. Resistorn skall ligga på ca 10% av potens värde. Då får du en ganska logaritmisk (ca 35-40 dB range ) utsignal mot ett linjärt insignal i form av ett digitalt ord .
Tex styr du en digitalpot a 256 steg som du "o-linjäriserar" mha en parallellkopplad resistor mellan löpare och jord. Resistorn skall ligga på ca 10% av potens värde. Då får du en ganska logaritmisk (ca 35-40 dB range ) utsignal mot ett linjärt insignal i form av ett digitalt ord .
Re: Hur uppnå 3x 16bit PWM
Jo det är ju en tanke, tror det var lite samma bana som sodjan var inne på när han pratade om att fixa till signalen efter pwm kretsen. Tack för informationen, nu vet jag iallafall hur det går till att "logaritmifiera" (vi hittar på ord till höger och vänster hehe) en linjär signal! Men signalen ska ju styra ca 3watt lysdioder där en styrsignal på 100% ska ge ca 350mA strömstyrt på utgången. Det är säkert inte alls omöjligt att lösa problemet helt analogt - men jag är inte särskilt duktig på analogt.rikkitikkitavi skrev:kan du inte ha en linjär utsignal a 8 bitar från din controller , som sedan logaritmeras i analogvärlden.
Idag använder jag linjära konstantströmsdrivare och just dessa gillar bara pwm-signal för styrningen. I framtiden tänkte jag ersätta dessa med en switchad lösning eftersom dom är så jäkla ineffektiva. Även här verkar det mest aktuellt att styra med PWM.
-
- Inlägg: 15895
- Blev medlem: 21 juni 2003, 21:26:56
- Ort: Väster om Lund (0,67 mSv)
Re: Hur uppnå 3x 16bit PWM
allla regulatorer arbetar med att jämföra en insignal med ett börvärde och reglerar på differensen däremellan.
börvärdet , dvs referensspänningen kan ju vara varierbar...
sedan är frågan om kretsen tillåter att man kommer åt referens spänningen.
börvärdet , dvs referensspänningen kan ju vara varierbar...
sedan är frågan om kretsen tillåter att man kommer åt referens spänningen.
Re: Hur uppnå 3x 16bit PWM
På några av dom switchade lösningarna jag kikat på går det att komma åt referensen. På dom linjära jag har idag går det däremot inte. Men det innebär ju faktiskt att du potentiellt öppnat en alternativ dörr den dag då jag går över till switchat.
-
- Inlägg: 7106
- Blev medlem: 31 augusti 2006, 16:42:43
- Ort: Jamtland
Re: Hur uppnå 3x 16bit PWM
Behöver du verkligen en konstantströmsdrivare när du har en MCU. Du kan använda seriemotstånd och övervaka strömmen med MCU'n. Ifall att den skulle dra iväg om LED blir väldigt varm. Man skulle till och med köra med att MCU'n switchar upp/ner strömmen med en induktans och konding för att få bästa möjliga verkningsgrad på det hela. Dessutom både helt styrd styrka och färg utan "hack".