• Rezultati Niso Bili Najdeni

Sestava vezja

In document RAZVOJ ELEKTRONIKE ZAFESPIRATOR V3 (Strani 83-0)

SMD komponente iz prvega naročila materiala ter iz fakultete (večina vseh SMD komponent) smo spajkali v spajkalni peči na fakulteti. Za nanos spajkalne paste smo izdelali enkratno masko za nanos iz papirnate nalepke, narejeno glede na Gerber datoteko za zgornjo masko za nanos spajkalne paste. To smo izrezali na laserskem rezalniku ter nalepili na vezje in nanesli pasto.

Ko je bila pasta nanešena, smo jo odlepili ter pričel polagati SMD komponente na vezje. V tej točki poleg manjkajočih SMD komponent prav tako nismo dodali modula ST-LINK V3MODS zaradi njegove občutljivosti. Nato smo vezje s komponentami položili v spajkalno peč in pričeli postopek spajkanja.

Po spajkalni peči smo pričeli ročno spajkanje komponent. Z uporabo primerno debelih špic na spajkalniku to ni predstavljalo večjih problemov. Modula ST-LINK V3MODS takrat nismo dodali, saj se je želelo najprej preveriti delovanje napajanja. Nepravilno napajanje bi lahko uničilo modul. Okenski detektor je ključen za napajanje, ampak ga takrat še ni bilo. Ko so prispele tudi komponente v drugem naročilu, smo pričeli ročno spajkanje preostalih komponent.

6x1 priključka za ST-LINK/V2 ter serijskih uporov zanj nismo dodali, saj je bil uporabljen modul ST-LINK V3MODS. Ker ima modul na spodnji strani kontakte, smo med vezje ter modul dodali Kapton lepilni trak, da ni prišlo do neželenih povezav. Prav tako nismo dodali kratkostičnika med BOOT0 in GND (ni se zdelo potrebno v trenutku, ampak bi bil potreben pri nalaganju programa, kar se je reševalo drugače) ter priključka USB (ni bil potreben za testiranje ter bi povzročal nevšečnosti pri testiranju zaradi postavitve na spodnji strani, dodali smo ga po

64 koncu testiranja vezja). Da smo omogočili zamenjavo senzorjev za tlak, smo na njuno mesto na vezju dodali ženske 4x1 priključke z razmakom 2,54 mm med poli (v angleščini se uporablja izraz 4x1 female header).

Slika 42: Sestavljeno vezje ob testiranju napajanja s že popravljeno samodržno logiko napajanja (senzorja ter 4x1 priključki za senzorja še niso dodani).

65 7.2 Testiranje vezja ter odpravljanje napak na vezju

Prvo testiranje je bilo za napajanje. Na priključek za omrežno napajanje smo priključili 12 V DC iz laboratorijskega napajalnika. Prvi opažen problem je bila napetost skoraj 12 V na priključku za baterijo. Ko smo na priključek za baterijo med 12 V in GND dodali upor vrednosti 5,6 kΩ, je ta napetost izginila in predpostavili smo, da se pojavi zaradi inverznega toka skozi BAT120C schottky diodi za 12 V napajanje izbiralnika napajanja. Ko bi bila baterija priklopljena in bi bilo napajanje na omrežju, ne bi bilo tega problema, saj bi baterija porabila inverzni tok. Problem bi nastal pri uporabi baterijskega napajanja ter odsotnem omrežnem, saj bi inverzni tok okenskemu detektorju lažno sporočil, da je prisotno omrežno napajanje. Zaradi prioritetnega načina izbiranja napajanja bi se baterijsko napajanje zaprlo ter omrežno odprlo. V tistem trenutku bi vezje in motor porabila inverzni tok ter napetost na liniji bi padla na 0 V. S tem bi se omrežno napajanje zaprlo ter odprlo baterijsko in to bi vodilo k oscilaciji. V fazi testiranja se je uporabljalo le omrežno napajanje. To težavo se bo rešilo z uporabo drugih diod s skupno katodo in veliko manjšim inverznim tokom.

Podoben problem je kasneje, ko smo med zaganjanjem celotnega sistema ugotovili, da logika za prižiganje in ugašanje ne deluje. Problem je bil v vezju, kjer je bil inverzni tok BAT120C schottky diode tako velik, da je povlekel napetost na izhodu tipke na 9 V (dovolj, da je mikrokrmilnik prepoznal izhod delilnika kot logično '1'). Tu smo podrobneje preverili komponento BAT120C ter ugotovilo, da ima razmeroma velik inverzni tok. Po izračunu smo ugotovili, da je inverzni tok približno 60 µA. Ta problem smo rešili z uporabo uporov z nižjimi vrednostmi v napetostnem delilniku za sporočanje stanja tipke na mikrokrmilnik. Namesto 100 kΩ ter 39 kΩ smo uporabili upora s 3,3 kΩ ter 1 kΩ upornosti. To je odpravilo napetost zaradi inverznega toka.

Vezje smo testirali v stanju s kratkim stikom čez tipko, tako da se je napajalo vezje preko tipke.

Na mikrokrmilnik takrat še ni bila naložena strojna koda. Ko se je kratki stik odstranilo, je vezje še vedno imelo napajanje. Takrat smo ugotovili, da je samodržna logika napajanja na vezju napačna. To smo popravili tako, da smo odstranili 100 kΩ upor velikosti 0603 med vrati N-kanalnega MOSFET-a in GND. Na njegovo mesto smo dodali prebojno diodo s prebojno napetostjo 3 V. Prebojna dioda se je nahajala v prevelikem ohišju za 0603 velikost, zato smo ji zavili priključke pod ohišje. Vrata MOSFET-a smo prav tako povezali preko 5,6 kΩ upora na 12 V napajanje. Na srečo je bilo tam nekaj prostora ter potencial za 12 V napajanje je bil blizu.

Za povezavo na 12 V smo uporabili žico s plastično zaščito, ki se je stopila pri spajkanju. Vezje je nato primerno delovalo. Popravilo prikazuje Slika 43.

66 Slika 43: Popravilo logike samodržne vezave. Prebojna dioda je desno od Q1.

S pravilnim načinom napajanja smo pričeli nalaganje kode. Ko je bila koda naložena, smo v načinu za razhroščevanje po korakih pregledovali program. Programski števec je vsakič, ko je skočil v UART prekinitev, izginil na neznano mesto v mikrokrmilniku. Razlog za to je bilo nepravilno nalaganje programa, saj priključek BOOT0 ni bil povezan na GND ob nalaganju.

To povezavo smo naredili s prekomerno dodanim cinom med priključnima luknjama za kratkostičnik, da je nastal kratek stik med njima. S tem se je programska koda naložila pravilno in lahko sva nadaljevala testiranje kode.

Na UART za razhroščevanje se je pošiljalo enaka sporočila kot na UART za komunikacijo preko GUI. Zaslona se takrat še ni priklopilo, tako da smo preverjali poslana sporočila preko hterm aplikacije na računalniku. Tam se ni pojavilo nobenih prejetih sporočil. Po iskanju razlogov za napačno delovanje smo ugotovili, da sta liniji UART Rx in Tx povezani obratno.

To smo rešili z dvema žicama. Najprej smo z nožem za lepenko prerezali obe liniji na sredini povezave med mikrokrmilnikom in V3MODS. Na strani mikrokrmilnika smo na obeh linijah na različnih koncih odstranili prevleko in odkrili baker. Žici smo nato pravilno povezali med odkritim delom linije ter temu pripadajočim priključkom na V3MODS. S tem popravilom je UART začel delovati pravilno. Popravilo za BOOT0 in povezavo UART je na Slika 44.

67 Slika 44: Kratek stik na mestu kratkostičnika s cinom (nad napisom BOOT) ter popravilo

povezave UART na V3MODS.

Za tem smo uspešno preverili še delovanje piskača (se ga je prižgalo) ter povezavo s senzorji (v načinu za razhroščevanje smo opazovali njune vrednosti ob spreminjanju dovedenega tlaka).

Nato je bilo na vrsti preverjanje povezave CAN. To smo najprej preverjali brez motorja z osciloskopom ter nato še z motorjem. Ko smo uporabili motor in smo že dosegli pošiljanje sporočil preko vodila CAN, mikrokrmilnik še vedno ni sprejemal sporočil, ki jih je pošiljal motor. Takrat smo na sprejemni liniji med TCAN1051 in mikrokrmilnikom zaznali napetost 5 V ter ugotovili, da smo uporabili napačen TCAN1051. Od tam smo predvidevali, da je vhod mikrokrmilnika uničen (ta priključek ni 5 V toleranten) ter z uporabo vročega zraku zamenjali mikrokrmilnik. Ker ni bilo na voljo pravilnega TCAN1051, smo na sprejemno linijo dodali napetostni delilnik. 100 Ω serijski upor na liniji smo zamenjali s 470 Ω uporom ter dodali 1 kΩ med linijo (na stran mikrokrmilnika) ter GND skoznik. Sprejemanje sporočil motorja s tem še vedno ni delovalo zaradi napake v inicializaciji (opisano v naslednjem podpoglavju) in možnost je, da bi vhod na mikrokrmilniku še vedno deloval, ampak je kljub temu popravilo bilo potrebno, saj je predstavljalo preveliko negotovost pri delovanju. Popravilo prikazuje Slika 45.

68 Slika 45: Dodani napetostni delilnik desno od oznake R34, spodnji upor je previdno vezan na

GND skoznik.

Na vezju naj bi bila analogni in navadni GND povezana skupaj poleg priključka za GUI (oznaka priključka je RPi). To povezavo smo nameravali narediti ob uporabi poligona na zgornji plasti za navadni GND. Ta povezava se ni naredila in zato analogni GND ni bil povezan na navadnega. To smo popravili tako, da smo odstranili prevleko ter odkril baker na analognem ter navadnem GND, kjer naj bi bila sicer povezava, in naredili stik s cinom.

69 7.3 Odpravljanje programskih napak pri povezavi z motorjem Pri testiranju programske kode smo največ časa porabili za zagon povezave z motorjem preko vodila CAN. Tu je bilo več problemov, zaradi katerih ni delovalo. Prvi problem je bilo pošiljanje sporočil, ki so imela dolžine sporočil 0 bajtov. Razlog za to je bilo sprotno prilagajanje dolžine sporočil. Ko smo to odstranili in začeli uporabljati samo sporočila dolžine 8 bajtov (nastavljeno v inicializaciji za oddajanje sporočil), je začel mikrokrmilnik pravilno pošiljati podatke na vodilo CAN.

Drugi problem je bil, da mikrokrmilnik ni prejemal sporočil. Tu smo odkrili uporabo napačnega TCAN1051 ter to rešilo mehansko. To ni pomagalo in po nekaj urah iskanja smo odkrili, da smo v glavni inicializaciji za FDCAN2 v programski kodi specificirali število filtrov za standardne identifikatorje 0. To smo spremenili v 1 in s tem je začela delovati povezava na vodilo CAN.

Kljub uspešni povezavi mikrokrmilnika na vodilo CAN se motor še vedno ni začel vrteti, ko se mu je poslalo željen navor. Problem smo ugotovili pri inicializaciji motorja. Pri funkciji CAN_XCP_INIT mikrokrmilnik pošlje motorju štiri sporočila, s katerimi ga aktivira. Ta sporočila vsebujejo zgolj ukaz v prvem bajtu, dolžino sporočila na drugem bajtu ter 0 ali 1 vrednost na naslednjih štirih bajtih skupaj (primer šestnajstiško zapisanega sporočila bi bil F6 04 00 00 00 01). Tu se je izkazalo, da morata za uspešno inicializacijo prvi dve sporočili imeti za dolžino sporočila vrednost 4 ter temu primerno postavljeno 1 na zadnji bajt, sicer motor ni bil pravilno inicializiran. Tretje in četrto sporočilo sta dopuščali zapis z dolžino sporočila 1 (primer FF 01 01). S tem popravilom se je motor pričel vrteti ob poslanem navoru.

Trenutni program uporablja način prepoznavanja odgovora motorja s pristopom poizvedovanja.

Ta način ni najbolj efektiven in bi normalno bila uporabljena prekinitev. Razlog za uporabo poizvedovanja je nepravilno proženje prekinitvene sekvence za prejeto sporočilo v sprejemnem FIFO 0. Inicializacijo motorja smo izvedli z uporabo poizvedovanja, medtem ko smo za pošiljanje ukazov ter sprejemanje odgovorov uporabil prekinitveno sekvenco. V poskusnem programu smo najprej izvedli inicializacijo motorja in za njo aktiviral prekinitve za FDCAN2 (da ne skače program v prekinitveno sekvenco med inicializacijo). Takoj po njihovi aktivaciji je program skočil v prekinitveno sekvenco, kljub temu da ni bilo poslano nobeno sporočilo s strani motorja. Najbolj verjetna razlaga je, da se ob inicializaciji postavi prekinitvena zastavica za prejeto sporočilo v FIFO 0 kljub temu, da prekinitve niso omogočene. Dodatna možnost izboljšave je, da bi uporabili prekinitve tudi pri inicializaciji motorja, ampak zaradi pomankanja časa tega nismo izvedli, zato bo ostala kot možnost za nadgradnjo.

70

71

8 Zaključek

V tem diplomskem delu sem opisoval nadgradnjo elektronike za FEspirator V3. Glavni cilj je bil izdelava namenskega vezja, ki bo izpolnjevalo vse zahteve. Velik del sheme smo uporabili iz verzije 2, ki smo jo spremenil potrebam primerno. Tiskano vezje je moje originalno delo, na katerem bi se lahko še marsikaj postorilo bolje. Pri programskem delu smo predvsem prilagajali kodo na mikrokrmilnik, saj je večina že bila narejena (predvsem funkcije za komunikacijo z motorjem preko vodila CAN). Moj popolnoma lastni dodatek kodi je bila zgolj samodržna logika napajanja.

Na shemi ter vezju je mogočih kar nekaj izboljšav. Poleg popravila vseh napak v vezju (samodržna logika napajanja, povezava UART z V3MODS ter ostale) bi bilo nekatere smiselno izboljšati; pri samodržni logiki napajanja bi lahko uporabili dva N-kanalna MOSFET-a nad točko detekcije zadostnih napajalnih napetosti. S tem bi dodatno zmanjšali porabo v ugasnjenem stanju ter zmanjšal število različnih komponent, saj bi lahko preprosto uporabili dodaten NDC7002N z dvema N-kanalnima MOSFET-oma. Pri povezavi CAN med TCAN1051 ter mikrokrmilnikom bi poleg izbire pravilnega oddajnika/sprejemnika lahko dodali napetostni delilnik na vezje, s čemer bi lahko preprosteje prilagajali vezje.

Na vezje smo dodali možnost za popolnoma digitalno delovanje vezja z vodili I2C ter SPI. V programskem delu tega še ni dodanega, tako da bi v prihodnje bilo smiselno dodati ta dva načina. S tem bi pridobilo vezje na varnosti prenosa podatkov in veliko komponent ne bi bilo več potrebnih, kar bi zmanjšalo ceno vseh komponent ter vezje bi lahko izdelali manjše, kar bi znižalo ceno izdelave vezja. Poleg digitalnih povezav bi bilo prav tako smiselno dodati v program verzijo komuniciranja preko vodila CAN s prekinitvami, saj bi omogočilo nekoliko skrajšati čas enega poteka programa.

72

73

9 Literatura

[1] R. M. Kacmarek, „The Mechanical Ventilator: Past, Present, and Future“, Respiratory Care, let. 56, št. 8, str. 1170–1180, avg. 2011, doi: 10.4187/respcare.01420.

[2] „Modes of Mechanical Ventilation“.

https://www.openanesthesia.org/modes_of_mechanical_ventilation/ (pridobljeno jul. 25, 2021).

[3] UL Fakulteta za elektrotehniko, FEspirator - Predstavitveno predavanje. Pridobljeno:

avg. 03, 2021. [Na spletu Video]. Dostopno na:

https://www.youtube.com/watch?v=ofsfKeXbBx4

[4] „Zasnova preprostega respiratorja SIQ.pptx - Google Predstavitve“.

https://docs.google.com/presentation/d/1IyKY8yB9Txn3Hl1cg_5AJTutLMx9mGht/edit

#slide=id.p1 (pridobljeno avg. 03, 2021).

[5] „Specifications for simple open source mechanical ventilator Public“, Coronavirus Camp, mar. 29, 2020. http://coronavirus.camp/2020/03/29/specifications-for-simple-open-source-mechanical-ventilator-public/ (pridobljeno avg. 05, 2021).

[6] „Why diode is connected across IGBT and MOSFET? Body or Intrinsic Diode“, ETechnoG - Electrical, Electronics and Technology.

https://www.etechnog.com/2019/07/body-diode-connected-mosfet.html (pridobljeno avg. 01, 2021).

[7] „tps3701.pdf“. Pridobljeno: avg. 03, 2021. [Na spletu]. Dostopno na:

https://www.ti.com/lit/ds/symlink/tps3701.pdf?ts=1627972751560&ref_url=https%253 A%252F%252Fwww.google.com%252F

[8] „CAN bus“, Wikipedia. jul. 10, 2021. Pridobljeno: jul. 31, 2021. [Na spletu]. Dostopno na: https://en.wikipedia.org/w/index.php?title=CAN_bus&oldid=1032905981

[9] „Why are termination networks in CAN transceivers so important? - Industrial - Technical articles - TI E2E support forums“.

https://e2e.ti.com/blogs_/b/industrial_strength/posts/the-importance-of-termination-networks-in-can-transceivers (pridobljeno jul. 31, 2021).

[10] „Absolute vs Gauge vs Differential Pressure Sensors | The Design Engineer’s Guide | Avnet Abacus“.

https://www.avnet.com/wps/portal/abacus/solutions/technologies/sensors/pressure-sensors/measurement-types/ (pridobljeno avg. 05, 2021).

[11] M. Hartshorne, „Dual Power Path Multiplexer“, str. 15, 2015.

[12] „tps3701.pdf“. Pridobljeno: avg. 09, 2021. [Na spletu]. Dostopno na:

https://www.ti.com/lit/ds/symlink/tps3701.pdf?ts=1628503083007

[13] „IPD068P03L3 G_2.1-94391.pdf“. Pridobljeno: avg. 05, 2021. [Na spletu]. Dostopno na: https://www.mouser.com/datasheet/2/196/IPD068P03L3%20G_2.1-94391.pdf [14] „NDC7002N.pdf“. Pridobljeno: avg. 10, 2021. [Na spletu]. Dostopno na:

https://www.jameco.com/Jameco/Products/ProdDS/1030156.pdf?src-supplier=Jameco [15] „STM32_5VtolerantIO.pdf“. Pridobljeno: avg. 10, 2021. [Na spletu]. Dostopno na:

http://www.emcu.eu/000/STM32_5VtolerantIO.pdf

[16] „pth08t261w.pdf“. Pridobljeno: avg. 10, 2021. [Na spletu]. Dostopno na:

https://www.ti.com/lit/ds/symlink/pth08t261w.pdf?src-supplier=Digi-Key

[17] „dm00555046-stlink-v3mods-and-stlink-v3mini-mini-debuggers-programmers-for-stm32-stmicroelectronics.pdf“. Pridobljeno: avg. 12, 2021. [Na spletu]. Dostopno na:

https://www.st.com/resource/en/user_manual/dm00555046-stlink-v3mods-and-stlink-v3mini-mini-debuggers-programmers-for-stm32-stmicroelectronics.pdf

[18] „stm32g474cb.pdf“. Pridobljeno: avg. 10, 2021. [Na spletu]. Dostopno na:

https://www.st.com/resource/en/datasheet/stm32g474cb.pdf

74 [19]

„dm00355726-stm32g4-series-advanced-arm-based-32-bit-mcus-stmicroelectronics.pdf“. Pridobljeno: avg. 10, 2021. [Na spletu]. Dostopno na:

https://www.st.com/resource/en/reference_manual/dm00355726-stm32g4-series-advanced-arm-based-32-bit-mcus-stmicroelectronics.pdf

[20] „tcan1051-q1.pdf“. Pridobljeno: avg. 11, 2021. [Na spletu]. Dostopno na:

https://www.ti.com/lit/ds/symlink/tcan1051-q1.pdf?ts=1628666661760&ref_url=https%253A%252F%252Fwww.ti.com%252Fprod uct%252FTCAN1051-Q1

[21] „2016 - TJF1051 High-speed CAN transceiver.pdf“. Pridobljeno: avg. 11, 2021. [Na spletu]. Dostopno na: https://eu.mouser.com/datasheet/2/302/TJF1051-1127980.pdf [22] „2017 - High-speed CAN transceiver.pdf“. Pridobljeno: avg. 11, 2021. [Na spletu].

Dostopno na: https://eu.mouser.com/datasheet/2/302/TJA1051-1127850.pdf

[23] „Infineon-IFX1051LE-DS-v01_00-EN-1144338.pdf“. Pridobljeno: avg. 11, 2021. [Na spletu]. Dostopno na: https://eu.mouser.com/datasheet/2/196/Infineon-IFX1051LE-DS-v01_00-EN-1144338.pdf

75

10 Priloge

Tabela 3: Seznam ukazov za inicializacijo, pošiljanje navora ter odgovori motorja.

Inicializacija motorja

Vrednost F0 04 {navor v obliki float, 4 bajti} 00 00

Odgovor motorja

Funkcija sporočila Sporočila motorja krmilniku (hex)

Potrditev FF

Napaka FE

76 Slika 46: Shema FEspirator V3, ki povezuje vse sklope.

77 Slika 47: Celotna shema za izbiralnik napajanja.

78 Slika 48: Celotna shema za mikrokrmilnik, modul LINK V3MODS, Nucleo

ST-LINK/V2, tipko RESET in priključek USB.

79 Slika 49: Spodnja plast tiskanega vezja.

80 Slika 50: 3D pogled vezja v Altium Designer.

In document RAZVOJ ELEKTRONIKE ZAFESPIRATOR V3 (Strani 83-0)