Pwm ile sinyal oluşturup Piyano yapma

Başlatan Elektrik2012, 27 Ağustos 2013, 16:15:45

Icarus

@Elektrik2012: Burada kimsenin sana söylemediği bir şey var o da burada anlatılanın "pwm" tekniği olmadığı.
Eğer böyle kare dalga ile üretirsen çıkarttığın ses pianonun bütün tek sayılarına denk gelen tuşlarına bastığında çıkan ses ile aynı olur.
İnanmıyorsan dinle :)
http://pages.uoregon.edu/emi/14.php

Burada pwm ile nasıl yapılacağını biraz anlatılıyor
http://ww1.microchip.com/downloads/en/AppNotes/00001523A.pdf

Elektrik2012

#16
Çok teşekkür ederim inceliyorum .Aynen dediginiz gibi devreyi borda kurdum dediginiz gibi piyanonun tek sayi gelen denk geliyor  ;D

metaltrrocker

İlk mesajımda arkadaşa gösterdiğim örnek videonun pwm tekniği ile yapılmadığı idi.Bunu zaten kendisine belirttim.Örnek videodaki gibi kare dalga  istiyorsa ve pic bilgisi çok değilse "pwm" e girmek gereksiz.
Ara seslerin frekansını da vereyim yeri gelmişken.netten basit bir arama ile bulunabiliyor zaten.
http://www.google.com.tr/imgres?biw=1366&bih=643&tbm=isch&tbnid=4pmdoRIMmNH05M:&imgrefurl=http://www.phys.unsw.edu.au/jw/notes.html&docid=cYFIW2oDHohMUM&imgurl=http://www.phys.unsw.edu.au/jw/graphics/notes.GIF&w=487&h=673&ei=GCgeUtfeMcqnhAeY8IGgDQ&zoom=1&ved=1t:3588,r:0,s:0,i:75&iact=rc&page=1&tbnh=173&tbnw=125&start=0&ndsp=15&tx=102&ty=65

Elektrik2012

İlgilendiginiz için hepinize ayrı ayrı teşekkür ediyorum Sizlerin sayesinde bir şeyler öğreniyorum Allah razı olsun ;D

yldzelektronik

#19
Yeni konu açmak istemedim.

Acil bir durumum var;

Bir pin ile oluşturduğum clock sinyalim var.

Bu sinyalin genliğini (thigh/tlow sürelerini) eşit tutarak yada belirlediğim aralıkta (örneğin 400us thigh, 600us tlow) sabit tutarak clock sinyalinin frekansını değiştirmek istiyorum.

Bunu nasıl yapabilirim?

Kesme kullanmıyorum.Kullanmayı da pek istemiyorum.Ama öyle yapılır derseniz onu da kullanabilirim.

Frekansı nasıl değiştirebilirim?
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

XX_CİHAN_XX

Duty cycle yüzdelerin eşit ancak periyodun(dolayısıyla frekansın)  değişken olacak şekilde sinyal üretmen gerekir. Donanımsal PWM kullanarak bunu basitçe yapabilirsin. İlle yazılımsal yapmam gerek dersen elbette timer kesmesi ile periyodu değişken bir sinyal üretmeni tavsiye ederim. Ancak ben daha da kolaya kaçmak istiyorum bu sinyali üretirken başka bir iş yapmayacağım diyorsan bu durumda yapacağın şey daha da basit örneğin %50 duty cycle için değişik frekanslarda sinyal üretelim. Örneğin;
1khz frekansında %50 duty cycle frek. üretmek için gerekli döngün
while(1)
{
   SIGNAL = 1;
   __delay_us(500);
   SIGNAL = 0;
   __delay_us(500);
}
2khz frekansında %50 duty cycle frek. üretmek için gerekli döngün
while(1)
{
   SIGNAL = 1;
   __delay_us(250);
   SIGNAL = 0;
   __delay_us(250);
}
Gibi...
Yukarıda da bahsettiğim gibi bu hoş bir çözüm değil fikir vermesi açısından bu şekilde basitçe örneklemek istedim. Burada frekansı değiştiren şey periyot sürelerimiz. Bunu donanımsal PWM kullanarak yada timer kesmesi kullanarak yapabilirsin. Hangi şekilde çözmek istediğini netleştirmek gerek önce...
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.