Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

STM32F030F4P6

Başlatan z, 07 Ocak 2016, 11:57:34

MC_Skywalker

dediğim gibi 2 tane var. açılmamış statik poşette duruyor.

z

Tamam ne kadar ödeyeceğimi Banka hesap no konusunu vs özelden halledelim.

Eğer ileride bana da lazım olur dersen dün sipariş ettim. 1 ay içinde geleceğini tahmin ediyorum. Geldiğinde yollayabilirim.

Nasıl istersen.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

RaMu

Konu hortlatıyorum ama ;)

@Zoroaster hocam
Alıntı yapılan: z - 14 Ocak 2016, 08:31:12
https://www.youtube.com/watch?v=FfTRQo4rhsk

Proje nihayet bitti.

Şu sıralar sd karttan wav çalan proje denemesi yapıyorum.
16F1827 PIC ile yaptım,
8 bit 8kHz, Microsoft unsigned 8 bit formatlı .wav dosyası çaldırıyorum.
İyi güzel bir şeyler yaptık ama
nedense bir türlü cızırtı hışırtı olmayan bir ses ürettiremedim PWM den.
Sizin projede örnek 12 bit demişsiniz.

PWM den böyle güzel ses çıkarabilmeyi nasıl başardınız.
Devrede kullandığınız PWM çıkışındaki filtrenin ve transistörlü amfinin şeması var mı?
Birde  örnek kod paylaşmışmıydınız?
O tarihte forumda yazdığınız bütün konuları tek tek araştırdım, pek bahsi geçmemiş,
cncdesigner.com dada böyle bir konu yok,
sadece youtube videosu var.

En yakın bulduğum konu şu oldu:
http://www.cncdesigner.com/wordpress/?p=5913
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

sadogan

8khz 8 bit ile güzel ses bendede çıkmadı. 32khz 8 bit ile sonuç gayet başarılı oldu.


Erol YILMAZ

örnekleme sayısının artması çok daha manalı geliyor bana da.

RaMu

@sadogan @Allegro
öncelikle sağolun varolun
sayenizde aklımda başka bir konudaki şimşek çaktı:
Tamda "örnekleme sayısını arttıramıyorum,
PWM modülü ancak 250kHz civarı 8 bit PWM e yetişebiliyor, 8 bit kısmını değiştiremem"
yazacaktım ki öyle zaten,
bazı uygulamalarda gördüğüm ikinci bir PWM kanalı kullanıp
üst 8 bit alt 8 bit iki farklı PWM pini ile 16 bit işi geldi aklıma,
ama bunun mantığını anlayamamıştım,
şimdi yazdıklarınızı okuyunca aklıma R2R ladder geldi,
bit değerleri direnç değerleri ile gerilime çevriliyor,
yani aynı mantık aslında iki farklı PWM kanalını birleştirip
üst 8 bite ait PWM pinine farklı bir direnç, alt 8 bite ait PWM pinine farklı bir direnç
ile işi çözüyorlar, yada ben öyle olduğunu düşünüyorum, araştıracağım.


Aslında 32kHz 8 bit wav dosyalarını çalabilirim, 16F1827 buna yetişebiliyor,
deneyip bakayım bir, 16kHz 8 bit wav denemiştim bir farkı olmamıştı,
Üstte yazdığım çift PWM metoduyla, 16 bit de çalabilirim, onuda deneyeyim ama
bilgisayar 8 bit wav dosyalarını iyi bir ses olarak oynatabiliyorken,
mcu PWM ile bunun yapılması mümkün değil mi, illaki DAC mı olmak zorunda acaba?
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

Zoroaster

#36
@RaMu

BC237 ve BC307 ile muhtemelen asagidaki devreyi kurdum.



120R buyuk olasilikla hoparlor baglamayip scopla olcum yapmak adina debug asamasindan miras kalan bir direnc.

Filitre falan yok. Hoparlor zaten yuksek pwm frekansini filitreler.
Seytan deliginden kacti.

sadogan

Wav dosyanızı nerden okuyorsunuz ?

RaMu

@Zoroaster hocam sağolun, böyle denememiştim,
tek trasistörle basit bir amfi yapıp denemiştim,
birde bu şekilde deneyeyim.


