Мазмұны:

Жылдам Хартли түрлендіретін спектрлік стетоскоп: 22 қадам
Жылдам Хартли түрлендіретін спектрлік стетоскоп: 22 қадам

Бейне: Жылдам Хартли түрлендіретін спектрлік стетоскоп: 22 қадам

Бейне: Жылдам Хартли түрлендіретін спектрлік стетоскоп: 22 қадам
Бейне: Санау жүйелері. Информатика ҰБТ/ЕНТ. Ондық, Екілік, Сегіздік, Он алтылық санау жүйелерімен танысамыз 2024, Шілде
Anonim
Жылдам Хартли түрлендіретін спектралды стетоскоп
Жылдам Хартли түрлендіретін спектралды стетоскоп

Бұл нұсқаулықта сіз жылдам Хартли трансформациясын қолдана отырып, спектрлік стетоскоп жасауды үйренесіз. Бұл жүрек пен өкпе дыбыстарын елестету үшін қолданылуы мүмкін.

1 -қадам: материалдар

1,8 дюймдік LCD экран (Amazon -да $ 7.50)

Arduino Uno немесе оған тең (Gearbest -те 7,00 доллар)

Электр күшейткіші (Adafruit -те 6,95 доллар)

100 мкФ конденсатор ($ 0,79)

Сымдар мен секіргіштер ($ 4.00)

3,5 мм стерео ұясы (1,50 доллар)

10 кОм потенциометр ($ 2.00)

Лездік қосқыш ($ 1.50)

2 -қадам: Құралдар

Пісіру темірі

Ыстық желім мылтығы

3D принтері… немесе 3D принтері бар досы (картоннан да жасауға болады)

Сым кескіш

Нан тақтасы

3 -қадам: 3D басып шығару

Біріншісі - осы қадамға бекітілген.stl файлдарын 3D басып шығару. Мен екі материалды келесі материалды/параметрлерді пайдаланып басып шығардым:

Материал: PLA

Қабат биіктігі: 0,1 мм

Қабырға/жоғарғы/төменгі қалыңдығы: 0,8 мм

Басып шығару температурасы: 200⁰С

Төсек температурасы: 60⁰С

Қолдау @ 10% қосылды

4 -қадам: схеманы құру

Материалдар бөліміндегі компоненттерді қолдана отырып, схеманы құрыңыз. Мен дәнекерлегішті ұстамас бұрын оның дұрыс жұмыс істейтініне көз жеткізу үшін тізбекті әрқашан тақтаға біріктіремін.

5 -қадам: СКД сымы

СКД сымы
СКД сымы

Осы қадамға бекітілген суретті қолдана отырып, СКД экранындағы сегіз түйреуіштің жетеуіне сымдарды жалғаңыз. Бұл сымдардың ұзындығы шамамен 3 фут болуы керек, тек жер мен +5В түйреуіштерді қоспағанда (бұл тек 2-3 дюйм болуы керек)

6 -қадам: микрофон/күшейткіш сымдары

Микрофон/күшейткіш сымдары
Микрофон/күшейткіш сымдары

Осы қадамға бекітілген суретті қолдана отырып, Adafruit микрофонындағы/күшейткіштегі +5В, жерге және шығысқа үш сымды дәнекерлеңіз. Олардың ұзындығы шамамен 2-3 дюйм болуы керек.

7 -қадам: Лездік қосқыш сымдары

Лездік қосқыштағы екі ілмектің әрқайсысына 2-3 дюймдік сымды жалғаңыз.

8 -қадам: Потенциометрлік сымдар

6-қадамдағы фигураны қолдана отырып, ұзындығы 2-3 дюйм болатын үш сымды потенциометрдің үш ұшына дәнекерлеңіз.

9 -қадам: Құлаққап ұясының сымы

Құлаққап ұяшығының сақинасына, ұшына және гильзасына үш сымды дәнекерлеңіз. Мен метрономнан ұяшықты қолдандым, ол сыммен қосылған. Егер сіз сақина, ұшы мен гильзасы не екенін білмесеңіз, стерео ұяшықтарды сымға қосуға қатысты көптеген жақсы суреттер бар.

10 -қадам: Микрофон/күшейткіштің шығысы

Сымдарды микрофонға/күшейткішке, потенциометрге және құлақаспап ұясына дәнекерлегеннен кейін, ұзындығы шамамен үш фут болатын бір сымды микрофон күшейткішінің «шығатын» сымына дәнекерлеңіз. Бұл сым кейінірек arduino A0 түйреуішіне қосылады.

11 -қадам: Микрофон/күшейткіштің шығуы жалғасуда

Микрофонның/күшейткіштің «шығатын» сымына екінші сымды дәнекерлеңіз. Бұл сымды 100 микрофарадтық конденсаторға дәнекерлеу қажет. Егер сіз электролиттік конденсаторды қолдансаңыз, оң жақ осы сымға қосылғанына көз жеткізіңіз.

12 -қадам: Қоршаудағы компоненттер

Қораптағы компоненттер
Қораптағы компоненттер
Қораптағы компоненттер
Қораптағы компоненттер

Барлық сымдар компоненттерге дәнекерленгеннен кейін, осы қадамға бекітілген суреттер бойынша компоненттерді тиісті орындарға қойыңыз. Микрофон мен құлаққап ұясын бекіту үшін ыстық желімді қолдандым.

13-қадам: қоршау-дәнекерлеу

Барлық компоненттер қоршауға бекітілгеннен кейін, барлық жерге қосылған сымдарды дәнекерлеңіз. СКД -дан біреуі микрофоннан/амперден және біреуі құлаққап ұясының жеңінен болуы керек. Сонымен қатар +5В сымдарын және бір сымнан бір сымнан дәнекерлеңіз. Тағы да СКД -дан, микрофоннан/күшейткіштен және бір сәттік қосқышта біреу болуы керек.

14 -қадам: +5V, GND кеңейтілген сымдар

Енді ұзындығы шамамен 3 фут болатын екі сымды кесіңіз. Бірін жер сымдарының кластеріне дәнекерлеңіз, екіншісін ашық сымға лездік қосқышта дәнекерлеңіз.

15 -қадам: Ұзын сымдарды қоршау тесігі арқылы сырғытыңыз

Ұзын сымдарды қоршау тесігі арқылы сырғытыңыз
Ұзын сымдарды қоршау тесігі арқылы сырғытыңыз

Енді сізде ұзындығы шамамен 3 фут болатын сегіз сым болуы керек. Оларды корпустағы толтырылмаған тесік арқылы орналастырыңыз. Бұл қадамға бекітілген суретті қараңыз

16 -қадам: Жылуды азайтыңыз

Барлық дәнекерлеу аяқталғаннан кейін, ашық сымдардың жабылғанына көз жеткізіңіз. Мен жылуды төмендететін түтікті қолдандым, бірақ электрлік таспа да жақсы жұмыс істейді.

17 -қадам: тығыздағыш қоршау

Тығыздау қорабы
Тығыздау қорабы
Тығыздау қорабы
Тығыздау қорабы

СКД экраны бар корпустың жартысын алыңыз және басқа компоненттері бар корпустың екінші жартысына сырғытыңыз. Екі бөлікті бір -біріне итеріп жатқанда, қоршауды бекіту үшін ыстық желіммен бекітіңіз.

18 -қадам: Arduino -ға қосылыңыз

Қалған сегіз ұзын сымдар тізбек схемасында көрсетілген өздерінің тиісті Arduino түйреуіштеріне тікелей қосылады. Ұзындығы 3 фут болатын сымдардың бірін тізбекке дәнекерлеген сайын, оның екінші шетіне таспаның бір бөлігін қойып, Arduino түйреуішінің не керектігін көрсетіңіз!

19 -қадам: Arduino IDE/кітапханалары

Сізге Arduino IDE жүктеу қажет болады. Бұл эскиз үшін мен үш түрлі кітапхананы қолдандым: FHT.h, SPI.h және TFT.h. Егер сіз Arduino кітапханаларын қалай жүктеу керектігін білмесеңіз, https://www.arduino.cc/kz/Guide/Libraries қараңыз. FHT.h кітапханасы openmusiclabs.com сайтынан жүктелді. Қалған екеуі GitHub -қа жүктелді.

20 -қадам: Ардуино эскизі

Уақыт доменін жиілік доменіне өзгерту үшін код Fast Hartley Transform (FHT) қолданады. Мұны Fast Fourier Transform (FFT) көмегімен де жасауға болады, бірақ FHT әлдеқайда жылдам. FFT және FHT - сигналдарды өңдеудегі өте іргелі идеялар және оларды білу өте қызықты. Мен сізге өзім оқуды ұсынамын, егер сізді қызықтырса қараңыз. Мен Open Music Labs веб -сайтынан көшірген FHT мысал коды бастапқыда әр жиілік қалтасының амплитудасын логарифмдік немесе децибельдік шығыс ретінде шығарды. Мен мұны жиілік контейнерлерін сызықтық масштабта шығару үшін өзгерттім. Бұл сызықтық масштаб - бұл адамдардың дыбысты қалай еститінін жақсы бейнелеу. Соңындағы for () циклы СКД экранында әр жиілік қалтасының амплитудасын салуға арналған. Толық FHT спектрі i = 0 -ден i <128 -ге дейінгі барлық жиіліктерді қамтиды. Менің for () циклі i = 5 -тен i <40 -қа дейін болатынын байқайсыз, себебі өкпе жағдайын диагностикалау үшін маңызды жиіліктер әдетте 150 Гц пен 3.5 Гц аралығында болады, мен шамамен 4 кГц -ке дейін көтеруді шештім. Толық жиілік спектрін көрсету керек болса, оны реттеуге болады.

[код]

// Сандық стетоскоптың коды

// Fast Hartley Transform кітапханасы openmusiclabs -тен жүктелген

#define LIN_OUT 1 // желілік шығыс шығару үшін FHT орнатыңыз

#define LOG_OUT 0 // FHT логарифмдік шығысын өшіру

#FHT_N 256 // FHT үлгі нөмірін анықтаңыз

#include // FHT кітапханасын қосады

#include // TFT кітапханасын қосады

#include // SPI кітапханасын қосады

#desine cs 10 // lcd cs істікшесін arduino pin 10 -ге орнатыңыз

#decine dc 9 // lcd dc істікшесін arduino pin 9 -ге орнатыңыз

#destine rst 8 // lcd қалпына келтіру түйреуішін arduino pin 8 -ге орнатыңыз

TFT myScreen = TFT (cs, dc, rst); // TFT экранының атын жариялау

жарамсыз орнату () {

//Serial.begin(9600);// іріктеу жиілігін орнатыңыз

myScreen.begin (); // TFT экранын инициализациялау

myScreen.background (0, 0, 0); // фонды қара етіп орнатыңыз

ADCSRA = 0xe5; // adc еркін жұмыс режиміне орнатыңыз

ADMUX = 0x40; // adc0 пайдаланыңыз

}

void loop () {

while (1) {// jitter cli () кішірейтеді; // UDRE үзілуі arduino1.0 -де осылайша баяулайды

for (int i = 0; i <FHT_N; i ++) {// 256 үлгіні сақтау

while (! (ADCSRA & 0x10)); // adc дайын болғанша күтіңіз

ADCSRA = 0xf5; // adc байтын қайта іске қосыңыз

m = ADCL; // ADC деректер байтын алу

j = ADCH; int k = (j << 8) | м; // int түріне айналдырыңыз

k -= 0x0200; // қол қойылған int түрінде

k << = 6; // формасы 16b қол қойылған int

fht_input = k; // нақты деректерді жәшіктерге салыңыз

}

fht_window (); // жиілікке жақсы жауап беру үшін деректерді терезеге шығарыңыз

fht_reorder (); // fht жасамас бұрын деректерді қайта реттеңіз

fht_run (); // fht ішіндегі деректерді өңдеу

fht_mag_lin (); // fht нәтижесін алыңыз

sei ();

үшін (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);

}

}

[/код]

21 -қадам: Оны тексеріңіз

Оны сынап көріңіз!
Оны сынап көріңіз!

Мен кодтың дұрыс жұмыс істеуін растау үшін онлайн дыбыс генераторын (https://www.szynalski.com/tone-generator/) қолдандым. Оның жұмыс істегенін растағаннан кейін, стетоскоптың қоңырауын кеудеңізге дейін басыңыз, терең тыныс алыңыз және қандай жиіліктер бар екенін көріңіз !!

22 -қадам: Болашақ жұмыс

** Ескерту: Мен химикпін, инженер немесе информатик емеспін **. Дизайн мен кодта қателер мен жақсартулар болуы мүмкін. Айтпақшы, бұл өте пайдалы және арзан болуы мүмкін нәрсенің жақсы бастамасы деп ойлаймын. Келесі оқулықтар мен жасағым келетін болашақ жақсартулар болып табылады және мен сендердің кейбіреулерің оны жақсартуға тырысады деп сенемін!

· Құрылғыны мобильді етіп жасаңыз. Менде процессорлармен немесе басқа микроконтроллерлермен жұмыс тәжірибесі жоқ, бірақ барлық FHT кітапханасын немесе Bluetooth -ды сақтау үшін жеткілікті жады болуы керек.

· Кодқа статистикалық талдаудың кейбір есептеулерін енгізіңіз. Мысалы, әдетте, ысқырықтың негізгі жиілігі 400 Гц -ге тең немесе одан жоғары және кемінде 250 мс созылады. Рончи шамамен 200 Гц немесе одан аз негізгі жиілікте пайда болады және кемінде 250 мс созылады. Көптеген басқа өкпе дыбыстары анықталған және денсаулық жағдайын көрсетеді (https://commongiant.github.io/iSonea-Physicians/assets/publications/7_ISN-charbonneau-Euro-resp-Jour-1995-1942-full.pdf). Менің ойымша, бұл кодта FHT арқылы циклдердің белгілі бір санынан кейін жиілік контейнерлерінің сигналын салыстыру арқылы тексерілуі мүмкін, содан кейін миллис () функциясын іске қосып, оның қанша уақыт болғанын көруге болады, содан кейін оны салыстырады. FHT есептеуінің шу деңгейіне дейін. Мен бұл нәрселерді жасауға болатынына сенімдімін!

Барлығыңызға бұл жоба ұнады деп үміттенемін, егер сізде сұрақтар болса, түсініктеме беріңіз, мен мүмкіндігінше тезірек жауап беремін! Пікірлерді күтемін.

Ұсынылған: