AD9833 SIN-GEN ARDUINO IDE(SPI lib.)

MEN.png

@Gokrtl abi akşam konuştuğumuz menüyü bu şekilde yaptım.
 
Güzel görünüyor. Yalnız bu görsele göre encoder'i sadece frekans basamaklarında gezdirebilmen için frekansa bir bayrak koyman lazım.
if(freqFlag == 1){ frekans basamaklarında gez } gibi bir şey.
Şöyle yapacağım enkoder butonuna bastıkça bu tek ekran menüyü gezeceğiz.
Gezinti frekans birler basamağından başlayacak bütün basamakları gezdikten sonra

alt satrıa kareye inecek eğer kareyi seçmek istersek bir tık sağa çevirmemiz gerekecek eğer herhangi bir dalga şekli set edildiyse diğer 2 şekil reset olacak en son'da çıkış on/off'a gelip bu yaptığımız ayarı ad9833'e aktaracağız bu on off eğer reset olursa ad9833'e 0herz yazıp bir nevi çıkışı kapatacağız.
 
Şöyle yapacağım enkoder butonuna bastıkça bu tek ekran menüyü gezeceğiz.
Gezinti frekans birler basamağından başlayacak bütün basamakları gezdikten sonra

alt satrıa kareye inecek eğer kareyi seçmek istersek bir tık sağa çevirmemiz gerekecek eğer herhangi bir dalga şekli set edildiyse diğer 2 şekil reset olacak en son'da çıkış on/off'a gelip bu yaptığımız ayarı ad9833'e aktaracağız bu on off eğer reset olursa ad9833'e 0herz yazıp bir nevi çıkışı kapatacağız.
Yap görelim bakalım nasıl duruyor. Kare,Üçgen ve Sinüsün yanına seçili olduğuna dair bir ikon koy.
 
Yap görelim bakalım nasıl duruyor. Kare,Üçgen ve Sinüsün yanına seçili olduğuna dair bir ikon koy.
yok invert reinvert yapacağım o kadar modifiye yaptık lcd custom uygulamasına
C++:
byte kareSet1[8] = {B11111, B11111, B10001, B10101, B10101, B10101, B00100, B11111};
byte kareSet2[8] = {B11111, B11111, B00011, B01011, B01011, B01011, B01001, B11111};
C++:
byte kareReset1[8] = {B00000, B00000, B01110, B01010, B01010, B01010, B11011, B00000};
byte KareReset2[8] = {B00000, B00000, B11100, B10100, B10100, B10100, B10110, B00000};
 
bu şekilde yaptım bence güzel görünüyor böyle yanıp sönmeyecek set ve reset olduğunda görüntü değişecek
 

Ekler

  • sq.mp4
    9.2 MB
bu şekilde yaptım bence güzel görünüyor böyle yanıp sönmeyecek set ve reset olduğunda görüntü değişecek
Normali iyi. İnvert olayını beğenmedim :)
Bir tane Çek işareti çiz. Aktif olanın yanında çek yansın.
 
yer çok küçük çerçeve içine' de sığmıyor.

bi 10 dakka mola veriyorum arabaya gidip bakıcam yağ seviyesini yanlış ölçüyor kadran'da yağ lambasını yakıyor çubuğu çekiyorum en fazla 1 litre eksiği var eğer fırsat bulursam can bus haberleşmesini'de videoya çekerim.
Taşınabilir skop burada kendini belli ediyor.
 
aktif olanı çerçeve içine alacağım en iyisi o olacak bende inverti çok beğenmedim
Aslında aynı kursora aktif olanı yazdırıp diğerlerini söndürebilirsin ama görüntü çirkin olur mu bilemedim. Çerçeve de kötü durabilir. Çünkü iki digiti birleştiremiyorsun.
 
Aslında aynı kursora aktif olanı yazdırıp diğerlerini söndürebilirsin ama görüntü çirkin olur mu bilemedim. Çerçeve de kötü durabilir. Çünkü iki digiti birleştiremiyorsun.
128x64'e çevirmek istemiyorum yapacakların maddi açından rahat etmesi için.
en iyisi 2x16'ya sığdırmak.

fiyatı uygun olsa 2x8 ekrana dahi yaparım ben bu projeyi üst satır frekans ayarı alt satır da dalga seçimi tamamen yeterli bizim için ama 2x16ya sığdıracağım.
 
Tamam sorun anlaşıldı. AD9833, içerideki DAC'ın çıkışını aynen VOUT pinine aktarıyor. DAC için kullanılan örnekleme hızı 25 MHz, bizim ürettiğimiz frekans 12 MHz. Yani Nyquist teoremine göre sinyali kayıpsız oluşturabilmek için yeterince hızlı örnekleme yapıyoruz. Ama çıkışa bir antialiasing filtre konmadığı için sinyal bozuk görünüyor.

Şimdi matlab'de 25 MHz örnekleme hızı ile 12 MHz lik bir sinüs ürettim. Görüntü, osiloskop ile gördüğümüzün aynısı

1657712724992.png


Yani burada yapmamız gereken, bu sinyali bir low pass filtreden geçirmek. O filtrenin de tasarımını gene matlab'de yapabiliriz.
 
Matlab Simulink ile gereken antialiasing filtreyi belirlemeye çalıştım, ama çok abzürt 16. ıncı derece Chebyshev II filtre ile ancak düzeliyor çıkış. Buna biraz daha ayrıntılı bakmam lazım, baya zaman geçti bunlara kafa patlatalı :)

Bir önceki mesajda üretmiş olduğum 25 MHz (bizim MCLK) ile örneklenmiş 12 MHz lik sinyali bir analog filtreden geçirip çıkışını skopa aktaran bir simulink grafiği oluşturdum. Sinyal w matrisinin içinde. Sonra kesim frekansını Nyqyist frekansı olan 12.5 MHz olarak ayarladım ve kesimdeki zayıflatmayı da 40 dB ayarladım.


1657721936653.png


Bu şekilde çalıştırınca, biraz zayıflamış da olsa düzgün bir çıkış aldım (mavi AD9833 çıkışı, sarı antialiasing filtre çıkışı). Ama 16. ıncı derece çok yüksek, bunu opamp'li aktif filtre ile gerçekleştirince nasıl bir sonuç alınır bilmiyorum. Belki de Nyquist frekansına çok yakın bir sinyal ile çalışınca böyle son derece yüksek dereceli bir filtre gerekiyor.

1657722043533.png
 
Son düzenleme:
Sonra gene MATLAB ile 12 MHz lik wav dosyası ürettim ve onunla denedim. İşin ilginç tarafı, Adobe Audition ile denedim daha çabuk olsun diye, Audition örnekleme frekansını 10 MHz ile sınırlandırmış :mad:

12 MHz ile alınan sonuç yeterli değil. Burada hemen şu aklıma geliyor: Bize öğretilen, Nyquist teoremine göre bir sinyal eğer en yüksek frekans bileşeninin iki katı frekans ile örneklenirse, o örneklerden sinyalin aynısı tekrar geri elde edilebilir. Teorem AYNISI diyor, baya benzeri demiyor. Yani iki kat hızla örneklemek, veri kaybı olmaksızın o sinyalin tamamındaki bilgiyi saklıyoruz demek. Ama Nyquist teoreminin geçerli olması için arkasına çok yüksek dereceli bir LPF koymak gerektiğini öğrendiğimizi hatırlamıyorum.

1657820110120.png
 
Son düzenleme:
12 MHz ile alınan sonuç yeterli değil. Burada hemen şu aklıma geliyor: Bize öğretilen, Nyquist teoremine göre bir sinyal eğer en yüksek frekans bileşeninin iki katı frekans ile örneklenirse, o örneklerden sinyalin aynısı tekrar geri elde edilebilir. Teorem AYNISI diyor, baya benzeri demiyor. Yani iki kat hızla örneklemek, veri kaybı olmaksızın o sinyalin tamamındaki bilgiyi saklıyoruz demek. Ama Nyquist teoreminin geçerli olması için arkasına çok yüksek dereceli bir LPF koymak gerektiğini öğrendiğimizi hatırlamıyorum.
Evet pratikte böyle. Nyquist'in çalışması için ADC girişi veya DAC çıkışında ideal bir filtre olması lazım. Analog filtre işi zor olduğu için ses kartları Nyquist'e yakın 40 KHz gibi değerlerde örnekleme yapmak yerine 96 KHz ve üstü örnekleme yapıyorlar. Bir kere örnekleme yaptıktan sonra sorun olmuyor, dijital filtre yapmak çok daha kolay.
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
6,957
Mesajlar
118,808
Üyeler
2,826
Son üye
bekinci

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top