Transcript PWM

Programování mikrokontrolerů
PIC 16F84A
5-ŘSVS
Program - cíl
Vytvořit program pro řízení rychlosti stejnosměrného motoru pomocí
pulzně šířkové modulace (PWM)
Řízení v 16ti stupních rychlosti
PWM- princip
• Bez PWM - omezením napětí
ztráty (potenciometr, polootevřený tranzistor) - teplo
• PWM - otevřený tranzistor (bez ztrát), ale pulzně
– Rychlost otáčení odpovídá poměru doby, kdy je tranzistor sepnut a
rozepnut (střída)
Program- princip
• Ze spínačů získáme údaj o délce pulzu
• Vypočítáme počet taktů v 1 a v 0
• Pomocí funkcí DECFSZ budeme počítat takty a přepínat stavy na
tranzistoru
• Zpět na začátek....
• end
Program - konstanty
Budeme potřebovat 4 vstupy a 1 výstup.
4 in - spínač (vstupy id.vedle sebe)
1 out - tranzistor motoru
Program - konstanty
n_log_1 - počet cyklů v logické 1 (sepnutý tranzistor)
n_log_0 - počet cyklů v logické 0 (rozepnutý tranzistor) (EQU)
Pojmenování vstupních a výstupních pinů (bitů)
#DEFINE
in2
PORTB,1
(in1 - 4)
#DEFINE
In2
PORTB,1
- direktiva pro přiřazení názvu (alias)
- název
- umístění
EQU
#DEFINE
- pro byte
- pro bit
Program - princip
• Z 4 bitového přepínače načíst hodnotu (0 - 15, 0 - F) a uložit do
horních 4 bitů (16ti násobek)
...
BTFSC
BSF
BTFSC
BSF
...
in3
n_log1,5
in4
n_log1,4
• Přičíst k číslu jedničku (kvuli DECFSZ) (BSF, INCF, ADDLW...)
• DECrement ("0 - 1 = 255") 255 není 0 a tak by proběhlo místo 0
cyklů 255cyklů.