70 likes | 288 Views
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
E N D
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 - direktiva pro přiřazení názvu (alias) In2 - název PORTB,1 - umístění EQU - pro byte #DEFINE - 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 in3 BSF n_log1,5 BTFSC in4 BSF 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ů.