Strona 1 z 2

Przetwornica CC z trybami

: wtorek 22 wrz 2009, 09:50
autor: Pyra
Witam

No i zaczynam nowy projekt, a jest to sterownik constant current czyli w diodę LED ma iść prąd stały odpowiedniej wartości a nie prąd max modulowany przez PWM.
Bazą tego rozwiązania jest układ przetwornicy step-down wykonany w oparciu o układ PT4105. Układ PT4105 jest typową przetwornicą Step-down z pomiarem prądu na rezystorze szeregowym, ale ma niewątpliwą zaletę, czyli stosunkowo niskie napięcie FB (pomiarowe) wartości 0,2V.
W datasheet'ie, jest opisana możliwość sterowania układem przetwornicy przez scałkowany sygnał PWM, lecz jest jedno ale, a mianowicie napięcie zasilania procesora....
Do zasilania procesora potrzebujemy napięcie z zakresu 1,8 do 5,5V (ATTiny 13), napięcie zasilania przetwornicy może być jednak wyższe od 5,5V (ze względu na podtrzymanie możemy dodać około 0,6V), wtedy by trzeba zasilać z osobnego stabilizatora, co czasem bywa uciążliwe, a gdy użyjemy przetwornicę step-up/down, wręcz niemożliwe a układ ma być w założeniu dość uniwersalny. Postanowiłem zasilać procesor z napięcia zasilającego LEDa, jednak wiąże się to z jednym ograniczeniem, a mianowicie minimalnym prądem LEDa, czyli dioda musi być zasilania pewnym minimalnym napięciem wystarczającym do pracy uC. W moim przypadku jest to 1,8V + 0,2V (dioda Shotky’ego, przy małym prądzie), czyli około 2V, biorąc jednak pod uwagę pewien zapas energii kondensatora podtrzymującego, można przyjąć napięcie 2,5V

Ideę układu przedstawia poniższy schemat:
Obrazek

Dla uproszczenia jednak początkowo rozpatrywać będziemy poniższy schemat:
Obrazek

Klasyczny obwód jest zbudowany z elementów R1, R2, R3, R4, C1, D1 (LED).
Działa to tak: Przepływ prądu przez Diodę D1 oraz R1, powoduje na tym ostatnim spadek napięcia, który jest dostarczany do wejścia FB (feedback – sprzężenie zwrotne), a układ przetwornicy dąży do utrzymania stałej wartości tego napięcia na poziomie 200mV (0,2V), w konsekwencji stabilizując prąd płynący przez LEDa.
Zmianę prądu (zmniejszenie) możemy dokonać "oszukując" niejako układ przetwornicy i podając dodatkowe napięcie dodające się do napięcia Ur1 (czyli R1 x Ir1, które równe jest Iled). Realizowane jest to przez wywołanie spadku napięcia na dodatkowym rezystorze R2. Spadek napięcia na tym rezystorze wywołany jest natomiast przepływem prądu w obwodzie R1, R2, R3 (na razie R4 pomijam, potem wyjaśnię). Z tym, że Rezystory R2 i R3 stanowią dzielnik rezystancyjny, który powoduje zmniejszenie napięcia sterującego do wartości maksymalnej 200mV na rezystorze R2.
Teraz zasada działania regulacji, ponieważ układ dąży do utrzymania stałego napięcia na wejściu FB, a nie spadku napięcia na R1. Biorąc powyższe pod uwagę mamy ogólny wzór:

Ur1 + Ur2 = 200mV

Z tego wynika, że wymuszając spadek napięcia wartości 200mV na R2 możemy uzyskać prąd LEDa 0,0A (przynajmniej teoretycznie, gdyż ta wartość jest ograniczona koniecznością zasilania procesora)
Dalej:

Ur1 = R1 x Iled (w przybliżeniu, lecz dokładnym o czym potem)
Ur2 = R2 x I2 (nazwijmy tak na razie w skrócie)

A:

