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, 00: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: 7239
Registrován: 17 led 2007, 00:00
Bydliště: Milotice u Kyjova

#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, 00: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: 704
Registrován: 20 dub 2006, 00: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: 7239
Registrován: 17 led 2007, 00:00
Bydliště: Milotice u Kyjova

#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, 00: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, 00: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: 704
Registrován: 20 dub 2006, 00: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, 00: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, 00: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, 00: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, 00: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ů“