PWM PIC16F1788

Het menselijk oog reageert niet zo snel, film (24fps) en televisie (25fps) geven ook een vloeiend beeld terwijl dat allemaal verschillende beelden achter elkaar zijn. Een normale gloeilamp op 230VAC knippert 100 keer per seconde. Dat zie je ook niet.

De zinloosheid des levens is nog geen rechtvaardiging voor sisyphusarbeid.
Lambiek

Special Member

Dit is de werking van een PWM signaal "links". Op het rechtse plaatje staat een PFM signaal, daar is de pulsbreedte een vast gegeven en varieert de frequentie.

Bij pwm is het zo dat de frequentie vast is en dat de pulsbreedte varieert. Stel dat je de frequentie instelt op 10KHz dan blijft dat zo, alleen de pulsbreedte wordt aangepast.

Hier een klein voorbeeld:

pic basic code:



Declare Adin_Res = 8         ; resolutie 8 bits
Declare Adin_Tad = frc       ; set RC osc
Declare Adin_Stime = 50      ; sample tijd 5

Declare CCP1_Pin PORTB.0     ; PWM uitgang

Dim POTMETER As Byte

START:

    POTMETER = ADIn 0
    
    HPWM 1,POTMETER,10000
    
GoTo START.

END

Je selecteert eerst je HPWM poort en je maakt een variabele aan bijv. potmeter. Dat wordt in dit geval een byte. De potmeter lees je in met een analoge ingang, de waarde van je pulsbreedte kan nu variëren tussen de 0 en 255.

Je kunt het ook via drukknoppen doen, dan maak je een teller aan die je via de drukknoppen bediend. De teller laat je dan van 0 tot 255 tellen en van 255 tot 0. Dat kun je doen met DEC en INC.

Wat jij nu gedaan hebt is twee uitgangen aan elkaar geknoopt en dat gaat niet, dat zal even werken maar niet voor lang, dat gaat stuk. Dus gewoon één HPWM uitgang gebruiken en zoals Arco al zei, zet er een fet driver tussen.

Misschien heb je dit al eens gelezen, maar misschien ook niet. Staat het één en ander in over mosfets en drivers.

https://www.circuitsonline.net/artikelen/view/41

Als je haar maar goed zit, GROETEN LAMBIEK.

Ik denk dat TS bedoelt: "hoe kan de lamp zwakker gaan branden door pwm terwijl ik met een andere pin de fet op +5v houd"

Da's het gevolg van hoe i/o ports nu eenmaal werken. Een ST pin is aan bij 0.8*Vdd, en uit bij 0.2*Vdd, daartussen kan van alles gebeuren.
Voeg daarbij dat pinnen beter kunnen sinken als sourcen en je ziet dat bij sinken de pwm pin gaat winnen.
Maar 't blijft een heel slecht idee om de boel zo te misbruiken...

(als je 't licht uit wilt doen steek je toch ook geen vleesvork in het stopcontact?... ;) )

Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com
Lambiek

Special Member

Op 6 maart 2020 10:06:38 schreef Arco:
Voeg daarbij dat pinnen beter kunnen sinken als sourcen en je ziet dat bij sinken de pwm pin gaat winnen.
Maar 't blijft een heel slecht idee om de boel zo te misbruiken...

We wachten in spanning af. :)

Als je haar maar goed zit, GROETEN LAMBIEK.
ritmeester

Golden Member

De afgelopen week ook met andere dingen bezig geweest maar ook hiermee.

Even nog voor de duidelijkheid:
CH1 ... CH8 hebben een simpele LED knipperfunctie. PWM1 moet de LEDs dimmen tot een bepaalde ingestelde waarde.

(Deze schakeling staat nu op een breadboard.)

Dit werkt "goed" bij CH-1 maar komt de rest erbij dan valt PWM1 langzaam uit. De pin PWM1 "trekt het dan niet meer".

Ook met de tip die Arco gaf om gebruik te maken van een TC4427 (Mosfet Driver) krijg ik geen goed resultaat als ik meerdere kanalen aansluit.

Hieronder een simpele versie van het schema met aansluitingen waar het om gaat.

In het schema staan nu 3K3 resistors. (het was 0R om schematechnisch netten aan elkaar te koppelen)

Misschien dat iemand met een idee kan komen om dit toch werkend te krijgen.

I love it when a plan comes together !

Wat doen CH-1 t/m 8, je wilt de leds toch met pwm aansturen, doe dat dan ook.

Misschien helpt het als je je doel duidelijk omschrijft, en hoe je verwacht dat jouw oplossing werkt.

De zinloosheid des levens is nog geen rechtvaardiging voor sisyphusarbeid.

De hele CH1...CH4 weglaten, de 3k3 doorverbinden. Zo als het nu is werkt de PWM natuurlijk nooit...

Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com

Uiteindelijk komt het dan neer op de software om het geheel netjes te laten werken.

De zinloosheid des levens is nog geen rechtvaardiging voor sisyphusarbeid.
Lambiek

Special Member

Op 13 maart 2020 18:26:24 schreef ritmeester:
Dit werkt "goed" bij CH-1 maar komt de rest erbij dan valt PWM1 langzaam uit. De pin PWM1 "trekt het dan niet meer".

Lees je wel wat we geschreven hebben? Dit kan niet goed werken, want je staat de boel in sluiting te trekken.

Ook met de tip die Arco gaf om gebruik te maken van een TC4427 (Mosfet Driver) krijg ik geen goed resultaat als ik meerdere kanalen aansluit.

Daar gebeurt precies het zelfde zoals hier boven geantwoord.

Misschien dat iemand met een idee kan komen om dit toch werkend te krijgen.

Ik weet nog steeds niet wat je nu precies wil. Wil je alles laten knipperen maar dan gedimd? Of anders?

Als je haar maar goed zit, GROETEN LAMBIEK.

Hunter RitMeester, je zou eens een lijstje moeten maken wat je echt wilt.

Bv.

- 8 Leds gezamelijk laten dimmen met 1 pwm signaal.
- bediening hiervan via een potentiometer/ + en - drukknoppen...
- elke led apart kunnen uitschakelen met ik weet niet wat.
- enz...

LDmicro user.

Als het schema op zich al niet deugt, gaat een extra TC4427 daar geen verandering in brengen... ;)

Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com
Lambiek

Special Member

Op 13 maart 2020 18:26:24 schreef ritmeester:
Misschien dat iemand met een idee kan komen om dit toch werkend te krijgen.

Als het moet werken zoals ik denk dat het moet werken, kun je dit proberen. Maar misschien zit ik er helemaal naast hoor, het is niet helemaal duidelijk wat je wil. :)

Als je haar maar goed zit, GROETEN LAMBIEK.

Als TS zelf geen duidelijk antwoord kan geven of een schema kan produceren is dit misschien wel de beste oplossing.

De zinloosheid des levens is nog geen rechtvaardiging voor sisyphusarbeid.

Hunter, mijn bericht was voor Ritmeester bedoeld, heb het ondertussen aangepast, sorry.

LDmicro user.