I2 = Uc1 / (R3 + R2 +R1)

Wziąwszy jednak pod uwagę, że R1<<R2, możemy tę wartość pominąć w obliczeniach, co sygnalizowałem wcześniej. Czyli ostatecznie wzór przyjmuje postać:

I2 = Uc1 / (R3 + R2)

Teraz pojawia się problem, a mianowicie Uc1. Ponieważ napięcie zasilania uC zmienia się stosownie do prądu płynącego przez LEDa, to wahaniom ulega również napięcie na wyjściu portu PWM, co powoduje przenoszenie tych zmian na napięcie sterujące czyli Ur2. Nie jest jednak źle, gdyż układ dąży do stabilności samoczynnie, ze względu, że jest to ujemne sprzężenie zwrotne.
Przeanalizujmy:
Zwiększając napięcie Uc1, wymuszamy przepływ większego prądu przez dzielnik R2, R3, co powoduje zwiększenia spadku napięcia na R2, a więc z równania
200mV = Ur2 +Ur1
wynika, że przetwornica będzie obniżać prąd LEDa, do uzyskania mniejszego spadku na R1 zachowując 200mV na wejściu FB.
Tutaj pojawia się nowe zjawisko, czyli zmniejszenie napięcia zasilającego procesor, a w konsekwencji obniżenie napięcia Uc1, czyli też Ur2. Przetwornica chcąc zachować stałą wartość napięcia na FB, będzie podnosić napięcie zasilające LED, a w konsekwencji prąd i spadek napięcia na R1, a to znowu podniesie napięcie zasilania uC i w konsekwencji Uc1.
Układ dąży co prawda do stabilności, lecz mogą pojawiać się gasnące oscylacje przy zmianach jasności
Głównym elementem ustalającym częstotliwość owych oscylacji będzie kondensator podtrzymujący zasilanie uC.
Pomyślałem więc, że uC powinien sam mierzyć napięcie na R1 i odpowiednio programowo reagować na jego zmiany, zwiększając i zmniejszając wartość PWM, co też może powodować oscylacje, lecz w dużo mniejszym zakresie.
Innym sposobem, jest stabilizacja napięcia PWM, ale tutaj trzeba by użyć diody zenera o stosunkowo niskim napięciu przewodzenia, lub np.: 2 szt. diod krzemowych połączonych szeregowo w kierunku przewodzenia.
Czyli coś takiego:
Obrazek

Czy koledzy mają jakieś uwagi do mojego toku rozumowania, lub może lepsze pomysły?

Pozdrawiam

: wtorek 22 wrz 2009, 11:37
autor: Calineczka
...fajnie wszystko wytłumaczyłeś i rozrysowałeś :mrgreen:
Nie mogę jednak pojąć ostatniej kwestii-jak i dlaczego chcesz stabilizować sygnał PWM który wychodzi z wyjścia procka?Przecież ten sygnał ma być zmienny, scałkowany da napięcie w jakimś tam zakresie, a jak dorzucisz równolegle owe dwie diody to ograniczysz max. napięcie na nich do 1,4V. Na anoda D3 katoda D4 będziesz miał falę prostokątną o max amplitudzie 1,4V i zmiennym wsp. wypełnienia-o to Ci chodziło?Taki FUZZ do gitary tylko do driverka? Coś w tym jest... :mrgreen:
A jak by tak stabilizowac nap.zasilające procek?FUZZ-a zrobić np. z 4ech diodek, zasilanie będzie ok. 2,8V, jak będa już wahania nap. zasilającego mozna spróbowac z trzech.....a może jednak dioda zenera niskonapięciowa?Oczywiście z rez.szeregowym w zasilaniu procka/diody/diodek.

: sobota 26 wrz 2009, 21:17
autor: Pyra
Calineczka pisze: ...fajnie wszystko wytłumaczyłeś i rozrysowałeś :mrgreen:
Nie mogę jednak pojąć ostatniej kwestii-jak i dlaczego chcesz stabilizować sygnał PWM który wychodzi z wyjścia procka?
Bo widzisz wartość napięcia sygnału PWM, będzie się zmieniać odwrotnie proporcjonalnie do współczynnika wypełnienia, ale ze zwłoką wyznaczoną przez stałą czasową określoną przez pojemność kondensatora podtrzymującego i wartość prądu pobieranego przez procek. Otrzymamy w ten sposób około 1 - 2s ściemnianie lub rozjaśnianie ale odwrotne. Załóżmy przy przełączaniu trybu na jaśniejszy, wskoczy średni i rozjaśni sie do właściwego.

A może tak zostawić jako "dodatkowy bajer" ;)

Calineczka pisze: Przecież ten sygnał ma być zmienny, scałkowany da napięcie w jakimś tam zakresie, a jak dorzucisz równolegle owe dwie diody to ograniczysz max. napięcie na nich do 1,4V. Na anoda D3 katoda D4 będziesz miał falę prostokątną o max amplitudzie 1,4V i zmiennym wsp. wypełnienia-o to Ci chodziło?Taki FUZZ do gitary tylko do driverka? Coś w tym jest... :mrgreen:
Dlatego chcę stabilizować wartość sygnału PWM przed całkowaniem, czyli przy max wypełnieniu osiągnie tylko watrość napięcia stabilizacji. Zostanie tylko ograniczona amplituda, a nie wartość współczynnika wypełnienia, czyli po scałkowaniu wartość napięcia Uc1 będzie tylko procentowo niziższa, ale stabilna i niezależna od napięcia zasilania.

Pozdrawiam

Calineczka pisze: A jak by tak stabilizowac nap.zasilające procek?FUZZ-a zrobić np. z 4ech diodek, zasilanie będzie ok. 2,8V, jak będa już wahania nap. zasilającego mozna spróbowac z trzech.....a może jednak dioda zenera niskonapięciowa?Oczywiście z rez.szeregowym w zasilaniu procka/diody/diodek.
Właśnie alternatywą było zastosowanie stabilizacji napięcia procesorka, ale redukując napięcie źródła zasilania (przy step-down) trzeba by zastosować dodatkowy stabilizator szeregowy, lub równoległy, co jednak przy zmianie przetwornicy na step-up już by było niemożliwe do zrealizowania. ogólnym założeniem projektu, była możliwość wykorzystania samego driverka niezależnie od zastosowanego układu przetwornicy.
A jak wiesz, zasilając procka z napięcia LEDa jesteśmy ograniczeni jego wartością, do tego zmienną w zależności od rodzaju pracy.

Prace trwają nadal. :roll:
Korzystając z drugiego schematu (uproszczonego) postanowiłem sprawdzić skuteczność regulacji PWM.
Zacząłem od obliczeń.
Założenia:
Napięcie zasilania 5V (dla procka też)
Prąd diody 200mA
Rezystor R4 - 10k&#937;

Rezystor R3 postanowiłem przyjąc o podobnym zakresie.
Ufb = 0,2V
Uz = 5V (podobnie na wyjściu PWM, impulsy napięcia około 5V)

Stosunek rezystancji w dzielniku:

Uz / Ufb = 5V / 0,2V = 25

Mamy R4 więc najprostrzym rozwiązaniem będzie przyjąć

R4+R3+R2=25k&#937;

Z tego wynika, że:

R2 = (R4+R3+R2)/25 = 1k&#937;

Mamy więc:

R3 = (R4+R3+R2) - R4 - R2 = 25k&#937; - 10k&#937; - 1k&#937; = 14k&#937;

Co jak wiadomo jest rezystancją występującą w naturze ;)

Teraz R1

R1 = Ufb / Iled = 200mV / 200mA = 1&#937;

Mamy więc ostatecznie:
R1 = 1&#937;
R2 = 1k&#937;
R3 = 14k&#937;
R4 = 10k&#937;

Ale biorąc pod uwagę że: "w teorii nie ma różnicy pomiędzy teorią a praktyką, w praktyce jest" należało zmniejszyć wartość R3 do 12k&#937;, aby osiągnąć pełny zakres regulacji, ze względu na to, że jednak wartość napięcia PWM jest mniejsza niż 5V,a Ufb wynosi 206mV.

Oto układ próbny:
Obrazek

Uzyskano prądy:
Imax = 206mA
Imin = około 1mA (wartość się zmieniała przy kolejnych próbach od 1,2mA do 0,9mA)

Po napisaniu programu zmieniającego liniowo wartość PWM w górę i w dół zauważyłem:
- stosunkowo szybką zmianę jasności na niskich prądach
- bardzo wolną zmianę jasności przy dużych prądach
- prąd zmianiający się prawie liniowo
Jest to zjawisko bardzo optymistycznie napawające, gdyż potrzbna jest dokładniejsza regulacja prądu przy zbliżaniu się do parametrów granicznych LED, niż na niskich jasnościach.

Pomierzyłem oscyloskopem faktyczny prąd LEDa zasilanego z przetwornicy. Kondensator wyjściowy 10&#181;F warstwowy, czyli układ standardowy z datasheet'a
wykres na oscyloskopie wyszedł podejrzany... bardzo gruba krecha. Pomyślałem, no tak przecież ona pracuje z częstotliwością około 500kHz. Zmniejszałem podstawę czasu, aż przy 0,5&#181;s/dz uzyskałem taki oto obrazek:
Obrazek

Czułość pionowa to 100mV/dz, pomiar na rezystorze szeregowym 1&#937;.
No cóż wychodzi na to, że przetwornice constant current też nie są tak do końca "constant" :roll:

Pozdrawiam

PS: Niestety podczas prób kolejnego programu, odwrotnie wsadziłem procek i teraz nie daje pełnego napięcia na wyjściu PWM, a miało być tak pięknie :zly:

: niedziela 27 wrz 2009, 00:23
autor: Calineczka
przepraszam za może głupie pytanie ale już zasypiam....to jaki Ci wyszedł prąd maksymalny/szczyt amplitudy?
Fajnie wygląda tyci kondensator SMD na grubasnych kabelkach :mrgreen:
p.s. procek w wersji SO8(Attiny13V-10SSU) mogem podesłać :wink:

: piątek 02 paź 2009, 23:47
autor: Pyra
Calineczka pisze: przepraszam za może głupie pytanie ale już zasypiam....to jaki Ci wyszedł prąd maksymalny/szczyt amplitudy?
Rozdzielczość pionowa to było 0,1V/dz, rezystor pomiarowy to 1&#937; więc prąd ciągły to te zmierzone 206mA, a szczyt to by było jakieś 320mA przez 30 - 40ns, czyli o 50%więcej niż ustalony
Calineczka pisze:Fajnie wygląda tyci kondensator SMD na grubasnych kabelkach :mrgreen:
Hłe, hłe hłe, a co mu będę żałował ;)
Calineczka pisze:p.s. procek w wersji SO8(Attiny13V-10SSU) mogem podesłać :wink:
Nie będę protestował ;) u mnie w sklepach mają tylko tę szerszą wersję.



Ponownie zabrałem się za pracę, tym razem chciałem sprawdzić jak to naprawdę jest ze zjawiskiem wpływu zmian napięcia zasilania procka (LEDa) na wartość prądu. Otóż, jednak przy zmianie trybów w górę, zjawisko bezwładności jest niezauważalne, kondensator bardzo szybko się doładowuje.
Jednak przy zmianie trybu w dół mamy tak, że jasność spada bardzo nisko i potem podnosi się do właściwej.
Widać to na poniższym oscylogramie.
Obrazek

Niestety metoda fotografowania oscyloskopu przy wolnych przebiegach nie jest doskonała, więc mamy dwa kolejne przebiegi. Nas interesuje ten na którym prąd zchodzi mocno w dół i potem wraca do ustalonej pozycji.
Mignięcie trwa około 25ms, jest jednak zauważalne.

: sobota 03 paź 2009, 11:37
autor: Calineczka
hmm, a jaka jest amplituda prądu?
Dobrze, że przygasa i wraca do jasności a nie daje po gałach i wtedy się uspokaja :mrgreen: Z ciekawości, podłaczałeś może większy kondenastor na zasilanie procka, po jakiejś diodzie schottkyego, rzędu setek uF?

: sobota 03 paź 2009, 11:58
autor: Pyra
Calineczka pisze: hmm, a jaka jest amplituda prądu?
Prąd górny ustalony na 200mA dolny na około 100mA, a "przygaśnięcie prawie do zera.
Co ciekawe PWM ustawino na 255 i 1 czyli min i max, będzie trzeba przeliczyć dzielnik napięcia starującego.

Bardzo zastanawia mnie kształt dołka, według mnie powinien być skok na minimum i potem "powoli" do góry, z szybkością spadku napięcia zasilania procka, a tu jakoś odwrotnie jest..... :roll:

Calineczka pisze:Dobrze, że przygasa i wraca do jasności a nie daje po gałach i wtedy się uspokaja :mrgreen:
To też działa na mnie uspokajająco, najgorszy wariant odpada. :)

Calineczka pisze: Z ciekawości, podłaczałeś może większy kondenastor na zasilanie procka, po jakiejś diodzie schottkyego, rzędu setek uF?
Kondensator na podtrzymaniu 47&micro;F, dioda 1N4148, czyli zwkała impulsowa. Na Shotky'ego zyskamy trochę napięcia sterującego, co wiąże się z niższymi prądami na LEDa.
To zjawisko występuje tylko z podtrzymaniem, przy zasilaniu bezpośredno z napięcia LEDa tego nie ma. Ale jak na razie podtrzymanie jest mi konieczne do realizacji zmiany trybów.

Pozdrawiam

: sobota 03 paź 2009, 23:28
autor: Calineczka
masz jakieś szotki czy podsyłać? :mrgreen:

: niedziela 04 paź 2009, 08:45
autor: Pyra
Dzięki, mam, trochę się tej elektroniki narozbierało :)
Do prób potrzebuję w zwykłej obudowie przewlekanej, to kilka sztuk się znajdzie.
Wczoraj sprawdzałem charakterystyki przewodzenia diod krzemowych, dziś sobie oliczę dzielniki napięcia sterującego i zabieram się za pomiary ogranicznika diododwego. Pomyślełem o 2 szt diod włączonych w kierunki przewodzenia, przy tak małych prądach powinienem dostać jakieś 1 - 1,2V napięcia ograniczającego.

Pozdrawiam

: niedziela 04 paź 2009, 11:01
autor: Calineczka
no ciekaw jestem na ile się zmieni ten dołeczek.... :?:

: niedziela 04 paź 2009, 13:54
autor: Pyra
Witam

Dziś, podczas drzemki syna, przystąpiłem do dalszych prac.
Ponieważ chciałem zlikwidować widoczny dołek na oscylogramie, przystąpiłem do zmian układowych. Potrzebowałem dwóch diod krzemowych, które włączone w kierunku przewodzenia w układ PWM miały ograniczać wartość impulsu z procka, dokonałem pomiaru napięcia przwodzenia dwu diod połączonych szeregowo i otrzymałem wynik 1,8V. :o Coś nie tak :roll: Pomierzyłem obie diody osobno i okazało się, że jedna miała 0,598V a druga 1,213V, co w tym najciekawsze ta ostatnia pracowała w układzie podtrzymania napięcia procka. Wychodzi na to, że napięcie zasilania procka spadało niebezpiecznie blisko granicy poprawnego działania.
Na początek więc wyszukałem w szpargałach diodę Shotky'ego 1N5819 i.... widoczne mrygnięcie zniknęło. Po podłączeniu oscyloskopu na rezystor pomiarowy, okazało się, że dołek co prawda jest ale maleńki i zgodny z teorią :)
Kolejny raz wyszło, że wszystkie elementy przed zabudową trzeba sprawdzić i "nikomu nie wolno ufać" ;)

Oto oscylogram zmian prądu LEDa z 200mA na 50mA. Teraz dołek stanowi dużo mniejszy procent prądu ale i tak go zwalczymy :twisted:
Obrazek


Pozdrawiam

: niedziela 04 paź 2009, 21:52
autor: Calineczka
wow, gratuluję ;-)
Ale diodka Ci się ciekawa trafiła, że tez takie paskudztwa po szufladkach leżą... :mrgreen:

: niedziela 11 paź 2009, 20:36
autor: df
Pyra, nie bardzo widzę cel niezależnego od FB step-down`a pomiaru VR1 (prąd diody) na ADC i sterowania nim PWM`a.
Wydaje mi się, że FB jest po pierwsze na tyle szybki i precyzyjny, że w tym przypadku nie ma chyba większej potrzeby liczyć go dodatkowo na ADC.

ADC w ATtiny nie jest demonem prędkości, potrzebuje trochę cykli na pomiar (podwójne całkowanie), co więcej dochodzi ci dość znaczna stała czasowa na filtrowaniu PWM`a - to wszystko da dość sporą bezwładność układu regulacyjnego.
Co więcej regulacja ta wpływać będzie negatywnie na napięcie zasilania MCU, a więc i na poziom H portu, a przez to i na średnią wartość PWM - i sprzężenie to jest dodatnie, więc może się to mocno bujać.

Nie zaglądałem do datasheet`ów tego układu (step-down), ale może ma on jakieś wejście OE lub DIM/PWM, gdzie cyfrowo można by wejść prosto sygnałem z portu CPU.
Kiedyś dla Arka robiłem soft, który właśnie w ten sposób sterował step-down`em i z tego co pamiętam, udało się to pożenić.
Pyra pisze:Po napisaniu programu zmieniającego liniowo wartość PWM w górę i w dół zauważyłem:
- stosunkowo szybką zmianę jasności na niskich prądach
- bardzo wolną zmianę jasności przy dużych prądach
- prąd zmianiający się prawie liniowo
Zgadza się, dlatego nieco zbaczając z wątku dobrym pomysłem jest ustawianie poziomów jasności w rozkładzie logarytmicznym (najlepiej przy podstawie 2, bo binarnie się to super łatwo robi) - daje to optycznie dość równe odstępy jasności.
Mechanizm ten zastosowany był m.innymi np. w sekwencji wyboru jasności w naszym driverku df&cali.

Natomiast jeśli chodzi o separację zasilania MCU, to w jednym z projektów wraz z Arkiem rozważaliśmy puszczenia zasilania przez R na zenerka 5V1 niezależnie od step-up`a.
Procek nie bierze zbyt wiele pradu (1-2mA) więc strata będzie żadna, a masz jako taką stabilność napięcia niezależnie od wypełnienia (i stanu!) LED`a.
Zwróć uwagę, że w Twoim układzie nie możesz zgasić LED`a na dłużej niż chwilę, bo poleci ci CPU... a więc część zwłaszcza "ciemnych" trybów sekwencyjnych nie uda się na tym osiągnąć.
Może nieco wybiegam w przyszłość, ale ja też przez wiele nocy podobne tematy roztrzaskiwałem i niestety czasami musiałem szczytne idee zarzucić - bo najzwyczajniej albo czegoś osiągnąć nie dało, albo robiła się mało elegancka "rzeźba".
Powodzenia,

: niedziela 11 paź 2009, 21:28
autor: Pyra
df pisze: Pyra, nie bardzo widzę cel niezależnego od FB step-down`a pomiaru VR1 (prąd diody) na ADC i sterowania nim PWM`a.
Wydaje mi się, że FB jest po pierwsze na tyle szybki i precyzyjny, że w tym przypadku nie ma chyba większej potrzeby liczyć go dodatkowo na ADC.

ADC w ATtiny nie jest demonem prędkości, potrzebuje trochę cykli na pomiar (podwójne całkowanie), co więcej dochodzi ci dość znaczna stała czasowa na filtrowaniu PWM`a - to wszystko da dość sporą bezwładność układu regulacyjnego.
Co więcej regulacja ta wpływać będzie negatywnie na napięcie zasilania MCU, a więc i na poziom H portu, a przez to i na średnią wartość PWM - i sprzężenie to jest dodatnie, więc może się to mocno bujać.
No właśnie, do takich wniosków doszedłem poddając się kontemplacji i ten projekt zarzuciłem. Największe moje obawy budziło wzbudzanie się układu (choć gdyby dać jakąś pętlę histerezy przy pomiarze :roll: )
Dlatego skupiłem się na wersji z ograniczeniem napięcia PWM przed całkowaniem sygnału sterującego, schemat w pierwszym poście. Przy odrobinie czasu wykonam próby z ograniczeniem napięcia PWM, choć i teraz nie jest tak źle.

df pisze:Nie zaglądałem do datasheet`ów tego układu (step-down), ale może ma on jakieś wejście OE lub DIM/PWM, gdzie cyfrowo można by wejść prosto sygnałem z portu CPU.
Kiedyś dla Arka robiłem soft, który właśnie w ten sposób sterował step-down`em i z tego co pamiętam, udało się to pożenić.
No niestety, układ ten ma soft start, który ogranicza użycie CE do takich celów. Wykorzystany przezemnie schemat sterowania jest w datasheet przewornicy jako zalecany do sterowania PWMem.

df pisze:
Pyra pisze:Po napisaniu programu zmieniającego liniowo wartość PWM w górę i w dół zauważyłem:
- stosunkowo szybką zmianę jasności na niskich prądach
- bardzo wolną zmianę jasności przy dużych prądach
- prąd zmianiający się prawie liniowo
Zgadza się, dlatego nieco zbaczając z wątku dobrym pomysłem jest ustawianie poziomów jasności w rozkładzie logarytmicznym (najlepiej przy podstawie 2, bo binarnie się to super łatwo robi) - daje to optycznie dość równe odstępy jasności.
Mechanizm ten zastosowany był m.innymi np. w sekwencji wyboru jasności w naszym driverku df&cali.
A no właśnie do podobnych wniosków doszedłem, w moim driverku, stosując podział /2 dla trybów, mam na myśli liczenie wstecz od najjaśniejszego oczywiście.

df pisze: Natomiast jeśli chodzi o separację zasilania MCU, to w jednym z projektów wraz z Arkiem rozważaliśmy puszczenia zasilania przez R na zenerka 5V1 niezależnie od step-up`a.
Procek nie bierze zbyt wiele pradu (1-2mA) więc strata będzie żadna, a masz jako taką stabilność napięcia niezależnie od wypełnienia (i stanu!) LED`a.
Zwróć uwagę, że w Twoim układzie nie możesz zgasić LED`a na dłużej niż chwilę, bo poleci ci CPU... a więc część zwłaszcza "ciemnych" trybów sekwencyjnych nie uda się na tym osiągnąć.
Przede wszystkim chodziło o zaprojektowanie układu, który w łatwy sposób będzie można zaadaptować też do step-upa.
Zastanawiałem się też nad stabilizacją zasilania, ale dość szeroki zakres napięcia zasilającego 5V - 18V trochę mnie jednak odwiódł od tego rozwiązania.
Co do "mrygaczy" i ciemnych trybów, to przecież nie muszę LEDa wyłączać całkiem, zasilanie go napięciem 2,2V zapewnia mi prawie brak przepływu prądu przez LEDa, a na zasilanie procka po diodzie Shotky'ego zostaje prawie 2V, tak więc wystarczy odpowiednio obliczyć rezystory dzielnika i możemy mieć pełen zakres PWM, przy jednoczesnym zapewnieniu zasilania procka w pełnym zakresie pracy LEDa
df pisze:Może nieco wybiegam w przyszłość, ale ja też przez wiele nocy podobne tematy roztrzaskiwałem i niestety czasami musiałem szczytne idee zarzucić - bo najzwyczajniej albo czegoś osiągnąć nie dało, albo robiła się mało elegancka "rzeźba".
Powodzenia,
Znam ten ból ;)
Tytułowa przetwornica początkowo miała być zaprojektowana do sterowania LEDem w replice miecza świetlnego, ale stwierdziłem, że można by układ zrobić bardziej uniwersalnym i zastosować do latarek, stąd cały myk z zasilaniem.

Pozdrawiam
PS: Dziękuję za wsparcie

: niedziela 11 paź 2009, 22:00
autor: df
Pyra pisze:A no właśnie do podobnych wniosków doszedłem, w moim driverku, stosując podział /2 dla trybów, mam na myśli liczenie wstecz od najjaśniejszego oczywiście.
Ja tak liczę zarówno w górę jak i w dół - a dokładniej procek liczy.
Przydają się tu przesunięcia bitowe na rejestrach shr i shl
Aby wykładniczo przejść od 0 do 255 robię tak (w asm):
clr A ; zaczynam od zera

i w kolejnych krokach robię:
shl A,1
andi A,0b00000001

co mi daje w kolejnych iteracjach piękne sekwencje:
00000000
00000001
00000011
00000111
00001111
itd.

Spowrotem jest jeszcze łatwiej, bo zaczynam od 255 i przesuwam w prawo:
ser A ; A=255
i w iteracjach po prostu lecę:
shr A,1

A w bascomie będzie to pewnie tak:
A = 0
A = A*2+1 `co przy odrobinie szczęścia *2 zostanie skompilowane do shl (bo ten procesor mnożenia nie ma...)

Nie wiem, czy w drugą stronę przejdzie dzielenie w modulo 2, ale na pewno musi być w Bascomie odpowiednik przesunięcia bitowego w prawo (lub rotacji) bo w asm instrukcje takie procesor ten ma i do tego są one idealne.
Pyra pisze:Co do "mrygaczy" i ciemnych trybów, to przecież nie muszę LEDa wyłączać całkiem, zasilanie go napięciem 2,2V zapewnia mi prawie brak przepływu prądu przez LEDa, a na zasilanie procka po diodzie Shotky'ego zostaje prawie 2V, tak więc wystarczy odpowiednio obliczyć rezystory dzielnika i możemy mieć pełen zakres PWM, przy jednoczesnym zapewnieniu zasilania procka w pełnym zakresie pracy LEDa
Masz rację, to dobry pomysł, choć będzie nieładnie wahać się napięcie na CPU - zwłaszcza w górę, bo w dół wygładzi duży C. Z praktyki Atmelki wiele potrafią znieść ;-) i poza zapisami do EEPROMU oraz odczytami z ADC nie powinno być z nimi problemów.
Ja od pewnego czasu ustawiam na fuse bit`ach opcję resetu na burr-brown na najniższą wartość 1,8V (domyślnie jest off). Zauważyłem że gdy BB jest wyłączony i zasilanie spada poniżej 1,8V lub na zasilaniu są śmieci (przetwornice impulsowe troszkę jednak sieją) to procek potrafi się na granicy napięcia zawiesić. Ryzyko rośnie wraz ze wzrostem taktowania. Myślę, że BB to dobra alternatywa dla Watch-dog`a bo zabezpiecza program przed zejściem w obszar niepewności i o tyle fajna, że nie musisz zupełnie dotykać kodu.

Pozdrawiam,