İçindekiler:

Hızlı Hartley Dönüşümü Spektral Stetoskop: 22 Adım
Hızlı Hartley Dönüşümü Spektral Stetoskop: 22 Adım

Video: Hızlı Hartley Dönüşümü Spektral Stetoskop: 22 Adım

Video: Hızlı Hartley Dönüşümü Spektral Stetoskop: 22 Adım
Video: Joker Full HD Türkçe dublaj izle aksiyon ve gerilim zamana karşı 2024, Haziran
Anonim
Hızlı Hartley Dönüşümü Spektral Stetoskop
Hızlı Hartley Dönüşümü Spektral Stetoskop

Bu talimatta, hızlı hartley dönüşümünü kullanarak bir spektral stetoskop yapmayı öğreneceksiniz. Bu, kalp ve akciğer seslerini görselleştirmek için kullanılabilir.

Adım 1: Malzemeler

1,8” LCD Ekran (Amazon'da 7,50 ABD Doları)

Arduino Uno veya Eşdeğeri (Gearbest'te 7,00 ABD Doları)

Elektret Amplifikatörü (Adafruit'te 6,95 $)

100 µF Kondansatör (0,79 $)

Tel ve Jumperlar (4,00$)

3,5 mm Stereo Jak (1,50 $)

10kOhm Potansiyometre (2.00$)

Anlık Anahtar (1,50 $)

2. Adım: Araçlar

Havya

Sıcak yapıştırıcı tabancası

3D Yazıcı… veya 3D yazıcısı olan bir arkadaş (Kartonla da yapılabilir)

Tel makası

ekmek tahtası

3. Adım: 3D Baskı

Birincisi, bu adıma eklenen.stl dosyalarını 3D olarak yazdırmaktır. Aşağıdaki malzeme/ayarları kullanarak her iki dosyayı da yazdırdım:

Malzeme: PLA

Katman Yüksekliği: 0.1mm

Duvar/Üst/Alt Kalınlık: 0.8mm

Baskı Sıcaklığı: 200⁰C

Yatak Sıcaklığı: 60⁰C

Destek Etkin @ %10

Adım 4: Devre Oluşturun

Malzemeler bölümündeki bileşenleri kullanarak devreyi kurunuz. Havyaya dokunmadan önce düzgün çalıştığından emin olmak için her zaman devreyi bir devre tahtası üzerinde bir araya getiririm.

Adım 5: LCD Kablolama

LCD Kablolama
LCD Kablolama

Bu adıma ekli şekli kullanarak, kabloları LCD ekrandaki sekiz pimden yedisine lehimleyin. Bu kabloların, toprak ve +5V pinler dışında yaklaşık 3 fit uzunluğunda olması gerekir (bunların yalnızca 2-3 inç olması gerekir)

Adım 6: Mikrofon/Amplifikatör Kablolaması

Mikrofon/Amplifikatör Kablolaması
Mikrofon/Amplifikatör Kablolaması

Bu adıma eklenen şekli kullanarak Adafruit mikrofon/amplifikatöründeki +5V, Ground ve Out pinlerine üç kablo lehimleyin. Bunların sadece yaklaşık 2-3 inç uzunluğunda olması gerekir.

Adım 7: Anlık Anahtar Kablolaması

Anlık anahtardaki iki pabucun her birine 2-3 inçlik bir kablo bağlayın.

Adım 8: Potansiyometre Kablolaması

6. adımdaki şekli kullanarak, potansiyometrenin üç kulağına yaklaşık 2-3 inç uzunluğunda üç kablo lehimleyin.

Adım 9: Kulaklık Jakı Kablolaması

Kulaklık jakının halkasına, ucuna ve manşon pabuçlarına üç kablo lehimleyin. Zaten kablolu bir metronomdan bir jak kullandım. Halka, uç ve manşon pabuçlarının ne olduğunu bilmiyorsanız, sadece google'da kablolama stereo jaklarıyla ilgili birçok iyi resim var.

Adım 10: Mikrofon/Amplifikatör Çıkışı

Mikrofon/amp, potansiyometre ve kulaklık jakındaki kabloları lehimledikten sonra, mikrofon amplifikatörünün "çıkış" kablosuna yaklaşık üç fit uzunluğunda bir kablo lehimleyin. Bu tel daha sonra arduino'nun A0 pinine bağlanacaktır.

Adım 11: Mikrofon/Amplifikatör Çıkışı Devam Ediyor

Mikrofonun/amplifikatörün "çıkış" kablosuna ikinci bir kablo lehimleyin. Bu telin 100 mikroFarad kapasitöre lehimlenmesi gerekiyor. Bir elektrolitik kapasitör kullanıyorsanız, pozitif tarafın bu kabloya bağlı olduğundan emin olun.

Adım 12: Muhafazadaki Bileşenler

Muhafazadaki Bileşenler
Muhafazadaki Bileşenler
Muhafazadaki Bileşenler
Muhafazadaki Bileşenler

Tüm teller bileşenlerin üzerine lehimlendikten sonra, bu adıma ekli şekilleri takip ederek bileşenleri ilgili yerlere yerleştirin. Mikrofonu ve kulaklık jakını yerine sabitlemek için sıcak tutkal kullandım.

Adım 13: Muhafaza İçi Lehimleme

Tüm bileşenler muhafazaya sabitlendikten sonra, tüm topraklama kablolarını birbirine lehimleyin. LCD'den bir tane, mikrofon/amp'den bir tane ve kulaklık jakının kılıfından bir tane olmalıdır. Ayrıca + 5V kablolarını ve anlık anahtardan bir kabloyu birlikte lehimleyin. Yine bir tane LCD'den, bir tane mikrofon/amplifikatörden ve bir tane de anlık anahtardan olmalıdır.

Adım 14: +5V, GND Genişletilmiş Teller

Şimdi yaklaşık 3 fit uzunluğunda iki parça tel kesin. Birini topraklama kablosu kümesine lehimleyin ve diğerini anlık anahtardaki açık kabloya lehimleyin.

Adım 15: Uzun Kabloları Muhafaza Deliğinden Kaydırın

Uzun Kabloları Muhafaza Deliğinden Kaydırın
Uzun Kabloları Muhafaza Deliğinden Kaydırın

Şimdi, yaklaşık 3 fit uzunluğunda toplam sekiz teliniz olmalıdır. Bunları muhafazadaki doldurulmamış delikten geçirin. Bu adıma ekli şekle bakın

Adım 16: Isıyla Daralan

Tüm lehimleme tamamlandıktan sonra, açıkta kalan tellerin kapatıldığından emin olun. Isıyla daralan makaron kullandım, ancak elektrik bandı da iyi çalışıyor.

Adım 17: Muhafazayı Kapatın

Mühür Muhafazası
Mühür Muhafazası
Mühür Muhafazası
Mühür Muhafazası

LCD ekranı içeren muhafazanın yarısını alın ve diğer bileşenleri içeren muhafazanın diğer yarısının üzerine kaydırın. İki parçayı birbirine bastırırken, muhafazayı birbirine sabitlemek için sıcak tutkalla yapıştırın.

Adım 18: Arduino'ya Bağlan

Kalan sekiz uzun kablo, devre şemalarında belirtilen ilgili Arduino pinlerine doğrudan bağlanır. Bu 3 ft uzunluğundaki kablolardan birini devreye her lehimlediğinizde, diğer ucuna hangi Arduino pinine gittiğini gösteren bir bant parçası koyduğunuzdan emin olun!

Adım 19: Arduino IDE/Kütüphaneler

Arduino IDE'yi indirmeniz gerekecek. Bu eskiz için üç farklı kitaplık kullandım: FHT.h, SPI.h ve TFT.h. Arduino kütüphanelerini nasıl indireceğinizi bilmiyorsanız lütfen https://www.arduino.cc/en/Guide/Libraries adresine bakın. FHT.h kitaplığı openmusiclabs.com'dan indirildi. Diğer ikisi GitHub'da indirildi.

Adım 20: Arduino Kroki

Kod, zaman alanını bir frekans alanına değiştirmek için Hızlı Hartley Dönüşümü'nü (FHT) kullanır. Bu, Hızlı Fourier Dönüşümü (FFT) kullanılarak da yapılabilir, ancak FHT çok daha hızlıdır. FFT ve FHT, sinyal işlemede çok temel fikirlerdir ve öğrenmesi çok eğlencelidir. Biraz kendin okumanı öneririm, eğer ilgileniyorsan, gör. Open Music Labs web sitesinden kopyaladığım FHT örnek kodu, başlangıçta her frekans bölmesinin genliğini logaritmik veya desibel çıktı olarak veriyordu. Bunu, frekans kutularını doğrusal bir ölçekte çıkarmak için değiştirdim. Bunun nedeni, doğrusal ölçeğin insanların sesi nasıl duyduğunun daha iyi bir görsel temsili olmasıdır. Sondaki for() döngüsü, LCD ekranda her bir frekans bölmesinin genliğini çizmek içindir. Tam FHT spektrumu, i=0 ile i<128 arasındaki tüm frekans kutularını kapsayacaktır. for() döngümün i=5 ile i<40 arasında olduğunu fark edeceksiniz, bunun nedeni akciğer rahatsızlıklarının teşhisi için önemli olan frekansların tipik olarak 150Hz ile 3.5khz arasında olmasıdır, ben yaklaşık 4kHz'e çıkmaya karar verdim. Tam frekans spektrumunu göstermek istiyorsanız bu ayarlanabilir.

[kod]

//Dijital Stetoskop Kodu

// openmusiclabs'den indirilen hızlı Hartley Transform kitaplığı

#define LIN_OUT 1 //FHT'yi doğrusal çıktı üretecek şekilde ayarla

#define LOG_OUT 0 //FHT logaritmik çıktısını kapat

#define FHT_N 256 //FHT örnek numarası

#include //FHT kitaplığını dahil et

#include //TFT kitaplığını dahil et

#include //SPI kitaplığını dahil et

#define cs 10 // lcd cs pinini arduino pin 10'a ayarla

#define dc 9 // lcd dc pinini arduino pin 9'a ayarla

#define rst 8 // lcd sıfırlama pinini arduino pin 8'e ayarla

TFT myScreen = TFT(cs, dc, rst);//TFT ekranının adını bildir

geçersiz kurulum() {

//Serial.begin(9600);//örnekleme hızını ayarla

myScreen.begin();//TFT ekranını başlat

myScreen.background(0, 0, 0);//arka planı siyah yap

ADCSRA=0xe5;//adc'yi serbest çalışma moduna ayarla

ADMUX=0x40;//adc0 kullan

}

boşluk döngüsü () {

while(1){ // titreşimi azaltır cli(); // UDRE kesmesi arduino1.0'da bu şekilde yavaşlar

for (int i = 0; i < FHT_N; i++) { // 256 örnek kaydet

while(!(ADCSRA & 0x10)); // adc'nin hazır olmasını bekleyin

ADCSRA = 0xf5; // adc baytını yeniden başlat

m = ADCL; // adc veri baytını getir

j = ADCH; int k = (j << 8) | m; // int'e dönüştür

k -= 0x0200; // imzalı bir int oluştur

k <<= 6; // 16b imzalı bir int oluştur

fht_input = k; // gerçek verileri kutulara koy

}

fht_window(); // daha iyi frekans yanıtı için verileri pencereleyin

fht_reorder(); // fht'yi yapmadan önce verileri yeniden sırala

fht_run(); // fht içindeki verileri işle

fht_mag_lin(); // fht çıktısını al

ben();

for (int i=5;i<40;i++){

myScreen.stroke(255, 255, 255);

myScreen.fill(255, 255, 255);

int drawHeight=map(fht_lin_out, 10, 255, 10, myScreen.height());

int ypos=myScreen.height()-drawHeight-8; myScreen.rect((4*i)+8, ypos, 3, drawHeight);

}

myScreen.background(0, 0, 0);

}

}

[/kod]

Adım 21: Test Edin

Test Edin!
Test Edin!

Kodun düzgün çalıştığını doğrulamak için çevrimiçi bir ton üreteci (https://www.szynalski.com/tone-generator/) kullandım. Çalıştığını onayladıktan sonra, stetoskopun zilini göğsünüze kadar bastırın, derin bir nefes alın ve hangi frekansların mevcut olduğunu görün!

Adım 22: Gelecekteki Çalışma

**Not: Ben bir kimyagerim, mühendis veya bilgisayar bilimcisi değilim**. Tasarım ve kodda muhtemelen hatalar ve iyileştirmeler olacaktır. Bununla birlikte, çok kullanışlı ve ucuz olabilecek bir şeye iyi bir başlangıç olduğunu düşünüyorum. Aşağıdaki maddeler gelecekte yapmak istediğim geliştirmelerdir ve umarım bazılarınız da iyileştirmeye çalışır!

· Cihazı mobil hale getirin. CPU'lar veya diğer mikro denetleyiciler konusunda kapsamlı deneyimim yok, ancak tüm FHT kitaplığını veya muhtemelen Bluetooth'u depolamak için yeterli belleğe sahip olması gerekir.

· Bazı istatistiksel analiz hesaplamalarını koda dahil edin. Örneğin, tipik olarak bir hırıltı 400 Hz'e eşit veya daha büyük bir temel frekansa sahiptir ve en az 250 ms sürer. Rhonchi, yaklaşık 200 Hz veya daha düşük bir temel frekansta meydana gelir ve en az 250 ms sürer. Diğer birçok pulmoner ses tanımlanmıştır ve sağlık koşullarının göstergesidir (https://commongiant.github.io/iSonea-Physicians/assets/publications/7_ISN-charbonneau-Euro-resp-Jour-1995-1942-full.pdf). Bunun, FHT üzerinden belirli sayıda döngüden sonra frekans kutularının sinyalini karşılaştırarak ve ardından ne kadar süredir mevcut olduğunu görmek için millis() işlevini çalıştırarak kodda kontrol edilebilecek bir şey olduğunu düşünüyorum. FHT hesaplamasının gürültü tabanına. Bu şeylerin yapılabileceğinden eminim!

Umarım hepiniz bu projede eğlenmişsinizdir ve herhangi bir sorunuz varsa lütfen yorum yapın ve elimden geldiğince çabuk cevap vereceğim! Yorumları görmek için sabırsızlanıyorum.

Önerilen: