SimpleAudioFrequencyMeter

Bu eğiticide Arduino ve Genuino Zero kartlar için Ses Frekansı Ölçer Kitaplığı'nın nasıl kullanılacağı açıklanmaktadır. Kod, genel bir giriş sinyalinin frekansını elde etmek için A0'a bağlı olan ve bir elektronik devre üzerinden büyütülen bir sinyalin frekansını ölçmek için kütüphane yöntemini kullanır. Şu anda kütüphane tarafından ölçülen aralık 60 ila 1500 Hz arasındadır ve setBandwidth () yöntemi ile daraltılabilir. Kütüphane, arduino kütüphane yöneticisi kullanılarak kurulabilir

Gerekli Donanım

  • Arduino veya Genuino Zero Board
  • 10k ohm düzeltici
  • 1x LMV358 veya TLV2462
  • 2100k ohm dirençler
  • 2 47k ohm direnç
  • 100n farad kapasitör
  • 3,5 mm jak

Devre

Düşük seviyeli girişlerden bile en dinamik aralığı elde etmek için devre, sinyalin genliğini ADC tarafından desteklenen tam giriş voltaj aralığına getiren ters çevirmeyen bir amplifikatörden oluşur. Tam çözünürlükte örnekleme daha iyi doğruluk demektir.

10k trimpot, sinyal seviyesiyle ADC giriş aralığına uyan amplifikatörün kazancını ayarlamaya izin verir. Bu ayar, Arduino Software (IDE) Seri Monitörünün çıkışına bakılarak yapılmalıdır: frekans okuması sabit olduğunda kazanç doğru şekilde ayarlanır.

Alternatif olarak, bu amaç için özel olarak tasarlanmış ayarlanabilir kazançlı Electret mikrofon amplifikatörü - MAX4466'yı satın alabilirsiniz.

Şematik

Kod

/*
  Simple Frequency Meter for Arduino Zero

  Demonstrates how to sample an input signal and get back its frequency

  This example code is in the public domain

  http://arduino.cc/en/Tutorial/SimpleAudioFrequencyMeter

  created by Arturo Guadalupi <a.guadalupi@arduino.cc>
  10 Nov 2015
*/


#include <AudioFrequencyMeter.h>

AudioFrequencyMeter meter;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  Serial.println("started");

  meter.setBandwidth(70.00, 1500);    // Ignore frequency out of this range
  meter.begin(A0, 45000);             // Intialize A0 at sample rate of 45kHz
}

void loop() {
  // put your main code here, to run repeatedly:
  float frequency = meter.getFrequency();
  if (frequency > 0)
  {
    Serial.print(frequency);
    Serial.println(" Hz");
  }
}
[Kodu Al]