Nedenini çözemediğim bir problemde aslında şu:
aslında 8 bit unsigned wav örneklerim olmasına rağmen,
PWM duty değeri olarak 7 veya 8 bit değer basınca
hiç ses çıkışı alamıyorum,
ancak  en fazla 6 bit duty değeri girince değer alabiliyorum,
bu dememeyi direk mcu pinine kulaklık bağlayarak yapıyordum.


@sadogan
Mcu spi modülü ile SD karttan okuyorum wav dosyasını,
audacity programıyla PC de wav dosyasını istediğim özelliklerde düzenliyorum,
henüz FAT dosya sistemi kısmını yazmadım,
PC de Winhex Hxd programıyla wav dosyasının başlangıç adresini bulup
o adresten sıralı okuyorum mcu ile.


Program ana döngüde sd karttan dosyayı okuyup bir buffer a kaydediyor,
bufferın ne kadarı dolu diye değişkeni var,
Timer1 kesmesi ile 8 kHz olacak şekilde buffer daki değerler
PWM modulü duty değeri olarak güncelleniyor,
buradada bufferın ne kadarı boşaldı değişkeni var,
buffer dolu boş değişkenlerine göre sd karttan gerekirse sıradaki byte-lar buffer a alınıyor.


MCU 32MHz çalışıyor,
spi 8 MHz çalışıyor,
ortalama 1 us de 1 byte okunuyor,
8 kHz örnekli wav çalmak için 125 us de bir kesmeye giriliyor,
44100 Hz örnekli wav dosyasını çalmak için bile yeterli zaman var aslında.
44100 için yaklaşık 25us de bir kesme lazım,
25 us de mcu 200 komut işler, buda kesme içi ve ana döngüye yetiyor.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

OptimusPrime

@RaMu

windows efendi filtreleyerek caliyordur dogru sonuc vermeyebilir. matlab varsa 8 bitlik datayi ver calsin derim. bakalim cevirme isleminde bir gariplik varmi. ses nasil cikiyor.

8 bitlik ses datasi zaten isaretli datadir. bunu isaretsiz yapinca offset eklemis oluyorsun ki bide bu offseti modulasyona sokuyorsun. buda sisteme gurultu sokmaya yetecektir. yine bu yaptiklarini matlab in varsa onun uzerinde dene derim. cok hos seyler olmadigini goreceksin ozelliklede cozunurluk dustukce. pwm cozunurlugunun artmasiyla cikan sorunlar dogrudan bu sonucu veriyor zaten.

benim tavsiyem
- ses datasini isaretli yap
- pwm in orta noktasi (%50) 0 degeri olsun
- push pull bir cikis kati kullan
- pwm modulunu senkronize etmeye calis. 2 ornekleme zamani arasinda hemen yeni degeri yazip sisteme ayri bir gurultu sokma. dsp lerin pwm leri genelde bu ozellige sahiptir. pic de sanmiyorum ama en azindan senkron etmeye calis.



https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||

sadogan

@RaMu
Denemelerimde ,sd kartan 512 byte  okuyup ram yazıyorum  ,rem deki  512 byte tı pwm'e sırayla yüklerken diğer taraftanda sd kartan sırası gelecek 512 daha okuyup rem de 2 bir 512 yazıyorum. 1k rem kulanarak yapıştım.
Direk sd karttan okuyup pwm e yazarken çızırtılar olmuşmuştu.
Kulandığım mcu 18f452.












RaMu

@sadogan
aslında benim yaptığımda 512-512 nin aynısı denebilir,
sadece iki ayrı buffer değil tek buffer var,
bir tarafına yeni datalar yazılırken
diğer başından halihazırdaki datalar
kesme rütininde okunup PWM duty olarak aktarılıyor.
Birde buffer o kadar büyük değil, gerekte olmuyor zaten.


@OptimusPrime
Matlab yarımı deşmeyin :)
Sıklıkla kullanmak lazım ama ne yazık ki bir ara kullandım sonra elimi sürmedim.


Signed ile ilgili yazdıklarını tam kavrayamadım henüz ama
şöyle bir yöntem denemiştim:
Unsigned 8 bit wav datasıyla PWM duty üretirken,
aynı PWM in tersini diğer bir PWM kanalından eşzamanlı ürettirdim,
yani Dead Time' ı olmayan Half Bridge PWM çıkışları şeklinde 2 pwm pini,
bu iki pwm pinine hoparlörü direk bağladım,
seste değişen bir şey olmamıştı.


Yazdığın signed yöntemini nasıl uygulayabilirim biraz düşüneyim.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html