Mint oly sok kontroller, ez is többféle tokozásban érhető el. Nem tudom, hogy a tokokon belül van-e eltérés a chipben, de az biztos, hogy a DIP8-as tokozású kivitel elképesztően szívós.
Jártam úgy, hogy fordítva ültettem be a panelba az ellenállás/zéner alkotta feszültségkorlátot, és közel 12 V-on járattam vagy fél órát. Nem csak, hogy működött, de túlélte! Azonban, jobban szeretem a SOT23-as 6 lábú kivitelt belőle.
Kezdjük az alapokkal. Nézzük tehát először az index villogót.
Az áramkör roppant egyszerű. Az izzón át érkezik a tápfeszültség, amit egy leválasztó dióda egy kondenzátorba vezet. Ez a kondi adja az energiát a PIC-nek, míg az izzó világít, hiszen eközben a FET rövidre zárja az áramkör tápját.
Tisztán látszik, hogy erre a feladatra még a 6 láb is sok. Kifejezetten morbid lenne erre egy 40 lábú kontrollert használni. A program - ha lehet - még a kapcsolásnál is primitívebb.
;*******************************************************************************
;* Irányjelző villogtató PIC10F322-vel *
;* Villogási frekvencia kb. 81 villanás/perc *
;*******************************************************************************
LIST P=PIC10F322 ; lista megadása
RADIX hex ; alapértelmezett számrendszer megadása
#include "p10F322.inc"
__CONFIG _FOSC_INTOSC & _BOREN_OFF & _WDTE_OFF & _MCLRE_OFF & _LVP_OFF & _LPBOR_OFF
org 0x0000 ;Programmemória kezdő címe
nop
INICIALIZALAS
CLRF LATA
CLRF ANSELA
MOVLW B'00001000' ;RA3-on kívül minden kimenetnek állítva
MOVWF TRISA
MOVLW B'01110110' ;Timer2 engedélyezése. Előosztás 16, utóosztás 15
MOVWF T2CON
MOVLW D'192' ;PR2 beállítása 192-re. (Így 193-ig számol)
MOVWF PR2
BSF LATA,0 ;RA0 kimenet bekapcsolása
MOVLW B'00100000' ;Oszcillátor beállítása 500KHz-re
MOVWF OSCCON
MAIN
BTFSS PIR1,1 ;Várakozás a flag-bit bekapcsolására.
GOTO $-1
BCF LATA,0 ;RA0 kimenet kikapcsolása.
BCF PIR1,1 ;A flag-bit kikapcsolása.
NOP ;Flag-bit bizonságos kikapcsolásának kivárása.
BTFSS PIR1,1 ;Várakozás a flag-bit bekapcsolására.
GOTO $-1
BSF LATA,0 ;RA0 kimenet bekapcsolása.
BCF PIR1,1 ;A flag-bit kikapcsolása.
NOP ;Flag-bit bizonságos kikapcsolásának kivárása.
GOTO MAIN ;Ugrás a program elejére.
;-------------------------------------------------------------------------------
END
Nézzünk egy másik, szintén egyszerű, de hasznos kapcsolást. Fényerő, vagy kefés DC motorok PWM szabályozására alkalmas.
Amint látható, nem sokban tér el az előzőtől. A potival beállított értékre szabályoz, míg a gomb nyomva van. A gombot akár rövidre is lehet zárni. A potit rendszeresen lekérdezi, azaz menet közben is szabályozható.
;*******************************************************************************
;* PWM szabályozás *
;*******************************************************************************
LIST P=PIC10F322 ; lista megadása
RADIX hex ; alapértelmezett számrendszer megadása
#include "p10F322.inc"
__CONFIG _FOSC_INTOSC & _BOREN_OFF & _WDTE_OFF & _MCLRE_OFF & _LVP_OFF & _LPBOR_OFF
CBLOCK 0x40
SZOR_WAIT
WAIT
ENDC
#define SW1 MB,0
org 0x0000
nop
INICIALIZALAS
CLRF LATA
MOVLW B'00000100'
MOVWF ANSELA
MOVLW B'00001001'
MOVWF ADCON
MOVLW B'00001110'
MOVWF TRISA
MOVLW B'00001010'
MOVWF WPUA
MOVLW B'00100000'
MOVWF OSCCON
MOVLW B'00000011'
MOVWF OPTION_REG
MOVLW B'00000100'
MOVWF T2CON
MOVLW D'250'
MOVWF PR2
CLRF PWM1DCL
CLRF PWM1DCH
BCF LATA,0
MOVLW B'11000000'
MOVWF PWM1CON
;---------------
MAIN
NOP
NOP
MOVLW D'30'
MOVWF SZOR_WAIT
VARAKOZAS
INCFSZ WAIT
GOTO VARAKOZAS
DECFSZ SZOR_WAIT
GOTO VARAKOZAS
BTFSC PORTA,1
GOTO KIKAPCS
BSF ADCON,1
BTFSC ADCON,1
GOTO $-1
MOVF ADRES,W
NOP
NOP
CLRF PWM1DCL
MOVWF PWM1DCH
GOTO MAIN
KIKAPCS
CLRF PWM1DCL
CLRF PWM1DCH
BCF LATA,0
GOTO MAIN
END
Ez a program sem viszi túlzásba a méretet. Mindössze 49 byte.
A következő panelterven egy hungarocell vágó látható. Szerkezetileg mindössze annyiban tér el az előző kapcsolástól, hogy nincs az RA2 előtt a 220 Ω-os, védő ellenállás, ellenben a poti pozitív ágába van beiktatva egy 1 kΩ-os, hogy ne lehessen a fűtőszálra teljes áramot adni. A program ugyan az.
Még mindig ugyanezt az áramkört használva, csak a potmétert elhagyva, lágyindító kapcsolás készíthető kefés DC motorok számára. A program egészen minimális változtatást igényel. Jelen paraméterekkel a teljes felpörgés kb. 5 másodperc.
;*******************************************************************************
;* Lágyindító PWM szabályzással *
;*******************************************************************************
LIST P=PIC10F322 ; lista megadása
RADIX hex ; alapértelmezett számrendszer megadása
#include "p10F322.inc"
__CONFIG _FOSC_INTOSC & _BOREN_OFF & _WDTE_OFF & _MCLRE_OFF & _LVP_OFF & _LPBOR_OFF
CBLOCK 0x40
SZOR_WAIT
WAIT
POWER
ENDC
#define SW1 MB,0
org 0x0000
nop
INICIALIZALAS
CLRF LATA
CLRF ANSELA
CLRF ADCON
MOVLW B'00001010'
MOVWF TRISA
MOVWF WPUA
MOVLW B'00100000'
MOVWF OSCCON
MOVLW B'00000011'
MOVWF OPTION_REG
MOVLW B'00000100'
MOVWF T2CON
MOVLW D'250'
MOVWF PR2
CLRF PWM1DCL
CLRF PWM1DCH
BCF LATA,0
MOVLW B'11000000'
MOVWF PWM1CON
CLRF POWER
;---------------
MAIN
NOP
NOP
MOVLW D'3'
MOVWF SZOR_WAIT
VARAKOZAS
INCFSZ WAIT
GOTO VARAKOZAS
DECFSZ SZOR_WAIT
GOTO VARAKOZAS
BTFSC PORTA,1
GOTO KIKAPCS
MOVLW .250
SUBWF POWER,W
BTFSC STATUS,C
GOTO MAIN
INCF POWER
MOVF POWER,W
CLRF PWM1DCL
MOVWF PWM1DCH
GOTO MAIN
KIKAPCS
CLRF PWM1DCL
CLRF PWM1DCH
CLRF POWER
BCF LATA,0
GOTO MAIN
END
Azonban a folyamat akár meg is fordítható, hogy a gomb megnyomására teljes kitöltésre kapcsoljon, elengedés után pedig lassan kapcsoljon ki. Például autóban a beltérvilágítás vezérlésére.
Maradva ennél a kapcsolásnál, csak a nyomógomb került át az RA2-re, egy bontott fúrógép motor felhasználásával építettem egy kézi gravírozót. A NYÁK egyenesen a motor kapcsaira van forrasztva. A PIC alig néhány milliméterre van a szikrázó szénkeféktől. A nyomógomb a motor oldalán kapott helyet. Ez egy zavar-gazdag környezet, mégis, tökéletesen üzemel - köszönhetően az egyszerű hardvernek.
A program azonban meg lett cifrázva. Egy rövid gombnyomásra kb. 2 másodperc alatt teljesen felpörög a motor. Újabb rövid gombnyomásra leáll. Ellenben, ha a gombot hosszan nyomom, lassan növeli a fordulatot, és azon a fordulaton marad, ahol elengedem a gombot. Újabb, hosszú nyomásra tovább növeli a fordulatot, rövid nyomásra leáll. Ez már azért egy hosszabb program, de még mindig csupán 159 byte. Kár lenne ilyen kis feladatra jóval nagyobb tárhelyű és lábszámú eszközt használni.
;*******************************************************************************
;* Kézi gravírozó vezérlő *
;*******************************************************************************
LIST P=PIC10F322 ; lista megadása
RADIX hex ; alapértelmezett számrendszer megadása
#include "p10F322.inc"
__CONFIG _FOSC_INTOSC & _BOREN_OFF & _WDTE_OFF & _MCLRE_OFF & _LVP_OFF & _LPBOR_OFF
CBLOCK 0x40
IDO
CIKLUS
PWM
SW
ENDC
WAIT MACRO MENNYI
MOVLW MENNYI
MOVWF CIKLUS
NOP
MOVLW .40
MOVWF IDO
DECFSZ IDO
GOTO $-1
DECFSZ CIKLUS
GOTO $-6
ENDM
org 0x0000
nop
INICIALIZALAS
CLRF LATA
CLRF ANSELA
CLRF ADCON
MOVLW B'00001100'
MOVWF TRISA ;RA3 és RA2 bemenetnek van állítva.
MOVLW B'00001100'
MOVWF WPUA ;RA3 és RA2 belső felhúzó ellenállás bekapcsolva.
MOVLW B'00100000'
MOVWF OSCCON ;Oszcillátor 500KHz-re állítva
MOVLW B'00000001'
MOVWF OPTION_REG
MOVLW B'00000100'
MOVWF T2CON
MOVLW D'250'
MOVWF PR2
MOVLW B'10000000'
MOVWF PWM1CON
;---------------
WAIT .250
MOVLW .20
MOVWF PWM
MAIN
BTFSC PORTA,2
GOTO $-1
WAIT .5
BTFSC PORTA,2
GOTO MAIN
WAIT .250
BTFSS PORTA,2
GOTO GYORSIT
BTFSC SW,0
GOTO LEKAPCSOL
MOVLW .20
MOVWF PWM
BSF PWM1CON,6
MAXRA
INCF PWM
MOVLW .250
SUBWF PWM,W
BTFSC STATUS,C
GOTO MAXON
CALL SPEED
WAIT .6
GOTO MAXRA
MAXON
BSF SW,0
WAIT .100
GOTO MAIN
GYORSIT
BSF PWM1CON,6
GYORSIT_1
INCF PWM
MOVLW .250
SUBWF PWM,W
BTFSC STATUS,C
GOTO GYORSITAS_VEGE
CALL SPEED
BTFSC PORTA,2
GOTO GYORSITAS_VEGE
WAIT .45
GOTO GYORSIT_1
GYORSITAS_VEGE
WAIT .10
BTFSS PORTA,2
GOTO GYORSITAS_VEGE
BSF SW,0
WAIT .100
GOTO MAIN
LEKAPCSOL
BCF PWM1CON,6
CLRF LATA
BCF SW,0
MOVLW .20
MOVWF PWM
MEG_NEM
WAIT .50
BTFSS PORTA,2
GOTO MEG_NEM
WAIT .100
GOTO MAIN
SPEED
MOVF PWM,W
CLRF PWM1DCL
MOVWF PWM1DCH
RETURN
;-------------------------------------------------------------------------------
END
Az előzőekben kiderült, hogy nem túl zavarérzékeny a kicsike. Viszont most jöjjön egy igazán morbid felhasználás.
A cikk még nem ért véget, lapozz!
Értékeléshez bejelentkezés szükséges!