作者:張昊 羅志彤馬 新龍 **景
所屬機構: 習外交學院
指導老師:陳小虎 杜習
1 目的和意義
消毒是疫情防控工作的重要組成部分,傳統的消毒方式需要人工操作消毒裝置,不僅工作量大,而且有些消毒劑會對人體造成傷害,消毒機械人成為替代人工工作的最佳選擇,因此開發一種可攜帶多種消毒裝置的消毒機械人控制系統,對防疫和防疫具有重要意義。控制。
2 背景
基於當前疫情環境的背景,在智慧型設計理念的指導下開展設計研究。 現有的消毒方法大多採用人工消毒,消毒人員在進入消毒區域進行消毒前需要做好防護工作,人工消毒工作區域大,工作強度大,每天需要在精力較大的區域進行多次消毒, 這增加了工作人員的感染風險。它旨在取代傳統的人工消毒模式,將消毒功能賦予智慧型機械人,並兼顧人工消毒死角和環境監測,進行設計實踐。
三、問題與解決方法
挑戰:自2024年底新冠肺炎疫情爆發以來,迅速席捲全球,新型冠狀病毒的強烈傳染性使全世界人民的生命和健康面臨巨大風險。 輸入病例、無症狀感染者、變異株等都對我國疫情防控工作構成挑戰,對可能被病原微生物汙染的場所和物品進行消毒,是阻斷病毒傳播的重要技術手段。
解決方法:通過對車站等公共場所進行預防性消毒,可以有效阻斷疫情的傳播途徑,減少新型冠狀病毒接觸傳播和氣溶膠傳播引起的感染。 研究聚焦疫情背景下最密集的消毒工作,以智慧型消毒機械人代替人工消毒作業,保障人員健康安全。 提高最密集區域的消毒效率和殺菌率,大大提高了每個環境的工作效率,進一步降低了疫情在最密集區域傳播的可能性。
1. 機械結構設計與建模
通過實地考察,分析密集消毒環境,在傳統消毒機械人的基礎上對場景進行細分,通過測量地面與座椅、座椅與扶手的距離,進一步確定智慧型消毒機械人的工作狀態,並基於密集空間資料確定智慧型消毒機械人的行走模式。 利用模組化設計,整合功能和結構,並分析其安全性。
2 創新
該組生產的消毒防疫機械人兼具噴霧和紫外線消毒功能,由於進行室內外消毒殺菌,隊員採用可拆卸組裝式底盤,室內消毒殺菌採用輪式底盤,室外消毒殺菌採用履帶式底盤。
1 電源設計
通過對現有消毒形式的調查分析,了解其執行中存在的問題,並結合現有消毒機械人的工作狀態和特定場景任務的執行情況,對現有消毒機械人進行優化。 採用模組化設計方法和有限結構變化方法,進行了大量廣泛的資料收集和實地調研,分析了現有消毒機械人的優缺點,並分析了未來的發展趨勢。
2. 機械人控制系統設計
該機械人使用 1 個超聲波感測器來識別和感知前方障礙物,4 個電機用於底盤驅動,3 個伺服系統用於對執行器進行消毒。 超聲波感測器接在STM32系統擴充套件板的感測器區域A0、A1引腳上,四個電機分別接在擴充套件板的X、Y、Z、A介面上,三個伺服器接在擴充套件板的7個引腳上。 控制系統軟體使用Arduino在C語言中程式設計。
感知與控制軟體流程圖如下所示:
2D 繪圖
側檢視,可以看到機械臂的上下。
俯檢視,用於觀察機械臂的平面擺動。
2.3D測繪成像
2.現場組裝和生產
整體組裝和除錯
隨著機械人技術的飛速發展,機械人早已出現在醫療領域,雖然防疫消毒機械人發展緩慢,各企業研發力量不足。 在疫情爆發之前,為了降低人工消毒的勞動強度和交叉感染的風險,解決一線醫護人員不足的問題,用消毒機械人代替人工,在醫院、戶外等場所從事消毒工作,這使得醫院對消毒機械人的需求迅速增加, 各國也開始加大對醫療服務機械人的研發力度。
#include
定義舵機速度 40 定義舵機轉動的快慢。
#define servo_speed1 1
定義舵機速度 Walkforward Low 10 設定前進的慢動作。
定義伺服速度 Walkforward High 40
定義伺服速度回退低 10 以設定慢速後退運動。
定義伺服速度 Walkback High 5
定義伺服速度右低 6 以設定慢速右轉動作的時間。
定義伺服速度 Right High 4
servo myservo[3];定義 3 個舵機。
int f = 30;定義舵機在每種狀態之間旋轉的次數,從而確定每個舵機每次旋轉的角度。
int servo_port[3] = ;定義伺服引腳。
int servo_num = sizeof(servo_port) / sizeof(servo_port[0]);定義舵機的數量。
float value_init[8] = ;定義舵機的初始角度。
int judge=0;
int getintdata=0;
const int xdirpin = 44;方向銷。
const int xsteppin = 45;踏步銷。
const int ydirpin = 32;方向銷。
const int ysteppin = 33;踏步銷。
const int zdirpin = 42;方向銷。
const int zsteppin = 43;踏步銷。
const int adirpin = 30;方向銷。
const int asteppin = 31;踏步銷。
const int steps_per_rev =200;
#define echopin a0
#define trigpin a1
void setup()
void loop()
else 舵機的運動控制。
servo_move(950,1300,1500, servo_speed_walkforward_low);
delay(5000);
950, 1300, 1500, servo_speed_walkforward_low
指示連線到銷 D3 的舵機轉動的角度 指示連線到銷 D4 的舵機轉動的角度 指示連線到銷 D7 的舵機轉動的角度 指示舵機轉動的速度。
servo_move(2400,1800,2500, servo_speed_walkforward_low);
delay(5000);
2400, 1800, 2500, servo_speed_walkforward_low
指示連線到銷 D3 的舵機轉動的角度 指示連線到銷 D4 的舵機轉動的角度 指示連線到銷 D7 的舵機轉動的角度 指示舵機轉動的速度。
自定義函式。
void servoactionreset()
void servostart(int which) 啟用舵機。
if(!myservo[which].attached())myservo[which].attach(servo_port[which]);
pinmode(servo_port[which], output);
void servostop(int which) 釋放舵機。
myservo[which].detach();
digitalwrite(servo_port[which],low);
void servogo(int which , int where) 開啟並將相關角度寫入舵機。
if(where!=200)
void servo_move(float value0, float value1, float value2, float t)
alue0、value1、value2、value3是舵機角度時要寫入的四個引數,float t是表示舵機運動時間的引數。
float value_arguments = ;
float value_delta[servo_num];
for(int i=0;ifor(int i=0;ifor(int j=0;jdelay(t);
更多詳情請見:[S037] 自主消毒防疫機械人