Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: Konstruktion
- Trin 2: Kørsel af programmet - Testning
- Trin 3: Logning af reelle data
- Trin 4: Begrænsninger i valget af ADC -input
- Trin 5: Konvertering af.bin -filer til.csv -filer
- Trin 6: Kommentarer til koden og udvidelser
![Log højhastigheds -EKG eller andre data, kontinuerligt i over en måned: 6 trin Log højhastigheds -EKG eller andre data, kontinuerligt i over en måned: 6 trin](https://i.howwhatproduce.com/images/010/image-27281-j.webp)
Video: Log højhastigheds -EKG eller andre data, kontinuerligt i over en måned: 6 trin
![Video: Log højhastigheds -EKG eller andre data, kontinuerligt i over en måned: 6 trin Video: Log højhastigheds -EKG eller andre data, kontinuerligt i over en måned: 6 trin](https://i.ytimg.com/vi/WEMmrmH7Cfs/hqdefault.jpg)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
![Log højhastigheds -EKG eller andre data, kontinuerligt i over en måned Log højhastigheds -EKG eller andre data, kontinuerligt i over en måned](https://i.howwhatproduce.com/images/010/image-27281-1-j.webp)
Dette projekt blev udviklet til at støtte et universitetsmedicinsk forskerhold, der havde brug for en bærbar, der kunne logge 2 x EKG -signaler ved 1000 prøver/sek hver (2K prøver/sek i alt) kontinuerligt i 30 dage for at detektere arytmier. Projektet, der præsenteres her, omfatter fjernbetjening og overvågning af logningen. Fjernbetjeningen er via menuer præsenteret på en seriel terminal, enten på en computer eller mobiltelefon. Dette projekt dækker ikke den EKG -måling eller emballage eller batteri, der kræves til den endelige bærbare.
Denne version med høj hastighed/lang varighed bruger Teensy 3.2, Adafruit Micro-SD breakout-modul, et kvalitets 16G SDHC klasse 10 SD-kort til at logge dataene og et Bluetooth-kommunikationsmodul til kontrol og overvågning. En mindre udviklet og langsommere UNO/Mega2560 -version af dette projekt er også tilgængelig. Mens dette projekt bruger et Bluetooth -kommunikationsmodul til kontrol og overvågning af logningen, kan du også bruge WiFi- eller BLE -moduler.
Denne version, der er baseret på Teensy 3.2, er i stand til meget højere samplingshastigheder end UNO/Mega2560 -versionen. Ved hjælp af denne kode kan Teensy 3.2 prøve og logge to ADC -prøver på> 30Khz med hardware i gennemsnit over 4 prøver og tilfredsstiller så let de 1000 prøver/sek. Krav ovenfor. Koden understøtter at gemme 100. Bin -filer på 128K hver. Ved 30Khz, der dækker 29 timer 30 minutter. Ved 1000 prøver/sek dækker det 37 dage. Koden kan let udvides til at håndtere mere end 100 filer, så forlængelsen af kørslen forlænges. I slutningen af løbet har du> 10Gig data,.bin, filer og en.met -fil med metadata, der beskriver kørslen og resultaterne. Den medfølgende SDtoCSV.jar (kildekode SDtoCSV_src.zip) kan bruges til at konvertere.bin -filerne til.csv -filer på din computer til videre behandling. De resulterende data er> 60Gig. UNO/Mega2560 -versionen har.bin til.csv -konvertering inkluderet i Arduino -skitsen, men i betragtning af mængden af data, der er logget af Teensy -versionen, er det ikke en effektiv måde at foretage konverteringen på.
Forbrugsvarer
Teensy 3.2 af PJRC
Adafruit MicroSD card breakout board+ eller lignende.
16G SDHC klasse 10 MicroSD -kort af god kvalitet f.eks. SanDisk.
5V USB -forsyning
En LED med en 470R resistor i serie.
2 x 100R modstande (giver beskyttelse mod skader på grund af Tx/Rx ledningsfejl)
Bluetooth Mate Silver ELLER et af modulerne beskrevet på Arduino UNO/Mega Starter, styret af Android/pfodApp
Trin 1: Konstruktion
![Konstruktion Konstruktion](https://i.howwhatproduce.com/images/010/image-27281-2-j.webp)
Download og installer Arduino IDE V1.8.9+ fra https://arduino.cc/en/Main/Software. Denne webside har links til forskellige operativsystemer og et link til GettingStarted (https://arduino.cc/en/Guide/HomePage).
Download og installer Teensyduino (Teensy Support til Arduino IDE). BEMÆRK omhyggeligt instruktionerne for første brug.
Vælg Teensy 3.2 som tavlen, og kontroller, at BLINK -eksempelprogrammet indlæses og kører.
Download og installer følgende biblioteker:- millisDelay og SdFat (Et lokalt øjebliksbillede af SdFat-biblioteket, der bruges til disse tests, er her.) Og pfodParser.zip (for klassen pfodBufferedStream og pfodNonBlockingInput)
Download bibliotekets zip -filer, og brug derefter Arduino IDE → Skitse → Inkluder bibliotek → Tilføj. ZIP -biblioteksmenu til at installere bibliotekerne fra zip -filerne.
Pak Teensy32AnalogLogger.zip -filen ud til din Arduino sketches -bibliotek, og programmer Teensy 3.2 -kortet med Teensy32AnalogLogger.ino (Version 0.01)
Tilslut Teensy 3.2, Bluetooth -modulet og SD -kortmodulet som vist ovenfor (pdf -version)
Trin 2: Kørsel af programmet - Testning
Formater først dit SD -kort ved hjælp af
SD -kortet skal være tomt for at kunne logge.
Til første test behøver du ikke at tilslutte kommunikationsmodulet, bare tilslut Teensy 3.2 + SD -modulet (med et tomt kort installeret) til Arduino IDE via USB -seriekablet. Som forudsat anvender Teensy32AnalogLogger.ino -skitsen USB -forbindelsen til kontrol og overvågning. Se trin Logning af reelle data nedenfor for brug af en kommunikationsenhed til kontrol og overvågning.
Rediger toppen af Teensy32AnalogLogger.ino -skitsen for at indstille COM_SERIAL til Serial, til output til Teensy USB -forbindelsen.
#define COM_SERIAL Serial
Upload derefter skitsen til Teensy 3.2
Åbn Arduino IDE Serial Monitor ved 115200 baud (med både NL & CR sæt). Efter et par sekunder viser Teensy 3.2 en menu med kommandoer
Ver: 0.01 indtast en af følgende kommandoer:? - nuværende status og metadatai - initialiser filerl - listefiler>
Det ? cmd viser detaljer om de aktuelle indstillinger. (Se toppen af Teensy32AnalogLogger.ino for at ændre disse indstillinger) Cmds skal afsluttes med et NL eller CR eller begge dele.
0: 00: 00.000 af 720: 00: 00.000
Prøvepinde: 16 17 Byte-rækkefølge: Little-Endian ADC-bits: 10 ADC-prøvegennemsnit er over: 4 Prøvehastighed: 1000,00 Prøveinterval: 1000uS Prøver pr. Blok: 127 Tid til at udfylde blok: 127000uS Tid til at udfylde en fil: 9:01: 52.000 Tid til at udfylde ALLE filer: 894: 04: 48.000 Maks. SD -latenstid (inkluderer fillukning/åbning): 0uS Maks. Fillukning/åben latenstid: 0uS Antal bufferblokke: 28 Tid til at fylde ALLE blokbuffere: 3556000uS Maks. Antal buffere gemt i opkald til storeSampleBuffers (): 0 Ubesvarede timere i alt: 0 Samlede manglede prøver indtil videre: 0 Skrevne blokke i alt: 0 Samlede skriftlige prøver: 0 dækning: 0: 00: 00.000 Aktuelle fil:
I dette tilfælde er den nuværende logningstid 0 af en anmodet 720 timer (30 dage), prøveudtagning D16/A2 og D17/A3 (se nedenfor for begrænsninger af valget af ADC -input nedenfor) 1000 gange i sekundet. Den maksimale driftstid kan være op til 894 timer (37,25 dage). Hovedløkken () kan optages i op til 3,5 sekunder (tid til at fylde ALLE blokbuffere), før alle tilgængelige buffere fyldes, og prøver begynder at gå tabt. Buffere gemt osv. Opdateres efterhånden som kørslen skrider frem.
Indsæt et tomt SD -kort, brug 'i' cmd'en til at initialisere de 99 filer, der bruges til at gemme dataene. Forinitialisering af dem her reducerer tidsforsinkelsen ved skift fra en fil til den næste og muliggør hurtigere sampling.
Initialiserer 99 filer
Oprettelse af ny fil: log00.bin Forløbet tid: 368mS Oprettelse af ny fil: log01.bin Forløbet tid: 520mS… Oprettelse af ny fil: log98.bin Forløbet tid: 15660mS Oprettelse af ny fil: log99.bin Forløbet tid: 15812mS
Du kan derefter bruge r cmd til at starte en logningskørsel. Kørslen vil i den ønskede tid eller indtil s cmd bruges til at stoppe den. Du kan også bruge? cmd, mens du logger for at få opdaterede tidspunkter og tællinger. Her er et kort løb stoppet tidligt med s cmd.
LOGGING DATA ….
Ver: 0.01 indtast en af følgende kommandoer:? - nuværende status og metadata s - stop datalogning
LOGGING DATA … Check med? kommando
Forløbet løbetid: 0: 00: 10.000 af 720: 00: 00.000 Forløbet løbetid: 0: 00: 20.000 af 720: 00: 00.000…
Stop med at logge og fjerne ubrugte filer.
… Fjernelse af ubrugt fil: log98.bin Fjernelse af ubrugt fil: log99.bin
0: 01: 04.976 af 720: 00: 00.000
Prøvepinde: 16 17 Byte-rækkefølge: Little-Endian ADC-bits: 10 ADC-prøvegennemsnit er over: 4 Prøvehastighed: 1000,00 Prøveinterval: 1000uS Prøver pr. Blok: 127 Tid til at udfylde blok: 127000uS Tid til at udfylde en fil: 9:01: 52.000 Tid til at udfylde ALLE filer: 894: 04: 48.000 Maks. SD -latenstid (inkluderer fillukning/åbning): 204uS Maks. Fillukning/åbningstid: 0uS Antal bufferblokke: 28 Tid til at fylde ALLE blokbuffere: 3556000uS Maks. Antal buffere gemt i opkald til storeSampleBuffers (): 1 Ubesvarede timere i alt: 0 Samlede manglede prøver hidtil: 0 Samlet antal blokke skrevet: 511 Samlet antal prøver: 64832 dækning: 0: 01: 04.832 Nuværende fil: log00.bin
ls:
2000-01-01 01:00:00 261632 log00.bin 2000-01-01 01:00:00 240 log.met
DATALOGGNING FULDFØRT!
Ver: 0.01 indtast en af følgende kommandoer:? - nuværende status og metadata ** r - optag ADC -data ** ikke tilgængelige. Data findes allerede ** i - initialiser filer ** ikke tilgængelige. Data eksisterer allerede l - listefiler
DATA ER ALLE LOGGET, tjek med?
LED display
Lysdioden, der er tilsluttet D3 (med D2, der giver GND -forbindelsen), tændes konstant, hvis der mangler en prøve, og blinker, hvis der er en fejl. Skitsen forsøger at fortsætte efter fejl, men det kan ikke lykkes.
Trin 3: Logning af reelle data
Når man logger rigtige data over lange varigheder, er det mere bekvemt at tilslutte et kommunikationsmodul til D0/D1 -benene og styre og overvåge logningen eksternt. Her blev et Bluetooth Mate Silver -modul brugt med sine standardindstillinger, 115200 baud, ingen hardware håndtryk (RTC, CTS), pinkode 1234.
Bemærk: Når der tilføres strøm til Mate Silver -modulet, går det over i en konfigurationstilstand, der blinker hurtigt rødt LED i 60 sekunder. I løbet af denne tid kan du sende $$$ via den serielle forbindelse til modulet for at konfigurere det, men du kan ikke forbinde modulet. Når den røde lysdiode blinker langsomt, accepterer bluetooth -modulet forbindelser.
Skift COM_SERIAL -definitionen i Teensy32AnalogLogger.ino til hardware seriel (D0/D1) forbindelse, Serial1
#define COM_SERIAL Serial1
Efter parring med computeren blev der oprettet en ny COM -port på computeren, og CoolTerm kan bruges til at oprette forbindelse og kontrollere og overvåge logning. Andre serielt forbundne kommunikationsmoduler kan også bruges, såsom WiFi eller BLE, se Arduino UNO/Mega Starter, styret af Android/pfodApp for detaljer.
Du kan også styre og overvåge logningen fra din Android -mobil ved hjælp af en bluetooth terminal -app som f.eks. Bluetooth Terminal -app, eller ved hjælp af WiFi- og TCP -terminalapp, f.eks. TCP Telnet Terminal Pro, eller en Uart to BLE -mdoule og en BLE -terminalapp som f.eks. nRF UART V2
Trin 4: Begrænsninger i valget af ADC -input
![Begrænsninger for valget af ADC -input Begrænsninger for valget af ADC -input](https://i.howwhatproduce.com/images/010/image-27281-3-j.webp)
Teensy 3.2 har to separate ADC-hardwaremoduler, ADC_0 og ADC_1, i sin mikroprocessor, så den kan prøve to indgange på samme tid. Det har også en indbygget hardware -gennemsnit, der tager flere ADC -prøver og gennemsnit dem, før resultatet vendes.
Der er begrænsninger for, hvilke input der kan tilsluttes ADC_0, ADC_1. Teensy3_1_AnalogCard.png-billedet (fra https://forum.pjrc.com/threads/25532-ADC-library-update-now-with-support-for-Tenens-3-1), inkluderet i Teensy32AnalogLogger.zip-filen, detaljer, hvilke ben der kan tilsluttes hvilken ADC.
Sammenfattende: -For Single Ended Reads ie +Volt refereret til GND ADC_0 kan læse A0 til A9, A10, A11, A12, A14 ADC_1 kan læse A2, A3, A10, A13, A15 til A20 Hvis du vælger en pin, som ADC kan ikke læse det returnerer 0 (altid)
Dette projekt bruger A2, A3, som hver kan tilgås via ADC_0 eller ADC_1.
Trin 5: Konvertering af.bin -filer til.csv -filer
Teensy32AnalogLogger.ino gemmer prøverne som binære i logxx.bin -filer, dvs. log00.bin til log99.bin. Teensy32AnalogLogger.ino gemmer også en log.met -fil med metadata om kørslen.
Du kan bruge SDtoCSV.jar (kildekode SDtoCSV_src.zip) til at konvertere.bin -filerne til.csv til videre behandling. Kopier filerne fra SD -kortet til din computers harddisk med mindst 70Gig ledig plads, og kopier SDtoCSV.jar til det samme bibliotek. Åbn et kommandovindue i det bibliotek og kør
java -jar SDtoCSV.jar log
Hvis din computer ikke har Java -installation, skal du installere den fra www.java.com
SDtoCSV behandler log.met -filen og derefter hver af de tilgængelige logxx.bin -filer i biblioteket og sender en.csv -fil for hver.bin.. Csv -filen har eksempelsekvensnummer efterfulgt af de to aflæsninger.
En prøvekonsoloutput til en 2 adc -læsning, der er udtaget 30303 gange/sek, er vist her, output.txt. Det illustrerer, hvordan ubesvarede prøver rapporteres. (Ved at fordoble antallet af buffere i den endelige skitse fikserede vi disse ubesvarede prøver)
SD_Logning til CSV -konvertering. Kontroller SDtoCSV.log for fremskridt og fejlmeddelelser. Behandlingslog00 Behandlet 256000 blokke Behandler log01 Behandlet 256000 blokke… Forarbejdningslog25 Behandlet 256000 blokke Behandlingslog26 Behandlet 256000 blokke Behandlingslog27 Behandlet 256000 blokke Ubesvarede prøver: 2715 Behandlingslog28 Behandlet 256000 blokke… Behandlingslog29 Behandlet 256000 blokke… Behandlingslog47 Behandlet 256000 blokke Behandlingslog48 Behandlet 35935 blokke --- Færdig behandling
En fyldigere logfil, SDtoCSV.log, tilføjes ved hver kørsel af SDtoCSV. Det inkluderer metadataoutput og eventuelle fejlmeddelelser. Her er tællingen: 254 tællingen af de data, der er gemt i den blok, dvs. 127 prøver x 2 adc -aflæsninger pr. Blok. Den savnede prøve er antallet af ubesvarede læsepar, dvs. linjer i.csv -output.
=== Logfil til SD_Logning til CSV -konvertering lørdag 13. juli 13:19:51 AEST 2019 For at se statusbeskeder på konsollen skal du bruge java -jar SDtoCSV.jar Basisfilnavn 'log' Metadata Version: 0 (Little Endian) sampleInterval uS: 33 adcBits: 10 adcAvgs: 4 pin Antal: 2 Pins: 16, 17 prøverPerBlock: 127 noBufferBlocks: 28 varighed mS: 51649820 anmodet runTime mS: 106216704 maxBuffersUsed: 32 Advarsel: Overstiger antallet af tilgængelige buffere (28). Nogle prøver mangler muligvis. maxLatency uS: 221476 Advarsel: Overskrider den tid, som bufferblokke giver (117348uS). Nogle prøver mangler. maxFileOpenTime uS: 20998 savnetTimere: 0 savnetSamplesTotal: 2715 totalBlocks Skrevet: 12323935 totalSamplesWritten: 1565139665 Behandler log00.bin Behandlede 256000 blokke Behandler log01.bin Behandlede 256000 blokke… Behandler log26.bin Behandlede 256000 blokke Behandler log27.bin !!! Blok: 57696 tæller: 254 savnede prøver: 2339 !!! Blok: 57697 tæller: 254 savnede prøver: 376 behandlede 256000 blokke --- i alt ubesvarede prøver: 2715
Behandler log28.bin Behandlet 256000 blokke
… Behandler log47.bin Behandlede 256000 blokke Behandler log48.bin Behandlede 35935 blokke --- Færdig behandling
Et eksempel på log00.csv -outputfil er
SampleCounter (pr. 33uS), Pin 16, Pin 170, 248, 205 1, 273, 195 2, 228, 337 3, 360, 302 4, 355, 369 5, 220, 281…
Prøvetælleren stiger fra fil til fil, så den kan bruges som et tidsstempel. Hvis der mangler prøver, øges prøvetælleren med det ubesvarede antal, før den næste linje udsendes, så tælleren/tidsstemplet forbliver nøjagtigt for de registrerede prøver.
Trin 6: Kommentarer til koden og udvidelser
Teensy32AnalogLogger er en stærkt modificeret version af Bill Greimans AnalogBinLogger -eksempel i hans SdFat Arduino -bibliotek. Her er biblioteket blevet omskrevet til at køre på Teensy 3.2.
Teensy32AnalogLogger bruger timer0 til at indstille prøveintervallet. Afbrydelsesbehandleren for timer0 starter de to ADC -konverteringer. En afbrudshåndterer til det andet ADC -modul kaldes løbende, indtil de begge er færdige. Normalt afsluttes det første ADC -modul, der startes, ADC_0 før det andet, så afbryderhandleren kaldes kun én gang. ADC_1 -afbryderhandleren gemmer prøverne i en databuffer.
I hovedsløjfen () gemmer storeSampleBuffer () alle fulde buffere på SD -kortet og genbruger bufferne til den tomme bufferkø. Den store mængde RAM, der er tilgængelig på Teensy 3.2, betyder, at et stort antal buffere kan tildeles, og derfor behøver storeSampleBuffer () ikke at blive ringet op ofte. Dette efterlader tid til hovedsløjfen () til at udføre andet arbejde, f.eks. Proceskommandoer og sende output.
Udvidelser
Selvom dette projekt fungerer som en højhastighedsdatalogger, skal det for en komplet bærbar stadig pakkes og et batterisystem og EKG -sensorer leveres. Samt at der er nogle udvidelser, der skal overvejes.
- Tilføj realtidskontrol og overvågning af den samplede bølgeform via pfodApp ved hjælp af pfodApps plottefunktion til at vise øjebliksbilleder af bølgeformen
- Forlæng filnumre forbi 99 for længere prøveudtagningskørsler
- Prøve mere end 2 input. Da Teensy 3.2 har to ADC -moduler, kan du ændre koden for at tilføje ekstra input to og to for at maksimere samplingshastigheden.
- Tilføj batteriovervågning for at spore batteriets opladning. Teensy 3.2 bruger cirka 1100 mAhrs over 24 timer, inklusive bluetooth og SD modulet, men eksklusive sensormodulet
- Tilføj et dobbelt batteriforsyningskredsløb for at muliggøre batteriskift uden at afbryde logningen.
Anbefalede:
Hjemmelavet højhastigheds elbil: 7 trin
![Hjemmelavet højhastigheds elbil: 7 trin Hjemmelavet højhastigheds elbil: 7 trin](https://i.howwhatproduce.com/images/004/image-11628-j.webp)
Hjemmelavet højhastigheds elbil: Hvis du nogensinde har ønsket at prøve at lave din egen elbil, er dette en meget enkel måde at lave en højhastighedsbil ud af almindelige materialer samt et par billige ting fra en elektronisk butik. Ikke mere bruge $ 30- $ 60 dollars på RC-biler, når du
Kører uden skærm / skærm (hovedløs) på Raspberry Pi eller andre Linux / unix -baserede computere: 6 trin
![Kører uden skærm / skærm (hovedløs) på Raspberry Pi eller andre Linux / unix -baserede computere: 6 trin Kører uden skærm / skærm (hovedløs) på Raspberry Pi eller andre Linux / unix -baserede computere: 6 trin](https://i.howwhatproduce.com/images/010/image-27967-j.webp)
Kører uden skærm / skærm (hovedløs) på Raspberry Pi eller andre Linux / unix -baserede computere: Når de fleste mennesker køber en Raspberry PI, tror de, at de har brug for en computerskærm. Spild ikke dine penge på unødvendige computerskærme og tastaturer. Spild ikke din tid på at flytte tastaturer og skærme mellem computere. Bind ikke et tv, når det er nej
24v DC motor til højhastigheds universalmotor (30 volt): 3 trin
![24v DC motor til højhastigheds universalmotor (30 volt): 3 trin 24v DC motor til højhastigheds universalmotor (30 volt): 3 trin](https://i.howwhatproduce.com/images/010/image-28345-j.webp)
24v DC motor til højhastigheds universalmotor (30 volt): Hej! I dette projekt skal jeg lære dig at konvertere en normal legetøjs 24V DC motor til en 30V Universal Motor. Personligt tror jeg, at en videodemonstration bedst beskriver et projekt . Så fyre, jeg vil anbefale dig at se videoen først. Projekt V
Skift Bluetooth -headset/højttaler/adapternavn eller andre indstillinger via UART: 8 trin (med billeder)
![Skift Bluetooth -headset/højttaler/adapternavn eller andre indstillinger via UART: 8 trin (med billeder) Skift Bluetooth -headset/højttaler/adapternavn eller andre indstillinger via UART: 8 trin (med billeder)](https://i.howwhatproduce.com/images/003/image-6913-43-j.webp)
Skift Bluetooth -headset/højttaler/adapterens navn eller andre indstillinger via UART: Har du tilfældigvis et par Bluetooth -headset eller andet Bluetooth -lydtilbehør, der har et virkelig modbydeligt navn, og hver gang du parrer dem, har du dette indre ønske om at ændre deres navn? Selvom årsagerne ikke er de samme, er der en
Sådan laver du din egen USB -billader til enhver iPod eller andre enheder, der oplades via USB: 10 trin (med billeder)
![Sådan laver du din egen USB -billader til enhver iPod eller andre enheder, der oplades via USB: 10 trin (med billeder) Sådan laver du din egen USB -billader til enhver iPod eller andre enheder, der oplades via USB: 10 trin (med billeder)](https://i.howwhatproduce.com/images/001/image-2327-49-j.webp)
Sådan laver du din egen USB -billader til enhver iPod eller andre enheder, der oplades via USB: Opret en USB -billader til enhver iPod eller anden enhed, der oplades via USB ved at splitte en biladapter, der udsender 5v og USB Female -stik. Den vigtigste del af dette projekt er at sikre, at output det valgte biladapter er sat på