| Yazar | Mesaj |
hochocki | | Tarih: 05.11.2006, 22:14 Mesaj konusu: bir kare dalganın 1 sn de kaç defa pozitif alternansa geçtiğ | |
| bir kare dalganın 1 sn de kaç defa pozitif alternansa geçtiğini gösteren, daha açık bir ifadeyle bir saniyedeki periyot sayısını gösteren devre tasarlamam gerekiyor..
nasıl yapabileceğim konusunda hiç bir fikrim yok yardım ederseniz çok sevinirim..
teşekkürler...
-----------------------------------------------------
|
|
ete | | Tarih: 05.11.2006, 22:52 Mesaj konusu: | |
| Bir kare dalganın peryodu 1/F dir yani 1sn/Frekanstır. 1Sn=1.000.000 us olduğundan genelde T=1.000.000/Frekans olarak hesaplanır. Bulunan bu T değeri kare dalganın High ve Low periyot sürelerinin toplamı olduğundan High peryot süresi T/2 olur.
Bu hesaplara dayanarak senin proje 3 şekilde yapılabilir. Diğer taraftan frekansı 100 HZ olan bir sinyalin 1 sn deki High pals sayısı 100'e eşittir. Yani High alternasların sayısı frekansa eşittir.
1. Pic in RB0 bacağından giren High palslarını belirli bir süre tutarak sayabilirsin. Bu belirli süre 1 sn=1000 ms=1.000.000us olabilir. Süre bitiminde pals adedini ekrana verirsin.
2. Kare dalganın frekansını ölçersin ve High peryodu frekansa eşit olduğundan bulduğun frekansı ekrana verirsin.
3. Kare dalganın High pals genişliğini ölçersin Yani T/2 yi. Bunu 2 ile çarparsın T yi bulursun. F=1.000.000/T olduğundan bu formülde bulacağın F senin High alternaslarının sayısını verecektir.
Şimdi bu alternatiflere göre devrelerin nasıl olması gerektiğini ve program ları hakkında bilgi vereyim.
1. Bu alternatifte PortA.4 den Harici frekans girişi yaparsın. TMR0 kesmesini açarsın. ve yaklaşık 100 ms süre içinde gelen palsleri sayarsın. SOnucu TMR0 dan alırsın. Bulunan değeri 10 ile çarpan gerekecektir. 100 ms yerine 1000 ms lik süre içinde ölçülecek değer 100 ms lik sürenin 10 ile çarpımı olacaktır. Bu senin high alternaslarının sayısıdır
2. Alternatifte kare dalga PortB0 dan girilecek. Pic Basicte Count adı altında bir komut var. Count Pin,süre,var şeklinde kullanılıyor. Count PortB.0 , 1000,SAYAC şeklinde kullandığın zaman, 1 sn deki pals sayısını sayabilirsin.
Buradan elde edeceğin değer direk senin High alternaslarının sayısı olacaktır.
3. Yine PortB.0 dan Pulsin Pin, State, Var şeklinde kullanılır. PULSIN PortB.0 , 1, Sayac şeklinde kullandığın zaman High palsin süresini ölçersin. Bunu 2 ile çarparsan T yi bulursun. F=1.000.000/T de sana high alternasların sayısını verecektir.
Ete
2.
|
|
cobra16 | | Tarih: 05.11.2006, 23:29 Mesaj konusu: | |
| aslında ilgim alanım dışında bir konu.ete arkadaşımıza yorumundan dolayı çok teşekkür ederim.
|
|
hochocki | | Tarih: 06.11.2006, 19:37 Mesaj konusu: | |
| ete arkadaşım gerçekten çok teşekkür ederim verdiğin bilgiler çok iyi hemen deniyorum...
|
|
ibrsel | | Tarih: 06.11.2006, 20:15 Mesaj konusu: | |
| Ete hocamızın anlattıklarının üstüne söz söylemeye gerek yok diye düşünüyorum,herşeyi gereği ile anlatmış..Teşekkürler..
|
|
hochocki | | Tarih: 11.11.2006, 20:28 Mesaj konusu: | |
| arkadaşlar bi türlü devreyi çalıştıramadım elinde bu devrenin hex kodları olan varsa rica etsem gönderebilirmi??
teşekkürler
|
|
ete | | Tarih: 12.11.2006, 08:34 Mesaj konusu: | |
| Ortada bir devre göremiyorum. Önce sen devreyi ver sonra üzerinde düşünüp bir şeylar yapalım ne dersin?.
Ete
|
|
hochocki | | Tarih: 12.11.2006, 17:12 Mesaj konusu: | |
| devre şu:
opamp ile bir sinüzoidal dalgayı ttl seviyesine(0 - 5V) dönüştürüp bu kare dalganın frekansını ölçen devre.
|
|
TigerX | | Tarih: 12.02.2008, 16:18 Mesaj konusu: | |
| Bu konunun üzerinden çok zaman geçmiş ama kendimce birşeyler ararken bu topiktenden birşeyler öğrendim ve ben de birşeyler eklemek istedim.
Bu konu gerçekten elektronikte çok yerde karşımıza çıkıyor.
ete arkadaşımız konuyu çok güzel açıklamış. Onun söylediklerini üstüne zaten o konu ile ilgili birşey söylemeye gerek yok. Benim söylemek istediğim şey arkaşın yapmaya çalıştığı devre hakkında:
Sinusoidal bir dalganın frekansını ölçmekle ilgili olarak:
Sinusidal dalganın frekansını ölçmek için için öncelikle dalgayı kare dalgaya çevirmek lazm. Bunu en güzel "Zero Crossing detector" kullanarak yaparsın. (En güzel yöntem OPTO Coupler kullanmak). Yani Zero (sıfır) eksenini kesen anı bulur ve diğer düşüş anındaki sıfır naoktasına kadar bir pals elde etmiş olursun. Bu bize sinus dalganın postive cycle 'nın yani yaklaşık olarak T/2 zamanını verir.
İşte benim eklemek istediğim nokta;
Eğer bu ölçme tekniği kullanırsak elde ettiğimiz dalganın zamanı ile sinus dalganın zamanı aynı olmayacaktır. Çünkü Zero crossing yaparken LED 'i ON yapmak için geçen zaman kadar bizim dalganın zamanından çalarız. Aynı şekilde tekrar dalganın bitiminde tekrar sıfır noktasına yaklaştığımızda yine tam olarak sıfır olmadan LED voltajı kadar (~1.1 V kadar) seviyenin altına düşünce pulsi tamamlamış sayar.
Bu yöntemle en güzeli belirli bir zaman içerisinde gelen palsleri saymak. Bunun için yöntemi ete arkadaşımız açıklamış. Sadece sinüs dalgalarda 3. yöntemi kullanırsak bariz bir hata yapmış oluruz. Sebebini de yukarıda açıklamaya çalıştım. Yani puls 'in zamanını ölçmeye kalkarsak elde ettiğimiz sonuç sünüs dalgasının değil, bizim kara dalgaya benzetmeye çalıştığımızın sinyalimizin zamanı olacaktır. Yok eğer zaten dalgamız kare dalga ise hiçbir sorun yok ve istediğimiz yöntemi kullanabiliriz. Her yöntemin de kendine göre avantajları ve dezavantajları muhakkak vardır.
Bu olayla ilgilenen arkadaşlar olursa elimden gelen yardımı yapmaya çalışırım. Aslında grafik ve şekil koyup olayı daha net anlat mümkün ama belki başka yerlerde bu konu daha detaylı olarak anlatılmış olabileceğinden ve ilgilenen belki de kimse olmayacağında bu kadar bilgiyi şimdilik yeterli görüyorum.
Selamlar...
|
|
bkesmer | | Tarih: 13.02.2008, 02:09 Mesaj konusu: | |
| ete arkadaşımız çok güzel açıklamış ellerine sağlık
ben olaya farklı bi açıdan yaklaşmak istiyorum bir rpm metre yapmak istiyordum ve doğal olarak klasik hall effect yada optocoupler düzenegi falan kullanmak gerekiyodu ben hall effecti seçtim her ne ise iş bundan sonra bu pulls leri sayma olayı bu sayma olayını timero yada harici herhangi bir pulls sayma tekniği falan kullanabilirdim ki bunun şöyle bi sorununu düşündüm ben örneğin 1 saniyedeki hızını bulsam yani 1 saniyede bir pullsleri yazdırsam ama yarım saniye önce rpm değişse ben bu olayın normal halini 1 saniye sonra algılayactım ki bu sorun önemli de değil asıl sorun zamanlamın çok hassas olması gerekliliği idi ben assembly kodlarınınn kaç komut saykılı olduğunu hesaplamak falan filan bide basic proton kullanacaktım dedim böle uğraşılmaz en kolay yapılan yol en iyi yoldur şöle bi fikir düşündüm bir çeşit frekans oluşuyodu ve ben bunu voltaja çevirebilirim yani bana 1 adet voltage to frequensy converter entegresi lazım proteustada simulasyonunu yapabileceğim ve piyasada da rahat bulabileceğim bir entegre lm331 bu işi yapıyor tabiki bu entegreninde tepki süresi var ama kullanım kolaylığı daha önemli frekan 1 hz se dahi ölçüyo 10 bit adc olan bi pic vs de işini gayet görür gibi bence data sheetini incele ve ordaki örnek devrelerden işine yarayanı yap eğer yapamazsan ben sana yapıp yollarım yalnızca frekansı ekrana yazdırma işi ise hex ini asm ve bas dosyasını falanda yollayabilirim yöntemi yaparsan frekansının en az 10 hz olması daha ölçülebilir olmasını sağlar bunun dışında tabiki adc nin kaç bit olduğuda ölçüm hassasiyetini değiştirecek
kolay gelsin
|
|
|