用maker的身份來為武漢肺炎防疫工作做一些能力範圍內的事情
《DIY紫外線無死角自動消毒機》
青年創造工坊@嶽十二
Part 1 前言
一場來源不明的爆發流行疾病在中國農曆豬鼠年交的春節之際被全國大眾所關注併產生深遠影響,2019-nCov新型冠狀病毒首先在湖北武漢爆發,進而波及整個湖北省乃至全國和海外。
我的身份之一是maker,在這場疫情當中我想我可以用我的特長做些力所能及的工作,所以有了這份本來打算用於我們自己光固化和拋光處理用途的機器,針對消毒防疫需求而改裝並且整理開源共享給大家做教育和diy使用的特殊限定開源項目。
艾薩克·牛頓在歐洲鼠疫期間探究了影響後世的光色散原理。拋磚引玉也希望我們的教育開源計劃可以幫助啟發更多有想法和動手能力的朋友們,在居家隔離期間可以多多萌發出對未知探索的熱情與勇氣以及對世界的愛。
Part 2 項目背景知識紫外線Ultraviolet,簡稱UV,是波長10nm至400nm之間的電磁波的通稱,具體的:按照ISO-DIS-21348所規定的紫外輻射分類如下:
太陽輻射出的紫外線包括UVA、UVB、和UVC頻帶。地球的臭氧層阻絕了97-99%穿透大氣層的紫外線輻射。到達地球表面的紫外線98.7%是UVA(UVC和更高能的輻射會促成臭氧的生成,並且形成臭氧層)。
紫外線殺菌原理就是通過紫外線的照射,破壞及改變病毒、細菌等的DNA(脫氧核糖核酸)核糖核酸(RNA)結構,吸收紫外線後,引起DNA鏈rna斷裂,造成核酸和蛋白的交聯破裂,殺滅核酸的生物活性,致病毒、細菌死亡或不能繁殖增殖,達到殺菌的目的。真正具有殺菌作用的是UVC紫外線,230-280nm之間的紫外線是有效波段,以253.7nm左右的紫外線效率最佳。
現在市面上的紫外線殺菌燈的發光譜線主要有254nm和185nm兩條。254nm紫外線通過照射微生物的DNA、RNA來殺滅病毒細菌,185nm紫外線可將空氣中的O2變成O3(臭氧),臭氧具有強氧化作用,可有效地殺滅細菌,臭氧的彌散性用以彌補紫外線沿直線傳播、消毒有死角的缺點。但注意臭氧會促進人體的血紅蛋白凝結,造成人體供氧不足,發生頭暈、噁心的感覺,影響身體健康,特別在臭氧濃度達到>0.3ppm (mg/m2 )時,將會對人體造成嚴重的傷害。另外殺菌的衡量劑量是照射強度與照射時間的乘積(殺菌劑量=照射強度·照射時間/K=I·t ),即紫外線的照射劑量則取決於紫外線的強度大小以及照射時間的長短,高強度短時間與低強度長時間的照射其效果是相同的。根據上述知識背景,我們選用uvc波段的紫外線並旋轉均勻照射需消毒物體,為此還需要實現良好的交互設置和自動化系統,同時還需要兼顧教育和DIY特性,因此選用合適元件和如下操作進行製作。part 3 項目實施接線圖
電路設計
豎版
橫版
程序示例
/*code by青年創造工坊@嶽十二,2020.02.07未實機驗證*/
#define C1 262
#define C3 330
#define C7 495
//定義編碼器引腳連接
int CK = 2;//數據CLK->D2
int DT = 3;//數據DT->D3
int SW0 = 4;//按鈕SW->D4
//定義7段led引腳連接
int led1=9;
int led2=8;
int led4=7;
int led7=5;
int led6=6;
int led9=10;
int led10=11;
//定義撥杆按鈕引腳連接
int SW1=A6;
int SW2=A7;
//定義步進電機引腳連接
int EN=12;
int S0=A4;
int S1=A5;
int D0=1;
int D1=0;
//定義dc控制引腳連接
int P0=A0;
int P1=A1;
int P2=A2;
int P3=A3;
int BUZ=13; //蜂鳴器引腳10
//顯示數字
int num_array[10][7] = { { 1,1,1,1,1,1,0 }, // 0
{ 0,1,1,0,0,0,0 }, // 1
{ 1,1,0,1,1,0,1 }, // 2
{ 1,1,1,1,0,0,1 }, // 3
{ 0,1,1,0,0,1,1 }, // 4
{ 1,0,1,1,0,1,1 }, // 5
{ 1,0,1,1,1,1,1 }, // 6
{ 1,1,1,0,0,0,0 }, // 7
{ 1,1,1,1,1,1,1 }, // 8
{ 1,1,1,0,0,1,1 }}; // 9
int val=0;//設定
int vall=0;
int t=50;
int k=800;
void setup()
{ pinMode(CK,INPUT);
pinMode(DT,INPUT);
pinMode(SW0,INPUT_PULLUP);//連接按鈕的引腳設為內部上拉==pinMode(SW0, INPUT);digitalWrite(SW0, HIGH);
pinMode(SW1,INPUT_PULLUP);
pinMode(SW2,INPUT_PULLUP);
int a[]={5,6,7,8,9,10,11}; for (int i=0;i<7;i++){ pinMode(a,OUTPUT);}//分別將5-11端口設置為輸出模式
pinMode(EN,OUTPUT);
pinMode(S0,OUTPUT);
pinMode(S1,OUTPUT);
pinMode(D0,OUTPUT);
pinMode(D1,OUTPUT);
pinMode(P0,OUTPUT);
pinMode(P1,OUTPUT);
pinMode(P2,OUTPUT);
pinMode(P3,OUTPUT);
Serial.begin(9600);
}
void loop()
{
Get();Num(val);
if (!digitalRead(SW0)){digitalWrite(EN,LOW); MOT();Serial.println('0');digitalWrite(EN,HIGH); }
while(digitalRead(SW1) == LOW){C0a();if (!digitalRead(SW0)){digitalWrite(EN,LOW); MOT();Serial.println('0');digitalWrite(EN,HIGH); }}
while(digitalRead(SW2) == LOW){C1b();if (!digitalRead(SW0)){digitalWrite(EN,LOW); MOT();Serial.println('0');digitalWrite(EN,HIGH); }}
}
Get()//獲取編碼器數字
{ int clkValue = digitalRead(CK);//讀取CLK引腳的電平
int dtValue = digitalRead(DT);//讀取DT引腳的電平
val=val+clkValue-dtValue;
if (val<0||val>9){val=0;}
Serial.print("NUM:");Serial.println(val);delay(333);}
void Num(int number)// 數字顯示
{int pin=5;for(int j=0;j<7;j++) { digitalWrite(pin, num_array[number][j]);pin++;} }
void Num0()//數字顯示清空
{for(int i=5;i<12;i++) { pinMode(i,OUTPUT);}delay(100);}
MOT()//平臺旋轉循環
{ int n=0; BUZ1();
while(n==val*20)//需測試
{ for(int j=0;j<30;j++)//需測試
{ M1a();M0a();}
for(int j=0;j<30;j++)///需測試
{ M1b();M0a();}
n++;
if (n%20==0){vall=val-n/20;Num(vall); }
}
BUZ0();
}
int BUZ0() ////提示音
{tone(13,C7);delay(100);tone(13,C1);delay(100);tone(13,C3);delay(100);noTone(10); }
int BUZ1() ////提示音
{tone(13,C7);delay(100);noTone(10); }
int BUZ2() ////提示音
{tone(13,C3);delay(100);noTone(10); }
C0a()//DC控制0號正向
{digitalWrite(P0,HIGH);digitalWrite(P1,LOW);}
C0b()//DC控制0號反向
{digitalWrite(P1,HIGH);digitalWrite(P0,LOW);}
C1a()//DC控制1號正向
{digitalWrite(P2,HIGH);digitalWrite(P3,LOW);}
C1b()//DC控制1號反向
{digitalWrite(P3,HIGH);digitalWrite(P2,LOW);}
M0a()//0號電機正向
{digitalWrite(D0,HIGH);int i=0;
while(i {digitalWrite(S0,HIGH);delayMicroseconds(k); digitalWrite(S0,LOW);delayMicroseconds(k);i++;} } M0b()//0號電機反向 {digitalWrite(D0,LOW);int i=0; while(i {digitalWrite(S0,HIGH);delayMicroseconds(k); digitalWrite(S0,LOW);delayMicroseconds(k);i++;} } M1a()//1號電機正向 {digitalWrite(D1,HIGH);int i=0; while(i {digitalWrite(S1,HIGH);delayMicroseconds(k); digitalWrite(S1,LOW);delayMicroseconds(k);i++;} } M1b()//1號電機反向 {digitalWrite(D1,LOW);int i=0; while(i {digitalWrite(S1,HIGH);delayMicroseconds(k); digitalWrite(S1,LOW);delayMicroseconds(k);i++;} } 機械設計 效果圖 材料清單 part 4 結語 2020.02.04粉絲啟發 2020.02.05機械完稿 2020.02.06電路完稿 2020.02.07程序完稿 快遞基本都已停滯,下單的材料都沒辦法運達,所以也沒有辦法實機測試,一定會在材料到位的時間儘快測試。另一方面,有物料的朋友或者在各細分領域更精專的朋友也歡迎對項目進行修繕和改進開源,共同助力知識和技能的分享交流。 引回形針paperclip的一段評: ps:《三體》描述的三體人因為思維透明而發展迅猛,希望萬物聯網也能幫助人類進化走入下個紀元。
閱讀更多 青年創造工坊 的文章