第一篇:機器人總結報告
機器人總結報告
各位老師、各位同學:
大家晚上好!
首先真誠的感謝孫老師和鮑老師給我提供這次很好的機會,我很高興也很榮幸的能夠在此與大家共同交流,共同學習。下面我就機器人的整個制作過程給大家簡單的介紹一下:
下面是提綱:
首先給機器人做簡單的分類然后再從下面兩個方面介紹:
一、硬件:
(1)、從大一接手焊接任務引入,強調實踐動手能力對制作機器人的重要性。
(2)、在家電維修隊中經過系統的學習對機器人實現提供了保障,并由此引入機器人制作的工作重心是前期的總體規劃。
二、軟件:
(1)、從機器人的控制部分單片機引入,首先對單片機做簡單的介紹,為什么學習單片機,以及其用途。
(2)通過單片機的學習總結下自己的學習經歷。
(3)最后由單片機引入程序設計,簡單介紹機器人的軟件實現方法。
三、做一下概括性的總結,并對新生提出建議。
第二篇:機器人大賽總結報告(推薦)
機器人大賽總結報告
機器人大賽是一個極富挑戰性的學術競賽。它不僅水準高,難度大,綜合性強,而且投資巨大的新興學科。
我們之所以有機會參加如此高水的學科競賽,這全得益于學校領導的大力支持:我們之所以能在極端不利的情況下取得今天的成績,這全得益于所有指導老師的精心栽培和全體參賽隊員的團結努力。
上學期末,當我得知學校將組織我們參加本次的機器人大賽我非常的興奮,作為一個電子專業大三的學生能參加本次的學術盛宴,將是我求學道路中不可多得的好機遇,同時我也知道這也將是我求學中的一個挑戰,我不僅要和同學們競爭這少有的名額,同時我還要和我自己競爭,通過幾個月的學習訓練我能否不斷超越自己,提高自己的動手能,最終在大賽中戰勝對手取得好成績,為自己為學校增光添彩。
后來,我也了解到學校已經花重金購置幾臺機器人,聽張老師簡單介紹這臺小小的機器居然花費數千元,通過學習才知道,這個小東西本領還不小,都已經算是很尖端的技術了,這讓我對機器人有了更加濃厚的興趣。加上學校領導的重視以及指導老師精心指導,我暗自下定決心“一定要好好努力,不能辜負了學校和指導老師的期望”。
在講完所有的基礎課后,我們開始利用軟件對機器人進行測試和調試,好讓其達到最佳狀態,但是是結果卻不是很理想,我們隊員之間相互探討,充分發揮自己的主觀能動性,將各自想到的方案集合在一起,相互改進在裝載到機器人里,根據運行效果的好壞來決定最終的方案,直到比賽的前一天我們還在不斷改進程序,我試了最后的效果非常的棒,其它組的效果也是一樣。
于是我們機器充滿電,整理行裝,準備明天的出征。第二天到后我們就開始最后的參數采集和調試,但由于現場的環境不斷變化,更我們的調試帶來了很大的困難,看得出隊員都有些急躁,在老師的開導之后,我們調整好心態,克服外在的影響,開始最后的調試。所有的隊員都在分工合作,一絲不茍的準備最后調試,我們都知道勝敗就在此一舉了。在我們所有準備都做好后,我對機器人做了最后一次測試,防守機器人效果非常好,就在我們信心滿滿的去測試進攻機器人時,我們遇到了參賽以來最大的難關——機器人的電機突然燒毀,而在場的工作組專家也無計可施。這一下讓我們的心情跌至谷底,因為沒有好的機器就意味著棄權。此時老師和我們的心情都很沉重,學校花了這么大代價,我們也付出了很大的努力,可結果卻是這樣。我不甘心,我不愿意就這樣放棄,可這時候已經是晚上的10點了,我這時候所有的人都對我們不再抱有希望了,除了我們這組三名隊員,在我們反復的思考和拆裝中,我們終于找到了起死回生的辦法,就是將四輪驅動改為前輪驅動,將壞掉的車輪改為從動輪,這樣就可以正常運行,但是功率卻小了一半,而且參數也發生了變化。等我們該開始改動時,時間已經很晚了,我們被迫回到住處,在老師的指導下繼續改動,直到凌晨2點我們才完成改裝,然后洗澡睡覺。
第二天我們帶著黑眼圈早早的起來,吃完早餐就去了賽場,這時我們看到的對手的機器人,個頭明顯比我們的大一截,或是重量比我們超我們一截,這完全不符合參賽要求,但是組委會卻沒有在意,我也知道這才第二屆難免會有些不公的地方,就這樣我們以微弱的劣勢敗于對手。這樣的結果讓我沒辦法向學校,向老師交代,更沒辦法想我自己交代,我一直不能從失敗的陰影走出來,也許我過于在乎那個名次了,老師像是看出了我的心思于是開導我,記得老師說:“對你們來說,名次并不是最后總要的,重要是你們通過此次的大賽,學到了什么”。這時我才恍然大悟,我回答道:“除了獎以外,其它的都得到了”。
通過本次的大賽我學到很多,不僅讓我在專業學習上指明了一條道路,還讓我了解到如何將書本上的知識運用到生產實踐,在工作中如何更快更好地解決問題,同時我還交到很多朋友,也深刻認識到了自己的不足。最后我還要真誠感謝學校領導和老師給我這次歷練的機會。
機器人受損報告
1號機器人各部件有點松動無受損,2號機器人人各部件有點松動,兩個后輪電機燒毀,已改為從動輪結構,零部件在保險箱內。
鄧振華 索建飛 張集田
09-29
第三篇:機器人課程結課總結報告
課程結課總結報告
課程名稱:機器人的制作
實驗一 基于arduino控制器的輪式機器人循跡避障功能設計 實驗二 應變式傳感器電子秤實驗
實驗三 基于C51單片機控制器的輪式機器人電機控制系統 實驗四 基于ARM控制器的博創平臺輪式機器人循跡避障功能實現 實驗五 攝像頭實現輪式機器人循跡功能的應用
實驗六 應用卓越聯盟實驗室設備進行設計和實現作品說明
指導教師 許曉飛 系 別 機電工程學院 專 業 機械電子工程 學生姓名鄧銀濤
班級/學號機電1401/2014010339 成績
實驗一 基于ardunio控制器的輪式機器人循跡避障功能設計
實驗目的
1.了解ardunio平臺,并熟練使用此軟件完成小車的各種活動
2.了解HC-SR04超聲波測距模塊的原理,并且熟練使用此模塊作為小車的傳感器進行工作 3.了解并且熟悉紅外線傳感器循跡原理 實驗器材:
Adrunio軟件,超聲波傳感器,紅外線傳感器,導線,底板,電機,電池,單片機等 實驗內容:
1.將硬件組裝成小車,即輪式機器人 2.利用ardunio使小車完成循跡功能 步驟:(1)寫好后綴為.txt的c語言循跡文件
(2)將文件導入單片機中
(3)根據具體路況,運行并且進行調試紅外線傳感器的靈敏程度 3.利用ardunio使小車完成避障功能 步驟:(1)寫好后綴為.txt的c語言避障文件
(2)將文件導入單片機中
(3)運行并且進行調試小車躲避障礙物的距離 實驗程序 1.循跡程序:
小車循跡程序思路圖 #include
const int SensorRight = 3;//右循跡紅外傳感器(P3.2 OUT1)const int SensorLeft = 4;//左循跡紅外傳感器(P3.3 OUT2)int SL;//左循跡紅外傳感器狀態 int SR;//右循跡紅外傳感器狀態 void setup(){ //初始化電機驅動IO為輸出方式
pinMode(Left_motor_go,OUTPUT);// PIN 8(PWM)pinMode(Left_motor_back,OUTPUT);// PIN 9(PWM)pinMode(Right_motor_go,OUTPUT);// PIN 10(PWM)
pinMode(Right_motor_back,OUTPUT);// PIN 11(PWM)pinMode(key,INPUT);//定義按鍵接口為輸入接口
pinMode(SensorRight, INPUT);//定義右循跡紅外傳感器為輸入
pinMode(SensorLeft, INPUT);//定義左循跡紅外傳感器為輸入 } void run(int time)// 前進 void run(){ digitalWrite(Right_motor_go,HIGH);// 右電機前進
digitalWrite(Right_motor_back,LOW);
analogWrite(Right_motor_go,255);//PWM比例0~255調速
analogWrite(Right_motor_back,0);digitalWrite(Left_motor_go,HIGH);// 左電機前進
digitalWrite(Left_motor_back,LOW);analogWrite(Left_motor_go,255);//PWM比例0~255調速
analogWrite(Left_motor_back,0);//delay(time * 50);//執行時間,可以調整
} //void left(int time)//左轉(左輪不動,右輪前進)void left(){ digitalWrite(Right_motor_go,HIGH);digitalWrite(Right_motor_back,LOW);analogWrite(Right_motor_go,200);
analogWrite(Right_motor_back,0);//PWM比例0~255調速
digitalWrite(Left_motor_go,LOW);//左輪后退
digitalWrite(Left_motor_back,LOW);analogWrite(Left_motor_go,0);
analogWrite(Left_motor_back,100);//PWM比例0~255調速
//delay(time * 50);//執行時間,可以調整
// 右電機前進 } void right(int time)//右轉(右輪不動,左輪前進)void right(){ digitalWrite(Right_motor_go,LOW);//右電機后退
digitalWrite(Right_motor_back,LOW);analogWrite(Right_motor_go,0);
analogWrite(Right_motor_back,100);//PWM比例0~255調速
digitalWrite } 2.避障程序:
char L1 = 9;// zheng char L2 = 8;char R1 = 10;// zheng char R2 = 11;int echopin = 13;
int trigpin = 12;
void setup()//初始化動作的區塊,定義串行端口和腳位 { pinMode(echopin , INPUT);// pwm
pinMode(trigpin , OUTPUT);} void loop()//版子重復執行動作的區塊 { int currDist;
long randnumber;
currDist = MeasureDistance();// 讀取前端距離
delay(5);
if(currDist > 10)
{
straight();
}
if(currDist <= 10)
{ randomSeed(analogRead(0));
randnumber = random(0 ,10);
if(randnumber > 5)
{ back();
delay(1000);
turnright();
delay(800);
}
else
{ back();
delay(1000);
turnleft();
delay(800);
}
} } int MeasureDistance(){ digitalWrite(trigpin , LOW);
delay(2);
digitalWrite(trigpin , HIGH);
delay(10);
digitalWrite(trigpin , LOW);
int distance = pulseIn(echopin , HIGH);
distance = distance / 58.0;// 計算距離
344 * 100 / 1000000 * pulseIn()/ 2
delay(60);
// 循環間隔60uS
return(distance);
} void straight(){ analogWrite(L1 ,100);
//
255 0 zhengzhuan
analogWrite(L2 ,0);
analogWrite(R1 , 100);
//
255 0 zhengzhuan
analogWrite(R2 , 0);} void turnright(){ analogWrite(L1 ,100);
//
255 0 zhengzhuan
analogWrite(L2 ,0);
analogWrite(R1 ,0);
//
255 0 zhengzhuan
analogWrite(R2 ,0);
} void turnleft(){ analogWrite(L1 , 0);
//
255 0 zhengzhuan
analogWrite(L2 , 0);
analogWrite(R1 , 100);
//
255 0 zhengzhuan
analogWrite(R2 , 0);
} void back(){ analogWrite(L1 , 0);
//
255 0 zhengzhuan
analogWrite(L2 , 100);
analogWrite(R1 , 0);
//
255 0 zhengzhuan
analogWrite(R2 , 100);
} 實驗過程中遇到的問題及解決辦法 循跡中:
1.電機速度差異控制:發現左右輪寫入同一數值時,小車行進方向偏離直線,——對左右兩輪寫入不同數值,多次測試,指導左右輪速度相等。
2.電機驅動器給arduino供電出現問題,改用充電寶給arduino供電,直接從gnd和5v輸出腳給電機驅動器供電 3.一個電機有兩根信號輸入線,一根控制正轉,一根控制反轉。兩個輪子一起測轉地眼暈,容易出錯。避障中:
1.超聲裝置避障距離的確定——將HC-SR04超聲波避障程序中數值改短,提高避障靈敏性 2.硬件的安裝:超聲裝置無法固定——曾嘗試過用膠帶,廢舊車輪等但不理想,并未得到很好的解決 實驗結果
小車可以成功的進行循跡和避障
實驗二 電子秤實驗
一 單臂實驗 數據處理源碼:
axis([0 200 0 50])
coords=[0 20 40 60 80 100 120 140 160 180 200;0 2.8 5.1 7.5 9.9 12.4 14.8 17.2 19.6 22.0 24.6] grid hold
plot(coords(1,:),coords(2,:),'*')x=coords(1,:)y=coords(2,:)' b=size(coords)c=ones(1,b(2))MT=[c;x] M=MT'
f=inv(MT*M)*MT*y
['y=',num2str(f(2)),'x+',num2str(f(1))] x=-max(x):max(x)y=f(1)+f(2)*x
mistake=max(x-y)/(max(y)-min(y));
fprintf('電阻傳感器的系數靈敏度S=%5.3f%%n',abs(f(2)))fprintf('非線性誤差f=%5.3f%%n',mistake)plot(x,y,'--')xlabel('x/g')ylabel('V/mv')title('單臂實驗')
legend(['y=',num2str(f(2)),'x+',num2str(f(1))])Matlab處理結果
電阻傳感器的系數靈敏度S=0.122% 非線性誤差f=3.607%
半橋實驗 源碼:
axis([0 200 0 50])coords=[0 20 40 60 80 100 120 140 160 180 200;0 4.0 8.8 13.7 18.6 23.5 18.4 33.2 38.2 43.1 47.9] grid hold
plot(coords(1,:),coords(2,:),'*')x=coords(1,:)y=coords(2,:)' b=size(coords)c=ones(1,b(2))MT=[c;x] M=MT'
f=inv(MT*M)*MT*y
['y=',num2str(f(2)),'x+',num2str(f(1))] x=-max(x):max(x)
y=f(1)+f(2)*x
mistake=max(x-y)/(max(y)-min(y));
fprintf('電阻傳感器的系數靈敏度S=%5.3f%%n',abs(f(2)))fprintf('非線性誤差f=%5.3f%%n',mistake)plot(x,y,'--')xlabel('x/g')ylabel('V/mv')title('半橋實驗')
legend(['y=',num2str(f(2)),'x+',num2str(f(1))])Matlab處理結果
電阻傳感器的系數靈敏度S=0.238% 非線性誤差f=1.615%
全橋實驗 源碼:
axis([0 200 0 100])
coords=[0 20 40 60 80 100 120 140 160 180 200;0 7.4 15.3 23.1 30.9 38.8 46.7 54.6 62.6 70.5 78.4] grid hold
plot(coords(1,:),coords(2,:),'*')x=coords(1,:)y=coords(2,:)' b=size(coords)c=ones(1,b(2))MT=[c;x] M=MT'
f=inv(MT*M)*MT*y
['y=',num2str(f(2)),'x+',num2str(f(1))] x=-max(x):max(x)
y=f(1)+f(2)*x
mistake=max(x-y)/(max(y)-min(y));
fprintf('電阻傳感器的系數靈敏度S=%5.3f%%n',abs(f(2)))fprintf('非線性誤差f=%5.3f%%n',mistake)plot(x,y,'--')xlabel('x/g')ylabel('V/mv')title('全橋實驗')
legend(['y=',num2str(f(2)),'x+',num2str(f(1))])Matlab數據處理
電阻傳感器的系數靈敏度S=0.393% 非線性誤差f=0.774%
實驗三 基于C51單片機控制器的輪式機器人電機控制系統
實驗目的
了解PWM波控制電機的原理。基于C51單片機利用PWM波控制電機。實驗器材
C51單片機、L298N驅動芯片、直流電機、杜邦線、普通導線、keil軟件、STC下載器、示波器 實驗內容
用keil新建一個“.c”文件,編寫程序并對程序進行調試。將程序燒錄進單片機內。進行硬件連接 C51引腳如圖所示:
L298N引腳如圖所示:
用單片通過P1.0、P1.1和L298的第一對輸入端IN1和IN2相連,然后又L298的第一對輸出端OUT1和OUT2與直流電機相連;單片通過P1.5、P1.6和L298的第二對輸入端IN3和IN4相連,然后又L298的第二對輸出端OUT3和OUT4與直流電機相連。給單片機上電。用示波器觀察波形。
程序內容
1、PWM波控制電機啟動
#include “reg51.h” #include “intrins.h”
#define FOSC 11059200L
typedef unsigned char BYTE;typedef unsigned int WORD;void delay_ms(int x);
/*Declare SFR associated with the PCA */ sfr CCON = 0xD8;//PCA control register sbit CCF0 = CCON^0;//PCA module-0 interrupt flag sbit CCF1 = CCON^1;//PCA module-1 interrupt flag sbit CR = CCON^6;//PCA timer run control bit sbit CF = CCON^7;//PCA timer overflow flag sfr CMOD = 0xD9;//PCA mode register sfr CL = 0xE9;//PCA base timer LOW sfr CH = 0xF9;//PCA base timer HIGH sfr CCAPM0 = 0xDA;//PCA module-0 mode register sfr CCAP0L = 0xEA;//PCA module-0 capture register LOW sfr CCAP0H = 0xFA;//PCA module-0 capture register HIGH sfr CCAPM1 = 0xDB;//PCA module-1 mode register sfr CCAP1L = 0xEB;//PCA module-1 capture register LOW sfr CCAP1H = 0xFB;//PCA module-1 capture register HIGH sfr PCAPWM0 = 0xf2;sfr PCAPWM1 = 0xf3;sbit IN1=P1^0;
sbit IN2 = P1^1;sbit IN3=P1^5;
sbit IN4 = P1^6;void main(){ CCON = 0;//Initial PCA control re CL = 0;//Reset PCA base timer CH = 0;CMOD = 0x02;//Set PCA timer clock source as Fosc/2 CR = 1;//PCA timer start run while(1){ int i;IN1=0;IN2=1;IN3=0;IN4=1;for(i=100;i>=0;i--){
CCAP0H = CCAP0L =i;//PWM0 port output 50% duty cycle square wave CCAPM0 = 0x42;//PCA module-0 work in 8-bit PWM mode and no PCA interrupt
CCAP1H = CCAP1L = i;
CCAPM1 = 0x42;delay_ms(100);}
for(i=0;i<=100;i++){
CCAP0H = CCAP0L =i;//PWM0 port output 50% duty cycle square wave CCAPM0 = 0x42;//PCA module-0 work in 8-bit PWM mode and no PCA interrupt
CCAP1H = CCAP1L = i;
CCAPM1 = 0x42;delay_ms(100);} IN1=1;IN2=0;IN3=1;IN4=0;for(i=100;i>=0;i--){
CCAP0H = CCAP0L =i;//PWM0 port output 50% duty cycle square wave CCAPM0 = 0x42;//PCA module-0 work in 8-bit PWM mode and no PCA interrupt
CCAP1H = CCAP1L = i;
CCAPM1 = 0x42;delay_ms(100);}
for(i=0;i<=100;i++){
CCAP0H = CCAP0L =i;//PWM0 port output 50% duty cycle square wave CCAPM0 = 0x42;//PCA module-0 work in 8-bit PWM mode and no PCA interrupt
CCAP1H = CCAP1L = i;
CCAPM1 = 0x42;delay_ms(100);} } } void delay_ms(int x){ int y;for(;x>0;x--)for(y=0;y<1000;y++);} 控制方向
#include “reg51.h” #include “intrins.h” #define FOSC 11059200L typedef unsigned char BYTE;typedef unsigned int WORD;sbit IN1 = P1^0;sbit IN2 = P1^1;void main(){ IN1=0;IN2=1;} PWM波對電機調速
#include “reg51.h” #include “intrins.h”
#define FOSC 11059200L
typedef unsigned char BYTE;typedef unsigned int WORD;
/*Declare SFR associated with the PCA */ sfr CCON = 0xD8;//PCA control register sbit CCF0 = CCON^0;//PCA module-0 interrupt flag sbit CCF1 = CCON^1;//PCA module-1 interrupt flag sbit CR = CCON^6;//PCA timer run control bit sbit CF = CCON^7;//PCA timer overflow flag sfr CMOD = 0xD9;//PCA mode register sfr CL = 0xE9;//PCA base timer LOW sfr CH = 0xF9;//PCA base timer HIGH sfr CCAPM0 = 0xDA;//PCA module-0 mode register sfr CCAP0L = 0xEA;//PCA module-0 capture register LOW sfr CCAP0H = 0xFA;//PCA module-0 capture register HIGH sfr CCAPM1 = 0xDB;//PCA module-1 mode register sfr CCAP1L = 0xEB;//PCA module-1 capture register LOW sfr CCAP1H = 0xFB;//PCA module-1 capture register HIGH sfr PCAPWM0 = 0xf2;sfr PCAPWM1 = 0xf3;
void main(){ CCON = 0;//Initial PCA control register CL = 0;//Reset PCA base timer CH = 0;CMOD = 0x02;//Set PCA timer clock source as Fosc/2 CCAP0H = CCAP0L = 0x80;//PWM0 port output 50% duty cycle square wave CCAPM0 = 0x42;//PCA module-0 work in 8-bit PWM mode and no PCA interrupt
CCAP1H = CCAP1L = 0xff;//PWM1 port output 0% duty cycle square wave PCAPWM1 = 0x03;CCAPM1 = 0x42;//PCA module-1 work in 8-bit PWM mode and no PCA interrupt CR = 1;//PCA timer start run while(1);}
五、實驗心得
本次實驗中我學會用軟件來延時實現PWM的輸出,從而實現對電機的控制。
實驗四基于ARM控制的博創平臺輪式機器人循跡蔽障功能
實驗目的
了解NorthStar平臺,并熟練使用此軟件完成小車的各種活動 了解RobotServoTerminal機器人舵機調試系統并掌握使用 了解并且熟悉灰度傳感器循跡原理 實驗材料
ARM控制器 灰度傳感器 紅外探測器 舵機電機等 實驗內容
小車硬件的組裝 蔽障功能的實現 循跡功能的實現 循跡功能的實現 NorthStar循跡程序
#include “Apps/SystemTask.h” uint8 SERVO_MAPPING[4] = {1,2,3,4};int main(){ int lgray = 0;int rgray = 0;MFInit();MFInitServoMapping(&SERVO_MAPPING[0],4);MFSetPortDirect(0x00000FF8);MFSetServoMode(1,1);MFSetServoMode(2,1);MFSetServoMode(3,1);MFSetServoMode(4,1);while(1){ lgray = MFGetAD(0);rgray = MFGetAD(1);//右偏
if((lgray<=460)&&(rgray>=350)){ //左轉
MFSetServoRotaSpd(1,-512);MFSetServoRotaSpd(2,-512);MFSetServoRotaSpd(3,-512);MFSetServoRotaSpd(4,-512);MFServoAction();DelayMS(400);} else
{ //左偏
if((lgray>=460)&&(rgray<=350)){ //右轉
MFSetServoRotaSpd(1,512);MFSetServoRotaSpd(2,512);MFSetServoRotaSpd(3,512);MFSetServoRotaSpd(4,512);MFServoAction();DelayMS(400);} else
{ //meipian if((lgray>=460)&&(rgray>=350)){ MFSetServoRotaSpd(1,-512);MFSetServoRotaSpd(2,512);MFSetServoRotaSpd(3,-512);MFSetServoRotaSpd(4,512);MFServoAction();DelayMS(400);} else
{ MFSetServoRotaSpd(1,0);MFSetServoRotaSpd(2,0);MFSetServoRotaSpd(3,0);MFSetServoRotaSpd(4,0);MFServoAction();DelayMS(100);} } } } } 蔽障功能的實現 程序
#include “Apps/SystemTask.h” uint8 SERVO_MAPPING[5] = {1,2,3,4,5};int main(){ int io0 = 0;int io1 = 0;MFInit();MFInitServoMapping(&SERVO_MAPPING[0],5);MFSetPortDirect(0x00000FFC);MFSetServoMode(1,1);MFSetServoMode(2,1);MFSetServoMode(3,1);MFSetServoMode(4,1);MFSetServoMode(5,0);while(1){ io0 = MFGetDigiInput(0);io1 = MFGetDigiInput(1);if((io0==1)&&(io1==1)){ MFSetServoRotaSpd(1,1023);MFSetServoRotaSpd(2,-1023);MFSetServoRotaSpd(3,1023);MFSetServoRotaSpd(4,-1023);MFSetServoPos(5,512,512);MFServoAction();DelayMS(500);} else
{ if(io0==0){ //后退
MFSetServoRotaSpd(1,-512);MFSetServoRotaSpd(2,512);MFSetServoRotaSpd(3,-512);MFSetServoRotaSpd(4,512);MFSetServoPos(5,512,512);MFServoAction();DelayMS(1000);//右轉
MFSetServoRotaSpd(1,512);MFSetServoRotaSpd(2,512);MFSetServoRotaSpd(3,512);MFSetServoRotaSpd(4,512);MFSetServoPos(5,512,512);MFServoAction();DelayMS(2000);} else
{ //后退
MFSetServoRotaSpd(1,-512);MFSetServoRotaSpd(2,512);MFSetServoRotaSpd(3,-512);MFSetServoRotaSpd(4,512);MFSetServoPos(5,512,512);MFServoAction();DelayMS(1000);//左轉
MFSetServoRotaSpd(1,-512);MFSetServoRotaSpd(2,-512);MFSetServoRotaSpd(3,-512);MFSetServoRotaSpd(4,-512);MFSetServoPos(5,512,512);MFServoAction();DelayMS(2000);} } } }
實驗中遇到的問題以及解決方案
1、NorthStar編程完成后下載時遇到的問題
解決方案及拓展步驟(1)打開NorthStar軟件
點擊幫助
(3)點擊幫助主題
(4)點開附錄以及里邊的常見問題及解決將出現一些列常見問題
(5)點擊遇到的問題,按照操作步驟即可解決
環境對灰度傳感器影響較大,賽道多次取點進行傳感器灰度值測量,之后修改程序內AD值條件。
(1)用NorthStar打開循跡的程序
(2)打開工具菜單下的查詢傳感器
出現傳感器頁面,調整好下載模式以及端口的設置,點擊啟動服務
(4)完成之后調整好查詢數據模式電機查詢AD,會在相應AD口內看到數據的變化。(5)測完后取黑線與地面值的中間值調整if條件。
實驗拓展 將紅外蔽障功能,以及灰度傳感器巡線功能同時裝在小車上,通過一個自制紅外開關來控制小車的程序選擇。
程序
#include “Apps/SystemTask.h” uint8 SERVO_MAPPING[4] = {1,2,3,4};int main(){ int lgray = 0;int you = 0;int key = 0;int rgray = 0;int zuo = 0;MFInit();MFInitServoMapping(&SERVO_MAPPING[0],4);MFSetPortDirect(0x00000FF8);MFSetServoMode(1,1);MFSetServoMode(2,1);MFSetServoMode(3,1);MFSetServoMode(4,1);while(1){ MFGetDigiInput(0);if(key==0){ MFGetDigiInput(1);MFGetDigiInput(2);if((zuo==1)&&(you==1)){ //前進
MFSetServoRotaSpd(1,-512);MFSetServoRotaSpd(2,512);MFSetServoRotaSpd(3,-512);MFSetServoRotaSpd(4,512);MFServoAction();DelayMS(1000);} else
{ if(you==0){ //后退
MFSetServoRotaSpd(1,512);MFSetServoRotaSpd(2,-512);MFSetServoRotaSpd(3,512);MFSetServoRotaSpd(4,-512);MFServoAction();DelayMS(400);//左轉
MFSetServoRotaSpd(1,-512);MFSetServoRotaSpd(2,-512);MFSetServoRotaSpd(3,-512);MFSetServoRotaSpd(4,-512);MFServoAction();DelayMS(400);} else
{ //后退
MFSetServoRotaSpd(1,512);MFSetServoRotaSpd(2,-512);MFSetServoRotaSpd(3,512);MFSetServoRotaSpd(4,-512);MFServoAction();DelayMS(400);//右轉
MFSetServoRotaSpd(1,512);MFSetServoRotaSpd(2,512);MFSetServoRotaSpd(3,512);MFSetServoRotaSpd(4,512);MFServoAction();DelayMS(400);} } } else
{ lgray = MFGetAD(0);rgray = MFGetAD(1);//右偏
if((lgray<=460)&&(rgray>=350)){ //左轉
MFSetServoRotaSpd(1,-512);MFSetServoRotaSpd(2,-512);MFSetServoRotaSpd(3,-512);MFSetServoRotaSpd(4,-512);MFServoAction();DelayMS(400);} else
{ //左偏
if((lgray>=460)&&(rgray<=350)){ //右轉
MFSetServoRotaSpd(1,512);MFSetServoRotaSpd(2,512);MFSetServoRotaSpd(3,512);MFSetServoRotaSpd(4,512);MFServoAction();DelayMS(400);} else
{ //meipian if((lgray>=460)&&(rgray>=350)){ MFSetServoRotaSpd(1,-512);MFSetServoRotaSpd(2,512);MFSetServoRotaSpd(3,-512);MFSetServoRotaSpd(4,512);MFServoAction();DelayMS(400);} else
{ MFSetServoRotaSpd(1,0);MFSetServoRotaSpd(2,0);MFSetServoRotaSpd(3,0);MFSetServoRotaSpd(4,0);MFServoAction();DelayMS(100);} } } } } } 通過本次實驗對NorthStar熟練掌握,進而對今后使用博創平臺實現視覺系統等一系列功能掌握。
實驗五 攝像頭實現輪式機器人電機控制系統 一.實驗目的
1.了解OpenCv的使用方法,并以此為平臺實現基于OpenCv攝像頭巡線小車的制作 2.掌握基于HSV顏色模型的圖像閾值分割算法 3.使用OpenCv圖像去噪相關算法:膨脹腐蝕濾波等
4.掌握串口通訊,并實現PC機與Arduino以藍牙模塊為載體通訊 二.實驗器材
OpenCv,HC-05主從一體藍牙模塊,Arduino,小車底盤,usb攝像頭實驗內容 三.實驗內容 1.HSV顏色模型
HSV(Hue-Saturation-Value),色相(H)是色彩的基本屬性,就是平常所說的顏色名稱,如紅色,黃色等;飽和度(S)是色彩的純度,越高色彩越純,低則逐漸變灰;明度(V),指色彩的亮度。HSV以人類更熟悉的方式封裝了關于顏色的信息:“這是什么顏色?深淺如何?明暗如何?”
HSV把顏色描述為在圓柱坐標系的點,這個圓柱的中心軸取值為自底部的黑色到頂部的白色,而在它們中間是灰色;繞這個軸的角度對應色相,取值范圍0—360°,到這個軸的距離對應飽和度,取值范圍0.0—1.0,而沿這個軸的高度對應亮度,取值范圍0(黑色)—1.0(白色)。
2.閾值分割策略
閾值化的基本思想是:給定一個數組和一個閾值,然后根據數組中的每個元素的值是低于還是高于閾值而進行一些處理。: 檢查源圖像的每一個像素點的范圍。在下限和上限之間的像素點,被置為255;否則置0。即感興趣區域為白色,不感興趣區域全為黑色。
受光照影響,不同時刻表示同一顏色的空間模型取值不同。因此在圖像處理之前先手動標定圖像,把合適的H,S,V取值范圍輸出到文本文件里,供后續處理讀取。
3.圖像去噪
分割得到二值化圖像之后,可以很明顯看到圖中仍然有很多細微的點噪聲存在,而且目標內部出現空洞,周圍存在毛刺,所以需要對噪聲進行進一步處理,下面介紹濾出噪聲的常用方法。3.1膨脹
膨脹是將與物體接觸的所有背景點合并到該物體中,使邊界向外部擴張的過程??梢杂脕硖钛a物體中的空洞。
膨脹的算法:用3X3的結構元素,掃描圖像的每一個像素;用結構元素與其覆蓋的二值圖像做“與”操作;如果都為0,結果圖像的該像素為0,否則為1;結果使二值圖像擴大一圈。
函數
這個函數膨脹源圖像,存儲結果到目標圖像。
參數詳解:源圖像,圖像通道的數量是任意的,但圖像深度應為CV_8U,CV_16U,CV_16S,CV_32F或CV_64F。目標圖像,尺寸和類型與源圖像相同
膨脹操作核。若為NULL時,表示是使用參考點位于中心3x3的核。一般使用函數配合參數使用。函數會返回指定形狀和尺寸的結構元素(內核矩陣)。其中函數的第一個參數表示內核的形狀,如下: 矩形:MORPH_RECT 交叉形:MORPH_CROSS 橢圓形:MORPH_ELLIPSE 錨的位置,默認值(-1,-1),表示錨位于中心 迭代使用erode()函數的次數,默認值為1 用于推斷圖像外部像素的某種邊界模式,默認值:BORDER_DEFAULT 使用erode函數時,一般我們只需要設置前三個參數,后面四個參數都有默認值。例:
3.2腐蝕
腐蝕是一種消除邊界點,使邊界向內收縮的過程。可以用來消除小而無意義的物體。
腐蝕的算法:用3x3結構元素,掃描圖像的每一個像素;用結構元素與其覆蓋的二值圖像做“與”操作;如果都為1,結果圖像該像素為1,否則為0;結果使二值圖像減小一圈。
4.串口通訊
串口通信(Serial Communications)的概念非常簡單,串口按位(bit)發送和接收字節。盡管比按字節(byte)的并行通信慢,但是串口可以在使用一根線發送數據的同時用另一根線接收數據。它很簡單并且能夠實現遠距離通信。
串口進行通信的方式有兩種:同步通信方式和異步通信方式。同步通信方式要求通信雙方以相同的時鐘頻率進行,而且準確協調,通過共享一個單個時鐘或定時脈沖源保證發送方和接收方的準確同步,效率較高;異步通信方式不要求雙方同步,收發方可采用各自的時鐘源,雙方遵循異步的通信協議,以字符為數據傳輸單位,發送方傳送字符的時間間隔不確定,發送效率比同步傳送效率低。4.1串口通訊過程
4.2串口通訊重要函數(1)
(2)DCB結構包含了串口的各項參數設置,下面僅介紹幾個該結構常用的變量 4.HC-05藍牙一體化模塊
HC-05 嵌入式藍牙串口通訊模塊(以下簡稱模塊)具有兩種工作模式:命令響應工作模式和自動連接工作模式,在自動連接工作模式下模塊又可分為主(Master)、從lave)和回環(Loopback)三種工作角色。當模塊處于自動連接工作模式時,將自動根據事先設定的方式連接的數據傳輸;當模塊處于命令響應工作模式時能執行下述所有AT 命令,用戶可向模塊發送各種AT 指令,為模塊設定控制參數或發布控制命令。通過控制模塊外部引腳(PIO11)輸入電平,可以實現模塊工作狀態的動態轉換。實驗成果
四.實驗心得
通過這個實驗嘗試并學習了以前只聽過沒做過的東西,在做的過程中遇到很多問題,但都在與同學的討論下找到了解決方法。
在調試藍牙模塊時不能進入AT模式,被這個問題絆了兩個晚上;給電腦裝了藍牙驅動后,卻不能連接到藍牙模塊,一直認為是驅動裝錯了,后來用手機測試成功連接上了,意識到是電腦有問題;
巡線時小車突然動不了了,一開始認為是電機或驅動壞了,后面才知道是因為控制方法不當使電機在下次啟動時進入死區,后來改進為PWM控制; 這是非常有意義的一次實驗課。
實驗六 應用卓越聯盟實驗室設備進行設計和實現作品說明
1.Protell99SE的使用及電路板的雕刻 一.實驗目的
1.了解Protell99se的使用方法,并以此為平臺設計電路板
2.了解將原理圖轉化為雕刻機所需的輸出格式,并運用雕刻機制作出自己獨有的電路板 二.實驗器材
Pretell99se設計軟件,電路原理圖,pcb電路板雕刻機等 三.實驗內容
將Protell99軟件安裝進電腦 查看所給文件的電路圖
設計出自己組獨有的pcb電路板 將電路板雕刻出來
Protell99制作原理圖庫的方法
將元件庫文件和原理圖文件放在同一個設計中 在原理圖所在的設計數據庫文件夾下新建一個原理圖庫文件,取名為mylibrary。名字可任取。
打開原理圖庫文件,默認狀態下此庫文件里已經存在一個名為component_1的元件 選擇繪圖工具框中的繪制矩形工具繪制元件的邊框(即繪制元件的符號或外形)
左鍵點擊繪圖工具欄里的繪制管腳圖標,按下Tab鍵進入管腳屬性編輯對話框。1管腳名字為com,其他管腳名隱藏,管腳編號為1~9。
依次放置9個管腳,在放置管腳時,管腳的一端有一個小黑點,旋轉管腳使小黑點朝外 雙擊矩形方框進行邊框屬性設置。Border Width選擇SmallBorder Color選擇合適的顏色。用上述方法繪制8個電阻形狀的矩形框,放置在上面畫好的邊框里 點擊畫圖工具欄里的畫線工具,將畫好的電阻和管腳連接好。修改元件描述 保存后退出編輯。
當所有的元件制作完成后,保存并關掉元件庫文件(2)單獨創建一個元件庫(倉庫),注意這個元件庫還是Protel設計數據庫文件。
1)新建一個設計,取名為“mylibrary”或者是“XX的庫文件”保存在某個地方,記住這個地址。這個庫可做為自己的專用庫文件。在以后繪制原理圖時只需把此庫添加進去即可,以后也可以不斷地豐富此庫中的元件
2)在設計里新建一個原理圖庫文件,保存文件,給它起一個有特色又能反應元件庫特點的名字。如“電阻類”,“插件類”,“AD轉換”等等。利用此法可建立若干個原理圖庫文件,將元件歸類存放
3)打開某一類原理圖庫文件,在此文件中制作新元件,具體作法見上文。也可以從系統自帶的庫文件中拷貝元件,或者是從現有的原理圖中提取元件添加到自己的庫文件中 實驗創新與思考
Protell99作為一個老版本的pcb設計軟件,在兼容性及漢化方面有許多不足,相比現今較火的AD系列的軟件操作起來也較難,但對于簡單的pcb電路設計,Protell系列還是不錯的。對于某些電路而言,單面鍍銅的電路板無法滿足需求,因此,在學習課內單面鍍銅電路板的設計基礎上應再學習雙面鍍銅電路板的設計,以滿足實際需要 2.3D打印機激光切割機機械臂的工作原理及實際應用 機械臂的原理及其應用 實驗目的
了解機械臂的工作原理,操作過程以及在實際生產過程中的應用 掌握機械臂的操作 實驗器材
機械臂及其控制系統,機械臂控制器等 三.實驗內容
1.了解機械臂的工作原理 2.了解機械臂的程序 3.操作機械臂進行工作
實驗原理
機器人空間描述和坐標變換: 在一個三維空間中對兩個質點的位置關系進行描述,一般會用一個的位置矢量來表示。在笛卡爾坐標系中,坐標系中的任意質點的位置都可以用一個3*1的位置矢量來表示該質點到坐標原點的位置關系。
機器人連桿的坐標轉換
創新與思考
通過了解機械臂的運行原理,知道可以通過矩陣進行最佳位姿的求解,但在求解矩陣的過程中,我們會求得多解,如何選取運動方式是程序編寫的重中之重,所以,根據需要,同時根據各種機器人自身機構對運動轉動角度的限制,以及機構運動方式所產生的壓力角大小,機械轉動效率等選取最優解,進行程序編寫。理論上6R的工業機器人可進行全方位運動工作,但由于機器本身,促使機器人在工作時會存在一些盲點,故在應用機器人的進行工作的時候,應盡量避免觸及這些機械盲點,以求的效率最大化。3D打印技術 實驗目的
了解3D打印技術的原理及其應用
利用建模軟件創建模型,打印出樹脂梳 實驗器材
3D打印機,樹脂,MakerBot軟件等
實驗原理
3D打印機原理其實是以一種數字模型文件為基礎,運用粉末狀金屬或塑料等可粘合材料,通過逐層打印的方式來構造物體的技術。由于在3D打印機原理中把復雜的三維制造轉化為一系列二維制造的疊加,因而可以在不用模具和工具的條件下生成幾乎任意復雜的零部件,極大地提高了生產效率和制造柔性。
首先得通過計算機輔助設計(CAD)或計算機動畫建模軟件建模,再將建成的三維模型“切片”成逐層的截面數據,并把這些信息傳送到3D打印機上,3D打印機會把這些切片堆疊起來,直到一個固態物體成型。打 3D機型者者
打印的過程是這樣的:先通過計算建模軟件建模,如果你有現成的模也可以,比如動物模型、人物、或微縮建筑等等。然后通過SD卡或USB優盤把它拷貝到3D打印機中,印原理:
進行打印設置后,打印機就可以把它們打印出來,其工作結構分解圖如下:
思考與創新
3D打印技術作為一種新型便捷的生產技術,雖然初見成效,但在很多領域仍存在問題,比如說,對于打印所需的材料,如果所選材料熔點低,那么打印出來的產品必然剛性差,易折斷或變形,不利于高負荷的實際使用,但倘若熔點較高,必然對打印機的墨盒的要求提高,如若想正確打印,必然需要墨盒熔點更高于打印所需原材料,在工藝上的要求會更高,成本也會更大,甚至可能超過原有工業生產所需成本,這樣,3D打印技術就變得毫無意義。因此,為了使3D打印技術更加成熟,必須在以上兩點之間權衡,找到突破口。激光切割機 實驗目的
了解激光切割機的原理
了解激光切割機與傳統切割技術相比的優勢 激光切割機的實際應用 實驗儀器
激光切割機,材料板等 實驗原理 激光切割是將從激光器發射出的激光,經光路系統,聚焦成高功率密度的激光束。激光束照射到工件表面,使工件達到熔點或沸點,同時與光束同軸的高壓氣體將熔化或氣化金屬吹走。隨著光束與工件相對位置的移動,最終使材料形成切縫,從而達到切割的目的。
激光切割加工是用不可見的光束代替了傳統的機械刀,具有精度高,切割快速,不局限于切割圖案限制,自動排版節省材料,切口平滑,加工成本低等特點,將逐漸改進或取代于傳統的金屬切割工藝設備。激光刀頭的機械部分與工件無接觸,在工作中不會對工件表面造成劃傷;激光切割速度快,切口光滑平整,一般無需后續加工;切割熱影響區小,板材變形小,切縫窄(0.1mm~0.3mm);切口沒有機械應力,無剪切毛刺;加工精度高,重復性好,不損傷材料表面;數控編程,可加工任意的平面圖,可以對幅面很大的整板切割,無需開模具,經濟省時。
智能工廠 實驗目的 智能工廠原理 工廠接單
工廠在電腦終端接收訂單指令,并把訂單指令下達給各個工作區域,是整個工廠圍繞該訂單展開生產工作
原料供給
通過機械臂從工廠倉庫中提取原材料,倉庫架采取單齒輪驅動雙板雙齒條的方式,節約了倉庫的空間加大了倉庫的儲備量
機械臂通過空間坐標抓取貨物,并將貨物放在循跡運輸車中,進行下一步工序
銑床加工
通過銑床等機械加工方法,得到生產工件
并利用裝載機械臂的小車將做好工件放入公差測量儀進行檢測
工件糾偏,裝載出庫
利用機器人視覺對圖像的處理,將工件放入指定位置,并用循跡小車將生產完成工件封裝出庫
創新與思考
智能工廠卻為工業4.0概念的產物,但這個工廠確實存在以下幾點問題: 機械臂抓取貨物只能適用于低重量產品,對于質量較大的產品并不適用。個人認為應采取液壓傳動
循跡小車思路很好,但單線路的循跡線,很難滿足工作需要,應將但循跡線改為一條主線路多通路與其共同連接的思路,如同鐵路軌道,可允許多輛小車在不沖突的條件下同時工作,以提高效率
缺少反饋設施,在加工過程中很容易產生誤差,尤其在高精度加工之中,如果一旦出現誤差卻沒能及時發現,損失將是巨大的,應在誤差檢測儀系統中設置反饋裝置,以防止出現較大誤差
第四篇:2011年機器人二車間總結報告
2011年機器人二車間總結報告
時光荏苒,光陰似箭,自二車間創辦以來,已有半個年頭之久,從中經歷了很多坎坷,也學到了很多東西,車間也一直在一個比較好的狀態下運轉。機器人二車間成立于六月份,萬事開頭難,在這半年里終于體會到了作為一名管理者的艱辛和不易,同時也收獲了不少。“累并快樂著”是最好的總結。在這里,借此機會我對2011年的工作從以下幾個方面做下總結。
一、管理方面
首先是自身管理方面:作為一個優秀的管理者,本身自己必須以身作則,車間要求的規章制度自己必須帶頭做好。所以在這半年中自身的不足也隨之暴漏無疑:
1、雖然年輕充滿干勁,但是經驗缺乏,在處理突發事件和一些新問題上存在著較大的欠缺,而且還喜歡隨自己的意愿辦事。
2、對于線材的生產進度狀況不能掌控,造成拖期、延
期想象
其次是員工管理方面:作為一個優秀的管理者,自己必須要深入了解自己的下屬,包括他(她)的人品、性格、愛好、處事作風、工作能力等諸多方面,針對不同性格、不同年齡段、不同能力的人應該分別予以不同的管理方式、說話語氣和工作任務,做到人盡其才,物盡其用。同時要懂得關心自己的員工,真誠的關心。當他們犯錯的時候,除了批評外還要多加鼓勵,以及對其的信任,讓他(她)體會到領導層的關心與器重,讓他知道我們不但是上下級關系、同事關系,我們還是互相支持、關心的朋友關系。當然,作為管理者,同樣要在員工面前樹立自己的威信。這種威信不是靠惡語批評,也不是靠一味的做老好人樹立起來的。一個真正優秀的管理者,是要讓自己的員工中的一大部分人說你好,一小部分說你壞,才能稱之為優秀的管理者。因為管理者不是員工,只要做好自己的分內事就行了,我需要的是一個團隊的力量,我需要說我好的人的支持,我同樣需要說我壞的人的執行。因為朋友和同事概念上的執行力度的效果迥然不同,好壞恰恰能做到互補。譬如自己帶班以來,從當初的馬強在上班期間睡覺,找機會偷懶,到現在已經可以自己管理別人等等,委實給了我巨大壓力,深感管理是一門很深的學問,是一種藝術。
當然,由于自己社會閱歷,經驗方面還有所欠缺,對于員工心理等各個方面拿捏的還不是很好,對某些員工的想法沒有深入的了解,從而導致車間偶爾的不和諧。譬如:在10月份趕鄭州I/O線的時候,由于自己的調配和管理不到位,導致倒裝線員工和鄭州I/O線員工不和諧,在外人看來就是倒裝線形成了一個小團隊,不服從我的管理。其實在隨后的調節中,倒裝線是每天都超額完成產量的。
二、取得的成績
現在二車間主要負責富士康機器人車間機構的委外線材(倒裝線、編碼器線),和部分鄭州I/O線、軍規線。從車間開辦到現在共完成倒裝線1400套(現還有120套在趕制)、三菱編碼線300套。軍規線和鄭州I/O線是由倆個車間共同完成,現軍規線共生產3850套,鄭州I/O線共生產 1150套。
三、日常
從開始接手倒裝線到現在,大大小小的錯誤都犯過,主要是剪錯線,物料丟失,產品沒有達到專業要求,后針對折現問題我們做出了及時的改善和檢討。剪線上加上了剪線制度。對物料管理上進行了統一專人管理。在技術上富士康每周都有留守學院的優秀員工,對學生在作業手法上進行了提高。現在生產漸漸地上了正軌。富士康反饋的問題也少了。
在平時紀律上我車間做的還是不到位,員工遲到比較頻繁,員工紀律意識較低,思想工作沒有做到位??记谥贫炔粔驀栏瘛;厥走@一年,忙碌中滿載著收獲,收獲了自己的進步,收獲了車間管理的經驗,同時也收獲了學校同學的無私幫助,我相信,2011年的總結將會是2012年收獲進步和輝煌的起點。相信自己會在2012飛得更高,更遠
總結人:邢晨浩
李鑫亮
2011年12月30日
第五篇:雙足競步機器人技術總結報告
編制單位:侏羅紀工作室作 者:侯兆棟 版 本:V0.1 發布日期:2010-8-20 審 核 人: 批 準 人:
雙足競步機器人技術總結報告
? 引言
2010年中國機器人大賽已經結束,回顧整個比賽及賽前調試過程,我們遇到了很多問題,下面就將我們遇到的問題做一分析和總結,并提出改進方案,對我們以后的工作有所幫助。
? 遇到的問題及原因分析
? 機器人穩定性不好
機器人在走路的過程中不穩,比較晃。造成此問題的原因有兩個: 1.機器人高度過高。
由于我們用成型的U型套件,套件高度是固定的,我們必須將腿做成一定的高度才能保證腰翻下去不壓腳;下面兩個套件決定了腰的高度,所以總體下來我們的機器人高度比較高,導致機器人重心比較高,平衡性不好,造成不穩定。2.步態設計不合理。
在動作上需要6個舵機同時配合,要做到很協調,還是很有難度的,某個舵機的角度,速度都會對整個機器人的行走造成影響,這也是造成機器人走路不穩定的原因。? 舵機控制問題
舵機控制原理
控制信號由接收機的通道進入信號調制芯片,獲得直流偏置電壓。它內部有一個基準電路,產生周期為 20ms,寬度為1.5ms的基準信號,將獲得的直流偏置電壓與電位器的電壓比較,獲得電壓差輸出。最后,電壓差的正負輸出到電機驅動芯片決定電機的正反轉。當電機轉速一定時,通過級聯減速齒輪帶動電位器旋轉,使得電壓差為0,電機停止轉動。
電源線和地線用于提供舵機內部的直流電機和控制線路所需的能源.電壓通常介于4~6V,一般取5V。注意,給舵機供電電源應能提供足夠的功率。
控制線的輸入是一個寬度可調的周期性方波脈沖信號,方波脈沖信號的周期為20 ms(即頻率為50 Hz)。當方波的脈沖寬度改變時,舵機轉軸的角度發生改變,角度變化與脈沖寬度的變化成正比。
? 上電機器人亂動
問題在于上電程序初始化時,沒有給出一個確定的值來產生一個確定的脈沖,脈沖給舵機后,舵機狀態不定,就出現了亂動的現象。? 舵機抖動
在調試過程中,舵機出現抖舵的問題,主要原因有:
1、控制板供電電源電壓不足
控制板供電電源電壓不足,引起芯片電源電壓不穩定,導致輸出脈沖抖動,測得當供電電壓降低到5V以下經過78M05穩壓,再經過ASM1117穩壓后,輸出脈沖高電平電壓再2.5V左右,是一不可靠的高電平,輸入舵機控制電路后,輸出的直流偏置電壓不準確,導致舵機抖動。
2、脈沖精度不夠
很多舵機的位置等級有1024個,如果舵機的有效角度范圍為180度的話,其控制的角度精度是可以達到180/1024度,約0.18度,從時間上看其實要求的脈寬控制精度為2000/1024us,約2us。
此次為節省芯片資源,先將時鐘進行一次分頻,再拿分頻產生的時鐘來控制脈沖的時基計數器和步進計數器,這樣,每個計數器的計數值變小,節省了一定的資源,但在控制精度上有所下降,控制板產生的脈沖精度為:
脈沖時基計數值為:1600;步進計數值為:1或2; 則: 脈沖精度為1/1600 * 20 ms = 12.5 us 與舵機的要求精度相差很大,由于模擬舵機的無反應區比較大,當以較低精度的脈沖來控制舵機時,在某個時刻舵機狀態不定就會出現抖舵現象。
? 燒電路板
電路板原理圖如下:
此原理圖比較簡單,沒有什么原理性的東西,也沒有做隔離和保護,電源模塊有兩路供電,一路經過開關后直接給舵機供電,另一路經過兩級穩壓輸出3.3V電壓,滿足EPM1270的供電需求;復位是直接通過一電阻拉到地上,進行低電平復位;時鐘模塊是一有源晶振,接上電源后就可以起振;其他都是接口。
在調試過程中,有一段時間,老燒電路板,每次燒的都是CPLD芯片,從CPLD手冊上查得:
芯片3.3V供電時,I/O口的單端輸出電壓為3.3V
3.3V供電時,輸出高電平電流為16mA,輸出低電平電流為8 mA;由以上資料分析,燒板子的原因可能是: 1.電平不匹配。
CPLD輸出電平電壓為3.3V,而舵機需要的為TTL電平,由于外部再沒有加驅動電路,這樣CPLD的I/O端口驅動能力有限,當同時有幾個舵機轉時或者舵機轉的角度比較大時負載過重,導致CPLD燒壞。
2.電流回流和尖峰脈沖
舵機中有一直流電機,當直流電機轉的時候,自身也會產生電流,若多個舵機同時轉,且轉的角度比較大時,各舵機自身產生的電流匯集到一起應該是表較大的,若電流倒流入電路板,電路板可能因電流過大而燒壞;另一點就是尖峰脈沖,舵機在轉的過程中若產生尖峰脈沖,倒灌入電路板也可能因電流過大而燒壞芯片。
這應該是此次電路板燒的主要原因。3.電路板制作工藝
在刻PCB板時,板子阻焊做的不好,在焊接的過程中,容易在電路板上留下焊錫渣,如果掉入芯片兩引腳之間,也可能引起短路,導致電路板燒壞。? 解決方案
? 機器人穩定性解決方案
結構
對機器人整體結構應該在現有基礎上加以改進,比如在機器人高度上,以及腰部;對于U型套件,自己做,用AutoCAD設計出機器人結構圖、套件圖,拿到機床去加工,這樣能保證套件精度,和結構的合理性,將機器人結構對研究帶來的影響減到最小。? 步態設計
對機器人走路的步態進行更合理的設計,保證走路過程中的平穩。
? 舵機控制解決方案
上電亂動
在上電程序初始化時應該給舵機一個確定的脈沖,而且此狀態持續時間應稍長,問題就會得到解決。? 舵機抖動
首先,保證電源電量充足,電壓保持穩定,給芯片一個穩定的電壓,保證輸出脈沖的穩定性;其次,增加脈沖精度,即脈沖寬度的步進不要太大,這樣既能精確的控制舵機,又能避免舵機的抖動;另外,可以在后端加一脈沖整形電路,可以濾除毛刺等脈沖。
? 電路板解決方案
電平不匹配問題。
對于此問題,可在后端加一電平轉換芯片,增強驅動能力,保證I/O口有足夠的能力來驅動舵機。? 電流回流和尖峰脈沖
方案一:加電容吸收
在舵機前端加一電容來吸收尖峰脈沖,但此方法經過實際驗證不可行。加電容后,從I/O口輸出的脈沖被電容吸收了,舵機不轉。
方案二:光電隔離 + 整形
為了防止干擾,舵機控制信號和驅動電路應光耦光電隔離, 將信號隔開,避免舵機轉動對控制板的影響。
通過隔離出來的控制信號, 還必須經過整形以消除毛刺, 增加信號的穩定性, 提高信號的輸出電流。整形可采用施密特觸發器,施密特觸發器是脈沖波形變換中經常使用的一種電路,它是具有滯后特性的數字傳輸門,且受電源限制,可對輸入波形進行變換和整形;另外,還可以采用通過比較器整形的方法來消除毛刺比如用LM324,LM393等。? 電路板制作工藝
在今后做板的時候應該加強阻焊和助焊這兩道工序,能保證焊接時不出現板子上有雜物而導致短路的情況;在板子焊好后,在引腳密集的芯片處采取一些措施,如涂上硅膠或者蠟,以防短路。
? 總結
本文針對此次比賽中出現的問題,進行原因分析,并提出解決辦法,為以后的研究提供一個參考。針對出現的問題,具體解決方案需在今后的研究中結合實際情況來確定。