İçindekiler:

Sinyal Üreteci AD9833: 3 Adım
Sinyal Üreteci AD9833: 3 Adım

Video: Sinyal Üreteci AD9833: 3 Adım

Video: Sinyal Üreteci AD9833: 3 Adım
Video: AD9833 Programmable Waveform Generator 2024, Kasım
Anonim
Sinyal Üreteci AD9833
Sinyal Üreteci AD9833
Sinyal Üreteci AD9833
Sinyal Üreteci AD9833

Bir sinyal üreteci, çok kullanışlı bir test tertibatıdır. Bu, bir AD9833 modülü ve bir Arduino Nano kullanıyor - hepsi bu, bir PCB bile değil. İsteğe bağlı olarak bir OLED ekran ekleyebilirsiniz. AD9833, 0,1 Hz'den 12,5 MHz'e kadar sinüs, üçgen ve kare dalgalar üretebilir - bu projedeki yazılım 1Hz ila 100kHz ile sınırlıdır.

Burada ve burada bir Arduino ve bir AD9833 kullanan başka Instructables olmuştur. Bu daha basittir ve bir süpürme üreteci olarak kullanılabilir. Süpürme jeneratörleri, filtrelerin, amplifikatörlerin vb. frekans yanıtını test etmeye yardımcı olur. Diğer Instructables tasarımlarından farklı olarak, bu bir amplifikatör veya genlik kontrolü içermez, ancak isterseniz bunları ekleyebilirsiniz.

Adım 1: En Basit Sinyal Üreticisi

En Basit Sinyal Üreticisi
En Basit Sinyal Üreticisi
En Basit Sinyal Üreticisi
En Basit Sinyal Üreticisi
En Basit Sinyal Üreticisi
En Basit Sinyal Üreticisi
En Basit Sinyal Üreticisi
En Basit Sinyal Üreticisi

En basit Sinyal Üreticisi için AD9833 modülünü Arduino Nano'nun arkasına lehimlemeniz yeterlidir. PCB'ye gerek yoktur.

Seçtiğim AD9833 modülü buna benzer. Bunun en iyi veya en ucuz tedarikçi olduğunu söylemiyorum ama o fotoğrafa (veya yukarıdaki fotoğrafa) benzeyen bir tane satın almalısınız.

Modüller arasındaki bağlantılar şunlardır:

  • birbirine bağlı topraklar
  • D2 = FSync
  • D3 = Tık
  • D4 = Veri
  • D6 = AD9833'ün Vcc'si

AD9833, Arduino'nun D6 veri pininden güç alır - Arduino yeterli akım sağlayabilir. 100n'lik bir dekuplaj kondansatörü ekledim çünkü "yapmam" gerektiğini düşündüm ama herhangi bir fark göremedim - AD9833 modül kartında zaten bir dekuplaj kondansatörü var.

Fantezi olsaydınız, "analog zemin" ile "dijital zemin" hakkında endişelenebilirsiniz, ancak süslü olsaydınız 4 sterlinden fazla harcardınız.

En basit Sinyal Üreticisi, bir PC'den bir USB kablosu üzerinden kontrol edilir ve çalıştırılır. USB, 115200bps (8 bit, eşlik yok) hızında çalışan bir seri bağlantı noktasına öykünür. Komutlar şunlardır:

  • '0'..'9': basamağı "min" frekans dizisine kaydır
  • 'S': AD9833 frekansını ayarlayın ve sinüs dalgası üretin
  • 'T': frekansı ayarlayın ve üçgen dalga üretin
  • 'Q': frekansı ayarlayın ve kare dalga üretin
  • 'R': AD9833'ü sıfırlayın
  • 'M': "min" frekans dizisini "max" dizisine kopyala
  • 'G': 1 saniye boyunca "min"den "maks"a süpürme
  • 'H': 5 saniye boyunca "min"den "maks"a süpürme
  • 'I': 20 saniye boyunca "min"den "maks"a süpürme

Arduino programı "min" ve "max" olmak üzere iki adet 6 karakterlik dizi içerir. Bir rakam iletirseniz, o zaman "min" dizisine kaydırılır. Bir 'S' gönderirseniz, o zaman "min" dizi karakterleri bir sayıya dönüştürülür. longint frekansı ve AD9833'e gönderilir.

002500S

AD9833 çıkışını 2500Hz sinüs dalgasına ayarlayacaktır. Her zaman 6 hanenin tamamını göndermelisiniz. Minimum frekans 000001 ve maksimum frekans 999999'dur.

Bir 'M' gönderirseniz, "min" dizisi "max" dizisine kopyalanır. Bir 'H' gönderirseniz, AD9833 art arda 5 saniye boyunca kademeli olarak artan bir frekans verir. "min" frekansında başlar ve 5 saniye sonra "max" frekansındadır. Yani

020000M000100SH

100Hz'den 20kHz'e kadar süpürür. Frekans değişimi logaritmiktir, bu nedenle 1 saniye sonra frekans 288Hz, 2 saniye sonra 833Hz, ardından 2402, 6931 ve 20000 olacaktır. Frekans her milisaniyede bir değiştirilir.

Arduino başka bir karakter aldığında döngü durur, bu nedenle komut ve ardından satır başı veya satır besleme göndermemeye dikkat edin. Bu ekstra karakter döngüyü sonlandıracaktır. Seri Monitör kullanıyorsanız, sağ altta örneğin "Both NL & CR" diyebilecek bir kutu var ve (sanırım) komutunuzdan sonra karakterler gönderiyor. "Satır sonu yok" olarak ayarlayın.

Gerekli komutları gönderecek olan Windows EXE programını aşağıdan indirebilir veya kendinizinkini yazabilirsiniz. Arduino INO dosyası da burada.

2. Adım: Bir OLED ekleyin

OLED ekleyin
OLED ekleyin
OLED ekleyin
OLED ekleyin
OLED ekleyin
OLED ekleyin

Bir OLED ve iki düğme eklerseniz, sinyal üreteci PC olmadan tek başına çalışabilir.

Osiloskop Talimatımı okuyanlarınız benzerliği tanıyacaktır. AD9833 modülü, bir "Kibrit Kutusunda Osiloskop ve Sinyal Üreteci" üretmek için osiloskopuma eklenebilir.

Ekran, bir I2C veri yolu aracılığıyla bir SH1106 yongası tarafından kontrol edilen 3.3V'da çalışan bir 1.3 OLED'dir.

1.3" OLED için eBay'de arama yapın. Bağlantılar hızla güncelliğini yitirdiği için belirli bir satıcıyı önermek istemiyorum. "I2C" veya "IIC" yazan ve VDD GND SCL SDA etiketli dört pimi olan, o fotoğrafa benzeyen birini seçin (Bazı ekranlarda pinler farklı bir sırada görünüyor. Kontrol edin. I2C saatinin doğru adı "SCL" ama eBay'de kartlar fotoğraftaki gibi "SCK" olarak etiketlenebilir.)

OLED kitaplığının daha ayrıntılı bir açıklaması Adım 8'deki osiloskop Instructable'ımda bulunmaktadır. Adım 8'deki SimpleSH1106.zip sürücü kitaplığını indirip kurmalısınız (buraya başka bir kopya yüklemek istemiyorum ve iki kopya bulundurmak zorundayım..)

INO dosyası aşağıdan indirilebilir. OLED için kullanılan pin numaraları 70. satır civarında belirtilir. "Osiloskop ve Sinyal Üreticimi bir Kibrit Kutusunda" kurduysanız ve bu INO dosyasını onunla test etmek istiyorsanız, alternatif pin numaraları bir #define ile etkinleştirilir.

Devre için bir stripboard düzeni gösterdim. İki şerit tahtası vardır - biri Nano ve AD9833 için ve diğeri ekran için. Bir sandviç oluşturmalılar. Panolar bileşen tarafından gösterilir. İnce esnek teller iki panoya bağlanır. Levhaları lehimli stand-off'larla birleştirin. Diyagramımda, şerit levhanın bakırı camgöbeği ile gösterilmiştir. Kırmızı çizgiler, şerit levha üzerindeki tel bağlantıları veya levhaları birbirine bağlayan esnek tellerdir. Gücü ve "sinyal" uçlarını göstermedim.

AD9833 modülü, şeridin bakır tarafına lehimlenmiştir - Nano'nun karşı tarafında. Bakır şeritlerin üzerine lehim pimleri takın ve ardından AD9833'ü bunlara takın ve lehimleyin.

Ekranda ya tek bir frekans ya da "min" ve "maks" frekansları gösterilir.

İki buton vardır: frekansların bir basamağını seçmek için bir "Yatay" butonu ve o basamağı değiştirmek için bir "Dikey" butonu.

Sinyal üretecini geliştirdiğim devreden çalıştırıyorum - iş istasyonumda her zaman 5V kullanılabilir durumdayım.

Adım 3: Gelecekteki Gelişmeler

Gelecekteki Gelişmeler
Gelecekteki Gelişmeler

Pille çalışıyor olabilir mi? Evet, Nano'nun RAW pinine bağlı bir 9V PP3 eklemeniz yeterli. Genellikle 20mA kullanır.

Tek bir lityum hücre ile güçlendirilebilir mi? Ben neden görmüyorum. OLED Vdd ve pull-up direncini 3.7V pile bağlamalısınız (Arduino'nun 3.3V çıkışının düzgün çalışıp çalışmayacağından şüpheliyim).

Genlik ve frekans grafiğini çizebiliyorsanız, bir filtrenin frekans yanıtını test ederken bir süpürme oluşturucu daha kullanışlıdır. Bir sinyalin genliğini ölçmek yanıltıcıdır - düşük frekanslar için zarf dedektörünüzün bozulmasına karşı dalgalanmayı ve yüksek frekanslar için tepki süresini dengelemeniz gerekir. Genlik dedektörünüzü oluşturduktan sonra, çıkışını "En Basit Sinyal Üreticisinin" Arduino'sunun ADC'sine besleyebilir, ardından sonucu mevcut frekansla birlikte PC'ye gönderebilirsiniz.

Bu sayfa yararlı bir başlangıç noktasıdır veya Google'da "zarf detektörü" veya "tepe detektörü" için arama yapın. Yukarıdaki önerilen devrede, sinyal frekansını ayarlayacak, stabilize olmasını bekleyecek, Arduino A0 pinini dijital düşük çıkışa ayarlayacak, C deşarjını bekleyecek, A0'ı girişe ayarlayacak, bekleyecek, sonra ADC ile ölçeceksiniz. Nasıl geçtiğini bana bildir.

Önerilen: