www.belza.cz - homepage

Generátor PWM signálu
PWM generator

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.

Popis zapojení

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

Seznam součástek
BOM

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