Satura rādītājs:

Automātiskais zāļu dozators: 5 soļi
Automātiskais zāļu dozators: 5 soļi

Video: Automātiskais zāļu dozators: 5 soļi

Video: Automātiskais zāļu dozators: 5 soļi
Video: BMW 520d Luxury Line 2018: Удивительные особенности, которые вы должны знать 2024, Jūlijs
Anonim
Automātiskais zāļu dozators
Automātiskais zāļu dozators

Šis projekts ir paredzēts izmantošanai medicīnas jomā, kur gados vecākiem pacientiem ir jābūt drošam medikamentu sadalīšanas un izsniegšanas veidam. Šī ierīce ļauj zāles sadalīt līdz 9 dienām iepriekš un automātiski izsniegt vēlamajā laikā. Vāks ir arī aizslēdzams ar RFID marķējumu, nodrošinot, ka tikai aprūpētājs var piekļūt medikamentiem.

Piegādes:

Šim projektam ir nepieciešami materiāli:

  • Arduino UNO
  • Motora vadītāja modulis
  • Servo SG90 9G
  • Stepper motors
  • DS1302 RTC modulis
  • Dažādi džemperu vadi
  • IIC 1602 LCD
  • Piekļuve 3D printerim
  • Kājas, piemēram, koka dībeļi
  • RFID modulis un marķējums
  • Divas spiedpogas
  • Lodāmurs
  • Maizes dēlis
  • Super līme
  • Koka skrūves
  • Nepabeigta koka kaste ar šarnīra vāku
  • Divpusēja lente

1. darbība: lodziņa pārveidošana

Kastes pārveidošana
Kastes pārveidošana
Kastes pārveidošana
Kastes pārveidošana
Kastes pārveidošana
Kastes pārveidošana
Kastes pārveidošana
Kastes pārveidošana

Kastīte vispirms būs jāmaina. Ir jāizurbj vairāki caurumi. Pirmais caurums atradīsies kastes priekšpusē, kur ir iespiesta vadības paneļa kaste. Otrais caurums atrodas kastes aizmugurē, lai izietu cauri USB kabelim. Pēdējais caurums atrodas kastes apakšā, kur zāles izkritīs, tiklīdz tās tiks izsniegtas. Visbeidzot, kājas jāpiestiprina pie apakšas. Kājām izmantoju gumijas pēdas, ko atradu ap savu māju, bet var izmantot arī koka tapas.

2. darbība: 3D drukātās detaļas

3D drukātas detaļas
3D drukātas detaļas
3D drukātas detaļas
3D drukātas detaļas
3D drukātas detaļas
3D drukātas detaļas

Šim projektam ir vajadzīgas daudzas 3D drukātas detaļas.

Viņi ir:

  • Karuselis, kurā ir zāles
  • Bāze karuseļam
  • Piltuve medikamentiem
  • Servo motora roka vāka bloķēšanai
  • Bāze servomotorei
  • Servo rokas fiksators
  • Vadības panelis
  • Tase zāļu izsniegšanai

Karuseļa pamatne ir pielīmēta pie kastes ar abpusēju līmlenti. Servo motora pamatne un rokas aizbīdnis ir ieskrūvēti kastē ar īsām koka skrūvēm. Pēc komponentu ievietošanas vadības paneļa kārba tiek pielīmēta pie kastes priekšpuses ar super līmi.

3. solis: elektronika

Elektronika
Elektronika

Tagad elektronika ir jāievieto kastē. Pirmkārt, pakāpiena motors ir piestiprināts pie karuseļa pamatnes ar M3 skrūvēm un uzgriežņiem. Pēc tam servo ir super pielīmēts pie pamatnes. Pēc tam motora kontrolieris, Arduino, maizes dēlis, RFID modulis un RTC modulis ir pievienoti kastē ar divpusēju lenti. LCD ir ievietots vadības kastes atverē. Ir nepieciešama lodēšana. Spiedpogām džemperu kabeļi jāpielodē pie lāpstas savienotājiem. RFID lasītājam tapas jāpielodē pie tāfeles.

4. solis: kods

Zemāk ir komentētais kods:

Šajā kodā ir iekļautas servo, LCD, RTC, RFID un pakāpju motora bibliotēkas.

////////////////// Bibliotēkas un mainīgie

#iekļaut #iekļaut // Arduino standarta bibliotēku #iekļaut #iekļaut virtuabotixRTC myRTC (2, 3, 4); // Definēt tapas #define servopin 8 const int buttonup = 6; const int buttondown = 7; int h = 0; int minn = 0; int sel = 0; int stāvoklis = 0; int apgalvots = 0; int statez = 0; int gaidīt = 0; int skapītis = 0; // Iestatīt servo Servo servo; int leņķis = 180; #include // izmantojiet modificētu soļu bibliotēku ar 1000/0100/0010/0001 magnēta iedarbināšanas secību. Ievietojiet bibliotēku savā bibliotēkas mapē. #define gearratio 64 // 1: 64 pārnesumu attiecība const int soļiPerRevolution = 2048; // Arduino Kit motors ir pārnests uz leju. Ar eksperimentu es noteicu, ka 2048 soļi pagriež vārpstu vienu kārtu. int soļi = 0; LiquidCrystal_I2C LCD (0x27, 16, 2); // uzmontēt 4 vadu pakāpienu uz tapām 8 līdz 11: Stepper myStepper (stepsPerRevolution, A0, A1, A2, A3); #include #include #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522 (SS_PIN, RST_PIN); // Izveidot MFRC522 instanci. int deg = 10; void setup () {lcd.init (); // inicializēt lcd lcd.backlight (); // Līnija zem tā tiek izmantota, lai iestatītu pašreizējo laiku. Tas ir jādara tikai vienu reizi, un pēc tam kods // ir jāaugšupielādē vēlreiz, komentējot to. //myRTC.setDS1302Time (40, 55, 11, 1, 7, 12, 2020); pinMode (pogas, INPUT_PULLUP); pinMode (buttondown, INPUT_PULLUP); Sērijas sākums (9600); // Sāciet seriālo sakaru SPI.begin (); // Uzsākt SPI kopni mfrc522. PCD_Init (); // Uzsākt MFRC522 myStepper.setSpeed (0,15*pārnesumu attiecība); // šķiet, ka motors ir samazināts par 1/64, kas nozīmē, ka ātrums ir jāiestata 64 reizes. // inicializēt seriālo portu: servo.attach (servopin); } void loop () {///////////////// LCD kods // Pastāvīgi atjaunina displeju ar pašreizējo laiku un izsniegšanas laiku. lcd.clear (); myRTC.updateTime (); lcd.setCursor (0, 0); lcd.print ("Laiks:"); lcd.setCursor (6, 0); lcd.print (myRTC.hours); lcd.print (":"); lcd.print (myRTC.minutes); lcd.setCursor (0, 1); lcd.print ("Izdot:"); lcd.setCursor (10, 1); lcd.print (hr); lcd.print (":"); lcd.print (minn); ///////////////// Lasīšanas pogu stāvokļi // Nolasa pogu stāvokli, lai mainītu izsniegšanas laiku. stāvoklis = digitalRead (pogas); konstatēts = digitalRead (buttondown); kavēšanās (100); ///////////////// Izplatīšanas loģika // Ja pašreizējais laiks ir tāds pats kā izvēlētais dozēšanas laiks, pagrieziet soļu motoru. // Ik pēc 9 reizēm, kad ierīce tiek izsniegta, motors pagriež papildu attālumu, lai nodrošinātu pilnīgu rotāciju. ja (myRTC.hours == h && myRTC.minutes == minn && steps <9) {myStepper.step (227); soļi = soļi +1; kavēšanās (60100); myRTC.updateTime (); } cits if (myRTC.hours == h && myRTC.minutes == minn && steps == 9) {myStepper.step (232); soļi = 0; kavēšanās (60100); myRTC.updateTime (); ////////////////// Izsniegšanas laika maiņa // Mainiet dozēšanas laiku, pamatojoties uz to, kura poga tiek nospiesta. // Laiks atgriežas pie nulles, kad stundas sasniedz 24, bet minūtes sasniedz 60.} if (stateup == LOW && hr <23) {hr = hr+1; kavēšanās (50); } cits if (statuss == LOW && hr == 23) {hr = 0; kavēšanās (50); } ja (konstatēts == LOW && minn <59) {minn = minn+1; kavēšanās (50); } cits ja (konstatēts == LOW && minn == 59) {minn = 0; kavēšanās (50); } ///////////////// RFID kods // Nolasa RFID tagu, kad tas tiek parādīts. if (! mfrc522. PICC_IsNewCardPresent ()) {return; } // Izvēlieties vienu no kartēm, ja (! Mfrc522. PICC_ReadCardSerial ()) {return; } Stīgu saturs = ""; baitu burts; par (baits i = 0; i <mfrc522.uid.size; i ++) {//Serial.println(mfrc522.uid.uidByte <0x10? "0": ""); //Serial.println(mfrc522.uid.uidBy

5. darbība: galīgā iestatīšana

Pēdējais solis ir sagatavot projektu lietošanai. Vispirms augšupielādējiet kodu ar nekomentētu laika iestatīšanas rindiņu, lai augšupielādētu pašreizējo laiku RTC. Pēc tam komentējiet kodu un atkārtoti ielādējiet kodu. Tas nodrošinās, ka, ja ierīce tiek atvienota no elektrotīkla, tā joprojām saglabā pareizo laiku. Tagad viss, kas jums jādara, ir ievietot zāles spraugās, novietot krūzi zem dozēšanas atveres un iestatīt izsniegšanas laiku. Ierīce katru dienu uzticami izsniegs vienā un tajā pašā laikā.

Ieteicams: