Pacemaker pentru Raspberry Pi; Partea 4 software pentru microcontroler; Helmut Karger

Helmut Karger> Proiecte> Monitorizare Raspberry Pi> Pacemaker pentru Raspberry Pi - Partea 4: Software pentru microcontroler

pacemaker

În articolul anterior am descris cum am configurat un mediu de programare pentru microcontrolerul ATtiny 13A. După ce am lansat cu succes prima noastră schiță pe µC, suntem acum pregătiți pentru cea reală Software pentru stimulatoare cardiace. Acest articol este despre Partea software, cel de pe Microcontroler alergare. ATtiny ar trebui să asculte o schimbare regulată a semnalului Raspberry Pi printr-un pin de conexiune. Dacă bătăile inimii nu apar pentru un anumit timp, trebuie să presupunem că Raspberry Pi nu mai este activ. S-a închis sau se află într-o buclă nesfârșită, din care nu se mai poate elibera - în orice caz, nu-și mai face treaba. În acest moment, microcontrolerul intervine și oprește scurt alimentarea Raspberry Pi. RasPi poate apoi reporni, își poate relua funcția, iar microcontrolerul la rândul său va începe din nou monitorizarea.

Funcția software-ului stimulator cardiac

În introducere am descris deja aproximativ ceea ce face stimulatorul cardiac. Ca memento, iată din nou schema bloc. Microcontrolerul are două sarcini principale:

  1. monitorizarea la expirare și
  2. Pană de curent în cazul unui timeout

Exact asta face partea principală a programului, așa cum vom vedea într-o clipă.

Software pentru stimulatoare cardiace

Pentru un microcontroler, software-ul nu este de obicei scris în Python ca la Raspberry Pi, ci în Limbaj de programare C. Arduino IDE are deja toate componentele la bord pentru a compila programul C și a-l bloca pe microcontroler.

Aici a mea Program de stimulator cardiac în C:

După cum puteți vedea, programul este destul de compact. Să o parcurgem una câte una. La început vor exista unele parametru Sunt definite:

  • BOOT TIME reprezintă timpul în milisecunde pe care Raspberry Pi este permis să-l pornească. Aici 30 de ani.
  • AUSZEIT este durata întreruperii puterii pentru a declanșa o repornire. Aici 5s.
  • OUTPUT este denumirea pinului pentru conexiunea pentru oprirea alimentării. Aici PB3 = pinul 2.
  • INPUT este desemnarea pinului pentru intrarea bătăilor inimii. Aici PB1 = pinul 6.
  • waitTime este timpul maxim care poate trece fără bătăi de inimă înainte de declanșarea unei reporniri. Aici o generoasă anii '60

Desigur, orele pot fi ajustate dacă, de exemplu, o repornire durează mai mult de 30 de secunde.

În plus, la începutul programului este definită o ultimă bătăi ale inimii variabile, care salvează timpul ultimei modificări a semnalului detectat.

Intrările și ieșirile sunt definite și conectate în funcția setup (). IEȘIREA este setată la LOW. Trebuie să ne amintim că suntem aici cu un Logica inversă trebuie să faceți, deoarece MOSFET inversează semnalul. Se aplică următoarele:

  • IEȘIRE = LOW: pornire
  • OUTPUT = HIGH: oprit

Apoi variabila ultimul ritm cardiac este presetată cu ora curentă și a Manipulați întreruperea mobilat cu linia:

attachInterrupt (digitalPinToInterrupt (INPUT), isr, CHANGE);

Aceasta înseamnă că conexiunea INPUT este monitorizată continuu și funcția isr este apelată în cazul unei schimbări de polaritate (CHANGE). Această funcție, așa cum puteți vedea mai jos în program, nu face altceva decât să furnizeze din nou variabilei ultimele bătăi ale inimii cu ora curentă. Acest lucru se întâmplă acum automat cu fiecare schimbare de la HIGH la LOW și de la LOW la HIGH la pinul INPUT .

Ultima acțiune a funcției setup () este să porniți puterea folosind funcția stromAn (). Le găsim la sfârșitul programului. stromAn () setează mai întâi OUTPUT la LOW pentru a porni Raspberry Pi și apoi așteaptă TIMPUL DE BOOT. Apoi variabilei ultimele bătăi ale inimii i se atribuie din nou ora curentă.

Ca și în cazul stromAn (), există și funcția stromOff (). Nu face altceva decât să seteze OUTPUT la HIGH pentru a opri alimentarea Raspberry Pi și a aștepta TIMPUL DE OPRIRE specificat.

Programul principal loop () conectează acum toate funcțiile și este încă destul de simplu. Se verifică dacă TimeOut a expirat este. Acesta este cazul când diferența dintre ora curentă și ora ultimei bătăi detectate a inimii este mai mare decât timpul de așteptare specificat. Numai atunci sunt stromAus () și stromAn () numite unul după altul pentru a forța Raspberry Pi să pornească. În caz contrar, există doar o așteptare de 100 ms și apoi începeți din nou.

Software de stimulare cardiacă flash

Pentru a rula programul pe un ATtiny 13A copiem textul sursă de pe această pagină și îl lipim într-o pagină nouă a IDE Arduino A. Nu uitați să salvați! Când hardware-ul de programare (vezi circuitul) este gata, schița poate fi ușor intermitentă pe ATtiny apăsând pe Tasta Shift și, în același timp, faceți clic pe pictograma cu săgeata spre dreapta. Luminile programatorului (Nano) vor clipi scurt, apoi procesul de bliț este terminat. Dacă ID-ul Arduino nu aruncă nicio eroare, ATtiny poate fi scos din panou și introdus în circuitul real.