İçindekiler:

MSP430 Breadboard Ses Spektrum Analizörü: 6 Adım
MSP430 Breadboard Ses Spektrum Analizörü: 6 Adım

Video: MSP430 Breadboard Ses Spektrum Analizörü: 6 Adım

Video: MSP430 Breadboard Ses Spektrum Analizörü: 6 Adım
Video: Debugging using the msp430 EzFet lite 2024, Kasım
Anonim
Image
Image
MSP430 Breadboard Ses Spektrum Analizörü
MSP430 Breadboard Ses Spektrum Analizörü

Bu proje mikrofon tabanlıdır ve minimum harici bileşen gerektirir. Tüm yapının 170 bağlantı noktalı mini breadboard'un sınırları içinde çalışmasını sağlayabilmem için 2 x LR44 madeni para hücresi kullanılır. ADC10, TimerA kesme LPM uyandırma, TimerA PWM benzeri çıkış, buton kullanımı, tamsayı aritmetiği kullanılmış ve gösterilmiştir.

Özellikleri

  • 500Hz ayırmada 8 bit tamsayı FFT 16 örnek
  • 1K, 1.5K, 2K, 3K, 4K, 5K, 6K, 7.5K doğrusal olmayan 8 genlik gösterir
  • genlikleri göstermek için kısmi logaritma haritası, 8 bit FFT için çözünürlük düşürüldüğü için sınırlı
  • TLC272 tek kademeli mikrofon, 100x kat 100x kazançta yükseltir (2 aşamalı deneyim yaşayabilirsiniz)
  • menü seçilebilir isteğe bağlı Hamming penceresi
  • menü 4 seviye parlaklığı ayarla
  • menü 8 seviye örnekleme oranını / tepki süresini ayarla
  • "Gemide" çalışan 2 x LR44 düğme pil

Adım 1: Parçaları Edinin

Bu proje için gerekenler aşağıdadır

  • MSP430G2452 (TI Launchpad G2'den ekstra çip veya herhangi bir 4K 20 pin MSP430G serisi MCU)
  • ön amfi yapımı için 170 bağlantı noktalı mini devre tahtası veya mükemmel tahta
  • TLC272 Çift op-amp
  • mini elektret mikrofon
  • 47k (pull-up), 100k, 2 x 10k, 1k dirençler
  • 1 x 0.1 uF
  • atlama telleri
  • pil tutucu için kullanılacak çift sıra erkek pin başlığı
  • 2 x LR44 düğme pil

Adım 2: Bileşen Yerleşimini Planlayın

Proje 170 bağlantı noktalı mini breadboard üzerine inşa edilecek. Bileşenlerin düzeni aşağıda gösterildiği gibidir. Özel not, 8x8 LED matrisinin MSP430 MCU'nun üstüne yerleştirileceğidir. Bileşenlerin yanı sıra, "+------+" karakterleriyle gösterilen bağlantı köprü kabloları da vardır.

G V+ Gnd (1 kademeli düzen) BU DÜZENİ KULLANIYORUZ +==================================== =================+ c0…………c7 | MIC……. ++----+ +--+…. | r0 o o o o o o o o | o||o +-----[100k]---------------+….. | r1 X o o o o o o o |. +-------------+--+. C7 C6 R1 C0 R3 C5 C3 R0 |. o o o o o o o o o |…… |.. | b6 a7 | | c0 ve r1 aynı pini paylaşır ve gösterilmez | +. +--+--+--+ | +--+--+--+-+--+--+--+--+--+ | *c6 + c0 + r1 için olası uygulama | | |V+ | | |G b6 b7 T R a7 a6 b5 b4 b3| | bu, 32khz xtal saat için b6'yı serbest bırakacaktır | | | TLC272 | | | | | | | dışarı - + G| | |+ a0 a1 a2 a3 a4 a5 b0 b1 b2| | | +. +--+--+--+ | +--+--+--+--+-+--+--+--+--+ | | o||o oo. +--+.. R4 R6 C1 C2 R7 C4 R5 R2 | |…. o-[10k]--o……… | |. o-[1k]o oo………._. | | o----[10k]-----------o……. o o | +================================================ ====+.1uF 100k 10k ADC Düğmesi +----------------+

TLC272'nin yalnızca bir aşamasını kullanıyoruz

Adım 3: Montaj

toplantı
toplantı
toplantı
toplantı

Bileşenleri devre tahtası düzenine göre yerleştirmeye başlayabilirsiniz. ASCII sanatı olduğu için çok net olmayabilir. Tüm bağlantıları belirlemek için bu adımda fotoğraflarla eşleştirebilirsiniz.

IC çiplerini konumlandırmak için özen gösterilmelidir. Bir cihazın pin 1'ini belirtmek için genellikle köşelerden birinde bir nokta bulunur.

CAT5 ethernet kablo telleri kullanmıştım ve breadboard projelerinde çalışmak çok kolay. Eski CAT5 kablolarınız varsa, keserek açabilirsiniz ve içinde 6 bükümlü tel olduğunu göreceksiniz. Breadboard için mükemmeldirler.

Adım 4: Bellenimi Derleyin ve Yükleyin

Kaynak kodu genellikle github depolarımda bulunur.

Bu özel proje için, tek C kaynak dosyası nfft.c, breadboard koleksiyonları havuzumda paketlenmiştir. Sadece nfft.c'ye ihtiyacınız var

Bellenimi derlemek için mps430-gcc kullanıyorum ama TI CCS ile iyi gitmeli. Web tabanlı bir IDE olan TI CCS bulutuna giderek IDE'leri veya derleyicileri kurma zahmetinden kurtulabilirsiniz. Ürün yazılımını bile hedef cihazınıza indirecektir.

Bu, anahtarlarla birlikte örnek bir derleme komutudur

msp430--gcc -Os -Duvar -fonksiyon-bölümleri -fdata-bölümleri -fno-inline-küçük-işlevler -Wl, -Map=nfft.map, --cref -Wl, --relax -Wl, --gc- bölümler -I/energia-0101E0016/hardware/msp430/cores/msp430 -mmcu=msp430g2553 -o nfft.elf nfft.c

MCU'yu programlamak için programcı olarak bir TI Launchpad G2 kullanıyorum.

Adım 5: Devreyi Anlayın

Devreyi Anlayın
Devreyi Anlayın
Devreyi Anlayın
Devreyi Anlayın

Devre şeması aşağıda sunulmuştur

MSP430G2452 veya benzeri, 4K Flash TLC272 Dual Op-Amp, GBW @1.7Mhz, @x100 kazanç, 17Khz'ye kadar bant genişliği gerekir

* TLC272'nin yalnızca bir aşamasını kullanıyoruz

._.

| MSP430G2452 | Vcc | | | +-----------------------2|ADC0 |1--+ | | | |. | Vcc | | | | pull-up (47k) Vcc Vcc | --------------- | | | |_| | | +-1|----. Vcc|8-+ | | | |. |. |. | ^.---|7 | |16-+ | |10k | |10k | | | / / ^ | | | |_| |_| 100k|_| | /_+\ / / | | /|--- (breadboard düzenine bakın) |.1u | | | | | /_+\ | | / |------_ +--||---|-[1k]--+-2|---+ | | | | | 15 GPIO | | | | +----------3|-----+ +-|--|6 | P1.1-P1.7| | 8x8 | | | +-4|Gnd +--|5 | P2.0-P2.7| | LED | |+ | | --------------- | | | matris| ((O)) |. | | / | |_| |MIC | |10k | +-20|Gnd \|------- | |_| | | |_| _|_ _|_ _|_ _|_ /// /// /// ///

LED Sürüş

LED matrisi 8 x 8 elemanlıdır. 15 GPIO pini tarafından sürülürler. 8 satır ve 8 sütun düzeniyle çoğullanırlar. ADC girişi için 1 pin kullandıktan sonra sadece 15 pin olduğu için çoğullamada tek bir pini paylaşan satır 1 ve sütun 0 vardır. Bu, satır 1 ve sütun 0'daki belirli LED'in yanamayacağı anlamına gelir. Tüm LED öğelerini sürmek için yeterli GPIO pini olmadığı için bu bir uzlaşmadır.

Ses Yakalama

Ses, Educational BoosterPack'teki yerleşik kondenser mikrofon aracılığıyla yakalanır. Mikrofon sinyalleri küçük olduğundan, onu msp430 ADC10'un makul bir çözünürlükle kullanabileceği bir seviyeye yükseltmemiz gerekiyor. Bu amaçla iki aşamalı bir op-amp amplifikatörü kullanmıştım.

Op-amp amplifikatörü, her biri yaklaşık 100x kazanç ile iki aşamadan oluşur. TLC272'yi de çok yaygın bir parça olduğu ve 3V ile çalıştığı için benimsemiştim. Kazanç bant genişliğinin yaklaşık 1,7 Mhz olması, 100x kazancımız için sadece 17Khz'nin altında iyi çalışacağını (yani istediğimiz kazancı koruyacağını) garanti edebileceğimiz anlamına gelir. (1.7Mhz / 100).

Başlangıçta bu spektrum analizörünü 16-20Khz'ye kadar ölçmeyi planlıyorum, ancak sonunda 8Khz'nin müziği göstermek için yeterince iyi olduğunu buldum. Bu, LM358'in ses dereceli bir şeyle değiştirilmesi ve örnekleme hızının değiştirilmesiyle değiştirilebilir. Seçtiğiniz op-amp'lerin kazanç bant genişliğine bakın.

Örnekleme ve FFT

Kullanılan FFT işlevi, birçok projenin benimsediği "fix_fft.c" kodudur, birkaç yıldır internette dolaşmaktadır. 16 bit sürümünü ve 8 bit sürümünü denedim. Sonunda amacım için 8 bit versiyonuna karar verdim, 16 bit versiyonunda büyük bir ilerleme göremedim.

Zaman alanından frekans alanına dönüşüm olması dışında FFT mekanizması hakkında iyi bir fikrim yok. Bu, FFT hesaplama fonksiyonuna beslendikten sonra ses örneklerinin hızının (zamanının), sonuç olarak elde ettiğim genliğin frekansını etkileyeceği anlamına gelir. Böylece, örnekleme ses hızını ayarlayarak, sonuç olarak frekans bandını belirleyebilirim.

TimerA 0 CCR0 örnekleme süresini tutmak için kullanılır. Önce bant frekansına ulaşmak için ihtiyacımız olan sayıları belirliyoruz (16Mhz DCO saat hızımıza karşılık geliyor). yani TA0CCR0 (8000/(BAND_FREQ_KHZ*2))-1'e ayarlanmıştır; burada BAND_FREQ_KHZ benim için 8'dir. Daha iyi bir op-amp'iniz varsa ve/veya farklı olmasını istiyorsanız değiştirilebilir.

Frekans Bantları ve Genlik Ölçeklendirme

Ürün yazılımı, bir taramada 16 bant işler ve yakalama zamanlaması, bu sıralar arasında 500 Hz ayrım üretir. LED matrisi 8 sütunludur ve yalnızca 8 bant/genlik gösterecektir. Her iki banttan birini görüntülemek yerine, daha dinamik frekans bantlarını (müzik açısından) göstermek için doğrusal olmayan bir frekans bandı listesi kullanılır. Liste, alt uçta 500Hz boşluklar, orta bantlarda 1KHz boşluklar ve yükseklerde 1.5Khz bantlardan oluşuyor.

Bireysel bantların genliği, LED matris ekranındaki yatay 'noktaların' sayısı ile temsil edilen 8 seviyeye kadar ölçeklendirilir. Genlik seviyeleri, FFT sonuçlarını 8'den birine çeviren doğrusal olmayan bir harita aracılığıyla küçültülür. noktalar. Ses seviyeleri algımızı en iyi şekilde temsil ettiği için bir tür logaritmik ölçekleme kullanılır.

Yerleşik AGC mantığı vardır ve spektrum analizörü, önceki döngülerde tespit edilen birden fazla tepe seviyesi olduğunda genlik seviyelerini düşürmeye çalışacaktır. Bu, sürgülü cetvel karşılaştırma tablosu ile yapılır.

Adım 6: Cihazı Çalıştırma

  • Ekran modunda tuşa kısa basış noktasız, bir noktalı, 2 noktalı ve 3 noktalı ekran arasında geçiş yapar.
  • Uzun basış kurulum moduna girer, ardından uzun basış menüde döner.
  • Menü öğeleri 'Hamming Window Option', 'Dimmer', 'Sampling / Refresh Rate' aracılığıyla döner.
  • 'Hamming Window' kurulum modunda, kısa basışlar darbesiz, darbeli 1, darbeli 2, darbeli 3, uzun basmalı ayarı onaylar.
  • 'Dimmer' kurulum modunda, kısa basışlar 0'dan 3'e kadar mevcut parlaklık seviyeleri arasında geçiş yapar, uzun basış ayarı onaylar.
  • 'Örnekleme / Yenileme hızı' kurulum modunda, kısa basışlar 0'dan 7'ye kadar mevcut yenileme hızları arasında geçiş yapar, 0 gecikme olmadığı anlamına gelir, uzun basış ayarı onaylar.
  • Led segment çoğullama, ayrı sıralar için parlaklık farklılıklarını telafi etmek için zaman gecikmelerini içerir.

Önerilen: