FUNDAȚIA PENTRU CULTURĂ ȘI ÎNVĂȚĂMÂNT IOAN SLAVICI TIMIȘOARA [310572]
FUNDAȚIA PENTRU CULTURĂ ȘI ÎNVĂȚĂMÂNT “IOAN SLAVICI” TIMIȘOARA
UNIVERSITATEA “IOAN SLAVICI” [anonimizat]
a Pulsului
CONDUCĂTOR ȘTIINȚIFIC :
Prof. dr. ing. VLĂDUȚIU MIRCEA
ABSOLVENT: [anonimizat]2016-
Cuprins:
Capitolul 1 Introducere
1.1Aspecte generale……………………………………………pagina 2
1.2Structura lucrării ……………………………….……………pagina 4
Capitolul 2 Structura modulului digital de măsurarea a pulsului
2.1 Descriere funcțională…………………………………….pagina 5
2.2 Schema bloc …………………………………………..…pagina 8
2.3 Schema de detaliu a modulului………………………. …pagina 10
Capitolul 3 Componentele infrastructurii hardware
3.1 Componentele părții de proiectare Arduino Uno…………pagina 17
3.2 Senzorul de puls ………………………………………….pagina 25
3.3 Dispozitivul de afișare …………………………………. pagina 26
3.4 Comunicarea USB………………………………………. pagina 29
Capitolul 4 Componentele părții de programare a modulului……………pagina 31
4.1
Capitolul 5 Concluzii ………………………………………………………pagina 38
Bibliografie ……………………………………………….…..pagina 39
CAPITOLUL 1
INTRODUCERE
Aspecte generale
Proiectul se refera la un modul digital de masurare a pulsului care este o [anonimizat]. Sportivii pot folosit dispozitivul pentru a [anonimizat] a [anonimizat] a fi nevoit să apeleze la un dispozitiv medical profesional. Acesta poate fi la fel de acurat ca orice echipament medical similar.
[anonimizat], [anonimizat].
[anonimizat]328 de pe placa de dezvoltare Arduino Uno cu ajutorul unui senzor optic reflectiv afișând intrucțiunile și rezultatele pe un ecran LCD.
Avantajele modulului :
● independența sa față de alte aparate;
● costuri reduse de fabricare;
● ușor de personalizat;
● domenii diverse de aplicabilitate;
● afișarea măsurătorilor pe ecran LCD;
● posibilitatea de a putea fi dezvoltat ulterior.
[anonimizat]. [anonimizat]-se prin intermediul unui calculator conectat prin portul USB la modul.
[anonimizat], [anonimizat] (IDE).
1.2 Structura lucrării
“Modulul digital de măsurare a pulsului” face parte dintr-o [anonimizat], prezintă foarte multe avantaje din punct de vedere al adaptabilității la cerințele utilizatorului. Totodată modulele pot fi personalizate și optimizate, existând o gamă largă de senzori ce pot fi folosiți pentru măsurarea diverselor funcții ale corpului, în comparație cu modulele standard integrate în telefoane mobile, ceasuri și brățări inteligente.
În următoarele capitole este detaliată prezentarea modulului astfel:
Capitolul 2 este dedicat descrierii aplicației practice, schema bloc, descrierea elementelor folosite referitor la caracteristicile fiecărui element din proiect.
Al treilea capitol prezintă detalierea elementelor hardware și explicarea generală a arhitecturii și funcționării a acestora.
Partea software și programul folosit pentru controlul microcontrolerului sunt descrise în al patrulea capitol.
În ultimul capitol sunt prezentate concluziile proiectului.
CAPITOLUL 2
STRUCTURA MODULULUI DIGITAL DE MĂSURARE A PULSULUI
Descrierea funcțională
Proiectul se bazează pe principiul fotopletismografiei(PPG), care este o metodă neinvazivă de măsurare a variației volumului sanguin în țesuturi, folosind o sursă de lumină și un senzor.
Datorită faptului că variațiile sângelui se sincronizează cu bătăile inimii, această metodă o putem folosi pentru măsurarea ritmului cardiac. Transmiterea și reflexia sunt două metode tipice de bază ale fotopletismografiei . În acest proiect se folosește reflexia PPG. Pentru transmiterea PPG, o sursă de lumină emite un semnal luminos în țesutul uman și un senzor de lumină pe partea opusă măsoară lumina rezultată. Sursa de lumină are putere limitată de penetrare a țesutului uman . Pentru rezultate concludente, măsuratorile se fac doar în anumite părți ale corpului cum ar fi: deget, lobul urechii. În reflexia PPG sursa și senzorul de lumină sunt plasați pe aceeași parte a organului unde se face măsurătoarea. Lumina este emisă în țesut și reflexia ei este măsurată de senzor. Deoarece lumina nu penetrează țesutul, modul de măsurare cu reflexia PPG poate fi folosit pe orice zonă a corpului uman.
Semnalul PPG are două componente, denumite AC și DC.
Componenta AC este determinată de schimbările pulsatorii ale volumului de sânge în artere realizate sincron cu bătăile inimii. Componenta AC se folosește ca o sursă de informații privind bătăile inimii.
Componenta DC trebuie să fie eliminată pentru a putea măsura forma de undă a componentei AC cu un raport ridicat semnal-zgomot.
Senzorul și ecranul LCD se conectează prin intermediul firelor la placa Arduino Uno
Semnificația conectării senzorului
Modulul se alimentează folosind una dintre variantele de mai jos: prin intermediul conectorului USB, cu ajutorul cablului de alimentare dedicat de la un alimentator extern sau cu ajutorul unei baterii.
Odată placa Arduino alimentată, pe senzor va lumina un LED verde, ecranul se va activa luminând albastru, iar pe display va apărea un mesaj de întâmpinare și o instrucțiune pentru pasul următor
Punând degetul pe senzor se va începe calibrarea iar după câteva secunde se va indica valoarea măsurată de senzor
Schema bloc
În proiect sunt folosite trei circuite :
– circuitul de control și comandă – Arduino
– circuitul de măsurare a semnalului – senzor PPG
– circuitul de afișare a informațiilor – ecran LCD
Fig.2.2.1 – Schema bloc a modulului digital de măsurare a pulsului
Modulul de măsurare a pulsului are pin de ieșire conectat direct la pinul 8 al plăcii de dezvoltare Arduino. Pinii Vcc și GND sunt conectați la alimentare și masă . Ecranul LCD pe două linii și 16 coloane este conectat cu Arduino prin intermediul a patru pini. Primul pin de control RS, RW și EN sunt conectați direct pe pinii 12, GND și 11 ai plăcii de dezvoltare. Patru pini de date D4-D7 se conectează la pinii 5,4,3 și 2 ai Arduino. Este folosit un buton pentru resetarea citirii informației și un altul pentru începerea măsurării pulsului. Când se dorește măsurarea pulsului, se apasă butonul de start iar placa Arduino începe numărarea pulsurilor după o așteptare de cinci secunde. Butonul de start este conectat la pinul 7 iar cel care resetează circuitul la pinul 6 cu întrerupere la masă .
Caracteristicile tehnice ale modulului sunt :
6 ieșiri digitale
3 intrări digitale
2 contacte normal închise
Tensiunea de alimentare 9-12V cc
Port USB (conectivitatea dintre modul și calculator )
Modulul transmite la intervalul stabilit starea intrărilor către ecranul LCD la care este conectat. Comunicarea dintre modul și senzor se face prin intermediul unor instrucțiuni cheie care sunt incluse în programul microcontrolerului.
În cele ce urmează fiecare etaj al modulului va fi explicat într-un mod cât mai detaliat din punct de vedere constructiv, componente electronice, rolul lor, cât și funcționarea lui dar nu și în ultimul rând programul înmagazinat în memoria microcontrolerului. Programul din memoria microcontrolerului este responsabil cu citirea intrărilor și activarea ieșirilor în funcție de răspunsurile primite de la senzor și afișarea lor pe ecranul LCD.
Schema de detaliu a modulului
Modulul de puls este compus din patru circuite interconectate, prezentate in schema de mai jos și descrise pe scurt în ceea ce urmează:
circuitul de alimentare – alimentarea se face prin intermediul conectorilor USB sau conectorului dedicat de pe placa Arduino
circuitul de control și comandă cu reprezentarea semnalelor de pe pinii digitali. Acești pini sunt folosiți atât ca intrări cât și ca ieșiri fiind conectați la LCD și la senzorul de puls. Legăturile se fac astfel:
pinul 12 al placii de dezvoltare este conectat la pinul de reset al LCD-ului
Pinul 11 digital este legat la pinul de Enable de pe display
Pinul 8 este folosit pentru comunicarea cu senzorul
Pe pinii 2-5 de pe conectorul digital se face comunicarea cu ecranul, fiind conectati cu cei 4 pini de date ai display-ului
circuitul de măsurare a semnalului – senzor PPG alimentat direct de la cei 5V de pe placa de dezvoltare si comandat de microcontroler
circuitul de afișare a informațiilor pe ecran LCD, conectat prin intermediul firelor cu placa Arduino Uno
Figura 2.3 Schema hardware a modulului digital de măsurare a pulsului
2.3.1 Circuitul de alimentare
Arduino Uno se poate alimenta prin USB sau prin alimentator extern de la rețea. Sursa de alimentare se selectează automat.
Sursa externă de alimentare poate proveni dintr-un adaptor AC-DC sau de la baterie. Adaptorul poate fi conectat prin introducerea capătului în conectorul mufa jack prezentă pe placă.
Placa poate funcționa alimentată la o sursă între 6 și 20 volți. Dacă placa este alimentată cu mai puțin de 7 volți, pinul conectat la 5 volți va furniza mai puțin decât 5 volți, iar placa devine instabilă. Dacă se conectează la mai mult de 12 volți, regulatorul de tensiune va încălzi și distruge placa. Plaja de tensiuni recomandată este între 7 și 12 volți.
Pinii de alimentare sunt următorii:
Vin – este pinul de intrare a tensiunii pe placa Arduino Uno atunci când este folosită o sursă externă(în opoziție cu pinul de 5V de la conectorul USB sau altă tensiune). Dacă alimentarea se face prin mufa tip Jack, se folosește acest pin pentru alimentarea plăcii.
5V – Acest pin furnizează 5V de la regulatorul de pe placă. Placa poate fi alimentată cu tensiune DC fie prin mufa jack(7-12 V), prin conectorul USB(5V) sau prin pinul VIN de pe placă(7-12V). Alimentarea cu tensiune prin pinii 5V sau 3.3V anulează regulatorul și poate distruge placa. Nu este recomandată această operațiune.
3.3V – Tensiunea 3.3 V este generată de regulatorul de tensiune de pe placă. Curentul maxim suportat este de 50 mA.
GND – Pin de masă.
IOREF- Pin prezent pe placa Arduino Uno care furnizează tensiunea de referință pentru funcționarea microcontrolerului. O configurație optimă trebuie să fie capabilă să citească tensiunea de pe pinul IOREF și să selecteze cea mai apropiată sursă de alimentare sau să activeze translatorul de tensiune de pe pinii de ieșire de 5V sau 3.3 V.
2.3.2 Circuitul de control și comandă Arduino
Circuitul de control și comandă al modulului este asigurat de microcontrolerul Atmega328 de pe placa Arduino Uno.
Microcontrolerul are ca și caracteristici tehnice:
Procesor de înaltă performanță tip RISC (Reduced Instruction Set Computer). Microprocesoarele ce utilizeaza arhitectura RISC au instructiuni limitate incorporate. Reducerea instructiunilor salveaza si spatiu in microprocesor.
32 înregistrari procese generale
trei cronometre flexibile/contoare
32 KB ISP o memorie flash cu capacitatea de a citi în timp ce scrie
1 KB de memorie EEPROM
2 KB de SRAM
23 linii E/S de uz general
programator de tip USART (Universal synchronous/asynchronous receiver/transmitter)
port serial SPI
6 canale convertor A/D pe 10 biti
"watchdog timer" programabil cu oscilator intern – utilizat pentru ieșirea din situații critice. Timer-ul activează intrarea de Reset dacă se produc erori în programele rulate
întreruperi externe
Dispozitivul funcționează 1,8-5,5 volți.
Microcontrolerul Atmega328 are 32 KB de memorie din care foloseste 0,5KB pentru secventa de bootare. Microcontrolerul mai are 2 KB memorie SRAM și 1KB memorie EEPROM. Memoria EEPROM poate fi scrisa și citita prin intermediul librăriilor EEPROM.
Arduino Uno poate folosi oricare din cei 14 pini digitali atât ca pini de intrare cât și ca pini de ieșire. Selectarea tipului de pini care se folosește se face prin intermediul funcțiilor: pinMod(), digitalWrite() și digitalRead(). Acești pini lucrează la 5 V.
Fiecare pin poate transmite sau recepționa 20mA așa cum recomandă condițiile de funcționare și are un rezistor ridicător intern de 20-50KO. Valoarea maximă de 40mA nu ar trebui depășită pentru a se evita deteriorarea microcontrolerului.
Unii pini au funcții speciale:
Serial 0(RX) și 1(TX). Sunt folosiți pentru recepția(RX) și transmiterea (TX)
datelor seriale. Acești pini sunt conectați la pinii corespondenți ai portului serial USB al microcontrolerul Atmega8U2.
Întreruperi externe- pinii 2 și 3. Acești pini pot fi configurați pentru a declanșa o întrerupere la o valoare scăzută, la o depășire de limita inferioară, superioară sau la orice schimbare de valoare.
PWM- pinii 3,5,6,9,10 si 11. Furnizează ieșirea PWM pe 8 biți cu funcție de scriere- analog WRITE().
SPI-pinii 10(SS), 11(MOSI), 12(MISO), 13(SCK). Acești pini suportă comunicarea SPI folosind bibliotecile SPI.
LED- pinul 13. Acest pin este legat la LED-ul de semnalizare comandat de pinul digital 13. Când pinul este la valoarea HIGH ledul este aprins, când pinul este la valoarea LOW LED-ul se stinge.
TWI- pinul A4 sau pinul SDA și pinul A5 sau pinul SCL. Suportă comunicarea TWI folosind bibliotecile Wire.
Arduino Uno are 6 intrări analogice, notate A0-A5, fiecare dintre ele furnizând 10 biți de rezoluție(1024 valori diferite). Valoarea inițială măsurată între GND și 5 Volți poate fi schimbată folosind pinul AREF și funcția analogReference().
2.3.3Circuitul de măsurare a semnalului- senzorul PPG
Circuitul de măsurare a semnalului este realizat cu ajutorul senzorului de puls ICS6007A creat de ICSTATION. Senzorul este special conceput pentru vizualizarea și măsurarea ritmului cardiac. Poate fi folosit de studenți, artiști, atleți, creatori de jocuri și dispozitive mobile inteligente care pot încorpora cu ușurință acest tip de sensor.
În acest proiect se folosește reflexia PPG. Pentru transmiterea PPG, o sursă de lumină emite un semnal luminos în țesutul uman și un senzor de lumină pe partea opusă măsoară lumina rezultată. Sursa de lumină are putere limitată de penetrare a țesutului uman. Pentru rezultate concludente , măsuratorile se fac doar în anumite părți ale corpului cum ar fi: deget, lobul urechii. În reflexia PPG sursa și senzorul de lumină sunt plasati pe aceeași parte a organului unde se face măsurătoarea. Lumina este emisă în țesut și reflexia ei este măsurată de senzor. Deoarece lumina nu penetrează țesutul, modulul de măsurare cu reflexia PPG poate fi folosit pe orice zonă a corpului uman.
Semnalul PPG are două componente, denumite AC și DC:
Componenta AC este determinată de schimbările pulsatorii ale volumului de sânge în artere realizate sincron cu bătăile inimii. Componenta AC se folosește ca o sursă de informații privind bătăile inimii.
Componenta DC trebuie să fie eliminată pentru a putea măsura forma de undă a componentei AC cu un raport ridicat semnal-zgomot.
Circuitul de măsurare a semnalului
În acest proiect folosesc senzorul ICS6007A.
Senzorul ICS6007A este un senzor optic reflectiv care are ambele componente – emitor de lumina infraroșie (IR) și fototranzistor, încapsulate pentru a nu fi influențate de lumina ambientală.
Conectând pinul ENABLE al senzorului la pinul 5V al plăcii ARDUINO se alimentează LED-ul emitorului IR și se activează senzorul.
Degetul plasat deasupra senzorului reflectă lumina. Semnalul luminos reflectat de deget este măsurat de fototranzistor.
Semnalul de ieșire al senzorului este o formă de undă periodică asociată variațiilor din lumina IR reflectată, variații cauzate de pulsațiile volumului de sânge prin vasele din deget.
Forma de undă se sincronizează cu bătăile inimii.
Acest semnal slab are și o componentă de zgomot care este prima dată filtrată cu ajutorul unui filtru trece-sus RC, pentru a se elimina componenta DC. Frecvența de filtrare a semnalului este setată la 0.7 Hz. Apoi semnalul este filtrat cu ajutorul unui filtru trece-jos- cu amplificator operațional. Poarta este setată pe 101 și frecvența de tăiere la 2.34 Hz.
Combinația folosită de filtru trece-sus și filtru trece-jos ajută la înlăturarea componentei DC , a zgomotului de frecvență înaltă, amplificând semnalul AC de 101 ori.
Ieșirea primului semnal trece printr-un circuit similar de filtru trece sus, filtru trece jos și amplificator. Astfel prin cascadare se obține un semnal amplificat de 101*101 = 10201 ori. Cascadarea ieșirii prin cele doua circuite de filtrare și amplificare transformă semnalele de intrare PPG într-un Transistor –transistor Logic (TTL) care se sincronizează cu bătăile inimii.
Ieșirea este conectată la pinul 8 digital al ARDUINO UNO. Microcontrolerul măsoară frecvența semnalului PPG și returnează valoarea în BPM
Bătăi pe minut (BPM) = 60*f
2.3.4Circuitul de afișare
Pentru afișarea datelor se folosește ecranul LCD 1602A.
Ecranul este controlat prin intermediul instrucțiunilor primare de la microcontrolerul Atmega32 de pe placa Arduino.
Conexiunea ecranului LCD la microcontrolerul Atmega328 se face astfel:
VSS->Arduino GND
VDD -> Arduino +5V
V0(VEE) -> Arduino GND + rezistor 1kO
RS -> Arduino pinul 12
RW -> GND
E -> Arduino pinul 10
D0-D3 -> neconectați
D4 -> Arduino pinul 5
D5 -> Arduino pinul 4
D6 -> Arduino pinul 3
D7 -> Arduino pinul 2
A(L+) -> Arduino pinul 13 + Rezistor 1kO
K (L-) -> Arduino GND
Fig.2.3.4- Conexiunea display – Arduino
CAPITOLUL 3
ELEMENTE DE PROIECTARE HARDWARE A MODULULUI
Constructiv “Modulul digital de măsurare a pulsului” este format din următoarele elemente:
Placa de dezvoltare Arduino Uno R3 pe care este localizat microcontrolerul ATmega328;
Senzorul de măsurare a pulsului;
Ecranul LCD.
În continuare elementele sistemului vor fi descrise din punct de vedere al caracteristicilor generale specifice fiecăruia, astfel:
3.1Arduino Uno
Arduino este o platformă cu microcontroler ușor de utilizat și foarte adaptabilă. Fizic este o placă de mici dimensiuni 6,8cm/5,3cm, elementul principal de la care pornește sistemul fiind un procesor de semnal. Placa este capabilă să culeagă informații din mediu și să reacționeze la acestea. În jurul lui Arduino există un sistem de dispozitive extrem de bine dezvoltat, orice fel de informație îți dorești, dacă ai nevoie de conexiuni cu alte instrumente, există o șansă foarte mare să găsești un dispozitiv pentru Arduino capabil să îți ofere ceea ce ai nevoie.
Astfel, dacă discutăm despre preluarea de informații din mediu, mai jos sunt doar câteva exemple de senzori:
senzori ce determină nivelul de alcool în aerul respirat,
senzor de incediu,
senzor gaz, poate fi folosit atat pentru protectia casei cat si in industrie, sensibil la diverse tipuri de gaze: metan, gaz lichefiat, alcool, fum.
monoxid de carbon,
accelerații ale dispozitivelor în mișcare,
curent consumat de diverse dispozitive casnice,
forța de apăsare,
gradul de rotire,
cartele RFID folosite pentru permiterea accesului,
distanțe,
senzor pentru detectarea nivelului de iluminare, nefiind nevoie de interventie umana
direcția nordului,
detectarea prezenței, necesar sistemelor de protectie si alarma
sunet,
temperatură, in aplicatii de reglare a temperaturii interioare
umiditate, se poate folosi pentru automatizarea serelor
presiune atmosferică,
senzor de puls, necesar in aplicatii de monitorizare a sanatatii
Pentru conectarea cu alte sisteme se pot folosi mai multe tipuri de comunicații:
Comunicare internet prin intermediul plăcilor Ethernet dedicate
Comunicare radio,
Transmisii wireless cu plăci de rețea WIFI,
Cu module GSM pentru Arduino (capabile să trimită/recepționeze SMS-uri, să inițieze apeluri de voce sau să trimită date prin rețeaua 3G);
conectori Bluetooth pentru conectarea Arduino cu telefonul mobil, laptop sau alte dispozitive.
În zona mecanică, există motoare de curent continuu (utilizate în robotică), motoare pas cu pas (utilizate de obicei în zona industrială) sau servomotoare controlate foarte exact.
Pentru afișarea informațiilor preluate, există ecrane LCD pentru Arduino, începând cu cele mai simple (LCD text cu 16 caractere) până la ecrane LCD grafice.
Arduino Uno este o placă ce folosește microcontrolerul ATmega328P.
Atmega328 AVR 8-bit este un circuit integrat de înaltă performanță ce se bazează pe un microcontroler RISC,cu următoarele caracteristici: o memorie flash de 32 KB ISP cu capacitatea de a citi în timp ce scrie, 1 KB de memorie EEPROM, 2 KB de SRAM, 23 linii intrare/ieșire de uz general, 32 regiștrii de lucru, trei cronometre flexibile/contoare , întreruperi internă și externă, programator serial USART, interfață serială, port serial SPI, convertor analogic/digital pe 10 biți și 6 canale (8-canale în TQFP și QFN/MLF), "watchdog timer" programabil cu oscilator intern și cinci moduri de economisire a energiei selectabile din soft. Dispozitivul funcționează la tensiuni cuprinse între 1,8-5,5 volți.
O alternativă a lui Atmega328 este Atmega328P, componentă tip SMD cu aceleași caracteristici, diferind dimensiunea.
Specificații tehnice
Atmega328 este folosit din anul 2013 în multiple proiecte și sisteme autonome care utilizează microcontrolere de mică putere, fiind accesibile ca preț. Cea mai largă întrebuințare o găsim pe platformele Arduino, modelele Uno și Nano.
Fig.3.1.1 – Configurația pinilor microcontrolerului ATmega328
Alimentare
Arduino Uno se poate alimenta prin USB sau prin alimentator extern de la rețea. Sursa de alimentare se selectează automat.
Sursa externă de alimentare poate proveni dintr-un adapor AC-DC sau de la baterie. Adaptorul poate fi conectat prin introducerea capătului în conectorul mufa jack prezentă pe placă.
Placa poate funcționa alimentată la o sursă între 6 și 20 volți. Dacă placa este alimentată cu mai puțin de 7 volți, pinul conectat la 5 volți va furniza mai puțin decât 5 volți, iar placa devine instabilă. Dacă se conectează la mai mult de 12 volți, regulatorul de tensiune va încălzi și distruge placa. Plaja de tensiuni recomandată este între 7 și 12 volți.
Atenție!!
Arduino Uno are o siguranță resetabilă care protejează portul USB al calculatorului de scurturi electrice sau supracurenți. Deși multe calculatoare prezintă propria protectie interna, siguranța întărește gradul de protecție . Dacă se aplică mai mult de 500 mA portului USB siguranța va întrerupe conexiunea până la remedierea problemei.
Pinii de alimentare sunt următorii:
Vin- este pinul de intrare a tensiunii pe placa Arduino Uno atunci când este folosită o sursa externă(în opoziție cu pinul de 5V de la conectorul USB sau altă tensiune). Dacă alimentarea se face prin mufa tip Jack, se folosește acest pin pentru alimentarea plăcii.
5V- Acest pin furnizează 5V de la regulatorul de pe placă. Placa poate fi alimentată cu tensiune DC fie prin mufa jack(7-12 V), prin conectorul USB(5V) sau prin pinul VIN de pe placă(7-12V). Alimentarea cu tensiune prin pinii 5V sau 3.3V anulează regulatorul și poate distruge placa. Nu este recomandată această operațiune.
3.3V- Tensiunea 3.3 V este generată de regulatorul de tensiune de pe placă. Curentul maxim suportat este de 50 mA.
GND- Pin de pământare.
IOREF- Pin prezent pe placa Arduino Uno care furnizează tensiunea de referință pentru funcționarea microcontrolerului. O configurație optimă trebuie să fie capabilă să citească tensiunea de pe pinul IOREF și să selecteze cea mai apropiată sursă de alimentare sau sa activeze translatorul de tensiune de pe pinii de ieșire de 5V sau 3.3 V.
Memoria
Microcontrolerul ATMega328 are 32 KB(0,5KB folosiți pentru bootare). Are 2 KB SRAM și 1KB EEPROM(care poate fi scris și citit prin intermediul librăriilor EEPROM)
Intrare/Ieșire
Fiecare din cei 14 pini digitali de pe placa Arduino Uno poate fi folosit ca pin de intrare sau de ieșire prin selectarea uneia dintre funcțiile pinMod(), digitalWrite() și digitalRead(). Acești pini lucrează la 5 V.
Fiecare pin poate transmite sau recepționa 20mA așa cum recomandă condițiile de funcționare și are un rezistor ridicător intern de 20-50kohmi. Valoarea maximă de 40mA nu ar trebui depășită pentru a se evita deteriorarea microcontrolerului.
Unii pini au funcții speciale:
Serial 0(RX) și 1(TX). Sunt folosiți pentru recepția(RX) și transmiterea (TX)
datelor seriale. Acești pini sunt conectați la pinii corespondenți ai portului serial USB al microcontrolerul ATmega8U2.
Întreruperi externe- pinii 2 și 3. Acești pini pot fi configurați pentru a declanșa o întrerupere la o valoare scăzută, la o depășire de limita inferioară, superioară sau la orice schimbare de valoare.
PWM- pinii 3,5,6,9,10 si 11. Furnizează ieșirea PWM pe 8 biți cu funcție de scriere- analogWRITE().
SPI-pinii 10(SS),11(MOSI),12(MISO),13(SCK). Acești pini suportă comunicarea SPI folosind bibliotecile SPI.
LED- pinul 13. Acest pin este legat la LED-ul de semnalizare comandat de pinul digital 13. Când pinul este la valoarea maximă ledul este aprins, când pinul este la valoarea minimă LED-ul se stinge.
TWI- pinul A4 sau pinul SDA și pinul A5 sau pinul SCL. Suportă comunicarea TWI folosind bibliotecile Wire.
Arduino Uno are 6 intrări analogice, notate A0-A5, fiecare dintre ele furnizând 10 biți de rezoluție(1024 valori diferite). Valoarea inițială măsurată între GND și 5 Volți poate fi schimbată folosind pinul AREF și funcția analogReference().
Pe placă se mai întâlnesc și următorii pini:
AREF- Tensiunea de referință pentru intrările analogice. Folosit cu funcția analogReference().
Reset- Pune linia pe valoarea minimă pentru a reseta microcontrolerul. Folosit pentru a adăuga un buton de reset pe placă.
Comunicarea
Arduino Uno are multiple posibilități de comunicare cu un calculator, cu o altă placă Uno sau cu alte microcontrolere. ATmega328 furnizează comunicarea seriala UART(5V) care recepționează pe pinul 0 (RX) și transmite pe pinul 1 (TX). ATmega16U2 de pe canalele plăcii conectat prin USB apare ca un port virtual de comunicare cu softul calculatorului.
ATmega16U2 folosește standardul de drivere USB și nu necesită drivere externe.
Pentru Windows este necesar un fișier cu extensia .inf.
Softul Arduino –IDE- cuprinde o interfață serială care permite transmiterea și recepția datelor către și dinspre placă. Ledurile de semnalizare pentru RX și TX vor lumina intermitent atunci când datele sunt transmise prin portul serial al USB-ului către conexiunea USB a calculatorului.
Biblioteca SoftwareSerial permite comunicarea serială pe oricare din pinii digitali ai plăcii UNO.
ATmega328 suportă comunicațiile I2C(TWI) și SPI. Arduino Software(IDE) include o bibliotecă de conexiuni pentru a simplifica folosirea magistralei I2C.
Cu scopul de a evita apăsarea unui buton de reset , plăcile UNO sunt concepute să permită resetarea prin intermediul soft-ului care rulează pe computer. Una din liniile de control(DTR) a microcontrolerului ATmega8U2/16U2 este conectată la linia de reset printr-un condensator de 100 nF. Când această linie este activată , linia de reset activează resetarea chip-ului. Arduino Software (IDE) folosește această facilitate pentru a permite încărcarea codului prin simpla apăsare a unui buton din meniu. Aceasta înseamnă că se reduce timpul de boot-are, linia de control DTR fiind bine coordonată cu începerea încărcării.
Aceasta setare are și alte implicații. Când Uno este conectat la un computer care rulează Mac OS X sau Linux, resetează de fiecare dată conexiunea creată din soft prin intermediul USB. Pentru jumătate de secundă bootloaderul va rula pe placă .Atunci când este programat să ignore datele corupte, va intercepta primii biți de date trimiși către placă după ce o conexiune este deschisă.
Dacă structura care rulează pe placă recepționează o configurație sau alte date la prima pornire, trebuie verificat ca softul cu care comunică să aibă o întârziere de o secundă după deschiderea conexiunii și înaintea trimiterii datelor.
Plăcile Arduino Uno prezintă o trecere care poate fi anulată pentru a dezactiva auto-reset-ul. Trecerile de pe părțile opuse ale plăcii pot fi cositorite pentru a reactiva auto-reset-ul. Acestea sunt marcate RESET-EN.
Se poate anula auto-reset-ul conectând un rezistor de 110 ohmi între 5V și linia de reset.
Arduino Uno a dezvoltat de-a lungul timpului mai multe revizii de module. Revizia de modul folosită în proiect este revizia 3 care vine cu noutăți față de revizia precedent, aceste îmbunătățiri sunt:
pinii de ieșire – s-au adăugat pinii SDA și SCL în apropierea pinului AREF și alți 2 pini plasați lângă pinul de RESET, pinul IOREF care permite plăcii adaptor să se conecteze la tensiunile de pe placă. În viitor placa adaptor va fi compatibilă cu ambele plăci care folosesc AVR, care funcționează cu 5V și cu 3.3V(Arduino Due).
Circuit de RESET
Atmega 16U2 înlocuiește 8U2
Figura 3.1.2 Schema electrică Arduino Uno Rev3
3.2 Senzorul de puls
Senzorul IC6007A are următoarele caracteristici:
Diametru aproximativ 16mm
Grosime 3mm
Tensiune de alimentare intre 3V-5V
Consumul de curent ~4mA la tensiune de 5V
Figura 3.2.1 Senzor PPG IC6007A
IC6007A folosește un senzor pentru lumina ambientală produs de Avago și un LED super luminos de culoare verde, montat pe partea opusă produs de Kingbright. Pe partea de alimentare se află o diodă de protectie care se poate străpunge în cazul unei supratensiuni și un filtru activ care intensifică forma de undă a pulsului facilitând detectarea lui de către Arduino. Pentru conectare, senzorul prezintă 3 găuri la care putem lega firele.
Senzorul folosește un amplificator operațional care convertește curentul în tensiune, amplificator care are integrate o fotodiodă folosită adesea pentru a marca începutul monitorizării pulsului. Pe lângă amplificatorul operațional și fotodiodă este folosit și un filtru trece-jos pe ieșire(filtru pasiv RC: R=100O, C=4 ,7uF). Senzorul se poate optimiza pentru a funcționa atât la 5v cât și la 3v. Senzorul poate fi îmbunătățit prin schimbarea valorilor rezistorilor R1 și R3, rezistorul R1 determină cât curent este absorbit de LED iar rezistorul R3 determină căderea de tensiune pe ieșire. Pentru a fi folosit la tensiune de 5V se folosesc rezistori R1 si R3 cu valori mai mari. Pentru cele mai bune rezultate la tensiunea de 3V se folosește un rezistor R1 de valoare mai mică. Starea cea mai luminoasă a Led-ului va satura senzorul la curenți înalți iar acesta se va încălzi chiar la consum scăzut de 20mA. Se recomandă ca senzorul să rămână la temperatură cât mai scăzută.
Figura 3.2.2 Schema electrică a senzorului PPG IC6007A
3.3 Dispozitivul de afișare
Caracteristicile ecranului LCD:
Tipul afișării: STN(super-twisted nematic), BLUB (blue backlight)
Format: 16 caractere pe 2 linii
Direcția de afișare: orizontal
Date de intrare: disponibil pe interfață de 4biți sau 8 biți
Caractere de afișat: 5×8 puncte
Alimentare : o singură sursă de tensiune 5V
Figura 3.3.1 Ecran LCD 16X2
Limite
Alimentare pentru circuit logic (VDD) 5V (min 4,7V max 5,5V)
Tensiune de funcționare LCD (VDD-Vo) 5V
Tensiune de intrare (Vih) 2,2V<Vdd
Tensiune de ieșire (Vil) min -0,3V max 0,6V
Caracteristici mecanice
Dimensiunea plăcii 80*36*1,6 mm
Dimensiunea ecranului 69,5*14,5 mm
Descrierea pinilor
Diagrama bloc
Figura 3.3.2 Diagrama bloc ecran LCD
3.4 Comunicarea USB
Magistrala USB(Universal Serial Bus) reprezintă soluția oferită comunicațiilor seriale de noua generație de calculatoare PC. Este o interfață serială rapidă, bidirecțională, ieftină și ușor de folosit. USB a fost creată ca un standard industrial, o extensie a arhitecturii PC orientată spre armonizarea cu standardele de comunicație din telefonie, ceea ce este numit CTI (Computer Telephony Integration).
Avantajele acestei soluții față de bătrâna interfață serială RS-232 transformată prin îmbunătățiri în EIA/TIA-232-E sunt:
rată de transfer ridicată – poate atinge 12 Mbps față de 115 000 bps;
conectează până la 127 de dispozitive la PC(comportându-se ca o magistrală), față de doar 2 dispozitive în cazul RS232;
ușor de utilizat de către utilizatorul final, adăugarea/eliminarea de dispozitive în/din sistem este foarte comodă;
are un protocol flexibil;
soluție accesibilă de interconectare.
Specificațiile magistralei USB descriu atributele tipice de magistrală, definirea protocolului, tipurilor de tranzacții, administrarea acesteia, deasemenea furnizează informații folositoare construirii unui sistem în acest standard.
Magistrală pe cablu, USB, permite schimbul de date între un calculator gazdă și o gamă largă de periferice accesibile în același timp. Magistrala USB permite atașarea, configurarea perifericului folosit și deconectat cât timp gazda și celelalte periferice operează.
USB este proiectat pentru utilizatorii care nu doresc să intre în detalii de instalare hard, astfel fiind înlocuit sistemul complicat de cablare cu un control software. Toate problemele apărute la interconectarea mai multor dispozitive cu performanțe și viteze diferite sunt tratate prin intermediul software.
Magistrala USB definește trei categorii de dispozitive fizice:
gazda USB (USB Host)
funcții USB (USB function)
distribuitoare USB (USB Hub) .
Acestea sunt conectate intre ele într-o topologie specifică de tip stea multiplă. USB face legătura între dispozitivele USB și gazdă. În nodul fiecărei stele se găsește un hub. Între elemente legătura este făcută cu segmente de cablu: fiecare segment de cablu face legătura punct la punct (point-to-point) între gazdă și o funcție sau un hub sau între hub și o funcție sau un alt hub.
Funcția este un dispozitiv USB capabil sã transmită informații de date sau control prin magistrală. În mod obișnuit, o funcție este un periferic independent cu un cablu care se atașează la un port al unui hub. Este posibil ca o unitate fizicã sã includă mai multe funcții și un hub, dispunând de un singur cablu de conexiune. Acesta se numește dispozitiv compus și este văzut de gazdă ca un hub cu mai multe dispozitive nedetașabile. Fiecare funcție posedă informație de configurare prin care sunt descrise pentru gazdã facilitățile și resursele necesare.
Exemple de funcții de dispozitiv:
dispozitiv de localizare – mouse, tabletă digitizoare, light pen;
dispozitiv de intrare – tastatura;
dispozitiv de ieșire – imprimantă;
adaptor de telefonie – ISDN.
Arhitectura USB distinge patru tipuri de bază de transferuri de date:
transferuri de control (Control Transfers) – sunt folosite pentru configurare și comandă și obligatoriu trebuie sã fie suportate de toate perifericele;
transferuri cu volum mare de date (Bulk Data Transfers) – permit dispozitivelor să schimbe cantități mari de informație cu gazda pe măsură ce magistrala devine disponibilă, (ex.:camere digitale, scanere sau imprimante);
transferuri prin întreruperi (Interrupt Data Transfers) – a fost proiectat ca suport pentru periferice de intrare controlate de om, (tastaturã, mouse, joystick), care au nevoie să comunice rar, cantități mici de date; datele transferate în acest mod sunt caractere, coordonate sau semnalizări de evenimente organizate în unul sau mai mulți octeți;
transferuri izocrone (Isochronous Transfers) – asigură un acces garantat la magistrală, flux de date constant și tolereazã erorile de transmisie; datele izocrone sunt continue și în timp real la toate nivelele: generare, emisie, recepție și utilizare la receptor; acest tip de transfer este folosit pentru fluxuri de transfer în timp real cum ar fi sistemele audio.
CAPITOLUL 4
COMPONENTELE PĂRȚII DE PROGRAMARE A MODULULUI
Programare
Arduino Uno poate fi programat cu softul (IDE).
Microcontrolerul ATmega328 de pe Arduino Uno vine preprogramat cu un bootloader care permite încărcarea unui cod nou fără a folosi un programator hardware extern. El comunică folosind protocolul STK500.
AT-STK500 este o unealtă de dezvoltare din categoria “Low Cost” propusă de ATMEL dezvoltatorilor de sisteme bazate pe microcontrolerele ATMEL AVR. AT-STK500 permite prototipizarea rapidă și testarea soluțiilor alese de proiectanți. Pentru comoditatea lucrului, software-ul care controlează AT-STK500 se interfațează natural cu simulatorul/depanatorul AVR Studio.
AT-STK500 include:
• Interfață software cu AVR Studio 3.0;
• Interfață RS232 spre PC pentru programul de control;
• Socluri de programare de 8, 20, 28 și 40 de pini;
• Programare serială ISP (In Circuit Serial Programming) pentru familia de microcontrolere AVR;
• Programare ISP pe placa de aplicație, alta decât cea furnizată în STK-500;
• Programare paralelă pentru familia de microcontrolere AVR;
• Conectori Header pentru acces facil la toate porturile microcontrolerului din soclul AT-STK500;
• Acces la UART prin interfață RS232 separată;
• 2Mbit Flash pentru stocare de memorie de date;
• Reactualizări gratuite ale software-ului de control de pe situl ATMEL, pentru includere de noi microcontrolere AVR, în curs de dezvoltare la ATMEL;
• Sistem fexibil de alimentare, reset și ceas sistem.
Microcontrolere susținute:
• ATtiny11
• ATtiny12
• ATtiny15
• ATtiny28
• AT90S1200
• AT90S2313
• AT90S2323
• AT90S2343
• AT90S4433
• AT90S8515
• AT90S8535
• ATmega161
• ATmega163
Programul de control pentru AT-STK500 este integrat în mediul de dezvoltare oferit de simulatorul / depanatorul AVR Studio, Toate zonele de memorie – memoria de program Flash, memoria de date EEPROM și fuse-biții – pot fi programate separat sau impreuna.
Se poate face abstracție de bootloader și se programează direct microcontrolerul prin ICSP (In-Circuit Serial Programming) folosind Arduino ISP .
Codul sursă al microcontrolerului ATmega16U2 este disponibil în bibliotecile Arduino. Microcontrolerul ATmega16U2/8U2 este încărcat cu ajutorul unui loader DFU, care poate fi activat astfel:
Pentru plăcile Revizia 1: se conectează printr-o punte de cositor realizată pe spatele plăcii(in apropierea hărții Italiei)
Pentru plăcile Revizia 2 sau mai noi: se folosește un rezistor care conectează linia de activare 8U2/16U2 HWB la masă, ușurând activarea modului DFU.
Se poate folosi softul Atmel FLIP (valabil pentru Windows) sau programatorul DFU (valabil pentru Mac OS X și Linux) pentru a încărca o nouă versiune de program, sau se poate folosi conectorul ISP cu programator extern(rescriind bootloaderul DFU).
Diferențe față de alte plăci
ArduinoUno diferă de versiunile precedente prin faptul ca nu folosește conectorul FTDI- chip pentru comunicare USB-serial. În schimb , facilitează accesul microcontrolerului Atmega16U2 (Atmega8U2 până la versiunea R2) prin intermediul unui convertor USB-serial.
Instalare Drivere Arduino
Primul lucru pe care trebuie să îl faci înainte de a putea programa placa Arduino, este să îi instalezi driver-ele pe PC. Dacă rulezi Linux sau MAC, ai scăpat, nu ai nevoie de drivere. Dacă însă rulezi Windows, va trebui să instalezi și driverele, ca pentru orice alt dispozitiv hardware. Driverele sunt disponibile în mediul de dezvoltare, pe care îl vei descărca de la adresa http://arduino.cc/en/Main/Software .
Se descarcă arhiva .zip,
dezarhivăm într-un director la alegere.
Se conectează placa Arduino la portul USB. PC-ul va detecta un nou dispozitiv, și va cere instalarea driverelor pentru el.
Alegem opțiunea de instalare prin care îi spui Windows că avem drivere și refuzăm conectarea la Internet pentru a căuta în mod automat.
Se selecteaza “drivers” din locatia unde a fost dezarhivata arhiva.zip
În Device Manager, în secțiunea "Ports (COM & LPT)" ar trebui să vezi o intrare numită "Arduino UNO".
După ce ai instalat drivere-ele, următorul pas este programarea plăcii Arduino. Se va rula programul dedicat din softul descărcat anterior. Printr-un port serial se conectează cu calculatorul.
conectezi placa, aștepti circa 30 de secunde – 1 minut, pana detecteaza PC,
iar apoi deschizi meniul "Tools – Serial Port". Ar trebui să vezi una sau mai multe intrări.
Memorează-le
Deconectează placa Arduino din portul USB .
Deschide din nou meniul "Tools – Serial Port". Portul serial care a dispărut este cel asociat plăcii
Reconectăm placa Arduino la PC, așteaptă să fie recunoscută de PC, și apoi selectăm portul din meniu ”Tools – Serial Port”.
În continuare selectăm tipului nostru de placă. Din "Tools – Board", alegem tipul de placă (Arduino Uno, Leonardo, Mega, etc).
Descrierea unui program Arduino:
Programul Arduino are două secțiuni. Secțiunea "setup", care este rulată doar o singură dată, atunci când placa este alimentată (sau este apăsat butonul "Reset"), și secțiunea "loop", care este rulată în ciclu, atât timp cât este alimentată placa.
Exemplu: void setup() { //codul rulează o singură dată }
void loop() { //codul rulează întotdeauna }
Astfel, în rutina "setup" vom pune de obicei cod de inițializare, iar în rutina "loop" vom scrie partea principală a programului nostru.
După scrierea programului, încarcarea librăriilor, se va încărca programul în microcontroller. Încărcarea programului în microcontroler cu softul dedicat Arduino se face din meniu astfel:
Sketch – verify/compile
Sketch – upload
În continuare este redat programul și sunt descrise intrucțiunile folosite
#include <FreqMeasure.h> //librărie pentru măsurarea frecvențelor
#include <LiquidCrystal.h> // librărie pentru display LCD
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //configurarea pinilor
void setup() {
Serial.begin(57600);
lcd.begin(2, 16); // setează numărul de linii și coloane ale ecranului LCD;
lcd.setCursor(0, 0); // poziționează cursorul la linia 1, coloana 0
// (nota: linia 1 este rândul 2, numărătoarea începe cu linia 0):
lcd.print("Welcome");//afișează mesajul pe LCD
lcd.setCursor(0, 1); // poziționează cursorul pe linia 2 coloana 0
lcd.print("Pune degetul");
delay (7000); //permite utilizatorului să ajusteze poziția degetului timp de 10 secunde
lcd.clear(); //curăță display-ul
FreqMeasure.begin(); //începe măsurarea frecvenței
}
int a[3]; //se inițializează variabilele
double sum=0;
int count=0;
int count1=0;
double value=0;
double sum2=0;
void loop()
{ lcd.setCursor(0, 1);// poziționează cursorul la linia 1 coloana 0
if (FreqMeasure.available())
{ sum = sum + FreqMeasure.read();// se face media citirilor
count = count + 1;
Serial.println(count);
if (count > 15)
{
double frequency = F_CPU / (sum / count);
double BPM=(frequency*60);
Serial.println(frequency);
Serial.println(BPM);
a[count1]=BPM;
sum = 0;
count = 0;
count1++;
if (count1>1)
{
for(int i=0;i<3;i++)
{sum2+=a[i];}
Serial.println(sum2/2);
FreqMeasure.end();
lcd.print(sum2/2);
lcd.print(" batai/secunda");
delay(10000);
lcd.clear();
lcd.print("The End");
}
}
}
}
După încărcarea programului nu mai este necesară conectarea plăcii Arduino la calculator decât în cazul unei posibile alimentări prin portul usb sau pentru efectuarea unor modificări de programare.
CAPITOLUL 5
CONCLUZII
Modulul digital de măsurarea a pulsului poate fi folosit cu succes de către diverse categorii de persoane: elevi, studenți, sportivi, medici.
Printre avantajele modulului se găsesc:
Independența sa față de alte aparate, nefiind un sistem dedicat.
Modulul poate fi modificat cu ușurință sau completat prin schimbarea sau adăugarea altor senzori, făcându-l multifuncțional.
Modulul se poate folosi deasemenea si atașat pe aparate de sport.
Usurința programarii modulului pentru a raspunde cerintelor
Accesibilitate financiară față de alte dispozitive similare.
Desigur modulul poate fi considerat și dezavantajat față de alte instrumente asemănătoare din cauza designului si dimensiunilor, fiind mai mare decât echipamentele electronice din comert care prezintă acest modul integrat.
BIBLIOGRAFIE
S. Barrett, D. Pack, “Atmel AVR Microcontroller Primer: Programming and Interfacing”, ed Morgan&Claypool, 2008.
M. Margolis, “Arduino Cookbook”, 2nd edition, 2011
Tehnica fotopletismografiei digitale în diagnosticul fenomenului Raynaud-
http://www.medicina-interna.ro/
ArduinoUno https://www.arduino.cc
Microcontrolere si automate programabile http://elth.ucv.ro/
Interfete specializate http://www.unitbv.ro/
Arduino Uno –Specificatii tehnice http://invata.mecatronica.eu/
Port USB http://windows.microsoft.com/
Proiectarea cu Microprocesoare http://users.utcluj.ro/
STK500 Communication Protocol http://www.atmel.com/images/doc2591.pdf
Heart rate sensor Arduino http://fritzing.org/
Measuring heart http://bigelectronix.blogspot.ro/
Pulse sensor https://courses.engr.illinois.edu
Pulse sensor Icstation http://www.icstation.com/
Atmega328 http://www.atmel.com/
Heartbeat sensor http://embedded-lab.com/
Optical sensor http://www.raystar-optronics.com/
LED http://www.kingbright.com/
Photodiode http://www.avagotech.com/
Display LCD http://www.taydaelectronics.com/
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: FUNDAȚIA PENTRU CULTURĂ ȘI ÎNVĂȚĂMÂNT IOAN SLAVICI TIMIȘOARA [310572] (ID: 310572)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
