Mündəricat:

Fast Hartley Transform Spektral Stetoskop: 22 addım
Fast Hartley Transform Spektral Stetoskop: 22 addım

Video: Fast Hartley Transform Spektral Stetoskop: 22 addım

Video: Fast Hartley Transform Spektral Stetoskop: 22 addım
Video: Test for my discrete Fourier/Hartley-like transform algorithm 2024, Iyul
Anonim
Fast Hartley Transform Spektral Stetoskopu
Fast Hartley Transform Spektral Stetoskopu

Bu təlimatda sürətli hartley çevrilməsindən istifadə edərək spektral stetoskopun necə hazırlanacağını öyrənəcəksiniz. Ürək və ağciyər səslərini görüntüləmək üçün istifadə edilə bilər.

Addım 1: Materiallar

1.8 LCD Ekran (Amazonda 7.50 dollar)

Arduino Uno və ya ekvivalenti (Gearbest -də 7.00 dollar)

Elektret Gücləndiricisi (Adafruit -də 6,95 dollar)

100 µF kondansatör (0.79 dollar)

Tel və tullananlar ($ 4.00)

3,5 mm Stereo Jack (1,50 dollar)

10kOhm Potansiyometr (2.00 dollar)

Anlıq keçid ($ 1.50)

Addım 2: Alətlər

Lehimleme dəmir

İsti Yapışqan Tabancası

3D Printer… və ya 3D printeri olan bir dost (Kartondan da etmək mümkündür)

Tel kəsici

Çörək lövhəsi

Addım 3: 3D çap

Birincisi, bu addıma əlavə olunan.stl fayllarını 3D çap etməkdir. Aşağıdakı material/parametrlərdən istifadə edərək hər iki faylı çap etdim:

Material: PLA

Lay hündürlüyü: 0.1 mm

Divar/Üst/Alt Qalınlıq: 0.8mm

Çap temperaturu: 200⁰C

Yataq temperaturu: 60⁰C

10% -də dəstək aktivdir

Addım 4: Dövrə qurun

Materiallar bölməsindəki komponentlərdən istifadə edərək dövrə qurun. Lehimləmə dəmirinə toxunmadan əvvəl düzgün işlədiyinə əmin olmaq üçün həmişə dövrə bir çörək taxtasına yığdım.

Addım 5: LCD naqilləri

LCD naqilləri
LCD naqilləri

Bu addıma əlavə edilən rəqəmi istifadə edərək, LCD ekrandakı səkkiz sancağın yeddisinə tel bağlayın. Torpaq və +5V sancaqlar istisna olmaqla, bu tellərin təxminən 3 fut uzunluğunda olması lazımdır (bunların yalnız 2-3 düym olması lazımdır)

Addım 6: Mikrofon/Gücləndirici Kablolama

Mikrofon/Gücləndirici naqilləri
Mikrofon/Gücləndirici naqilləri

Bu addıma əlavə olunan şəkildən istifadə edərək, Adafruit mikrofon/gücləndiricisindəki +5V, Torpaq və Çıxış pinlərinə üç tel lehimləyin. Bunlar yalnız 2-3 düym uzunluğunda olmalıdır.

Addım 7: Bir anlıq keçid naqilləri

Ani keçiddəki hər iki qolun hər birinə 2-3 düymlük bir tel bağlayın.

Addım 8: Potansiyometr naqilləri

6-cı addımdakı rəqəmi istifadə edərək, təxminən 2-3 düym uzunluğunda üç teli potansiyometrin üç qoluna lehimləyin.

Addım 9: Qulaqlıq Jack Kabloları

Qulaqlıq yuvasının üzüyünə, ucuna və manşetinə üç tel lehimləyin. Artıq telli bir metronomdan bir kriko istifadə etdim. Üzükün, ucun və manşetin nə olduğunu bilmirsinizsə, sadəcə google -da baxın, stereo jakların naqilləri ilə bağlı bir çox yaxşı şəkillər var.

Addım 10: Mikrofon/Gücləndirici Çıxışı

Mikrofon/amp, potansiometr və qulaqlıq yuvasına telləri lehimlədikdən sonra təxminən üç fut uzunluğunda bir teli mikrofon gücləndiricisinin "çıxan" telinə lehimləyin. Bu tel daha sonra arduinonun A0 pininə bağlanacaq.

Addım 11: Mikrofon/Gücləndirici Çıxışı Davam Edir

Mikrofon/gücləndiricinin "çıxan" telinə ikinci bir tel lehimləyin. Bu telin 100 microFarad kondansatörə lehimlənməsi lazımdır. Bir elektrolitik kondansatör istifadə edirsinizsə, müsbət tərəfinin bu telə bağlı olduğundan əmin olun.

Addım 12: Qutuda olan komponentlər

Qutuda olan komponentlər
Qutuda olan komponentlər
Qutuda olan komponentlər
Qutuda olan komponentlər

Bütün tellər komponentlərə lehimləndikdən sonra, bu addıma əlavə olunan rəqəmləri izləyərək komponentləri müvafiq yerlərə yerləşdirin. Mikrofonu və qulaqlıq yuvasını möhkəm bağlamaq üçün isti yapışqan istifadə etdim.

Addım 13: Qutuda-Lehimləmə

Bütün komponentlər korpusa bərkidildikdən sonra bütün topraklama tellərini birlikdə lehimləyin. Biri LCD -dən, biri mikrofon/amperdən və biri qulaqlıq yuvasının qolundan olmalıdır. +5V telləri bir anda və bir anlıq keçiddən bir tel lehimləyin. Yenə biri LCD -dən, biri mikrofondan/gücləndiricidən və biri anlıq keçiddə olmalıdır.

Addım 14: +5V, GND Genişləndirilmiş Tellər

İndi təxminən 3 fut uzunluğunda iki tel kəsin. Birini torpaq telləri qrupuna lehimləyin, digərini isə ani açarda açıq telə lehimləyin.

Addım 15: Uzun Telləri Qoşma Deliyindən Keçirin

Qoşma Deliyindən Uzun Telləri Kaydırın
Qoşma Deliyindən Uzun Telləri Kaydırın

İndi təxminən 3 fut uzunluğunda cəmi səkkiz telə sahib olmalısınız. Bunları korpusdakı doldurulmamış delikdən keçirin. Bu addıma əlavə edilmiş şəklə baxın

Addım 16: İstilik azaldır

Bütün lehimləmə tamamlandıqdan sonra, açıq tellərin örtülmüş olduğundan əmin olun. İstilik büzücü borulardan istifadə etdim, amma elektrik lenti də yaxşı işləyir.

Addım 17: Mühür Qutusu

Mühür Qutusu
Mühür Qutusu
Mühür Qutusu
Mühür Qutusu

LCD ekranı olan korpusun yarısını götürün və digər komponentləri olan muhafazanın digər yarısına sürüşdürün. İki parçanı bir -birinə itələyərkən, korpusu bir -birinə bağlamaq üçün isti yapışdırın.

Addım 18: Arduinoya qoşulun

Qalan səkkiz uzun tellər, sxem sxemlərində göstərilən müvafiq Arduino pinlərinə birbaşa bağlıdır. Uzun 3ft tellərdən birini hər dəfə lehimlədiyiniz zaman, digər ucuna Arduino pininin nəyə getdiyini göstərən bir parça yapışdırdığınızdan əmin olun!

Addım 19: Arduino IDE/Kitabxanalar

Arduino IDE -ni yükləməlisiniz. Bu eskiz üçün üç fərqli kitabxanadan istifadə etdim: FHT.h, SPI.h və TFT.h. Arduino kitabxanalarını necə yükləməyi bilmirsinizsə, https://www.arduino.cc/en/Guide/Libraries səhifəsinə baxın. FHT.h kitabxanası openmusiclabs.com saytından endirildi. Digər ikisi GitHub -da yükləndi.

Addım 20: Arduino Sketch

Kod, vaxt sahəsini bir tezlik sahəsinə dəyişdirmək üçün Fast Hartley Transformu (FHT) istifadə edir. Bu, Fast Fourier Transformu (FFT) istifadə etməklə də edilə bilər, lakin FHT daha sürətlidir. FFT və FHT siqnal emalında çox fundamental fikirlərdir və öyrənmək çox əyləncəlidir. Özünüz oxumağı məsləhət görürəm, maraqlanırsınızsa baxın. Open Music Labs veb saytından kopyaladığım FHT nümunə kodu əvvəlcə hər bir tezlik qutusunun amplitüdünü loqarifmik və ya desibel çıxışı olaraq çıxardı. Bunu tezlik qutularını xətti miqyasda çıxarmaq üçün dəyişdirdim. Bunun səbəbi, xətti miqyasın insanların səsi necə eşitdiyini daha yaxşı əyani şəkildə ifadə etməsidir. Sonundakı for () döngəsi, LCD ekranda hər bir tezlik qutusunun amplitudunu çəkmək üçündür. Tam FHT spektri, i = 0 -dan i <128 -ə qədər olan bütün tezlik qutularını əhatə edəcək. Mənim üçün () döngüsünün i = 5 -dən i <40 -a qədər olduğunu görürsünüz, bunun səbəbi ağciyər xəstəliklərinin diaqnozu üçün vacib olan tezliklərin adətən 150 Hz və 3.5 kHz arasında olmasıdır, təxminən 4 kHz -ə qədər getməyə qərar verdim. Tam tezlik spektrini göstərmək istəyirsinizsə bu tənzimlənə bilər.

[kod]

// Rəqəmsal Stetoskop Kodu

// Fast Hartley Transform kitabxanası openmusiclabsdan endirildi

#define LIN_OUT 1 // xətti çıxış istehsal etmək üçün FHT qurun

#define LOG_OUT 0 // FHT logaritmik çıxışını söndürün

#dehine FHT_N 256 // FHT nümunə nömrəsi

#include // FHT kitabxanasını daxil edin

#include // TFT kitabxanasını daxil edin

#include // SPI kitabxanasını daxil edin

#define cs 10 // lcd cs pinini arduino pin 10 -a təyin edin

#decine dc 9 // lcd dc pinini arduino pin 9 olaraq təyin edin

#destine rst 8 // lcd sıfırlama pinini arduino pin 8 -ə təyin edin

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

boş quraşdırma () {

//Serial.begin(9600);// nümunə götürmə nisbətini təyin edin

myScreen.begin (); // TFT ekranını işə salın

myScreen.background (0, 0, 0); // fonu qara rəngə qoyun

ADCSRA = 0xe5; // adc -ni sərbəst işləmə rejiminə qoyun

ADMUX = 0x40; // adc0 istifadə edin

}

boşluq döngəsi () {

while (1) {// jitter cli () azaldır; // UDRE kəsilməsi arduino1.0 -da bu şəkildə yavaşlayır

for (int i = 0; i <FHT_N; i ++) {// 256 nümunəni qeyd edin

isə (! (ADCSRA & 0x10)); // adc -nin hazır olmasını gözləyin

ADCSRA = 0xf5; // adc baytını yenidən başladın

m = ADCL; // ADC məlumat baytı alın

j = ADCH; int k = (j << 8) | m; // int şəklində yaradın

k -= 0x0200; // imzalanmış int formasına salın

k << = 6; // formu 16b imzalı int

fht_input = k; // həqiqi məlumatları zibil qutularına yerləşdirin

}

fht_window (); // daha yaxşı tezlik cavabı üçün məlumatları pəncərəyə qoyun

fht_reorder (); // fht etməzdən əvvəl məlumatları yenidən sıralayın

fht_run (); // fht -də məlumatları emal edin

fht_mag_lin (); // fht çıxışını götürün

sei ();

üçün (int i = 5; i <40; i ++) {

myScreen.stroke (255, 255, 255);

myScreen.fill (255, 255, 255);

int drawHeight = xəritə (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]

Addım 21: Test edin

Test edin!
Test edin!

Kodun düzgün işlədiyini təsdiqləmək üçün bir onlayn ton generatoru (https://www.szynalski.com/tone-generator/) istifadə etdim. İşlədiyini təsdiqlədikdən sonra stetoskopun zəngi sinəsinə qədər basın, dərindən nəfəs alın və hansı tezliklərin olduğunu görün !!

Addım 22: Gələcək İş

** Qeyd: Mən kimyaçıyam, mühəndis və ya kompüter alimi deyiləm **. Dizaynda və kodda çox güman ki səhvlər və təkmilləşdirmələr olacaq. Deyilənə görə, çox faydalı və ucuz ola biləcək bir işin yaxşı bir başlanğıc olduğunu düşünürəm. Aşağıdakı güllələr etmək istədiyim gələcək təkmilləşdirmələrdir və ümid edirəm bəziləriniz də onu yaxşılaşdırmağa çalışırsınız!

· Cihazı mobil hala gətirin. CPU və ya digər mikrokontrolörlərlə geniş təcrübəm yoxdur, amma bütün FHT kitabxanasını və ya bəlkə də Bluetooth -u saxlamaq üçün kifayət qədər yaddaşa sahib olmalıyam.

· Bəzi statistik analiz hesablamalarını koda daxil edin. Məsələn, bir hırıltı 400 Hz -ə bərabər və ya daha çox əsas tezliyə malikdir və ən az 250 ms davam edir. Rhonchi, təxminən 200 Hz və ya daha az bir əsas tezlikdə meydana gəlir və ən az 250 ms davam edir. Bir çox digər ağciyər səsləri müəyyən edilir və sağlamlıq vəziyyətini göstərir (https://commongiant.github.io/iSonea-Physicians/assets/publications/7_ISN-charbonneau-Euro-resp-Jour-1995-1942-full.pdf). Düşünürəm ki, müəyyən bir dövrdən sonra FHT vasitəsilə tezlik qutularının siqnalını müqayisə etmək və sonra nə qədər mövcud olduğunu görmək üçün millis () funksiyasını işə salmaqla kodda yoxlanıla bilən bir şeydir və sonra müqayisə edir. FHT hesablamasının səs -küy səviyyəsinə. Əminəm ki, bu işlər edilə bilər!

Ümid edirəm ki, hamınız bu layihə ilə əyləndiniz və hər hansı bir sualınız varsa, şərh yazın və bacardığım qədər cavab verəcəyəm! Şərhləri görmək üçün səbirsizliklə gözləyirəm.

Tövsiyə: