Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

== Display + PWM Control ==

Başlatan protech06, 29 Mayıs 2007, 00:30:44

protech06

Arkadaslar Bir PWM yapacam tek cıkıs olacak Cıkıs Voltajını 0 - 5V arasında değiştirmem lazım  bunu UP -DOWN tusları ile yapacam 000-255 arasında olacak ve aynı anda displayde gormem lazım 0 -255 degerini bu sekilde calısmaları olan arkadasların yardımlarını bekliyorum.Forumda arama yaptım pwm ornegi var bir kaç ornek buldum yalnız o anki degerin displayde nasıl gösterileceni çözemedim .

OG

HPWM çıkışını ve yazılımlarını kullanman gerekir. Yoksa pwm kesintiye uğrar.

Donanımsal PWM /HPWM olarak arayın.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

protech06

Hocam pic Assembly kullanıyorum ,bu işi  HPWM olmadan yapmam lazım bir de Sorun tam Olarak PWM değil Forumdaki örnekleri inceledim devrede çözemediğim nokta o anki degeri displaylerde gostermekte.

erdinch

pwm değerini tuttuğun değişkeni displaylere tarama tekniğini kullanarak gönderebilirsin.bu sorununu çözebilmen için pwm yerine daha çok sayıcı, dijital saat, dijital termometre örneklerini incelemen senın açından daha faydalı olacak gibi geliyor bana.

iyi çalışmalar.

aykut54

merhaba sevgili protech06 dediğin uygulamayı youtube sitesinde gördüm bende yapmaya karar verdim ancak başaramadım ilerde daha sonra yapmayı düşünüyorum
kolay gelsin

ycmy

mrblar aşağıdaki adreste displayde sayı değeri göstermekle ilgili birkaç program var bunları altaş yayıncılığın pic uygulamaları kitabından almıştım ben biraz acemi olduğum için pek çözemedim ama sen bi bak ben de şuan 16 bitlik bir sayıyı 4 displayde göstermeye çalışıyorum sanırım senin derdin de benimki ile aynı çözersen bana da anlat sevinirim  :D kolay gelsin
http://dosyam.net/?id=ovgkko

alabora

Programında PWM çıkışını etkinleştirmeden önce;( UP-DOWN tuşlarıyla elde ettiğin değeri sakladığın) register değerine göre oluşturacağın bir table'dan displaye veri gönderip ardından PWM'i çalıştırabilirsin.

protech06

Arkadaslar Sorunu Çözdüm Devreye devam ediyorum yardımlarınız icin Tşk.

alabora

Nasıl bir metod denedin. Nasıl çözdün onu da yazar mısın?

sezgin05

'****************************************************************
'*  Name    : 628pwm.BAS                                        *
'*  Author  : S.UNAL                                            *
'*  Date    : 22.12.2003                                        *
'*  Version : 1.0                                               *
'*  Notes   : 16f628 with PWM and 7segment                      *
'*          :                                                   *
'****************************************************************
@ device pic16f628a, INTRC_OSC_NOCLKOUT, wdt_off, pwrt_on, protect_off,lvp_off 
DEFINE OSC 4



Zero con %10000000 'abcdef 
One con %11110001 'bc 
Two con %01000100 'abdeg 
Three con %01100000 'abcdg 
Four con %00110001 'bcfg 
Five con %00100010 'acdfg 
Six con %00000010 'acdefg 
Seven con %11110000 'abc 
Eight con %00000000 'abcdefg 
Nine con %00110000 'abcfg 

X var byte 
Counter var byte 
PBup var porta.3 
PBdn var porta.4 
DoOnce var bit
DEFINE CCP1_REG PORTb 
DEFINE CCP1_BIT 3 
cmcon=7
vrcon=0
Trisa=%11000 
Trisb=%00000000 
porta = 0
portb = 0
DoOnce = 0
counter = 0
read 5,counter
pause 100
Main:
   For X = 0 to 2 
      If (PBup = 0) and (DoOnce = 0) then 
         DoOnce = 1 
         Counter = Counter + 1
         write 5,counter
         if counter>255 then
            counter=255
            
         endif
      else 
         If (PBdn = 0) and (DoOnce = 0)and (counter<>0) then 
            DoOnce = 1 
            Counter = Counter - 1
            write 5,counter
         endif
      Endif 

      If (PBup = 1) and (PBdn = 1) and (DoOnce = 1) then DoOnce = 0
      
      Lookup (Counter dig (X)),[Zero,One,Two,Three,Four,Five,Six,Seven,Eight,Nine],Portb 
      Lookup X,[1,2,4],Porta 
      Next X 
      hpwm 1,counter,10000 

Goto Main 

End


Bu kodu daha önceden yaptığım bir projede kullanmıştım.Küçük birkaç düzeltmeyle sizlere sunuyorum.

http://rapidshare.com/files/166706241/counter.DSN


protech06

@alabora


  Pwm Degerini tuttugum değişkenin her bir sayısı bir displaye gelecek sekilde tablodan taradım ve displaylere gonderdim bunuda her buton degişikliginde ve kesme olustugunda refresh yaptım anlık sayı degişimini izleyebiliyorum bu sekilde...

sezgin05

Eğer HPWM yaparsan refresh yapmana gerek kalmaz.Normal döngü içerisinde bunu gerçekleştirirsin.Yukarıda kod ile 0-255 arası PWM çıkışını UP DOWN olarak ayarlayıp alırsın.Ayrıca Dahili EEPROM a da kaydedersin elektrik kesildiğinde son PWM değerini alırsın.

protech06

Ben programlamada  Pic Assembly kullanıyorum   birde HPWM  her picte belirli sayıda.  2 yada 3 tane olanlar var.
  Eger cıkış  sayısını cogaltmak isteseniz sorun olacagı için kullanmadım

ycmy

Alıntı yapılan: "protech06"@alabora


  Pwm Degerini tuttugum değişkenin her bir sayısı bir displaye gelecek sekilde tablodan taradım ve displaylere gonderdim bunuda her buton degişikliginde ve kesme olustugunda refresh yaptım anlık sayı degişimini izleyebiliyorum bu sekilde...
bunu nasıl yaptın programını koyabilirmisin bide benim gibi acemilerin anlaması içn yanına açıklama yazarsan çok sevinirim :D

protech06

Yine nette buldugum bir  program ornegine benzer  yaptım  örnegi asagıda şema ve kod olarak gönderdim..




LIST P=16F84A
	INCLUDE"P16F84A.INC"
	__CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
LT	EQU	H'20'
HT	EQU	H'21'
LT1	EQU	H'22'
HT1	EQU	H'23'
LSB	EQU	H'24'
MSB	EQU	H'25'
AYAR	EQU	H'26'
SIFIR   EQU     D'119'		
BIR     EQU     H'06'
IKI     EQU     H'5B'
UC      EQU     H'4F'
DORT    EQU     H'66'
BES     EQU     H'6D'
ALTI    EQU     H'7D'
YEDI    EQU     H'07'
SEKIZ   EQU     H'7F'
DOKUZ   EQU     H'6F'
ON	EQU	D'113'
K_BIR	EQU     D'25'
K_IKI	EQU     D'50'
K_US	EQU     D'75'
K_DORT	EQU     D'100'
K_BES	EQU     D'128'
K_ALTI	EQU     D'150'
K_YEDI	EQU     D'175'
K_SEKIZ	EQU     D'200'
K_DOKUZ	EQU     D'225'
K_ON	EQU     D'255'
;----------------------
	ORG	0X00
BASLA
	CLRF	PORTB
	CLRF	AYAR	
	CLRF	LSB
	CLRF	MSB
	BSF	STATUS,5
	MOVLW	B'00011'; 
	MOVWF	TRISA
	CLRF	TRISB
	BCF	STATUS,5
	BCF	PORTA,3
	GOTO	TEST
TEST
	CALL	GOSTER
	MOVWF	PORTB
	BTFSS	PORTA,0
	GOTO	AZAL
	BTFSS	PORTA,1
	GOTO	ART
	GOTO	HAZIRLA
AZAL
	CALL	BEKLE
	MOVLW	D'0'
	SUBWF	AYAR,W
	BTFSC	STATUS,Z
	GOTO	TEST
	DECF	AYAR,F
	CALL	GOSTER
	MOVWF	PORTB
	GOTO	HAZIRLA
ART
	CALL	BEKLE
	MOVLW	D'10'
	SUBWF	AYAR,W
	BTFSC	STATUS,Z
	GOTO	TEST
	INCF	AYAR,F
	CALL	GOSTER
	MOVWF	PORTB
	GOTO	HAZIRLA
GOSTER
	MOVF	AYAR,W
KODLA
        ADDWF   PCL,F
        RETLW   SIFIR
        RETLW   BIR
        RETLW   IKI
        RETLW   UC
        RETLW   DORT
        RETLW   BES
        RETLW   ALTI
        RETLW   YEDI
        RETLW   SEKIZ
        RETLW   DOKUZ
	RETLW	ON
        RETLW   K_BIR
        RETLW   K_IKI
        RETLW   K_US
        RETLW   K_DORT
        RETLW   K_BES
        RETLW   K_ALTI
        RETLW   K_YEDI
        RETLW   K_SEKIZ
        RETLW   K_DOKUZ
	RETLW	K_ON
;--------------------
HAZIRLA
	CLRF	HT1
	CLRF	LT1
	MOVLW	D'0'
	SUBWF	AYAR,W
	BTFSC	STATUS,Z
	GOTO	TEST
ISLEM
	MOVF	AYAR,W
	ADDLW	D'10'
	CALL	KODLA
	MOVWF	HT1
	SUBLW	D'255'	
	BTFSC	STATUS,Z
	INCF	LT1,W
	MOVWF	LT1
	GOTO	CALIS
CALIS
	MOVF	HT1,W
	MOVWF	HT
	MOVF	LT1,W
	MOVWF	LT
SIFIR0
	BCF	PORTA,3  ; PORTA,3'Ü "0" YAP
	CALL	SAYAC
	DECFSZ	LT,F
	GOTO	SIFIR0
;----------------------
	BTFSS	PORTA,0
	GOTO	AZAL
	BTFSS	PORTA,1
	GOTO	ART
;----------------------
BIR1
	BSF	PORTA,3  ; PORTA,3'Ü "1" YAP
	CALL	SAYAC
	DECFSZ	HT,F
	GOTO	BIR1
	GOTO	CALIS
;----------------------
SAYAC
	MOVLW	D'10'
	MOVWF	LSB
SAY
	DECFSZ  LSB,F
	GOTO SAY
	RETURN
;----------------------
BEKLE
	MOVLW H'FF'
	MOVWF LSB
D1
	MOVLW H'FF'
	MOVWF MSB
D2	
	DECFSZ  MSB,F
	GOTO D2
	DECFSZ  LSB,F
	GOTO D1
	RETURN
;============================================================================;

	END

[/URL][/img]