Съдържание:

Спектрален стетоскоп за бързо преобразуване на Хартли: 22 стъпки
Спектрален стетоскоп за бързо преобразуване на Хартли: 22 стъпки

Видео: Спектрален стетоскоп за бързо преобразуване на Хартли: 22 стъпки

Видео: Спектрален стетоскоп за бързо преобразуване на Хартли: 22 стъпки
Видео: Recycled Prolonged FieldCare Podcast 84: Altitude Illness 2024, Юли
Anonim
Бърз спектрален стетоскоп с трансформация на Хартли
Бърз спектрален стетоскоп с трансформация на Хартли

В тази инструкция ще научите как да направите спектрален стетоскоп, използвайки бързата трансформация на Хартли. Това може да се използва за визуализиране на сърдечни и белодробни звуци.

Стъпка 1: Материали

1.8”LCD екран ($ 7.50 на Amazon)

Arduino Uno или еквивалент ($ 7,00 на Gearbest)

Електретен усилвател ($ 6,95 на Adafruit)

100 µF кондензатор ($ 0.79)

Тел и джъмпери ($ 4,00)

3,5 мм стерео жак (1,50 долара)

10kOhm потенциометър ($ 2,00)

Моментален превключвател ($ 1,50)

Стъпка 2: Инструменти

Поялник

Пистолет за горещо лепило

3D принтер … или приятел с 3D принтер (Възможно е да се направи и с картон)

Резачка за тел

Платка

Стъпка 3: 3D печат

Първият е да отпечатате 3D файловете.stl, приложени към тази стъпка. Отпечатах двата файла, използвайки следния материал/настройки:

Материал: PLA

Височина на слоя: 0,1 мм

Дебелина на стената/отгоре/отдолу: 0,8 мм

Температура на печат: 200⁰C

Температура на леглото: 60⁰C

Поддръжка активирана при 10%

Стъпка 4: Изградете верига

Използвайки компонентите в раздела материали, изградете веригата. Винаги първо поставям веригата на чиния, за да се уверя, че работи правилно, преди да докосна поялника.

Стъпка 5: LCD окабеляване

LCD окабеляване
LCD окабеляване

Използвайки фигурата, приложена към тази стъпка, запоявайте проводници към седем от осемте пина на LCD екрана. Тези проводници ще трябва да са с дължина около 3 фута, с изключение на земята и +5V щифтове (те трябва да са само 2-3 инча)

Стъпка 6: Окабеляване на микрофон/усилвател

Окабеляване на микрофон/усилвател
Окабеляване на микрофон/усилвател

Използвайки фигурата, прикрепена към тази стъпка, запоявайте три проводника към щифтовете +5V, заземяване и изход на микрофона/усилвателя Adafruit. Те трябва да са с дължина около 2-3 инча.

Стъпка 7: Моментално окабеляване на превключвателя

Свържете един 2-3-инчов проводник към всяка от двете пръчки на превключвателя за момент.

Стъпка 8: Окабеляване на потенциометъра

Използвайки фигурата в стъпка 6, запоявайте три проводника с дължина около 2-3 инча към трите уши на потенциометъра.

Стъпка 9: Окабеляване на жака за слушалки

Запояйте три проводника към пръстена, върха и втулките на жака за слушалки. Използвах жак от метроном, който вече беше свързан. Ако не знаете какво представляват пръстените, върховете и ръкавите, просто го потърсете в Google, има много добри изображения за свързване на стерео жакове.

Стъпка 10: Изход за микрофон/усилвател

След запояване на проводниците на микрофона/усилвателя, потенциометъра и жака за слушалки, запоявайте един проводник с дължина около три фута към "външния" проводник на усилвателя на микрофона. По -късно този проводник ще бъде свързан към щифта A0 на arduino.

Стъпка 11: Продължаване на изхода за микрофон/усилвател

Запояйте втори проводник към "изходния" проводник на микрофона/усилвателя. Този проводник трябва да бъде запоен към 100 microFarad кондензатор. Ако използвате електролитен кондензатор, уверете се, че положителната страна е свързана към този проводник.

Стъпка 12: Компоненти в кутията

Компоненти в кутията
Компоненти в кутията
Компоненти в кутията
Компоненти в кутията

След като всички проводници са запоени върху компонентите, поставете компонентите на съответните места, следвайки фигурите, приложени към тази стъпка. Използвах горещо лепило, за да закрепя жака за микрофон и слушалки на място.

Стъпка 13: Запояване в корпуса

След като всички компоненти са закрепени в кутията, запоявайте всички заземителни проводници заедно. Трябва да има един от LCD, един от микрофона/усилвателя и един от ръкава на жака за слушалки. Също така запоявайте +5V проводниците заедно и един проводник от моментния превключвател. Отново трябва да има един от LCD, един от микрофона/усилвателя и един от моментния превключвател.

Стъпка 14: +5V, GND Удължени проводници

Сега изрежете две парчета тел с дължина около 3 фута. Запоявайте единия към групата от заземени проводници, а другия - към отворения проводник на моментния превключвател.

Стъпка 15: Плъзнете дълги проводници през отвора на корпуса

Плъзнете дълги проводници през отвора на корпуса
Плъзнете дълги проводници през отвора на корпуса

Сега трябва да имате общо осем проводника с дължина около 3 фута. Поставете ги през незапълнения отвор в кутията. Вижте фигурата, приложена към тази стъпка

Стъпка 16: Термосвиване

След като запояването приключи, уверете се, че откритите проводници са покрити. Използвах термосвиваеми тръби, но електрическата лента също работи добре.

Стъпка 17: Запечатване на корпуса

Уплътнителен корпус
Уплътнителен корпус
Уплътнителен корпус
Уплътнителен корпус

Вземете половината от корпуса, съдържащ LCD екрана, и го плъзнете върху другата половина на корпуса, съдържащ останалите компоненти. Докато притискате двете части заедно, ги залепете горещо, за да закрепите кутията заедно.

Стъпка 18: Свържете се с Arduino

Осемте дълги останали проводника са свързани директно към съответните им щифтове Arduino, очертани в схемите на веригата. Уверете се, че всеки път, когато запоявате един от онези дълги 3 -футови проводници във веригата, поставяте парче лента на другия край, показвайки на кой щифт на Arduino отива!

Стъпка 19: Arduino IDE/библиотеки

Ще трябва да изтеглите Arduino IDE. За тази скица използвах три различни библиотеки: FHT.h, SPI.h и TFT.h. Ако не знаете как да изтеглите библиотеки на Arduino, моля, вижте https://www.arduino.cc/en/Guide/Libraries. Библиотеката на FHT.h е изтеглена от openmusiclabs.com. Другите две бяха изтеглени на GitHub.

Стъпка 20: Скица на Arduino

Кодът използва Fast Hartley Transform (FHT) за промяна на времевата област в честотна област. Това може да се направи и с помощта на Fast Fourier Transform (FFT), но FHT е много по -бърз. FFT и FHT са много фундаментални идеи при обработката на сигнали и са много забавни за научаване. Предлагам да прочетете сами, ако ви е интересно, вижте. Примерният код на FHT, който копирах от уебсайта на Open Music Labs, първоначално извеждаше амплитудата на всяка честотна лента като логаритмичен или децибелов изход. Промених това, за да извеждам честотните кутии в линейна скала. Това е така, защото линейната скала е по -добро визуално представяне на това как хората чуват звука. Цикълът for () в края е за изчертаване на амплитудата на всяка честотна лента на LCD екрана. Пълният спектър на FHT ще обхване всички честотни полета от i = 0 до i <128. Ще забележите, че моят цикъл for () е от i = 5 до i <40, това е така, защото честотите, важни за диагностициране на белодробни състояния, обикновено са между 150Hz и 3.5khz, реших да се кача до около 4kHz. Това може да се регулира, ако искате да покажете пълния честотен спектър.

[код]

// Код на цифров стетоскоп

// Библиотека за бързо преобразуване на Хартли, изтеглена от openmusiclabs

#define LIN_OUT 1 // настройте FHT да произвежда линеен изход

#define LOG_OUT 0 // изключване на логаритмичен изход на FHT

#define FHT_N 256 // FHT пробен номер

#include // включва FHT библиотека

#include // включва TFT библиотека

#include // включва SPI библиотека

#define cs 10 // задайте lcd cs щифт към arduino pin 10

#define dc 9 // задайте lcd dc щифт на arduino pin 9

#define rst 8 // задайте щифта за нулиране на LCD на arduino pin 8

TFT myScreen = TFT (cs, dc, rst); // декларира име на TFT екран

void setup () {

//Serial.begin(9600);// зададена честота на дискретизация

myScreen.begin (); // инициализира TFT екрана

myScreen.background (0, 0, 0); // задайте черен фон

ADCSRA = 0xe5; // настройте adc в режим на свободно движение

ADMUX = 0x40; // използвайте adc0

}

void loop () {

while (1) {// намалява трептенето 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) | m; // оформяме в int

k -= 0x0200; // формулираме в подписан int

k << = 6; // формира се в 16b подписан int

fht_input = k; // поставяме реални данни в контейнери

}

fht_window (); // прозорец на данните за по -добра честотна характеристика

fht_reorder (); // пренареждате данните преди да направите fht

fht_run (); // обработваме данните във fht

fht_mag_lin (); // вземем изхода на fht

sei ();

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);

}

}

[/код]

Стъпка 21: Тествайте го

Тествайте го!
Тествайте го!

Използвах онлайн генератор на тонове (https://www.szynalski.com/tone-generator/), за да потвърдя, че кодът работи правилно. След като потвърдите, че работи, натиснете камбаната на стетоскопа до гърдите си, поемете дълбоко въздух и вижте какви честоти има !!

Стъпка 22: Бъдеща работа

** Забележка: Аз съм химик, а не инженер или компютърен учен **. Вероятно ще има грешки и подобрения в дизайна и кода. Като се има предвид това, мисля, че това е добро начало за нещо, което може да се окаже много полезно и евтино. Следните точки са бъдещи подобрения, които бих искал да направя и се надявам някои от вас също да се опитат да го подобрят!

· Направете устройството мобилно. Нямам богат опит с процесори или други микроконтролери, но ще трябва да има достатъчно памет за съхраняване на цялата библиотека FHT или евентуално Bluetooth.

· Въведете някои изчисления за статистически анализ в кода. Например, обикновено хрипове имат основна честота, равна или по -голяма от 400 Hz, и продължават най -малко 250 ms. Рончи се срещат при основна честота от около 200 Hz или по -малко и продължават поне 250 ms. Много други белодробни звуци са дефинирани и са показателни за здравословни състояния (https://commongiant.github.io/iSonea-Physicians/assets/publications/7_ISN-charbonneau-Euro-resp-Jour-1995-1942-full.pdf). Мисля, че това е нещо, което може да се провери в кода, като се сравнява сигналът на честотните бинове след определен брой цикли през FHT и след това се изпълнява функцията millis (), за да се види колко дълго е присъствал, след което се сравнява до нивото на шума при изчислението на FHT. Сигурен съм, че тези неща могат да се направят!

Надявам се, че всички сте се забавлявали с този проект и ако имате въпроси, моля, коментирайте и аз ще отговоря възможно най -скоро! Очаквам с нетърпение коментарите.

Препоръчано: