Arduino ile Osilaskop Yapımı

Bu Makalede Arduino kullanarak PC Osilaskop u yapacağız.

Osilaskop Arduino

Yapacağımız osilaskop un teknik özellikleri;

  • 50K örnekleme/saniye
    (aslında 110K’ya kadar çıkabilir ancak sinyal gürültülü olur)
  • Otomatik tetik
  • Frekans sayacı
  • Makul derecede doğru voltaj okumaları (gerilim bölücüler için kullanılan dirençlerin doğruluğuna bağlı olarak)
  • Opsiyonel: seçilebilir voltaj aralığı: 5V, 6.6V, 10V, 20V

İhtiyacımız olacak Malzemeler;

  • Arduino Leonardo veya Arduino Micro
  • 2 timsah kelepçesi
  • 0.1µF kapasitör (isteğe bağlı)
  • 5.1V zener diyot (isteğe bağlı)
  • İşleme özelliğine sahip bir bilgisayar

Voltaj bölücüler için (opsiyonel, 5V’dan daha fazla ölçüm yapmak istiyorsanız veya seçilebilir aralık istiyorsanız):

  • 2 iki kutuplu çift atışlı anahtar
  • iki 3K direnç
  • iki 1.5K direnç
  • bir 1K direnç
  • küçük bir perfboard veya breadboard

Yalnızca 5V’a kadar ölçüm yapmanız gerekiyorsa, voltaj bölücüleri atlayabilir ve probları doğrudan GND ve A1’e bağlayabilirsiniz. Kodu biraz değiştirmeniz gerekecek:

Bu kodu aşağıdaki ile değiştirin.

ADMUX = B00000000; // harici referansı ve port 5'i (A0) seçin

ADMUX = B01000000; // dahili referansı (Vcc - 5V) ve port 5'i (A0) seçin

ve sonra

Aşağıdaki işleme kodunu değiştirin.

// read switch position & set voltage range
 boolean switch1=((buffer[writeIndex*2]&(byte)8)==8);                                                 
 boolean switch2=((buffer[writeIndex*2]&(byte)4)==4);
 if (!switch1&&!switch2) voltageRange=20;
 if (!switch1&&switch2) voltageRange=10;
 if (switch1&&!switch2) voltageRange=6.64;
 if (switch1&&switch2) voltageRange=5;

Gerilim Bölücüler Ekleme

Yukarıdaki devre gösterisi şunlardan oluşur:

Solda: prob ve A1 arasında 1:4 voltaj bölücü

Bu, voltajı giriş voltajının 1/4’üne düşürür. Analog pinler 5V’u işleyebilir, bu yüzden bu 20V’a kadar voltajlara izin verecektir.

Breadboard resminde 2 giriş kanalı olduğunu unutmayın. Fazladan bir kanal eklemek, örnekleme hızını önemli ölçüde yavaşlattı (çünkü ADC’de sürekli mod etkinleştirilemiyor), bu yüzden onu son kodda dışarıda bırakmaya karar verdim.

Sağda: 5V ile Analog Referans (AREF) pini arasında anahtarlanmış bir voltaj bölücü
Ölçüm aralığını ayarlamak için anahtarları kullanabilirsiniz: 5V, 6.64V, 10V / 20V

Bu nasıl çalışır:

‘Harici referans’ için yapılandırılırsa, ADC analog girişlerin voltajını 5V yerine AREF ile karşılaştırır.
İşte bir örnek: probun 5V ölçtüğünü varsayalım. A1 üzerindeki voltaj 5V/4 = 1.25V olacaktır.

Her iki anahtar da kapalıysa, AREF pinindeki voltaj 5V’dir.
ADC, 1.25/5 = %25 okuyacaktır
Anahtar 1 kapalı ve anahtar 2 açıksa, AREF üzerindeki voltaj 2,5V’tur
ADC 1,25/2,5 = %50 okuyacaktır
Anahtar 1 açık ve anahtar 2 kapalıysa, AREF üzerindeki voltaj 1,66V’tur
ADC, 1,25/1,66 = %75 okuyacaktır
Her iki anahtar da açıksa, AREF üzerindeki voltaj 1,25V’dir
. ADC, 1,25/1,25 = %100 okuyacaktır.
Her anahtarın ikinci kutbu bir dijital girişe bağlanır. Voltaj ölçeğini otomatik olarak ayarlamak için bu pimi okuyabiliriz.

Prob ve toprak arasında bir kapasitör
gerekli olmayabilir, ancak bazı nedenlerden dolayı bazı bilgisayarlar onsuz çok fazla gürültü ölçer. Kondansatör bunu çözecektir, ancak yüksek frekansları ölçerken sinyali biraz etkileyebilir.

A0 ile toprak arasında bir zener
Arduino’yu aşırı voltajdan veya ters voltajdan biraz korumak için

Dikkat olmak:

AREF pinine voltaj verirken analog referans dahili (varsayılan) olarak ayarlanırsa, arduino zarar görebilir. Bunu yaptım ve benimkine zarar vermedi, ancak AREF’i bağlamadan önce güvende olmanız ve uygun kodu yüklemeniz daha iyi olur .
analog girişler negatif voltajları kaldıramaz .
Arduino pinlerinde 5V’u geçmeyin . Devreyi 5V’un altında bir voltajla test etmek muhtemelen iyi bir fikirdir, bu yüzden
A1 üzerindeki voltaj bölücünün yanlış bağlanması durumunda arduinoya zarar vermezsiniz.