avatar_Hattuşa

300 hertzlik sinüs sinyalini GLCD ekranına basmak

Başlatan Hattuşa, 27 Kasım 2013, 23:40:28

Hattuşa

s.a.
arkadaşlar bir konuya takıldım, ortalama 300 hertzlik sinüs sinyalinin yükselen kenarının bir kısmını ekrana basmak istiyorum, bu konuda yardımcı olacak arkadaşlar varmıdır? protonda line komutu ile mi yapmalıyım bir türlü bulamadım.

inventor

Aağıdaki linkte pic ile yapılmış bir osilaskop var. Kodları da protonda yazılmış. Sinüs üçgen kare dalgalarla test edilmiş.

http://www.protonbasic.co.uk/content.php/1789-Oscilloscope
İlmin en büyük düşmanı, sabırsızlıktır. (Şems-i Tırmizi)

Hattuşa

inverter ustam ilginiz için tşk ederim, linki bir inceleyeyim bakalım becerebilecekmiyim

ete

İşin temelinde bir ADC okuması olsa gerek.
Sonra aynen skop da olduğu gibi bir örnekleme zamanı verip o aralıkta okumalar yapmak ve okunan değerleri ekrana çizgi koordinatı olarak verip aralarını çizgi ile doldurmak gerekir. Line komutu mutlaka bir başlangıç koordinatı birde bitiş koordinatı isteyecektir. Okunan ADC dceğerini Y eksini koordinatı , zamanı ise X ekseni koordinatı olarak kullanıp kolaylıkla çizgi çizdirilebilir sanırım. Maksimum zaman değerine ulaşınca ekran silinip aynı işlemler yeni baştan yapılabilir.
Y ekseni ADC den koordinat elde etmek için şöyle bir formül kullanılabilir.
Carpan=(64/1024)=0,625 * 256=16 O halde formülümüz Y=(ADC_HAM+1)*/16 şeklinde olacaktır.
Örnek veriyorum;
- zaman(yani X)=0
- İlk ADC değerini okuduk. diyelimki  100 okundu  Y=(101)*16/256=6
O halde ilk çizgi 0,0 noktasından başlayıp 0,6 noktasına gidecektir.
- 100us bekledik (X=100/100=1 olacaktır )
- O halde x=x+100 =100 oldu , ADC değeri ise 150 oldu diyelim o halde y=151*16/256=9
  Çizgi 0,6 noktasından  (x/100),9 noktasına çizilecektir.
Bu şekilde toplam 128 defa okuma yapılınca ekran limitleirni geçmiş olacağız.
Bu şekilde tekrarlanarak ekrana sinüs yada hangi dalga şekli var ise onu çizdirmek mümkün olur.
Zaman aralığı 100us aldım ama daha geniş tutulabilir. Sonuca göre davranmak gerekir her halde.
Line komutunun koordinat sistemini tam olarak bilmediğim için teoriksel değer verdim. Siz o değerleri komut parametresine göre ayarlamanız gerekir.

Ete

Hattuşa

ete hocam cevabınız için tşk ederim, sanırım söylemek istediklerinizi anladım, dediğiniz gibi 128 x 64 koordinatlarına okunan adc değeri y (64 dikey değerler), zaman olarakta x (128 yatay değerler) ini bulduktan sonra gerisi çıkan değerlerin ekrana print ettirmesinden ibaret sanırım, en azından x değerinin zaman olarak değerlendireceğimi anladım, bu şekilde bir çalışma yapayım, sanırım bu iş düşündüğümden zor olmayacak...

Powered by EzPortal