Planificator medical
Planificatorul Medical este conceput sa ajute persoanele in varsta, usurandu-le modul de administrare a medicamentelor. In acest sens, planificatorul va utiliza urmatoarele componente de baza pentru a interactiona cu utilizatorii: afisaj LCD cu scopul afisarii informatiilor in timpul luarii medicamentelor, doua recipiente de stocare a medicamentelor, un buzzer folosit pentru a anunta ora programata, doua led-uri, fiecare led indicand recipientul ce trebuie deschis, si un microfon cu ajutorul caruia utilizatorul poate specifica un numar de minute dupa care alarma sa sune din nou, avand la dispozitie trei optiuni (5, 10 sau 15 minute). Ideea de la care am pornit a fost construirea unui dispozitiv care sa ajute o persoana ce urmeaza permanent un tratament fara supraveghere medicala.
In momentul in care suna alarma, LCD-ul va afisa informatii referitoare la medicamentele ce urmeaza a fi luate. Recipientul este indicat de led-ul asociat, iar la deschiderea acestuia se va elibera si switch-ul lipit in interior. Daca switch-ul ramane apasat (adica nu s-a deschis recipientul) si utilizatorul nu specifica un numar de minute pentru amanare, alarma va suna peste 5 minute.
Lista de piese:
Schema electrica de conectare a microfonului la ADC (portul PA0):
Schema de conectare a switch-urilor, led-urilor si a buzzer-ului:
In ceea ce priveste modulul Buzzer, pentru a genera alarma, am folosit timer-ul 1 cu intreruperile TIMER1_OVF si TIMER1_COMPA, precum si prescaler-ul clkI/O/256. Am ales ca mod de operare PWM - Phase and Frequency Correct, deci valoarea top e reprezentata de ICR1, valoare pe care am setat-o la 0x000F. La fiecare overflow incrementez variabilele ce indica timpul, iar la expirarea acestuia setez OCR1A la valori mai mici decat ICR1 astfel incat la intreruperea de compare match sa modific starea led-ului. Tot in momentul de compare match, OC1A este setat in timpul incrementarii counter-ului si resetat pe panta descendenta.
Singurul mod de operare PWM pentru care sunetul generat de buzzer a fost perceptibil este Phase and Frequency Correct cu valoarea top data de ICR1. Desi am vrut sa fie tratate cat mai rar intreruperile, adica o valoare top cat mai mare, pentru a obtine un volum potrivit am initializat ICR1 la 0x000F, iar la expirarea timpului am setat OCR1A la valoarea 1, respectiv 2, in functie de ce led se aprinde si ce recipient trebuie deschis.