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: Zaznacz cały
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
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).