avatar_elektro77

Tüm çıkışlarda sıra ile ledi dimmer yapma

Başlatan elektro77, 02 Haziran 2020, 09:33:15

elektro77

Aşağıdaki devre şemasında ve  kodlarla portb ve portc de bağlı ledleri sıra ile dimleyerek gerçekte yakıyorum.
Pwm code dizininde cycle adedini 10 yapmazsam gerçekte dimlediği hiç anlaşılmıyor yani led dimlemeden hemen yanıveriyor.
Ancak Pwm komutları arasına o esnada tuşa tekrar basılıp basılmadığını kontrol etmek için kodlar yerleştirmem gerekecek. Yazdığım Pwm kodları nasıl daha kısa hale getirilebilir? Veya ledleri sıra ile dimleyip parlayarak yakmak ve yine azalarak sönme işini daha başka nasıl bir yolla yapabilirim. Yardımlarınızı bekliyorum.

@ __Config _XT_OSC  &  _WDT_OFF &_PWRTE_OFF &_BODEN_OFF &_CP_ON &_CPD_OFF &_LVP_OFF 
 '-------------------------------------------------------------------------------
define OSC 4
 '-------------------------------------------------------------------------------
CMCON=7               'komparatör pinleri iptal hepsi giriş çıkış yapıldı.16F876 dA yok.
ADCON1=7              'ADC KANALLARI DİJİTAL YAPILDI - ADC İPTAL
'OPTION_REG.7=1       'portB deki dahili PULL-UP lar iptal edildi.
 PORTA=0
 PORTB=0
 PORTC=0
 TRISA=%11111100
 TRISB=%00000000
 TRISC=%00000000
'---------------------------------------
Symbol LED1=PORTA.0
Symbol LED2=PORTA.1
Symbol SW1=PORTA.4
Symbol SW2=PORTA.5
Symbol SENS1=PORTA.2
Symbol SENS2=PORTA.3
Symbol B1=PORTC.0
Symbol B2=PORTC.1
Symbol B3=PORTC.2
Symbol B4=PORTC.3
Symbol B5=PORTC.4
Symbol B6=PORTC.5
Symbol B7=PORTC.6
Symbol B8=PORTC.7

Symbol B9=PORTB.0
Symbol B10=PORTB.1
Symbol B11=PORTB.2
Symbol B12=PORTB.3
Symbol B13=PORTB.4
Symbol B14=PORTB.5
Symbol B15=PORTB.6
Symbol B16=PORTB.7
pause 200
'-------------------------------------------------------------------------------

BASLA:
If sens1=0 Or Sw1=1 Then
GoSub ASAGIYAN   
EndIf
'------------------------------------------------------------- 
If sens2=0 Or Sw2=1 Then
GoSub YUKARIYAN
EndIf

GOTO BASLA
'------------------------------------------------------------------------------
ASAGIYAN:
PWM B1,10,10    
PWM B1,50,10
PWM B1,100,10 
PWM B1,150,10
PWM B1,200,10 
PWM B1,255,10
B1=1

PWM B2,10,10     
PWM B2,50,10
PWM B2,100,10 
PWM B2,150,10 
PWM B2,200,10
PWM B2,255,10
B2=1

PWM B3,10,10     
PWM B3,50,10
PWM B3,100,10 
PWM B3,150,10 
PWM B3,200,10
PWM B3,255,10
B3=1
'-------------------------
YUKARIYAN:



RETURN


END






"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

#1
PWM komutu 3 parametreden oluşuyor. PWM pin(1), Duty(2),Cycle(3)
Birinci parametre Pin bildiğimiz PWM nin çıkacağı pin oluyor.
Duty değeri ise 0-255 aralığında %0-%100 duty değerini ifade ediyor.
Son parametre olan cycle ise o sinyalin ne kadar süreceğine işaret ediyor.
4Mhz oC frekansı kullan bir işlemcide her Cycle değeri 5 ms lik bir süreyi kapsar. Oraya 10 yazmakla 50 ms lik bir süre ile sinyali çıkartacaksınız demek olur.
PWM B1,10,10  şeklindeki ilk komuta bakalım. BU komutu
FOR I=0 to 9
PWM B1,10,1
GOSUB TUSBAK
Next
şeklinde yazarsan yine 10x5ms=50 ms lik süre ile sinyal çıkmış olur ancak arada tuş kontrolü yapabilirsin.
Bu durumda o komutların hepsini döngüsel komut şeklinde yazman gerekir.

Bu işin kolay yolu 3 adet HPWM çıkışı olan bir işlemci kullanarak PWM sinyali geri planda oluşturmak ve ön planda ne istiyorsan onu yapma şansına erişmek şeklinde açıklanabilir.
3 adet PWM si (hatta daha afazla) olan işlemciler PIC16F825 , PIC 16F1827, PIC18F25K22, PIC 18F45K22 dir Seç beğen al.

HPWM sinyali 3 farklı pinden çıkacak olursa yapman gereken yanlızca Dut değerinin ne kadarlık bir zaman içinde maksimuma yada belirli bir seviyeye ulaşacağına karar vermek olur. Ayrıca ve belkide en önemlisi çıkan sinyalin frekansını da sebin belirleyebilme şansın olmasıdır.

Örnek vereyim. 4 Mhz de 10 Khz lik bir PWM sinyalini CCP1 pininden çıkartacağımızı varsayalım.
Max. Duty değeri 400 olacaktır (picMulticalc söyledi). Bu sinyali sıfır duty değerinden 3 sn de %100 duty ye çıkarmakiçin 3sn=3000ms 3000/400=7,5 ms lik kademeler halinde yapabiliriz.
FOR Duty=0 to 400
  GOSUB PWM_VER
  Pause 7:pauseus 500  '7,5 ms gecikme
Next
şeklinde o pinden 3 sn içinde sofordan başlayan ve 3 sn sonra maksimuma ulaşan bir sinyal çıkmış olur.
SOnuç olarak HPWM konularına çalışman gerekecek ve işlemci değiştirmen gerekecek.

Bu işi yapmanın bir diğer yolu da MIBAM tekniğini (Mirror Bit Angle Modilation) kullanmak olur.
Aşağıdaki linkte detayları vermişim.
https://etepic.com/index.php/topic,723.0.html

Ete


elektro77

tek bir sorum olacak bu güzel cevaba karşın: 3 hpwm li bir işlemci seçersek sadece 3 led mi kontrol edilebilecek. zira 16 led var. Burayı pek anlamadım.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Bende senin sorunu anlamadım. Bu 3 çıkışın her birine birer Mosfet bağlayıp 10 metre şerit led bağlarsan o şeritteki ledlerin hepsini kontrol etmiş olursun. Anlayacağın her bir çıkış tek led için değil isteğe bağlı olarak uygun donanımla birden fazla ledi de kontrol edebilir.

Ama sorunun amacı birden fazla led gurubunu kontrol etmek ise elbette 3 çıkışla 3 den fazla gurup ledi kontrol etmek mümkün olamaz. Şayet amacın bu ise MİBAM kullanmalısın. Zira Mibam ile 24 farklı gurup kontrol edilebilir. Pin sayısına bağlı olarak bu miktar da artabilir.

Burada gurup kelimesini her birine farklı duty değeri verebileceğimiz led gurubu olarak düşündüm.
Bu tek led de olabilir seri bağlanmış birden fazla led de olabilir.

Ete

elektro77

#4
Alıntı yapılan: ete - 02 Haziran 2020, 15:11:47Bende senin sorunu anlamadım. Bu 3 çıkışın her birine birer Mosfet bağlayıp 10 metre şerit led bağlarsan o şeritteki ledlerin hepsini kontrol etmiş olursun. Anlayacağın her bir çıkış tek led için değil isteğe bağlı olarak uygun donanımla birden fazla ledi de kontrol edebilir.

Ama sorunun amacı birden fazla led gurubunu kontrol etmek ise elbette 3 çıkışla 3 den fazla gurup ledi kontrol etmek mümkün olamaz. Şayet amacın bu ise MİBAM kullanmalısın. Zira Mibam ile 24 farklı gurup kontrol edilebilir. Pin sayısına bağlı olarak bu miktar da artabilir.

Burada gurup kelimesini her birine farklı duty değeri verebileceğimiz led gurubu olarak düşündüm.
Bu tek led de olabilir seri bağlanmış birden fazla led de olabilir.

Ete
Evet Hocam benim istediğim 16 adet çıkışa bağlanmış mosfetler ile 16 adet 1 metrelik şerit led kullanacağım. yani 16 grup led olacak.Yani benim anladığım tüm çıkışlardan tek tek pwm almam gerekli.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

elektro77

Hocam mibam ın bas dosyasını bilinçli koymadınız anlaşılan. Fakat ben bunu 16F876 da çalıştırmak istiyorum. Çünkü elimde bu var ve benim devrem hazır. Bas dosyasından gerekli değişiklikleri yapmam için yardımcı olabilirseniz sevinirim. Amacım evimdeki merdivenlerin her basamağına bu sistemi kurmak istiyorum. oda tam olarak 16 kanal.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Merdiven sistemini ben yapmıştım birisine. Hemen söyleyeyim PWM li olanı kimse beğenmedi. Çünki zaman aralığı çok kısa ve o kısa sürede ledlerin soft olarak yakılması bir işe yaramıyor aksine işin temel amacını baltalıyor. Bu nedenle vaz geçip direk yan/sön şekline dönmüştüm.

