創新者:孫露露
可適應開關的殘疾兒童汽車設計
創新者:孫露露
殘疾兒童汽車是近年來一個新穎的研究領域,美國特拉華大學已經創立了名為GoBabyGo的項目,獲得國內外的廣泛關注。本文對已有的兒童汽車進行改裝,通過使用Arduino單片機控制一系列簡單的可適應開關來代替方向盤,并增加了頭部可接觸開關、距離傳感器、制動開關等,滿足患有不同殘疾的兒童的需求。
患有身體殘疾,尤其像腦殘和脊柱斷裂的兒童,很難保持身體平衡地走路,與同齡人玩耍。這使他們被排除在基本的互動的社交活動之外,例如在球場上追逐、學習新游戲。嚴重影響了他們的社交能力和感性思維的發展,對以后的生活產生了很大的困難。兒童之間玩耍和互動是他們成長的重要組成部分。
本文主要針對改裝一輛已有的兒童汽車,可以允許患有腦癱、脊柱斷裂,或者類似殘疾的兒童操作,以便于和同齡伙伴一起玩耍和互動。改裝包括汽車控制方法的簡單化。本文還設計了一些特別之處來確保兒童的安全。
汽車原來的轉向和驅動系統將被一系列簡單的可適應的開關替代。這些開關可以提供向前和轉向運動。因為殘疾兒童很難轉臉向后看,為了避免安全問題,去掉了向后運動的功能。另外,這些開關能夠適應不同的殘疾兒童。本文還將重點集中在控制汽車的緩慢啟動和制動技術上,給兒童提供一個舒適的平滑的啟動和制動過程。最后,該設計還加入了距離傳感器用于蔽障,遠程制動開關(父母持有)用于在必要的時候關閉汽車。總體來說,本文給殘疾兒童提供了安全舒適的開車環境。
問題描述
圖1 是一個說明汽車輸入與輸出關系的黑箱子框圖。本文的主要目的是制作出一輛響應迅速、舒適的兒童汽車。輸入系統包括來自電池的能源,控制輸入(來自兒童、家長和環境)和支撐系統。輸出系統包括兒童的舒適程度和汽車的響應,圖2詳細介紹了該子系統。

圖1 黑箱子框圖

圖2 子系統框圖
控制系統
汽車的控制系統是指兒童如何最大程度地控制汽車。本文改裝了正常的油門踏板和車輪操作系統,能夠允許殘疾兒童通過一系列簡單的開關單獨控制汽車。
頭部開關:該設計中,兒童能夠通過操作安裝在頭部支撐上的三個開關來控制汽車。這些開關安裝在兒童頭部的左邊、右邊和后邊。例如,兒童可以通過頭部按壓左、右、后方的開關,控制汽車向左、右、后方行駛。
操縱桿:操縱桿允許兒童通過手來控制汽車。操縱桿可以提供更多的緩沖時間,它不像控制開關一樣響應迅速。這有利于汽車的加速和轉向。操縱桿相比于之前設計的開關,將賦予兒童更大程度的自由。
手部開關:這部分開關的功能和頭部開關的功能是一樣的。只是手部開關是安裝在汽車原來方向盤的位置。它們的應用將使不同身高體型、患有不同殘疾的兒童駕駛這輛汽車,實現了最簡單的控制方法。
單片機模塊
Arduino Uno 是一款基于ATmega328處理器的微控制器板。它有14個數字輸入/輸出管腳(其中6個可以用作PWM輸出),6個模擬輸入管腳,一個16MHz的晶振,一個USB連接線,一個電源接口,一個ICSP插針和一個重啟按鈕。它包含支持單片機工作的所有芯片。將它通過一個USB線或者AC-DC轉換器或者電源供電,連接到電腦上即可工作。如圖3
技術參數:
處理器 :ATmega328
工作電壓 : 5V
輸入電壓(推薦): 7~12V
輸入電壓(范圍): 6~20V
數字IO腳 :14 (其中6路作為PWM輸出)
模擬輸入腳 :6
IO腳直流電流 :40 mA
V腳直流電流 :50 mA
Flash Memory :32 KB (ATmega328,其中0.5 KB 用于 bootloader)
SRAM :2 KB (ATmega328)
EEPROM :1 KB (ATmega328)
工作時鐘 :16 MHz
電機驅動模塊
L298N是SGS公司的產品,內部包含4通道邏輯驅動電路。是一種二相和四相電機的專用驅動器,即內含二個H橋的高電壓大電流雙全橋式驅動器,接收標準TTL邏輯電平信號,可驅動46V、2A以下的電機。電機驅動原理圖見圖4。

圖3 Arduino Uno 管腳圖

