Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Intensiteit van LED mbv PWM

Pagina: 1
Acties:

  • leejoow
  • Registratie: Juni 2007
  • Niet online

leejoow

Dat ben ik!

Topicstarter
Ik ben bezig met een PIC 16F628A om softwarematige PWM te implementeren in assembly. Niets lastig zou ik zeggen...

Nu heb ik gisteren het een en ander voor elkaar gekregen, maar tot een dutycycle van 50% zie ik eigenlijk geen verschil in de intensiteit waarmee de LED brand. Nu had ik het volgende bedacht:

Standaard werkt PWM uiteraard zo:

code:
1
2
3
4
5
100%:
--------------------------------

50%:
----____----____----____----____


Nieuwe situatie:

code:
1
2
3
4
5
100%:
----____----____----____----____

50%:
--______--______--______--______


(zeg maar dat ik na elke PWM lust een pauze inlas terwijl de LEDs uit staan)


Alleen... Ik krijg het met geen mogelijkheid voor elkaar. Heeft iemand anders ook wel eens dit 'probleem' gehad en moet dit softwarematig opgelost worden of zou ik dit in het schema kunnen aanpassen?

LilyGo behuizingen | Ontwikkelaar Itho Daalderop Warmtepomp control module


  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 09-11 21:03

TrailBlazer

Karnemelk FTW

Het kan best dat je oog geen verschil ziet tussen 100% en 50% Je ogen passen hun gevoeligheid aan op verschillende lichtsterktes om toch een gelijk beeld te krijgen. Mischien zie je een beter verschil als je een lagere stroom door je ledje heen stuurt en daar dan weer 50% van neemt. Of anders gewoon een nog lagere PWM waarde nemen.

  • Jewest
  • Registratie: Juni 2007
  • Laatst online: 19-11 14:32
Zoals TrailBlazer al gezegt heeft, het kan zijn dat je het niet zien.
Het enige wat je gedaan hebt in je voorbeeld is het percentage omlaag gehaald.

De vraag is hoe heb je het geprogrammeerd?
Als je de pwm lager kan instellen in je code dan moet je dat doen.
laat anders een Ramp(van laag naar hoog) door je code uitvoeren.
Niet te snel anders zie je het niet
Dan heb je een idee wat de led gaat doen, als functie van de PWM.
Ik schat dat je 30% zeker gaat zien.

[ Voor 4% gewijzigd door Jewest op 23-07-2008 08:47 . Reden: typo ]

Flickr
Canon 7D + Glas + Licht
Komt het rot over dan bedoel ik het anders en taalfouten zijn inbegrepen.


  • leejoow
  • Registratie: Juni 2007
  • Niet online

leejoow

Dat ben ik!

Topicstarter
Ik heb de ramp laten uitvoeren van hoog naar laag en pas vanaf een procent of 50 begon ik daadwerkelijk verschil te zien. Nu kan ik natuurlijk het bouwen dat er alleen van de 0..128 ingesteld kan worden, maar ik wil eigenlijk de volledige 8-bits instelmogelijkheid houden.

Dus eigenlijk dat het gebied van de daadwerkelijk dutycycle van 0%..50% ingesteld kan worden met een waarde tussen de 0 en 255.

Momenteel is het geprogrammeerd (pseudocode):

code:
1
2
3
4
5
6
7
8
9
10
11
variabelen:
value_r (100% = 255, 50% = 128 en 0% = 0)
teller

code:
value_r - teller
als negatief dan LED uit

verhoog teller met 1

als teller overflowt zet LED aan


Dit alles in een timerinterrupt zodat het hoofdprogramma er niet over hoeft na te denken verder. Het is een aanpassing van de code van naftebakje

LilyGo behuizingen | Ontwikkelaar Itho Daalderop Warmtepomp control module


  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 09-11 21:03

TrailBlazer

Karnemelk FTW

Als je 0 -50 % wil hebben met 255 stappen. Moet je gewoon de weerstand voor je ledje aanpassen zodat je maar de helft van je stroom er doorheen stuurt.

  • Jewest
  • Registratie: Juni 2007
  • Laatst online: 19-11 14:32
Persoonlijk vind ik 0,4% instel resolutie meer dan genoeg.
(100% / 256 )
ik moet de eerste persoon nog tegenkomen die dat verschil nog ziet tussen 10% en 10.4%
ik zou de code generiek houden met zo als het nu is, en je percentage gewoon lager zetten.
dit houd het ook voor de toekomst nog duidelijk.

Flickr
Canon 7D + Glas + Licht
Komt het rot over dan bedoel ik het anders en taalfouten zijn inbegrepen.


  • naftebakje
  • Registratie: Februari 2002
  • Nu online
Met zo'n simpele PWM zullen je ogen inderdaad geen lineair dimgedrag zien, maar dimmen doet hij wel. Wat hierboven gezegd wordt, dat je met 100 stappen meer dan voldoende hebt, klopt helemaal.
De truuk die je dan kan uithalen, is een tabelletje maken met 100 waarden die je legt tussen 0 en 255 en zo kiest dat dat je een lineair dimgedrag ziet (mss kan je dergelijke tabel van internet halen), daarbij maak je ten volle gebruik van de 8-bits PWM.
Een look-up table maken in software is niet zo moeilijk, afhankelijk van wat je ter beschikking hebt; je kan 100 opeenvolgende waarden in het EEPROM geheugen steken (en zo opvragen), bij het initialiseren in het RAM invullen, opnemen in je programmacode (waarde, return, waarde, return,... en dan met een conditionele jump de waarde ophalen),....

En als je gek wil doen, kan je meerdere tabellen gebruiken voor verschillende omstandigheden, bijvoorbeeld eentje die alleen de laagste 100 pwm waarden gebruikt om zo extra nauwkeurig lage helderheden te kiezen.

[ Voor 14% gewijzigd door naftebakje op 23-07-2008 19:27 ]

Als de boer zijn koeien kust, zijn ze jarig wees gerust. Varkens op een landingsbaan, leiden nooit een lang bestaan. Als de boer zich met stront wast, zijn zijn hersens aangetast. Als het hooi is in de schuur, zit het wijf bij den gebuur.


  • bart0l0meus
  • Registratie: Mei 2006
  • Laatst online: 04-11-2022
Ik heb hier toevallig ook al eens mee te maken gehad.
Het punt zit hem in je ogen.
De led gaat zeker harder branden, ook perfect lineair, alleen ziet jou oog dit niet.
Dit is op te lossen met een soort logaritme. Ik heb hier bij Philips eens van gehoord, want hun gebruiken die ook bij bepaalde producten zoals livingcolors d8 ik.
Ik weet niet of iemand mij hier bij kan ondersteunen?

“If Your Only Tool Is a Hammer Then Every Problem Looks Like a Nail” (Abraham Maslow)


  • bobo1on1
  • Registratie: Juli 2001
  • Laatst online: 19-10 00:17
Dat gaat alleen op bij helderheid, als je kleuren gaat mengen met een rgb led is het ineens wel weer lineair.

Impedance, a measure of opposition to time-varying electric current in an electric circuit.
Not to be confused with impotence.

Pagina: 1