lm317t ısınma sorunu

Başlatan aRci, 22 Haziran 2015, 00:02:03

aRci

merhaba iyi akşamlar
yaptığım devrede 16f628a ile 9999 sayıcı 4digit kırmızı ışıklı ortak katot display i her rakamı 74hc164 ve segmentleride 74hc595 ile sürüyorum devre gerilimini lm317t ile 5.4v verecek şekilde ayarladım. devre beslemesi 12v 1a güç kaynağı ile denedim sorusuz çalışıyor. kısa süre sonra lm317 yavaş olarak ısınmaya başlıyor. bunun üzerine girişe ampermetre taktım ve 0,1a okudum bu akımda lm317 nin ısınması normalmı

74hc595 çıkışlarına 680 ohm direnc bağlı

şimdiden tşk ederim

BİDİL

ampermetreyi 12 volt girişine taktıysan 12 voltan 100mA çekiyor demektir. LM317T'in 5 volt çıkışına bağla bakalım devren 5 voltta kaç amper çekiyor.

ete

Genelde herkesin yaptığı hata şu. Devrenin kaç amper çektiğine bakıp ısınmanın normal yada anormal olduğuna karar veriliyor.
Halbuki bakılması gereken şey O regülatör üzerinde sınırlanan Voltaj değeridir. Eksiltilen her voltaj ısı olarak regülatörden çıkmaktadır. Bunu hesaba katınız. 12V dan 5V seviyelerine düşüyorsanız  LM317 nin ısınması normaldir. Zaten ısınmaya meyilli bir regülatördür bu ve soğutucusuz kullanılmaz.

Ete

aRci

ilginiz için teşekkür ederim ama tüm pazar gunumu bu sorunu çözmek için harcadım ve hatanın montaj esnasında yaptığım bir lehim in sebep olduğunu buldum devrede aslında 595 in data çıkış pinini gnd ye bağlamaışım buda tarama esnasında anlık kısa devre yapıyordu. lehimi temizlediğimde sorun çözüldü akım 40ma  ya düştü ısınma nerdeyse gitti.

deveyi aslında encoder sayıcı olarak taarlamak istedim fakat çalıştığım iş yerinde robot lu parça üretimi yapılıyor ve bende buna göre giiş devresini değişirmek istiyorum.yeni bir kart yapacağım fakat yapmış olduğum devrenin girişi basit bir gerilim bölücüden oluşuyor (direnc ve zener diot). eğer bu bağlantı şeklini kullanırsam kartta oluşacak bir elektriksen arıza giriş üzrinden robota zara vermesinden dolayı rahatsızlık duyuyorum.bende girişe bir uyum devresi (elektriksel yalıtım ) ile giriş sinyallarıni almak istiyorum.

devre pals girişleri portb.6 ve portb.5 e bağlı ve portb4-7 kesme si kullanılıyor. yapaacağım uyum devresinin yüksek hızlı optukuplörlerden ve az yer kaplamasını istiyorum bana tavsiye edebilirmisiniz.

forumlarda gezerken rasladım SFH628A opto nasıldır. uyum deresi yaparken hep 4n25 kullandım yeterli olurmu

aRci

MERHABA ARKADAŞLAR
cavaplarınız için teşekkür ederim tekrardan.

bu devreyi çalıştığım iş yerinde kasa içi adetini saymasın için yapmştım. programı tamamlayıp kutuyu banta monte ettikten sonra tüm herşey hazır bitti dediğimde beklemediğim bi hata oldu.yanlış ve tutarsız olarak sayım yapıyor. sorunun ne olduğnu analaayamadım. aşağıdaki resimden 24v girişin zener diot ile 5v a indirmeye çalıştım. aklıma gelen tek şey parazit. peki bu giriş devresinde bu paraziti nasıl en aza indire bilirim.

yorumlarınızı bekliyorum

her ürün yaklaşık 8sn de bir yani iki pals arası 8sn her pals süresi yaklaşık 1sn


kodları ise:


define osc 20

cmcon = 7
trisa = 0
trisb =%01111110

porta = 0
portb = 0

symbol kur=%10001000

on interrupt goto kesme

intcon=kur

symbol cl2      = porta.0   '164 clk
symbol dta      = porta.1   'data
symbol enb      = porta.2   'enb
symbol cl1      = porta.3   '595 clk

symbol sec     = portb.1
symbol ykr     = portb.3
symbol asg     = portb.2
symbol buzer   = portb.7

rakam   var byte
disp    var byte
basamak var byte
nokta   var bit

buton   var word
prog    var byte

sayac       var word
yedek       var word
s_ayar      var word

enco    var word
pulse   var word
say_enb var bit
new     var byte
old     var byte

efek    var byte[15]
f       var byte
f1      var byte
f2      var byte

shiftout dta,cl1,1,[0]:pulsout enb,2
shiftout dta,cl2,1,[255]

sayac = 0
yedek = 0
prog = 0
pulse = 0 
read 1,s_ayar.highbyte
read 2,s_ayar.lowbyte

buton = 0   

basla:

if s_ayar+1 = sayac and prog = 0 then sayac = 1
if prog = 1 then pulse = pulse + 1

if pulse > 75 and pulse < 150 and asg = 0 and ykr = 0 and sec = 0 then
rakam = 10
gosub ekran_yaz
else
gosub disp_yaz
endif

if pulse > 150 then pulse = 0

if ykr = 1 and buton = 0 then sayac = sayac + 1
if asg = 1 and buton = 0 then sayac = sayac - 1

if sec = 1 and buton = 0 then buton = 10000


if asg = 1 or ykr = 1 or sec = 1 then
buton = buton + 1
if buton = 10100 and prog = 0 then pulsout buzer,500:goto bekle
if buton = 10100 and prog = 1 then yaz

if buton = 100 then
    if ykr = 1 then sayac = sayac + 10
    if asg = 1 then sayac = sayac - 10
   
    buton = 75
endif
else
if buton > 6000 then sayac = 0:pulsout buzer,500
buton = 0
endif
goto basla

bekle:
prog = 1
buton = 0
yedek = sayac
sayac = s_ayar
bkl2:
gosub disp_yaz
if sec = 1 then bkl2

goto basla

yaz :
write 1,sayac.highbyte:pause 5
write 2,sayac.lowbyte:pause 5
s_ayar = sayac
sayac = yedek
prog = 0
buton = 0
pulse = 0
pulsout buzer,500

bkl:
gosub disp_yaz
if sec = 1 then bkl
goto basla


disp_yaz:
if sayac > 20000 then sayac = 9999
if sayac > 9999 then sayac = 0

if sayac>999 then
basamak = %01111111
rakam = sayac dig 3
gosub ekran_yaz
endif

if sayac>99 then
basamak = %10111111
rakam = sayac dig 2
gosub ekran_yaz
endif

if sayac>9 then
basamak = %11011111
rakam = sayac dig 1
gosub ekran_yaz
endif

basamak = %11101111
rakam = sayac dig 0
gosub ekran_yaz

return

ekran_yaz:
lookup rakam,[%01011111,%01000100,%10011101,%11010101,%11000110,%11010011,%11011011,%01000101,%11011111,%11010111,0],disp
'if basamak = %11011111 and nokta = 1 then disp = disp | 1
shiftout  dta,cl1,0,[0]
pulsout enb,2

shiftout  dta,cl1,0,[disp]
shiftout dta,cl2,0,[basamak]
pulsout enb,2
pause 5
return

disable
kesme:

intcon.0=0
if portb.6 = 1 then sayac = sayac + 1
if portb.5 = 1 then sayac = sayac - 1
if sayac = s_ayar then pulsout buzer,500
if s_ayar+1 = sayac and prog = 0 then sayac = 1

intcon=kur
resume      'ana programma geri dön
enable      'tümm kesmmelere izin ver

ete

Kesmeden çıkmadan önce portb nin oku=PortB şeklinde okunup son konum okunması lazım. Aksi halde kesme stabil çalışmaz.

Oku yerine herhangi bir değişken kullanabilirsin.

Ete

aRci

bunu birz daha açarmısınız kesme bayrağını resetlemek yeterli değilmi

verdiğiniz kodla portb yi sadece okuyoruz bu okunan değer kullanılacak mı tekrardan

ete

#7
Portb değişiklik kesmesi kullanıyorsun. Bu kesme, portB nin B.4-B7 arasında giriş olarak ayarlanmış pinlerde konum değişikliği olduğu zaman oluşur. Konum değişikliği ne demektir. Kesmeden çıktığı anda pinlerin konumunu alıp saklar ve sonrasında bu pinlerden birisi değişirse kesme oluşur.
Sen pinlerin konumunu almadan çıkarsan hep bir önceki konumu değerlendirir. Doğrusu ,kesmeden çıkmadan pinlerin durumu okunmalıdır.
Gerekirse ete projelerinde verilen basic derslerinden Ders-6 yı okuyabilirsin.

Ete

aRci

hocam dediğiniz gibi programı değiştirdim ve aklıma gelen kodlarda diğer değişiklikleri de yaptım ve yine tutarsız bir çalışma sergiledi ( gelen darbeyi almama, tutarsız bir sayım ). kartı tekrar evede programını değiştirip yine evde deneme yaptıklarımda sorun çıkmıyordu. deneme dediğim  elle giriş devresine +24v verme

      ancak montaj yapılan yerde aldığım sinyal kaynağı aslında röle kontağından geliyor. kontağın kaanma ve açılmasında oluşa parazitten mi olduğunu düşünerek daha önceleri yaptığım bir 16f877 kntrol kartındaki röle ile pals uyguladım ve yine atölyede olan hatalı sayımla karşılaşıtım.

     deneme kartına yeni bir programla istediğim adet kadar röleyi açık ve kapatma sürelerini ayarlayabileceğim bir program yaptım. kesme kullanmadan giriş e uygulanan sinyalin uzunluğuna göre sayacak bir algoritma yaparak iki devreyi birlikte çalıştırdım. aşağıda devrenin deneme videosu var.
    tekrardan devreyi biraz daha geliştirerek yaniden yapasıya kadar  bu hali ile sayıcı işimi görüyor.

    yardımlarınız için teşekkür ederim

https://www.youtube.com/watch?v=xwZz4FIs208&feature=youtu.be

Powered by EzPortal