Mibam dosyasını vermemişim ama sanırım internette her yerde dolaşıyor o dosyalar. Benim eserim değil zaten Darrel Taylor (rahmetli oldu Allah Rahmet eylesin) un ürünü. Adamın ismi ile de bulunabiliyor. Özel bir sayfasıda olacak idi. Bulamaz isen veririm. Bu sistemlerle ilgili bas dosyası vermedim. Sebebi basit. İlgili ilgisiz bir sürü kişi binlerce soru soracak diye. Tam ilgili kişiler işin içine girer araştırır belirli bir noktada takılır sorar sorusunu cevaplarım diye.
Aşağıdaki linkte Mİbam'ın çıkış hikayesi örnekleri vs hepsi var.
Şuda Mibam include dosyası linki oda orada var.
http://www.picbasic.co.uk/forum/attachment.php?attachmentid=3191&d=1234363057

Ete



elektro77

#7
Alıntı yapılan: ete - 03 Haziran 2020, 07:39:46Merdiven sistemini ben yapmıştım birisine. Hemen söyleyeyim PWM li olanı kimse beğenmedi. Çünki zaman aralığı çok kısa ve o kısa sürede ledlerin soft olarak yakılması bir işe yaramıyor aksine işin temel amacını baltalıyor. Bu nedenle vaz geçip direk yan/sön şekline dönmüştüm.

Mibam dosyasını vermemişim ama sanırım internette her yerde dolaşıyor o dosyalar. Benim eserim değil zaten Darrel Taylor (rahmetli oldu Allah Rahmet eylesin) un ürünü. Adamın ismi ile de bulunabiliyor. Özel bir sayfasıda olacak idi. Bulamaz isen veririm. Bu sistemlerle ilgili bas dosyası vermedim. Sebebi basit. İlgili ilgisiz bir sürü kişi binlerce soru soracak diye. Tam ilgili kişiler işin içine girer araştırır belirli bir noktada takılır sorar sorusunu cevaplarım diye.
Aşağıdaki linkte Mİbam'ın çıkış hikayesi örnekleri vs hepsi var.
Şuda Mibam include dosyası linki oda orada var.
http://www.picbasic.co.uk/forum/attachment.php?attachmentid=3191&d=1234363057

Ete



Pwm li merdiven ile ilgili önerinizi dikkate alacağım. Zaten bende yan sön olarak kullanıyordum. Evde boş vakit değerlendirme adına hazır devreye yüklemeler yapıp siliyorum işte. Ama en azından ilk açılışta efekt olması için böyle bir şey görmek isterdim. Sizde bas dosyası varsa ve verebilirseniz sevinirim.
 Ben pwm komutu ile birşeyler yaptım ama nedense pwm komut satırı işlendikten sonra pinler sıfıra dönmüyor ve mosfet iletimde kalıyor. Yani çıkışı tekrar sıfırlamıyor ve ledi söndüremiyorum. Elimle şase ve mosfetin gate arasına dokunduğumda mosfet kesime gidiyor. Kod hatasımı yoksa pull down olmadığı içinmi anlayamadım. Yani sizin verdiğiniz örenekteki gibi tüm ledleri döngü içine alıp tus baktım ama yanan ledler sonrasında sönmüyor. portları sıfırlama komutu veriyorum yine sönmüyor. hatta döngüden sonraki satırları işlemiyor program. Kodlar aşağıdadır.
programım başındaki tuşa basma süresi ile ilgili komutlar ise merdivenlerden koşarak inen birisi varsayıldığında sensörün daha hızlı açıp kapatacağı ve ledlerin daha hızlı yanması için düşündüğüm bir şey olacaktı sözde ama çok başarılı olmadı malesef.
@ __Config _XT_OSC  &  _WDT_OFF &_PWRTE_OFF &_BODEN_OFF &_CP_ON &_CPD_OFF &_LVP_OFF 
 '-------------------------------------------------------------------------------
define OSC 4
 '-------------------------------------------------------------------------------
CMCON=7               'komparatör pinleri iptal hepsi giriş çıkış yapıldı.16F876 dA yok.
ADCON1=7              'ADC KANALLARI DİJİTAL YAPILDI - ADC İPTAL
'T1CON=%00110001      'timer1 sayacı aktif bölme oranı 1/8
'OPTION_REG.7=1       'portB deki dahili PULL-UP lar iptal edildi.
 TRISA=%11111100
 TRISB=%00000000
 TRISC=%00000000
 PORTA=0
 PORTB=0
 PORTC=0
'---------------------------------------

DEFINE LCD_DREG		PORTB	
DEFINE LCD_DBIT		4		
DEFINE LCD_RSREG	PORTB	
DEFINE LCD_RSBIT	2	
DEFINE LCD_EREG		PORTB	
DEFINE LCD_EBIT		3		
DEFINE LCD_BITS		4	
DEFINE LCD_LINES	1

Symbol SW1=PORTA.4
Symbol SW2=PORTA.5
Symbol B1=PORTC.0
Symbol B2=PORTC.1
Symbol B3=PORTC.2
Symbol B4=PORTC.3
Symbol B5=PORTC.4
Symbol B6=PORTC.5
Symbol B7=PORTC.6
Symbol B8=PORTC.7

Symbol B9=PORTB.0
Symbol B10=PORTB.1
Symbol B11=PORTB.2
Symbol B12=PORTB.3
Symbol B13=PORTB.4
Symbol B14=PORTB.5
Symbol B15=PORTB.6
Symbol B16=PORTB.7

SURE var WORD
SURE=0
I VAR BYTE
LCDOUT $FE,1 
pause 200
'-------------------------------------------------------------------------------

BASLA:
IF sw1=1 THEN 'butona basılmış ise
SURE=0
WHILE sw1=1
pause 10
SURE=SURE+1
WEND
lcdout $FE,2,"SURE=",DEC SURE
gosub ASAGIYAN
ENDIF
 
GOTO BASLA
'------------------------------------------------------------------------------
ASAGIYAN:
FOR I=0 to sure
PWM B1,50,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B1,100,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B1,150,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B1,255,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B2,50,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B2,100,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B2,150,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B2,255,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B3,50,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B3,100,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B3,150,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B3,255,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B4,50,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B4,100,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B4,150,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B4,255,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B5,50,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B3,100,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B5,150,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B5,255,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B6,50,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B6,100,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B6,150,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B6,255,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B7,50,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B7,100,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B7,150,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B7,255,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B8,50,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B8,100,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B8,150,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B8,255,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B9,50,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B9,100,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B9,150,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B9,255,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B10,50,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B10,100,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B10,150,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B10,255,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B11,50,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B11,100,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B11,150,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B11,255,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B10,50,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B12,100,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B12,150,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B12,255,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B13,50,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B13,100,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B13,150,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B13,255,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B14,50,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B14,100,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B14,150,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B14,255,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B15,50,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B15,100,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B15,150,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B15,255,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B16,50,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B16,100,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B16,150,1
GOSUB TUSBAK
Next

FOR I=0 to sure
PWM B16,255,1
GOSUB TUSBAK
Next
portb=0 ledler burada sönmesi lazım ama sönmüyor.
portc=0 ledler burada sönmesi lazım ama sönmüyor.
RETURN
'----------------------------------------
tusbak:
falan filan

return

end
 
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Pinler sıfıra dönüyordur da Mosfetler sıfıra dönmüyordur. ANlamak çok kolay. Sıfırlanmayan mosfetin gate ucuna yada bağlı olduğu pine bakıver. Mutlaka pin LOW da dır ama mosfet iletimde kalmıştır. Pinde low değilse o pinleri bozduğunun resmidir. İŞlemciyi değiştir ve usulüne uygun bağlantı yap. Hep söylüyorum mosfet bildiğin transistör gibi çalışmıyor. En azından tetikleme işi öyle çalışmıyor. Kondansatör gibidir gate ucu ve resmen o kondansatör şarj edilmesi gerekir. O zaman tetiklenir. Benzer şekilde de deşarj edilmesi gerekir oda kesime gitmesine sebep olur.
Anlayacağın sorun program yada işlemcide değil mosfetlerin sürülüş şeklinde kesin eminim.

Yaptığım sistem müşteri korumasında olduğu için bas dosyası falan veremem. Ama ne yaptığımı anlatabilirim.
Merdivenler çift yönlüdür. Aşağıdan yukarı çıkarken ilk basamaktaki sensör ayağı hisseder ve ledleri belirli sürelerde sırası ile yakarak yukarı kadar yakmaya devam eder. Led sayısını dip sw ile seçtirdim. Yanma süresinide bir pot yardımı ile ayarlı yaptım.
Kişi çıkarken ledler önünden yaanrak yukarı çıkar. Kişi yukardaki son basamaktaki sensörden geçince bütün ledler aşağıdan başlayarak yukarı doğru bu seferde sönerek gelir.
Yukardan birisi aşağı inmek istersee bu sefer sistem benzer şekilde ama tersi yönde çalışır.
Hepsi bu zor bir sistem değil.

Ete



elektro77

#9
Alıntı yapılan: ete - 03 Haziran 2020, 14:47:54Pinler sıfıra dönüyordur da Mosfetler sıfıra dönmüyordur. ANlamak çok kolay. Sıfırlanmayan mosfetin gate ucuna yada bağlı olduğu pine bakıver. Mutlaka pin LOW da dır ama mosfet iletimde kalmıştır. Pinde low değilse o pinleri bozduğunun resmidir. İŞlemciyi değiştir ve usulüne uygun bağlantı yap. Hep söylüyorum mosfet bildiğin transistör gibi çalışmıyor. En azından tetikleme işi öyle çalışmıyor. Kondansatör gibidir gate ucu ve resmen o kondansatör şarj edilmesi gerekir. O zaman tetiklenir. Benzer şekilde de deşarj edilmesi gerekir oda kesime gitmesine sebep olur.
Anlayacağın sorun program yada işlemcide değil mosfetlerin sürülüş şeklinde kesin eminim.

Yaptığım sistem müşteri korumasında olduğu için bas dosyası falan veremem. Ama ne yaptığımı anlatabilirim.
Merdivenler çift yönlüdür. Aşağıdan yukarı çıkarken ilk basamaktaki sensör ayağı hisseder ve ledleri belirli sürelerde sırası ile yakarak yukarı kadar yakmaya devam eder. Led sayısını dip sw ile seçtirdim. Yanma süresinide bir pot yardımı ile ayarlı yaptım.
Kişi çıkarken ledler önünden yaanrak yukarı çıkar. Kişi yukardaki son basamaktaki sensörden geçince bütün ledler aşağıdan başlayarak yukarı doğru bu seferde sönerek gelir.
Yukardan birisi aşağı inmek istersee bu sefer sistem benzer şekilde ama tersi yönde çalışır.
Hepsi bu zor bir sistem değil.

Ete



istediğim bas dosyası Mibam ın ki idi aslında. Sizin merdiven sistemine gelince: her iki yönden de birileri gelir ise nasıl yanıyor.Veya birisi koşarak gelirse nasıl yanıyor.
basamak sayısını dipswiç ile nasıl ayarladınız. kod mantığı nedir.
Potu adc girşten okutup başka bir sure değişkeninemi aktardınız.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Mibam dosyası linkini vermiştim. Oradan indirebilirsin.
Koşarak merdivene gelen birisi için yapacak bir şey yok. Kim nerden anlayacak kişi koşarakmı geliyor salınarakmı geliyor. Bazende alete göre kendini ayarlaman gerekiyor. Pot dan okunan değeri 0-5 sn (0-5000ms) aralığında bir ayar imkanı sağlıyor. Her led yandıktan sonra ayarlanan süre kadar bekleyerek yanıyor ledler.
Bu iş led sayısı kadar döngü kurularak hallediliyor.
4 bitlik bir dip switch 1+2+4+8=15 adet basamağa kadar aayr imkanı verir. 5 bitlik dipsw ise 31 adet basamağa kadar ayar imkanı verir. sıfırı da eklersen 16 veya 32 lik basamak ayarını buradan yapabilirsin.
5 bitlik switch ile 18 basamaklı bir merdiven ayarı için 16+2=18 şeklinde ayar yapılır.
20 basamak için 16+4=20 şeklinde ayar yapılır.

Ete

elektro77

Alıntı yapılan: ete - 03 Haziran 2020, 15:38:09Mibam dosyası linkini vermiştim. Oradan indirebilirsin.
Koşarak merdivene gelen birisi için yapacak bir şey yok. Kim nerden anlayacak kişi koşarakmı geliyor salınarakmı geliyor. Bazende alete göre kendini ayarlaman gerekiyor.

Ete

Kişi sensor önünden geçerken hızlı geçerse sensor daha kısa sürede hıgh olup lowa dönecek. Bu sure olculup yanma hızı ayarlanabilir diye dudundum.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

O dediğin tek sensörle olmaz. İki sensör koyulması gerekir. Sonuçta merdiven basamağı var orada koşsan da yürüsende ayak belirli süre basamakta kalıyor. Koşma ile yürüme arasında ayağın basamakta kalış süresi çok farketmiyor. En azından senin aradaki farkı bulman için çok farklı bir süre oluşmuyor. Sıkıntısı faydasından büyük bence.

Ete


Powered by EzPortal