- Mga Kinakailangan na Bahagi
- MAX30205 kasama ang Arduino - Circuit Diagram
- Ang interface ng Arduino na may MAX30205 Body Temperature Sensor
- Programming MAX30205 kasama si Arduino
- Arduino Body Temperature Meter - Pagsubok
Para sa mga medikal o klinikal na aplikasyon, ang pagsukat ng temperatura ng katawan ng tao ay isang mahalagang parameter upang matukoy ang kalagayan ng kalusugan ng sinumang indibidwal. Gayunpaman, maraming mga paraan upang maunawaan ang temperatura ngunit hindi lahat ay may kawastuhan upang matugunan ang mga pagtutukoy ng klinikal na thermometry. Ang MAX30205 temperatura sensor ay partikular na idinisenyo para sa application na ito. Tandaan na ang sensor na ito ay hindi isang sensor ng temperatura na walang contact, kung naghahanap ka para sa isang pagsukat ng temperatura ng contactless IR, suriin ang MLX90614 Thermometer na dinisenyo namin nang mas maaga.
Sa proyektong ito, makikipag-ugnay kami sa isang MAX30205 sensor ng temperatura ng katawan ng tao na madaling ma-interfaced sa isang fitness band o maaaring magamit para sa mga medikal na layunin. Gagamitin namin ang Arduino Nano bilang pangunahing yunit ng micro-controller at gagamit din ng mga display na 7-Segment upang maipakita ang sensed na temperatura sa Fahrenheit. Kapag alam mo kung paano gamitin ang sensor, maaari mo itong gamitin sa alinman sa iyong ginustong application, maaari mo ring suriin ang proyektong Arduino Smartwatch na isinama sa MAX30205 ay maaaring magamit upang masubaybayan ang temperatura ng mga indibidwal.
Mga Kinakailangan na Bahagi
- Arduino NANO
- Nagpapakita ang 7-Seg ng karaniwang cathode - 3pcs
- 74HC595 - 3 mga PC
- 680R risistor - 24pcs
- MAX30205 module board
- 5V supply ng kuryente
- Breadboard
- Maraming mga wire ng kawit
- Arduino IDE
- Isang micro-USB cable
MAX30205 kasama ang Arduino - Circuit Diagram
Ang kumpletong diagram ng circuit upang ikonekta ang Arduino sa sensor ng Temperatura ng Katawan MAX30205 ay ipinapakita sa ibaba. Napaka-simple ng circuit, ngunit dahil gumamit kami ng mga 7-segment display, mukhang medyo kumplikado ito. Ang 7-Segment Ipinapakita sa Arduino ay isang mahusay na paraan upang maipakita ang iyong halaga malaki at maliwanag na may napakababang gastos. Ngunit maaari mo ring ipakita ang mga halagang ito sa isang OLED o LCD kung nais mo ito.
Ang Arduino Nano ay konektado sa tatlong 74HC595. Tatlong 74HC595 ay magkaskas upang i-save ang karagdagang mga output pin mula sa Arduino Nano para sa pagkonekta ng tatlong 7-Seg display. Ginamit namin dati ang 74HC595 kasama ang Arduino sa maraming iba pang mga proyekto tulad ng Arduino Clock, LED Board Display, Arduino ahas na laro, atbp upang pangalanan ang ilan.
Ang MAX30205 module board ay nangangailangan ng karagdagang mga pull-up resistors dahil nakikipag-usap ito sa I2C protocol. Gayunpaman, ilang mga board ng module ang hindi nangangailangan ng karagdagang pullup dahil ang mga pull-up resistors ay naibigay na sa loob ng module. Samakatuwid, kailangang kumpirmahin ng isang tao kung ang module board ay may panloob na resistors ng pull-up o nangangailangan ito ng panlabas na pull up bilang karagdagan. Ang board na ginamit sa proyektong ito ay mayroon nang mga built-in na resistors na pull-up sa loob ng module board.
Ang interface ng Arduino na may MAX30205 Body Temperature Sensor
Ang sensor na ginamit dito ay ang MAX30205 mula sa maxim integrated. Ang sensor ng temperatura ng MAX30205 ay tumpak na sumusukat sa temperatura na may 0.1 ° C Katumpakan (37 ° C hanggang 39 ° C). Gumagana ang sensor sa I2C protocol.
Ang module board ay maaaring gumana sa 5 o 3.3V. Gayunpaman, ang board ay naka-configure upang magamit sa 5V operating voltage. Nagsasama rin ito ng shifter sa antas ng lohika, dahil ang sensor mismo ay sumusuporta sa isang maximum na 3.3V bilang mga hangarin na nauugnay sa kapangyarihan o data.
Sa output, tatlong 74HC595, 8-bit shift register ang ginagamit upang i-interface ang tatlong 7-Segment na ipinapakita sa Arduino NANO. Ang pin diagram ay maaaring ipakita sa larawan sa ibaba-
Ang paglalarawan ng pin ng 74HC595 ay makikita sa talahanayan sa ibaba-
Ang QA hanggang QH ay ang mga pin ng output output na konektado sa mga ipinapakitang 7-Seg. Dahil ang tatlong 74HC595 ay magkakasamang naka-cascade, ang Data input pin (PIN14) ng unang rehistro ng shift ay konektado sa Arduino NANO at ang Serial data output pin ay magbibigay ng data sa susunod na rehistro ng shift. Ang koneksyon ng serial data na ito ay magpapatuloy hanggang sa pangatlong 74HC595.
Programming MAX30205 kasama si Arduino
Ang kumpletong programa para sa tutorial na ito ay matatagpuan sa ilalim ng pahinang ito. Ang paliwanag ng code na ito ay ang mga sumusunod. Una, isinasama namin ang karaniwang Arduino I2C library header file.
# isama
Ang linya sa itaas ay isasama ang Arduino na nag-ambag ng silid-aklatan mula sa protocentral. Ang library na ito ay may mahalagang mga pagpapaandar upang makipag-usap sa MAX30205 sensor. Ang library ay kinuha mula sa ibaba sa link ng GitHub-
https://github.com/protocentral/ProtoCentral_MAX30205
Matapos ang pag-import ng library, tinutukoy namin ang MAX30205 data ng object tulad ng ipinakita sa ibaba-
# isama ang "Protocentral_MAX30205.h" MAX30205 tempSensor;
Susunod na dalawang linya ay mahalaga upang itakda ang mga parameter. Ang linya sa ibaba ay magbibigay ng temperatura sa Fahrenheit kung maitakda nang totoo. Para sa pagpapakita ng resulta sa Celsius, kailangang itakda ang linya na hindi totoo.
const bool fahrenheittemp = totoo; // Ipinapakita ko ang temperatura sa Fahrenheit, Kung nais mong ipakita ang temperatura sa Celsius gawin itong maling variable.
Ang linya sa ibaba ay kailangang mai-configure kung ang mga karaniwang pagpapakita ng uri ng cathode na 7-segment ay ginagamit sa hardware. Gawin itong hindi totoo kung ginagamit ang karaniwang anode.
const bool commonCathode = totoo; // Gumagamit ako ng karaniwang Cathode 7segment kung gumagamit ka ng karaniwang Anode pagkatapos ay baguhin ang halaga sa maling. const byte digit_pattern = {// 74HC595 Outpin Connection na may 7segment display. // Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 // abcdefg DP 0b11111100, // 0 0b01100000, // 1 0b11011010, // 2 0b11110010, // 3 0b01100110, // 4 0b10110110, // 5 0b10111110, // 6 0b11100000, // 7 0b11111110, // 8 0b11110110, // 9 0b11101110, // A 0b00111110, // b 0b00011010, // C 0b01111010, // d 0b10011110, // E 0b10001110, // F 0b00000001 //. };
Ginagamit ang array sa itaas upang maiimbak ang pattern ng digit para sa mga pagpapakita ng 7-Segment.
Sa pag-andar ng pag-setup, pagkatapos itakda ang mga mode ng pin ng 74HC595 na mga pin, ang I2C na protokol at ang pagbabasa ng sensor ng temperatura ay naisimula.
void setup () {// ilagay ang iyong code sa pag-setup dito, upang magpatakbo nang isang beses: // itakda ang serial port sa 9600 Serial.begin (9600); pagkaantala (1000); // itakda ang 74HC595 Control pin bilang output pinMode (latchPin, OUTPUT); // ST_CP ng 74HC595 pinMode (clkPin, OUTPUT); // SH_CP ng 74HC595 pinMode (dtPin, OUTPUT); // DS of 74HC595 // initialize I2C Libs Wire.begin (); // simulan ang MAX30205 temperatura na basahin sa mode ng pagpapatuloy, aktibong mode tempSensor.begin (); }
Sa loop, ang temperatura ay binabasa ng pagpapaandar tempSensor.getTemperature () at nakaimbak sa isang float variable na pinangalanang temp . Pagkatapos nito, kung napili ang mode ng temperatura ng Fahrenheit, ang data ay nabago mula sa Celsius patungong Fahrenheit. Pagkatapos, tatlong mga digit mula sa na-convert na data ng sensed temperatura ay karagdagang pinaghiwalay sa tatlong indibidwal na mga digit. Upang gawin ito, ginagamit ang mga linya ng mga code sa ibaba-
// saperate 3 digit mula sa kasalukuyang temperatura (tulad ng kung temp = 31.23c,) int dispDigit1 = (int) temp / 10; // digit1 3 int dispDigit2 = (int) temp% 10; // digit2 1 int dispDigit3 = (temp * 10) - ((int) temp * 10); // digit3 2
Ngayon, ang pinaghiwalay na tatlong mga digit ay ipinadala sa mga pagpapakita ng 7-segment gamit ang 74HC595 shift register. Dahil ang LSB unang ipinakita sa pangatlong 7-segment na pagpapakita sa pamamagitan ng pangatlong 74HC595, ang ika-3 na digit ay unang naipadala. Upang gawin ito, ang naka-lat na pin ay hinila pababa at ang data ay isinumite sa 74HC595 ng function shiftOut ();
Sa parehong paraan, ang natitirang pangalawa at unang mga digit ay ipinapadala din sa kani-kanilang 74HC595, sa gayon ay natitirang dalawang 7-segment na ipinapakita. Matapos maipadala ang lahat ng data, ang latch pin ay pinakawalan at hinila nang mataas upang kumpirmahin ang pagtatapos ng paghahatid ng data. Ang mga kaukulang code ay makikita sa ibaba -
// display digit into 3, 7segment display. digitalWrite (latchPin, LOW); kung (commonCathode == totoo) {shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern); shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern-digit_pattern); // 1. (Digit + DP) shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern); } iba pa {shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern)); shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern-digit_pattern)); // 1. (Digit + DP) shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern)); } digitalWrite (latchPin, HIGH);
Arduino Body Temperature Meter - Pagsubok
Ang circuit ay itinayo sa dalawang hanay ng mga breadboard tulad ng nakikita mo sa ibaba. Kapag inilalagay namin ang daliri sa sensor, ang temperatura ay nadama at ang output ay ipinapakita sa isang 7 segment na pagpapakita, narito ang halaga ay 92.1 * F.
Ang kumpletong pagtatrabaho ng proyekto ay matatagpuan sa video na naka-link sa ibaba. Inaasahan kong nasiyahan ka sa pagbuo ng proyekto at natutunan ang isang bagay na kapaki-pakinabang. Kung mayroon kang anumang mga katanungan, iwanan ang mga ito sa seksyon ng komento sa ibaba o gamitin ang aming mga forum.