www.swiatelka.pl  Strona Główna www.swiatelka.pl
...czyli forum miłośników światełek... ;-)

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy
RejestracjaRejestracja  ZalogujZaloguj  AlbumAlbum  DownloadDownload
Google

 Ogłoszenie 
...UWAGA...NOWI UŻYTKOWNICY!!! ... brak słowa powitania w waszym pierwszym poście będzie równoznaczny z usunięciem posta i ostrzeżeniem. NA TYM FORUM CENIMY SOBIE KULTURĘ OSOBISTĄ!!! Lektura obowiązkowa: LINK

UWAGA
AKTUALIZACJA regulaminu działu handlowego > KLIK
Szczegóły na samym dole

Poprzedni temat «» Następny temat
Programowalny driver do LED z wyborem prądu
Autor Wiadomość
connan12345 

Dołączył: 17 Gru 2013
Posty: 10
Skąd: Oświęcim
Wysłany: 19-12-2013, 18:54   Programowalny driver do LED z wyborem prądu

Dzień dobry!
Też mnie zachwyciły światełka. Myślę nad konstrukcją uniwersalnego driverka do 10W do latarek LED. Z racji tego że moje hobby związane z wodą (a ściślej z podwodą) to pomyślałem sobie o pod świeceniu sobie tam gdzie już się robi ciemno. Napisałem program na podstawie znalezionego kodu w C++ na elektrodzie , a że kombinuję w BASCOMie to przełożyłem , myślę poprawnie. Jak nie to poprawcie , dzięki.
Kod:
Dim Chose As Byte , Pwm As Byte , Ocr As Byte
Dim Current As Word , Adcw As Word , Rej As Word
Dim K1 As Word , K2 As Word , Tryb As Byte
Config Timer0 = Pwm , Compare A Pwm = Clear Up , Prescale = 8
Config Adc = Single , Prescaler = Auto , Reference = Internal
Declare Sub Popraw
'CURRENT=151; //ustaw wartośc prądu na 1000mA
'CURRENT=105; //ustaw wartośc prądu na 700mA
'CURRENT=52; //ustaw wartośc prądu na 350mA
Pwm = 0
Current = 52 'na sztywno ale można zmienić
Ocr = 28
Enable Interrupts

Do
Adcw = Getadc(1)
'Current = Getadc(3) 'można do ustawienia prądu zastosować ADC podłączony do rezystora nastawnego "rozpiętego" między Vcc a GND - jakieś 10K a ślizgacz na ADC
Rej = Current - Adcw

If Rej > 0 Then
 Pwm = Sqr(rej)
 Ocr = Ocr + Pwm
Else
 Pwm = Sqr(rej)
 Ocr = Ocr - Pwm
End If
Ocr0a = Ocr
Loop

Kolega Flagiusz na swojej stronie zaproponował ciekawą koncepcję. Zastanawia mnie czemu nie użyje mosfetu typu P (plus tranzystor npn jego sterowania) ?
Schemat to w sumie nic odkrywczego , bo z piątej nóżki do bramki mosfetu N a druga nóżka do węzła między rezystorem a diodą (pomiar spadku napięcia).
Ostatnio zmieniony przez connan12345 19-12-2013, 21:31, w całości zmieniany 1 raz  
 
 
Pyra 


Pomógł: 545 razy
Dołączył: 02 Sie 2009
Posty: 8049
Skąd: Gądki
Wysłany: 19-12-2013, 20:59   

Witam
Kolega df, był świadom minusów tego rozwiązania, i zostało zarzucone, gdyż regulowana była tylko wartość średnia prądu, bez możliwości ograniczenia wielkości poszczególnych pików.
Nie został wybrany mosfet typu "P" gdyż bardzo ciężko jest znaleźć typ spełniający wyśrubowane wymagania jakie stawia sterownik.
Co do programu, to staraj się unikać operacji arytmetycznych wyższego rzędu, gdyż powodują wygenerowanie długiego kodu.


Kod:
można do ustawienia prądu zastosować ADC podłączony do rezystora nastawnego "rozpiętego" między Vcc a GND - jakieś 10K

W ten sposób nie zmierzysz prądu.

Pozdrawiam
_________________
Izali miecz godniejszy niżli topór w boju?
Piszmy po polsku, wszak jesteśmy Polakami.
 
 
connan12345 

Dołączył: 17 Gru 2013
Posty: 10
Skąd: Oświęcim
Wysłany: 19-12-2013, 21:05   

Ano fakt . Chodziło mi by móc ustawić CURRENT.
Pyra napisał/a:
Co do programu, to staraj się unikać operacji arytmetycznych wyższego rzędu, gdyż powodują wygenerowanie długiego kodu.

