Stránka 1 z 2
ovládanie jasu žiarovky PICčkom
Napsal: 03 pro 2007, 11:15
od Amatér1
PLS potreboval by som poradiť, ako spraviť ovládanie jasu žiarovky počas napr. 3 sek sa jas zmeni z 0 na 100 %.
Ideálne by bolo aby sa čas rozsvecovania dal meniť - tj. regulácia vždy 0 - 100%, ale aby som mohol nastaviť (napr. zápisom do registru) čas rozsvietenia.
Jedná sa o zariadenie, ktoré bude ovládať viac svetiel a potrebujem ich plynulo zapnúť, vypnúť.
Napsal: 03 pro 2007, 14:52
od kony2807
zkus PWM - pulsně šířková modulace regulace 0-99% ... (některé pic to mají vestavěné přímo jako modul , u jiných se to dá řeššit softwerem)
edit : Ale pozor ! funguje pouze pro stejnosměrné napětí , pro střídavé by se to značně zkopliovalo ...
Napsal: 03 pro 2007, 15:02
od Cust
misto logicke 1 na rozsviceni zarovky stridej zapis 1 a 0
0 nesviti
1 sviti
0,1,0,1 ... sviti napul (kdyz budes mit vic jednicek bude svitit vic a kdyz vic 0 bude svitit min), frekvenci zvol nejakou vhodnou, aby to spinaci tranzistor ci co tam mas v klidu zvladal a zbytecne nehral....
Napsal: 04 pro 2007, 07:42
od ViPali
Budeš ovládať žiarovku na striedavé napätie, alebo jednosmerné?
Napsal: 04 pro 2007, 13:39
od Filda
kony2807 píše:zkus PWM - pulsně šířková modulace regulace 0-99% ... (některé pic to mají vestavěné přímo jako modul , u jiných se to dá řeššit softwerem)
edit : Ale pozor ! funguje pouze pro stejnosměrné napětí , pro střídavé by se to značně zkopliovalo ...
Já teda nevím ale PWM bych tam asi nedával . ..... Je to dobré pro motory, ale žárovka bude při zeslabení blikat.
Napsal: 04 pro 2007, 13:42
od Cust
u PWM, zalezi na frekvenci, pokud bude dostatecne velika, tak blikat nemuze - navic ma vlakno zarovky dost velkou setrvacnost. Pokud pic umi pwm sam o sobe, bude to nejlepsi zpusob.
Napsal: 04 pro 2007, 16:59
od jankop
HW PWM v PIC nejde pro tento účel bez externí logiky použít. Ale softwarově to v tomto specielním případě není problém.
Napsal: 04 pro 2007, 18:05
od kony2807
tak to blikání je blbost , pokud jede PWM na frekvenci 25Hz ( no film v kině taky pří 24snímcích/sekunda taky nebliká - lidské oko je nedokonalé) a větší tak to blikat nebude . Doporučuju však něco kolem 8KHz , nebudou vás tolik bolet oči. Pokud by měl Anatér1 zájem , ať mi napíše do soukromých zpráv svůj e-mail rád mu program pošlu . Teno troblém sem již řešil u vlastních konstrukcáí.
Napsal: 04 pro 2007, 18:38
od Filda
až teď mě to došlo

........ takže teď už proti tomu nic nemám

Napsal: 04 pro 2007, 19:05
od amater1
Jedná sa o to, že potrebujem rozsvecovať viac žiaroviek na aute - parkovačky, spiatočky, hlavné svetlá. PWM je len na jeden výstup,ale aj tak som to skúšal rozchodiť v simulátore, ale ani za svet nejde. Tak ma napadlo skúsiť to nejakými čítačmi, lenže na to som trochu krátky - potreboval by som len princíp, ako by to mohlo fungovať - ostatné by som mal zvládnuť.
Napsal: 04 pro 2007, 20:05
od jankop
Když ti jde jen o princip, tak tady je segment programu, který pěkně pomalu rozsvěcuje/zhasíná světla. Tato rychlost se dá nastavit proměnnou. Jednoduchou modifikací je možné současně rozsvícet nebo zhasínat několik světel.
Kód: Vybrat vše
;---------------------------------------------------------------------
demo
call LED_UP
call LED_DW
goto demo
;----------------------------------------------------------------------
; Podprogram pro pomale rozsvecovani LED
;----------------------------------------------------------------------
LED_UP
clrf ucrLO
loopled_ON
movf ucrLO,W
movwf ucrHI
bcf PORTA, Q_OUT ; LED OFF
loop00
call delayt
incfsz ucrHI,F
goto loop00
movf ucrLO,W
movwf ucrHI
comf ucrHI,F
bsf PORTA, Q_OUT ; LED ON
loop01
call delayt
incfsz ucrHI,F
goto loop01
incfsz ucrLO,F
goto loopled_ON
return ; LED je zapnuta
;----------------------------------------------------------------------
; Podprogram pro pomale zhasinani LED
;----------------------------------------------------------------------
LED_DW
clrf ucrLO
loopled_OFF
movf ucrLO,W
movwf ucrHI
bsf PORTA, Q_OUT ; LED ON
loop02
call delayt
incfsz ucrHI,F
goto loop02
movf ucrLO,W
movwf ucrHI
comf ucrHI,F
bcf PORTA, Q_OUT ; LED OFF
loop03
call delayt
incfsz ucrHI,F
goto loop03
incfsz ucrLO,F
goto loopled_OFF
return ; LED je vypnuta
delayt
movlw 0x0a ; konstanta rychlosti
movwf vdelay
supsem
decfsz vdelay,F
goto supsem
return
;--------------------------------------------------
Napsal: 05 pro 2007, 07:42
od amater1
Ďakujem, veď je to celkom jednoduché , len ta to prísť

Napsal: 05 pro 2007, 15:47
od kony2807
už sem kód psílal ale dám ho sem , myslím že je trochu přehlednější.
Kód: Vybrat vše
;PWM regulace pro procesor PIC12F629 (event. PIC12F675)
;Verze : 1.0
; Fosc : 4MHz
;-------- DEFINICE --------
list P=12f629
include "p12f629.inc"
org 000
goto Init
RAM equ 20h
TMP0 equ RAM+1
PWM equ RAM+4
PWM_L equ RAM+5
TMP_PWM equ RAM+6
#define Out 05,1 ;toto je výstup z PWM
Init bsf STATUS,RP0
movlw b'000000'
movwf GPIO
bcf STATUS,RP0
clrf 05
goto MAIN
;-------- PODPROGRAMY --------
Reg_PWM
bcf Out
movf PWM,0
sublw d'256'
movwf PWM_L
call Per_PWM
decfsz PWM_L,1
goto $-2
bsf Out
movf PWM,0
movwf TMP_PWM
call Per_PWM
decfsz TMP_PWM,1
goto $-2
bcf Out
return
;*************
Per_PWM ;Delay 100 cycles Toto je čekací smyčka , její čas je roven 1/256 času celé periody
; příklad :pro trvání jednoho cyklu PWM 0,0256 s sem zadej smyčku o 100 strojových cyklech.
MOVLW 0x20 ;33 DEC
MOVWF TMP0
DECFSZ TMP0,F
GOTO $-1 ;End of Delay
return
;-------- HLAVNÍ PROGRAM --------
MAIN ;do registru PWM zapiš hodnotu 0-255 , 0= nulová perioda v H,nejmenší výkon 255= maximální perioda v H, nejvetší výkon
;tak tady napiš pouze hodnotu na kterou tio má regulovat ...
movlw d'127' ; tvoje hodnota
movwf PWM
call Reg_PWM
goto MAIN
END
; Program napsal a odladil(c) Martin Konečný v roce 2007 tedy 14let po jeho narození.
; je jákladem pro další rozvoj programu v regulaci PWM , upraven jako část jiného programu.
Napsal: 05 pro 2007, 18:12
od jankop
Musím tě pochválit, jsi šikovný. Na druhé straně je v programu několik závažných chyb a v konečném důsledku bude tvůj program nefunkční.
jinak
Napsal: 17 pro 2007, 11:58
od Ano
Ahoj,
Program je pěkný ,ale skus programovat bez čekacích smyček pokud Ti nezáleží na výstupní freq. např:
Na stisk tlačítka (ir) se postupně rozsvítí a další stisk postupně zhasne.
Rychlost UP/DN se řídí nahozením (cas) #define cas klav,3 (1-7)
.........................
PS : Komentáře si přepiš podle svého radši
;*******************************************************************
;******* led 0-100 to 100-0 ****************************
;*******************************************************************
loop btfsc ir ; stisknuto tlacitko IR
goto loop ; ne
clrf pwm1
incf pwm1,f ; nemi bejt nula
call pwm_up ; jas od 0 do max
bsf led ; jas je 100%
loop1 btfsc ir ; stisknuto tlacitko IR
goto loop1 ; ne
clrf pwm1
decf pwm1,f
call pwm_dn
bcf led ; jas je 0%
goto loop
;*******************************************************************
;**************** pwm 0-100 ****************************
;*******************************************************************
pwm_up incf pocet,f
btfss STATUS,Z ; skip if zero
goto dal2
decf klav,f
btfss STATUS,Z ; us mam testovat klavesy
goto dal3 ; ne
incf pwm1,f ; pwm zvis o jednu
btfsc STATUS,Z ; us je 0
return ; ano pric
bsf cas ; nahod nejake cekani X*255
dal3 bsf led ; nahod port led
incf pocet,f
dal2 movf pwm1,w
subwf pocet,w
btfsc STATUS,Z ; skip if neni zero
bcf led ; pokud je stejne resetuj
goto pwm_up
;*******************************************************************
;***************** pwm 100-0 ****************************
;*******************************************************************
pwm_dn incf pocet,f
btfss STATUS,Z ; skip if zero
goto dal
decf klav,f
btfss STATUS,Z ; us mam testovat klavesy
goto dal1 ; ne
decf pwm1,f ; pwm sniz o jednu
btfsc STATUS,Z ; us je 0
return ; ano pric
bsf cas ; nahod nejake cekani X*255
dal1 bsf led ; nahod port led
incf pocet,f
dal movf pwm1,w
subwf pocet,w
btfsc STATUS,Z ; skip if neni zero
bcf led ; pokud je stejne resetuj
goto pwm_dn