圖4 電機驅動原理圖
模塊接口說明:
+5V:芯片電壓5V
VCC:電機電壓,最大可接50V
GND:共地接法
A-~D-:輸出端,接電機
A~D+ :為步進電機公共端,模塊上接了VCC
EN1、EN2:高電平有效,EN1、EN2分別為 IN1和IN2、IN3和IN4的使能端
IN1~ IN4:輸入端,輸入端電平和輸出端電平是對應的
超聲波測距模塊
HC-SR04超聲波測距模塊提供2cm~400cm范圍的無接觸的測量函數,測量精度高達3mm。該模塊包括超聲波發射器,接受器,控制電路。基本工作原則如下:
使用IO觸發器,給出至少10us的高電平信號,
自動發射8個40KHz脈沖,檢測是否有信號返回,
如果有信號返回,發射高電平,高電平持續的時間就是發射超聲波信號到返回的時間。測試距離=(高電平時間*聲速(340M/S))/2
5V接電源,Trigger接輸入,Echo接輸出,0V接地。
電氣特性如圖5

圖5 HC-SR04 電氣特性
主要程序
//declare motor variables
int enableDrive = 7;
int enableTurn = 8;
int PWMDrive = 5;
int PWMTurn = 6;
int forwardPin = 3;
int leftPin = 9;
int rightPin = 10;
int forwardStateCurrent = LOW;
int leftStateCurrent = LOW;
int rightStateCurrent = LOW;
int forwardStatePast = LOW;
int leftStatePast = LOW;
int rightStatePast = LOW;
//declare sensor variables
int echo = 2;
int trigger = 4;
int led = 13;
float distance;
float highlevel;
void setup() {
//define motor variables
pinMode(enableDrive, OUTPUT);
pinMode(enableTurn, OUTPUT);
pinMode(PWMDrive, OUTPUT);
pinMode(PWMTurn, OUTPUT);
pinMode(forwardPin, INPUT); //IP for buttons, I for R/T
pinMode(leftPin, INPUT); //IP for buttons, I for R/T
pinMode(rightPin, INPUT); //IP for buttons, I for R/T
//declare sensor variables
pinMode(echo, INPUT);
pinMode(trigger, OUTPUT);
pinMode(led, OUTPUT);
Serial.begin(9600);
}
void loop() {
forwardStateCurrent = digitalRead(forwardPin);s
leftStateCurrent = digitalRead(leftPin);
rightStateCurrent = digitalRead(rightPin);
activate();
highlevel = (pulseIn(echo, HIGH))*0.000001;
distance = (highlevel*340)/2;
Serial.println(“”);
Serial.print(highlevel);
Serial.print(“ ”);
Serial.print(distance);
if (distance <= 0.1524) {
halt();
digitalWrite(led, HIGH);
}
else {
if (forwardStateCurrent != forwardStatePast) {
if (forwardStateCurrent == HIGH) {
forward();
}
else {
halt();
}
}
else if (leftStateCurrent != leftStatePast) {
if (leftStateCurrent == HIGH) {
left();
}
else {
halt();
}
}
else if (rightStateCurrent != rightStatePast) {
if (rightStateCurrent == HIGH) {
right();
}
else {
halt();
}
}
forwardStatePast = forwardStateCurrent;
leftStatePast = leftStateCurrent;
rightStatePast = rightStateCurrent;
digitalWrite(led, LOW);
}
}
void forward() {
digitalWrite(enableDrive, HIGH);
analogWrite(PWMDrive, 255);
analogWrite(PWMTurn, 0);
}
void left() {
digitalWrite(enableDrive, HIGH);
digitalWrite(enableTurn, LOW);
analogWrite(PWMDrive, 255);
analogWrite(PWMTurn, 255);
}
void right() {
digitalWrite(enableDrive, HIGH);
digitalWrite(enableTurn, HIGH);
analogWrite(PWMDrive, 255);
analogWrite(PWMTurn, 255);
}
void halt() {
analogWrite(PWMDrive, 0);
analogWrite(PWMTurn, 0);
digitalWrite(enableTurn, HIGH);
digitalWrite(enableDrive, LOW);
}
void activate() {
digitalWrite(trigger, HIGH);
delayMicroseconds(50);
digitalWrite(trigger, LOW);
}
實驗結果
經患有腦癱的兒童開車測試,能夠緩慢開啟和停止汽車,通過手操作簡單的開關,控制汽車向前、向左和向右行駛,也能夠通過頭部控制開關實現同樣的功能。遇到障礙時汽車能夠自動停止,家長也可通過使用制動開關在兒童遇到危險時緊急停止汽車,極大程度地確保了兒童的人身安全。綜上,本文改裝的兒童汽車,滿足了患有不同殘疾兒童的要求,使其能夠與同齡人一起玩耍嬉戲,極大提高了他們的社交能力和娛樂興趣,對其身心健康發展起到了巨大的作用。
本文解決了一個特殊的問題,通過給患有身體殘疾和需要社交幫助的兒童提供安全、高性能的開車環境。基本的目標都已經達到。
建議
購買的兒童汽車對于改裝不是很理想。汽車車艙的尺寸很小,導致改裝設計很有局限性。而且車子外形的曲線性也使安裝操作很困難。
改裝的汽車目前使用增加的Arduino單片機作為開關的電源。在為開關供電的部分需要更多的研究。
遠程控制開關應該被考慮進來,在這方面應該做更多研究。

孫露露
中國礦業大學(北京)機電與信息工程學院
10.3969/j.issn.1001-8972.2015.16.027