ovládanie jasu žiarovky PICèkom

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Amatér1

ovládanie jasu žiarovky PICèkom

#1 Příspěvek 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ú￾.

Uživatelský avatar
kony2807
Příspěvky: 305
Registrován: 29 črc 2007, 02:00
Bydliště: Ostrava

#2 Příspěvek 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 ...

Uživatelský avatar
Cust
Příspěvky: 5553
Registrován: 17 led 2007, 01:00
Bydliště: Husinec-Řež

#3 Příspěvek 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....

Uživatelský avatar
ViPali
Příspěvky: 524
Registrován: 21 lis 2005, 01:00
Bydliště: Bratislava

#4 Příspěvek od ViPali »

Budeš ovládať žiarovku na striedavé napätie, alebo jednosmerné?
Ako elektrikár sa cítim slobodne.
Môžem hovoriť do vedenia!

Uživatelský avatar
Filda
Příspěvky: 703
Registrován: 20 dub 2006, 02:00

#5 Příspěvek 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.
Naposledy upravil(a) Filda dne 04 pro 2007, 13:44, celkem upraveno 1 x.

Uživatelský avatar
Cust
Příspěvky: 5553
Registrován: 17 led 2007, 01:00
Bydliště: Husinec-Řež

#6 Příspěvek 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.

Uživatelský avatar
jankop
Příspěvky: 679
Registrován: 04 dub 2007, 02:00
Kontaktovat uživatele:

#7 Příspěvek 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.

Uživatelský avatar
kony2807
Příspěvky: 305
Registrován: 29 črc 2007, 02:00
Bydliště: Ostrava

#8 Příspěvek 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áí.

Uživatelský avatar
Filda
Příspěvky: 703
Registrován: 20 dub 2006, 02:00

#9 Příspěvek od Filda »

až teď mě to došlo :lol: ........ takže teď už proti tomu nic nemám :wink: :agree:

amater1

#10 Příspěvek 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￾.

Uživatelský avatar
jankop
Příspěvky: 679
Registrován: 04 dub 2007, 02:00
Kontaktovat uživatele:

#11 Příspěvek 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
;--------------------------------------------------

Uživatelský avatar
amater1
Příspěvky: 9
Registrován: 04 pro 2007, 01:00

#12 Příspěvek od amater1 »

Ďakujem, veď je to celkom jednoduché , len ta to prísť :thanks:

Uživatelský avatar
kony2807
Příspěvky: 305
Registrován: 29 črc 2007, 02:00
Bydliště: Ostrava

#13 Příspěvek 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.


	



Uživatelský avatar
jankop
Příspěvky: 679
Registrován: 04 dub 2007, 02:00
Kontaktovat uživatele:

#14 Příspěvek 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í.

Ano

jinak

#15 Příspěvek 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

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“