No właśnie w drugą stronę . Im krótszy kod tym lepiej to działa.
Zamiast :
Kod:
if(rej>50)PWM=6;  //szybkośc zmian współczynnika PWM zależna od różnicy prądu zaprogramowanego a wyjściowego
   else if(rej>20)PWM=5;
   else if(rej>10)PWM=4;
   else if(rej>5)PWM=3;
   else if(rej>2)PWM=2;
   else if(rej>0)PWM=1;
   else if(rej<-50)PWM=-10;
   else if(rej<-20)PWM=-7;
   else if(rej<-10)PWM=-4;
   else if(rej<-5)PWM=-3;
   else if(rej<-2)PWM=-2;
   else if(rej<0)PWM=-1;

wolałem dać :
Kod:
If Rej > 0 Then
 Pwm = Sqr(rej)
 Ocr = Ocr + Pwm
Else
 Pwm = Sqr(rej)
 Ocr = Ocr - Pwm
End If

I dlatego mam 37% zajętości pamięci a nie ponad 50%.
Poza tym dzięki funkcji pierwiastka dokonuje się konwersja niejako z word na byte :) a tu PWM mogę mieć 0-255. Inaczej musiałbym zrobić to na Select Case - End Select i do tego zrobić Format lub Fusing. A to by znacząco kod wydłużyło. Czyli lepiej zastosować np BD140 by było w/g pomysłu Flagiusza ?
Ostatnio zmieniony przez connan12345 19-12-2013, 21:19, w całości zmieniany 2 razy  
 
 
Pyra 


Pomógł: 545 razy
Dołączył: 02 Sie 2009
Posty: 8049
Skąd: Gądki
Wysłany: 19-12-2013, 21:11   

Witam
connan12345 napisał/a:
Ano fakt . Chodziło mi nie Vcc a napięcie na diodzie z rezystorem do masy GND

A ten pomysł to już będzie tragiczny w swoich skutkach. LED jest elementem nieliniowym i Vf zależy w znacznym stopniu od temperatury złącza, cały problem polega na tym, że współczynnik, jest ujemny, tzn, im wyższa temperatura, tym opór zastępczy LEDa jest mniejszy, a co za tym idzie prąd wzrasta.
Krótko mówiąc, nie da się określić prądu diody, znając tylko napięcie przewodzenia.
Pozdrawiam
_________________
Izali miecz godniejszy niżli topór w boju?
Piszmy po polsku, wszak jesteśmy Polakami.
 
 
connan12345 

Dołączył: 17 Gru 2013
Posty: 10
Skąd: Oświęcim
Wysłany: 19-12-2013, 21:15   

Chyba się nie rozumiemy :) ? Ja nie chcę mosfetem sterować diody tylko by uP sterował mosfetem P-ch za pomocą tranzystora np MMBT3904 plus dwa oporniki (które trzeba dobrać). Co do pomiaru z drugiego ADC to byłoby po to by niejako "ręcznie" ustawić porównanie ,czyli wartość CURRENT z ADCW , a nie na diodzie :)
 
 
Pyra 


Pomógł: 545 razy
Dołączył: 02 Sie 2009
Posty: 8049
Skąd: Gądki
Wysłany: 19-12-2013, 21:18   

Witam
No właśnie, możesz to jakoś rozrysować, bo chyba nie łapię istoty...
Pozdrawiam
_________________
Izali miecz godniejszy niżli topór w boju?
Piszmy po polsku, wszak jesteśmy Polakami.
 
 
connan12345 

Dołączył: 17 Gru 2013
Posty: 10
Skąd: Oświęcim
Wysłany: 19-12-2013, 21:26   

No chodzi o coś takiego :
 
 
ptja 

Pomógł: 67 razy
Dołączył: 31 Gru 2012
Posty: 1934
Skąd: Łódź
Wysłany: 19-12-2013, 22:01   

Między nóżkę 2 a 8 wstaw 47k, bo powyżej 1,1V (czyli w 56% zakresu potencjometru) i tak ADC będzie zwracał maksimum (1023).
_________________
--
pozdrawiam,
Jarek Andrzejewski
 
 
connan12345 

Dołączył: 17 Gru 2013
Posty: 10
Skąd: Oświęcim
Wysłany: 19-12-2013, 22:04   

Czyli że zamiast 10K wstawić 47K ?
Te 10K dałem tak "na oko" . Bo takie mam jak daję do kontrastu LCD HD44780 :) Dla tych co ściągają spakowanego hex-a powiem że schematem jest przetwornica z mosfetem typu N i opornikiem 0.15 OHma także jeśli zastosuje się inny rezystor to CURRENT jest do zmiany. Te wartości co w programie zostały dane nie przeze mnie. Zalecam ostrożność.
 
 
ptja 

Pomógł: 67 razy
Dołączył: 31 Gru 2012
Posty: 1934
Skąd: Łódź
Wysłany: 19-12-2013, 22:46   

Tak, bo w obecnym układzie potencjometrem możesz ustawić 0-2,55V, a ADC mierzy w zakresie 0-1,1V.
_________________
--
pozdrawiam,
Jarek Andrzejewski
 
 
connan12345 

Dołączył: 17 Gru 2013
Posty: 10
Skąd: Oświęcim
Wysłany: 19-12-2013, 22:51   

Myślałem że od 0 do Vcc. Hmm... :neutral:
 
 
ptja 

Pomógł: 67 razy
Dołączył: 31 Gru 2012
Posty: 1934
Skąd: Łódź
Wysłany: 19-12-2013, 23:08   

connan12345 napisał/a:
Myślałem że od 0 do Vcc. Hmm... :neutral:

Fakt, Vcc też może być jako Vref.
Ja używam 1,1V gdy zasilanie bezpośrednio z Li-ion (bo Vcc się zmienia).
_________________
--
pozdrawiam,
Jarek Andrzejewski
 
 
connan12345 

Dołączył: 17 Gru 2013
Posty: 10
Skąd: Oświęcim
Wysłany: 20-12-2013, 06:57   

Z tego co pamiętam to jest od 0 do Vcc z podziałką Vref/1023 a tu Vref =1.1V . No mam nawet pare zrobionych układów pomiarowych na Atmega8 i Atmega 32 i tam jest do Vcc tylko że podziałka inna bo chyba Vref to 2.56V. Tu w Atiny chyba lepsza bo Vref =1.1V czyli dokładniejsze odwzorowanie.
Świetnie opisany driverek jest tu
Teraz patrzę i stwierdzam że program na pierwszym poście w temacie ma braki w postaci :
Kod:
$regfile = "attiny13.dat"
$crystal = 9600000
Ddrb = &B11110001 : Portb = &B00001110

$hwstack = 8
$swstack = 8
$framesize = 8

I to trzeba na sam pierw dać.
 
 
Pyra 


Pomógł: 545 razy
Dołączył: 02 Sie 2009
Posty: 8049
Skąd: Gądki
Wysłany: 20-12-2013, 17:30   

Witam
Ten schemat to klasyczna przetwornica step down, w związku z tym mam kilka uwag. Napięcie zasilania podajesz 9V podczas gdy chcesz zasilać trzy diody w szeregu, czyli już przy prądzie 350mA może to być ponad 9V, dodatkowo spadek napięcia na rezystorze pomiarowym.
Teoretycznie można przyjąć Vcc jako Vref, ale w tym przypadku nie będzie ono stabilne, gdyż pojedyncza dioda zenera w zmiennych warunkach pracy nie zapewni stabilnego napięcia zasilania. Trochę sytuacja uległa by poprawie, gdybyś zastosować klasyczny stabilizator w obudowie SOT23, bo jak myślę chodzi o miniaturyzację. Dodatkowo, wszystko musi byc odprzęgnięte kondensatorami.
Dodatkowo, Vref 1,1V jest dość stabilne i umożliwia zmniejszenie rezystancji opornika pomiarowego, gdyż wystarczą mniejsze spadki napięcia.
W programie stosujesz sterowanie parametryczne, niby poprawne, ale w praktyce wystarczy zwykłe Decrese PWM, lub Increse PWM (szybsze i krótsze od PWM + 1 i -1). Jak się domyślam, będziesz stosował najwyższą możliwą częstotliwość PWM, aby zminiaturyzować rozmiar cewki i kondensatora, to 8 czy 9,6MHz zapewnia bardzo szybką reakcję na zmianę parametrów obciążenia.

Pozdrawiam
_________________
Izali miecz godniejszy niżli topór w boju?
Piszmy po polsku, wszak jesteśmy Polakami.
 
 
connan12345 

Dołączył: 17 Gru 2013
Posty: 10
Skąd: Oświęcim
Wysłany: 20-12-2013, 22:09   

Kolega ma żelowy 12V akumulator więc spadek do 9 V zapewne będzie na koniec świecenia. Co do stabilizatora to Jarek proponuje mi zastosowanie 78L05 ale jak na złość nie potrafię go znaleźć natomiast 1117-5.0 mam kilka sztuk. Z racji że to będzie zasilone do 15V (uwaga Jarka) to ten 1117 się nada.
Dla 1.1V odniesienia Reference = Internal , tu bezsprzecznie racja. Napięcie 5V mi będzie potrzebne by otwierać w pełni dren mosfet , choć oczywiście w przypadku innego zasilenia , niższego np dwa ogniwa z laptopa Litowo-Jonowego (czyli około 6V) pokusiłbym się o obniżenie do 3.3V zasilania uP oraz mosfeta otwierającego się przy powiedzmy 2.5V APM2509N (N-ch) i tu inny typ przetwornicy niż StepDown.
Co mi jeszcze chodzi to dławik z 4 uzwojeniami . Jedno jakby pierwotne uzwojenie , gałąź z rezystorem tak jak na schemacie tylko bez diod. A 3 uzwojenia wtórne bezpośrednio na diody/diodę (łączyłoby się początki z końcami uzyskując kombinację potrzebną do zasilenie jednej 10W lub trzech 3W diod).
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Nie możesz ściągać załączników na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Strona wygenerowana w 0,17 sekundy. Zapytań do SQL: 16