Here is schematic of simple voltage to PWM converter. According to jumpers it works at frequency 500 Hz or 8 kHz in linear or quadratical mode. Quadratic mode is better than linear for LED dimming. Duty cycle can be set from 0 to 100%. PWM signal is generated in hardware mode of Timer 2 in PIC microcontroller.
V článku je popsán převodník napětí-střída (PWM) s
mikrokontrolérem PIC při zachování maximální jednoduchosti zapojení.
Střídu výstupního signálu lze řídit v rozsahu 0 až 100 % potenciometrem nebo
napětím.
Nejednodušší generátor PWM je na obr. 1. Zapojení je ještě jednodušší než generátor s časovačem 555, má stabilní kmitočet výstupních impulsů a střídu lze řídit v rozsahu 0 až 100 %. Zapojení obsahuje jen potenciometr, kterým se střída nastavuje, mikrokontrolér a blokovací kondenzátor v napájení.
Obr. 1. Jednoduchý generátor PWM s mikrokontrolérem PIC
Fig. 1. Simplest PIC PWM generator
Napětí z běžce potenciometru zpracovává A/D převodník mikrokontroléru. Převodník je 10bitový, program však dále používá jen 8 nejvýznamnějších bitů. Napájecí napětí se používá jako referenční pro A/D převod, takže výsledek převodu je úměrný poměru vstupního a napájecího napětí (natočení hřídele potenciometru) a v podstatě nezávislý na velikosti napájecího napětí.
Ke generování signálu PWM se používá vnitřní časovač
mikrokontroléru TIMER2. To umožňuje vytvářet signál velmi jednoduše, v podstatě
se jen výsledek A/D převodu přepíše do registru časovače. Kmitočet výstupních
impulsů může být desítky až stovky kHz v závislosti na nastaveném rozlišení a
předděličce. To je značné zrychlení oproti případu, kdy je PWM signál generován
programem a kmitočet impulsů je nejvýše stovky Hz.
Zapojení využívající všechny možnosti programu je na obr. 2. Přibyly dvě
propojky a programovací konektor. Stabilizátor napětí použijeme pouze tehdy,
je-li napájecí napětí větší než 5,5 V. Pro menší napětí není potřeba a nahradíme
ho propojkou. V zapojení je také naznačeno připojení rezistoru a LED pro
testování funkce.
Obr. 2. Generátor PWM se stabilizátorem, programovacím konektorem a propojkami.
Rezistor R2 a LED slouží pro vyzkoušení funkce
Fig. 2. PWM generator with voltage regulator and jumpers.
R2 and LED are for circuit testing
Propojka J1 mění kmitočet výstupních impulsů. Kmitočet 500 Hz
vyhoví pro většinu běžných aplikací, kmitočet 8 kHz lze použít v případech, kdy
by mohl vzniknout stroboskopický jev, např. při filmování videokamerou. Propojka
J2 mění průběh střídy signálu PWM. Je-li propojka použita, je na vývodu GP1
úroveň L a střída výstupního signálu je lineáně úměrná napětí z běžce
potenciometru. Pro řízení se přímo používá 8 nejvýznamnějších bitů A/D
převodníku, a šířku impulsu tak lze měnit v 250 krocích. Lineární regulace je
však nevhodná při řízení LED, protože vjem jasu světla není úměrný jeho
intenzitě. V případě LED bychom měli pocit, že LED se rychle rozsvítí už na
začátku dráhy potenciometru a při dalším otáčení hřídelí se jas už příliš
nemění. Značného zlepšení lze dosáhnout kvadratickou závislostí (ještě lepší by
byla logaritmická) střídy na vstupním napětí. Je-li propojka rozpojena, je přes
vnitřní pull-up rezistor na vývodu GP1 úroveň H. Program tento stav detekuje a
8bitový výsledek A/D převodu se násobí sám sebou. Výsledkem je 16bitové číslo.
Z výsledku je použito nejvyšších 10 bitů, které se zapíší do registrů časovače.
(10 bitů je maximální rozlišení generátoru PWM.)
Program generátoru byl napsán v asembleru a je díky použítí integrovaného
převodníku a časovače velmi jednoduchý. Byl napsán pro mikrokontrolér PIC12F615,
který je pro tuto aplikaci nejvhodnější. PIC12F615 se však v ČR špatně shání,
lze ho objednat jen v některých internetových obchodech. Po úpravě programu lze
však použít jakýkoli mikrokontrolér řady PIC12 a PIC16, který má integrovaný A/D
převodník a časovač TIMER2. Úprava se týká inicializace interního oscilátoru a
periferií, která se typ od typu může lišit. Vyzkoušel jsem generátor i s dražším
a dostupnějším PIC12F683. Program pro PIC12F615 a PIC12F683 lze stáhnout zde:
pwm-soft.zip
Assembler source code and translated program in hex file are here.
The program can be freely edited and distributed.
Program můžete libovolně modifikovat podle vlastních potřeb.
Při programování přes konektor ICSP je třeba rozpojit jumpery.
Obr. 4. Deska s plošnými PWM generátoru. Použijete-li pravé tlačítko myši a zvolíte-li "Uložit obrázek jako", získáte předlohu spojů v rozlišení 600 dpi
Figure. 4. PCB layout. Click right mouse button and choose "Save image as" to get 600 dpi resolution image
PCB in pdf file
Obr. 5. Hotový generátor (bez stabilizátoru)
Fig. 5. PWM generator photo (without voltage regulator)
Obr. 6. Konektor ICSP lze sloučit s propojkami
Fig. 6.
ICSP
connector
may be combined
with
jmpers
R1 | 10 - 100 kohm, SMD 1206 |
P1 | 25 kohm, lin. potenciometr |
C1 | 100 nF, SMD 1206 |
C2 | 10 µF, SMD A (SMD B), nutný
jen při použití stabilizátoru necessary only when using the voltage regulator |
IC1 | PIC12F615 I/P (PIC12F683 I/P) |
IC2 | 78L05 |
JP1 | kolíková lišta 5 pinů 5 pin header |
J1, J2 | 2 piny jumper / 2 pin header |
deska s plošnými spoji bcs68 |
Jaroslav Belza
PWM generátor byl otištěn v PE 10/2010 s. 20
18. 2. 2011