平 面 繪 圖 儀 設 計 報 告
指導教師:宮玉琳
隊員:池林輝 袁溯 郭柴旺
2016年6月11日
摘要:
該繪圖儀以飛思卡爾公司Freescale Kinetis MK60FN1M0 120M 爲控制核心,主要由兩個S3010模擬舵機,兩個10cm機械臂組成。通過MATLAB建模,對大賽要求圖形取模,得到對應的角度變換數組,在K60中把角度轉化成佔空比。通過串口接受命令,以固定頻率連續對舵機進行控制,帶動機械臂擺動,最終由簽字筆繪製出任意圖形,直線,正方形以及圓。另外,本系統具有指示燈,方便用戶觀察當前繪圖狀態。本系統除大賽規定圖形外,還可繪製其他任意圖形,應用廣泛,改進空間很大,前景可觀。從測試結果不難看出,本方案合理可靠,成本低廉,繪圖精準美觀。並且系統設計結構簡單,外觀精簡,易於控制,具有很高的系統穩定性。
關鍵詞: MK60FN 120M; S3010舵機;機械臂;MATLAB建模;簽字筆
目錄
第一章
系統方案
1.1 設計任務與要求
1.2 系統設計方案
1.2.1 系統控制方案的論證與設計
1.2.2 機械結構的論證與選擇
1.2.3 舵機的選擇
第二章 系統理論分析計算
2.1 MATLAB建模部分理論計算
2.2 K60程序部分轉換公式
第三章 電路與程序設計
3.1 硬件電路設計
3.2 程序算法設計
3.2.1 MATLAB在線設計與仿真
3.2.2 C語言軟件設計
第四章 測試方案與結果
4.1 基礎部分要求(1)
4.2 基礎部分要求(2)
4.3 基礎部分要求(3)
4.4基礎部分要求(4)
第五章 運動學仿真
第六章 結論
第七章 參考文獻
第一章 系統方案
1.1 設計任務與要求
(一)主要任務
採用二自由度機械結構和控制系統, 完成有關圖形繪製。
(二)要求及說明
1.基本要求
(1) 採用規定硬件完成設計機械和電子及控制系統。
硬件配置:供電不限(電池、適配器、臺式電源等),任意 CPU或者可編程芯片,標準模擬舵機 2 個(非連續旋轉型),0.5mm 簽字筆1支,其他。要求有預留通訊接口:通訊方式爲 RS-232,波特率爲 115200 , n , 8 , 1。
(2) 繪製一個任意圖形。
(3) 繪製一條直線段。
(4) 繪製一個正方形。
(5) 繪製一個圓形。
2.圖形說明
功能項 | 功能描述 | 指令碼 | 備註 |
任意圖形 | 作品上電,接收到指令碼後,繪製任意圖形。 | ‘1’ | —— |
繪製一條直線 | 接收到指令碼後,繪製一條長 15CM 的直線段。 | ‘2’ | —— |
繪製一個正方形 | 接收到指令碼後,繪製一個邊長爲 5CM 的正方形。 | ‘3’ | —— |
繪製圓形 | 接收到指令後繪製一個半爲 5CM 的圓。 | ‘4’ | —— |
備註:
1.作品通過 RS-232 線纜連接計算機。
2.計算機通過任意串口調試軟件發送 ASCLL 指令碼。
3.作品繪製圖樣。
1.2 系統設計方案
1.2.1 系統運動控制方案的論證與設計
方案一:採用雙臂結構進行控制,每一對機械臂下都放置一個舵機,兩個舵機並排放置,雙臂連接處放置簽字筆,通過控制舵機對機械臂旋轉角度進行控制,以精確繪圖。如圖一所示。該方案精度較高,但機械結構上實現較爲複雜。
方案二:採用單臂結構進行控制,每一個連接處下放置一個舵機,兩個舵機一前一後放置,前臂末端放置簽字筆,通過控制舵機對機械臂的旋轉角度進行控制,以精確繪圖。如圖二所示。該方案精度不如方案一,但其機械結構簡單,易於實現。
在以上兩種方案中,考慮到二者的精度差別在可接受範圍內,而方案二的機械結構較易實現,綜合各方面考量,我們採用方案二。
1.2.2 機械結構的論證與選擇
方案一:題目所給的繪圖儀結構如圖3所示,此結構易於搭建,雖可實現系統要求,但由於機械臂的長度較長與筆和杆之間是單層連接設計,不易控制簽字筆的運動,使得簽字筆的自由度大於1,極大地干擾到圖形的繪製。
方案二:在方案一的結構基礎上進行改進。在機械臂與簽字筆連接處使用雙層連接,以保證簽字筆運動的自由度爲1,從而能夠較爲精確地繪圖。具體結構如圖4所示。
綜合考慮,本系統機械結構採用方案二。
1.2.3 舵機的選擇
1.S3010模擬舵機
2.S3003模擬舵機
3.MG995模擬舵機
數字舵機精度高,但由於大賽要求使用模擬舵機,考慮到物流問題,我們最終在這三款舵機中選擇性能更好,價格更貴的S3010,以滿足2mm的精度要求。
第二章 系統理論分析計算
2.1 MATLAB建模部分理論計算
2.2 K60程序部分轉換公式
duty_1=1030+xian_1[ii]/12*100;
duty_2=1640-xian_2[ii]/12*100;
式中1030,1640分別是連個舵機處於0角度對應的佔空比
第三章 電路與程序設計
3.1 硬件電路設計
- 系統總體框架圖
本系統通過K60對舵機進行控制,另加按鍵可調節繪製圖形長短。LED燈可有效顯示系統當前狀態。舵機用6.15V供電,80HZ頻率。有效提高模擬舵機S3010的精確度和靈敏度。通過調節繪圖時間,能夠在合適的速度下,行筆繪圖,得到最美觀最合格的圖形。
(2)電源
電源部分採用LM1084-ADJ產生6.15V電壓;採用LM1084-5.0產生5.0V電壓。
濾波電容有效去噪。用0歐電阻隔離舵機GND和總GND。
3.2 程序算法設計
先在MATLAB中多角度進行計算,得出角1與角2的角度值,然後在應用C語言寫出相關的邏輯程序。
在K60程序中,採用串口中斷,按鍵中斷對系統進行控制。從而執行相應的圖形繪製工作。
3.2.1 MATLAB在線設計與仿真
- 直線
(1)MATLAB程序設計
x = -5:0.1:10;
y = 15:1:15;
figure(1)
plot(x,y)
theta2 = acos((x.^2+y.^2)/200-1);
a = y.*(10+10*cos(theta2))-10*x.*sin(theta2);
b = x.*(10+10*cos(theta2))+10*y.*sin(theta2);
theta1 = atan(a./b);
xx = 10*cos(theta1)+10*cos(theta1+theta2);
yy = 10*sin(theta1)+10*sin(theta1+theta2);
figure(2)
plot(xx,yy)
theta11 = theta1/pi*180;
theta22 = theta2/pi*180;
(2)在線仿真結果圖
(3)兩個角度數組
①角1的數據:
70.6737049158870 70.1828836643562 69.6938440353942 69.2065879905037 68.7211187998692 68.2374410059753 67.7555603884803 67.2754839302368 66.7972197843597 66.3207772422479 65.8461667024773 65.3733996404829 64.9024885789615 64.4334470589251 63.9662896113459 63.5010317293365 63.0376898408126 62.5762812815942 62.1168242689000 61.6593378751978 61.2038420023772 60.7503573562113 60.2989054210822 59.8495084349444 59.4021893645056 58.9569718806070 58.5138803337866 58.0729397300143 57.6341757065877 57.1976145081814 56.7632829630443 56.3312084593422 55.9014189216447 55.4739427875571 55.0488089845017 54.6260469066512 54.2056863920237 53.7877576997454 53.3722914874917 52.9593187891191 52.5488709924988 52.1409798175680 51.7356772946129 51.3329957428016 50.9329677489823 50.5356261467674 50.1410039959221 49.7491345620783 49.3600512967943 48.9737878179827 48.5903778907291 48.2098554085246 47.8322543749343 47.4576088857282 47.0859531114963 46.7173212807746 46.3517476637052 45.9892665562564 45.6299122650280 45.2737190926669 44.9207213239181 44.5709532123374 44.2244489676900 43.8812427440613 43.5413686287046 43.2048606316519 42.8717526761113 42.5420785896781 42.2158720963828 41.8931668096029 41.5739962258614 41.2583937195387 40.9463925385216 40.6380258008150 40.3333264921420 40.0323274645558 39.7350614360914 39.4415609914810 39.1518585839604 38.8659865381926 38.5839770543368 38.3058622132898 38.0316739831300 37.7614442267927 37.4952047110097 37.2329871165438 36.9748230497543 36.7207440555280 36.4707816316144 36.2249672444054 35.9833323462022 35.7459083940144 35.5127268699422 35.2838193031910 35.0592172937778 34.8389525379881 34.6230568556496 34.4115622192936 34.2045007852803 34.0019049269719 33.8038072700430 33.6102407300277 33.4212385522096 33.2368343539702 33.0570621697256 32.8819564985866 32.7115523548965 32.5458853218105 32.3849916080981 32.2289081083672 32.0776724669269 31.9313231455270 31.7898994952362 31.6534418327454 31.5219915214134 31.3955910574006 31.2742841612752 31.1581158755131 31.0471326683578 30.9413825445552 30.8409151635322 30.7457819656524 30.6560363072459 30.5717336051925 30.4929314919231 30.4196899818019 30.3520716499635 30.2901418248083 30.2339687954977 30.1836240359593 30.1391824470954 30.1007226191021 30.0683271160510 30.0420827851671 30.0220810935580 30.0084184955269 30.0011968340344 30.0005237803773 30.0065133167441 30.0192862669933 30.0389708818086 30.0657034853406 30.0996291915670 30.1409026999448 30.1896891815186 30.2461652685605 30.3105201631094 30.3829568825516 30.4636936637483 30.5529655513234 30.6510262007649
②角2的數據:
75.5224878140701 75.8152114086719 76.1016551793255 76.3818497902027 76.6558243444812 76.9236064560366 77.1852223177419 77.4406967665722 77.6900533456981 77.9333143637377 78.1705009513206 78.4016331151117 78.6267297894241 78.8458088855469 79.0588873388998 79.2659811541197 79.4671054481777 79.6622744916131 79.8515017479700 80.0347999115124 80.2121809432860 80.3836561055961 80.5492359949574 80.7089305735746 80.8627491994030 81.0107006548372 81.1527931740714 81.2890344691707 81.4194317548907 81.5439917722799 81.6627208110943 81.7756247310549 81.8827089819726 81.9839786227648 82.0794383393870 82.1690924616969 82.2529449792717 82.3309995561934 82.4032595448183 82.4697279985435 82.5304076835831 82.5853010897651 82.6344104403591 82.6777377009420 82.7152845873125 82.7470525724581 82.7730428925816 82.7932565521935 82.8076943282714 82.8163567734927 82.8192442185417 82.8163567734927 82.8076943282714 82.7932565521935 82.7730428925816 82.7470525724581 82.7152845873125 82.6777377009420 82.6344104403591 82.5853010897651 82.5304076835831 82.4697279985435 82.4032595448183 82.3309995561934 82.2529449792717 82.1690924616969 82.0794383393870 81.9839786227648 81.8827089819726 81.7756247310549 81.6627208110943 81.5439917722799 81.4194317548907 81.2890344691707 81.1527931740714 81.0107006548372 80.8627491994030 80.7089305735746 80.5492359949574 80.3836561055961 80.2121809432860 80.0347999115124 79.8515017479700 79.6622744916131 79.4671054481777 79.2659811541197 79.0588873388998 78.8458088855469 78.6267297894241 78.4016331151117 78.1705009513206 77.9333143637377 77.6900533456981 77.4406967665722 77.1852223177419 76.9236064560366 76.6558243444812 76.3818497902027 76.1016551793255 75.8152114086719 75.5224878140701 75.2234520950535 74.9180702357186 74.6063064214874 74.2881229514990 73.9634801463306 73.6323362507232 73.2946473309566 72.9503671664886 72.5994471354365 72.2418360934426 71.8774802454219 71.5063230096434 71.1283048735457 70.7433632406300 70.3514322677080 69.9524426917161 69.5463216452241 69.1329924596816 68.7123744553471 68.2843827167356 67.8489278522962 67.4059157368977 66.9552472355397 66.4968179065392 66.0305176822403 65.5562305250749 65.0738340565500 64.5831991564504 64.0841895292187 63.5766612341032 63.0604621752387 62.5354315473349 62.0013992320893 61.4581851397901 60.9055984898300 60.3434370229817 59.7714861372806 59.1895179381796 58.5972901922693 57.9945451722357 57.3810083788275 56.7563871233487 56.1203689515216 55.4726198863748 54.8127824639950 54.1404735313956 53.4552817702056 52.7567649031590 52.0444465321457 51.3178125465106
2.圓
- MATLAB程序設計
theta = 1:0.1:360;
x0 =10;
y0 =10;
r = 4.55;
x = x0 + r*cosd(theta);
y = y0 + r*sind(theta);
disp([‘theta x y’]);
disp([theta’ x’ y’]);
figure(1)
plot(x,y)
theta2 = acos((x.^2+y.^2)/200-1);
a = y.*(10+10*cos(theta2))-10*x.*sin(theta2);
b = x.*(10+10*cos(theta2))+10*y.*sin(theta2);
theta1 = atan(a./b);
xx = 10*cos(theta1)+10*cos(theta1+theta2);
yy = 10*sin(theta1)+10*sin(theta1+theta2);
figure(2)
plot(xx,yy)
theta11 = theta1/pi*180;
theta22 = theta2/pi
- 在線仿真結果圖
(3)角1與角2的數據
① 角1的數據:
6.96251061971436 7.01100408472794 7.05948027229237 7.10793902258830 7.15638017557519 7.20480357099087 7.25320904835141 7.30159644695068 7.34996560586019 7.39831636392875 7.44664855978231 7.49496203182360 7.54325661823202 …….
②角2的數據:
0.308341904173382 0.308040761830265 0.307739969376941 0.307439528146133 0.307139439473624 0.306839704698265 0.306540325161973 0.306241302209731 0.305942637189594 0.305644331452686 …….
3.正方形
- MATLAB程序設計
①第一條線:
x=5:0.1:10;
y=10:1:10;
figure(5)
plot(x,y)
theta2 = acos((x.^2+y.^2)/200-1);
a = y.*(10+10*cos(theta2))-10*x.*sin(theta2);
b = x.*(10+10*cos(theta2))+10*y.*sin(theta2);
theta1 = atan(a./b);
xx = 10*cos(theta1)+10*cos(theta1+theta2);
yy = 10*sin(theta1)+10*sin(theta1+theta2);
figure(2)
plot(xx,yy)
theta11 = theta1/pi*180;
theta22 = theta2/pi*180;
②第二條線:
x=10:0.1:10;
y=5:0.1:10;
figure(5)
plot(x,y)
theta2 = acos((x.^2+y.^2)/200-1);
a = y.*(10+10*cos(theta2))-10*x.*sin(theta2);
b = x.*(10+10*cos(theta2))+10*y.*sin(theta2);
theta1 = atan(a./b);
xx = 10*cos(theta1)+10*cos(theta1+theta2);
yy = 10*sin(theta1)+10*sin(theta1+theta2);
figure(2)
plot(xx,yy)
theta11 = theta1/pi*180;
theta22 = theta2/pi*180;
③第三條線:
x=5:0.1:10;
y=5:0.1:5;
figure(5)
plot(x,y)
theta2 = acos((x.^2+y.^2)/200-1);
a = y.*(10+10*cos(theta2))-10*x.*sin(theta2);
b = x.*(10+10*cos(theta2))+10*y.*sin(theta2);
theta1 = atan(a./b);
xx = 10*cos(theta1)+10*cos(theta1+theta2);
yy = 10*sin(theta1)+10*sin(theta1+theta2);
figure(2)
plot(xx,yy)
theta11 = theta1/pi*180;
theta22 = theta2/pi*180;
④第四條線:
x=5:0.1:5;
y=5:0.1:10;
figure(5)
plot(x,y)
theta2 = acos((x.^2+y.^2)/200-1);
a = y.*(10+10*cos(theta2))-10*x.*sin(theta2);
b = x.*(10+10*cos(theta2))+10*y.*sin(theta2);
theta1 = atan(a./b);
xx = 10*cos(theta1)+10*cos(theta1+theta2);
yy = 10*sin(theta1)+10*sin(theta1+theta2);
figure(2)
plot(xx,yy)
theta11 = theta1/pi*180;
theta22 = theta2/pi*180;
- 在線仿真結果圖
- 角1與角2的數據
例如:第一條線:
7.42279240440093,7.12215156501562,6.82793093207689,
6.54012900425278,6.25874260655531,5.98376696683809,
5.71519579273427,5.45302134888572,5.19723453432377,
4.94782495987260,4.70478102545524,4.46808999719306,
4.23773808419872,……
3.2.2 C語言軟件設計
第四章 測試方案與結果
4.1 基礎部分要求(1)
驅動舵機,使其繪製出任意圖形,測試結果如圖所示:
由於該基礎項對圖形的具體形狀沒有要求,故任意形狀均符合該項要求
4.2 基礎部分要求(2)
驅動舵機,使簽字筆繪製出一條長爲15cm的直線,測試5次,記錄其偏差距離和5cm內最大偏差,測試結果如表一所示。
測試1 | 測試2 | 測試3 | 測試4 | 測試5 | |
直線誤差 | +0.7cm | +0.2cm | -0.2cm | -0.4cm | -0.3cm |
5cm內彎曲偏差 | 0.12cm | 0.08cm | 0.05cm | 0.18cm | 0.15cm |
根據測試結果進行分析,直線線性平均誤差爲0cm,5cm內彎曲最大偏差爲0.116cm,符合設計要求。
4.3 基礎部分求(3)
驅動舵機,使簽字筆繪製出邊長爲5cm的正方形,測試5次,記錄其邊長偏差距離,5cm內彎曲最大偏差以及是否閉合,測試結果如表二所示。
測試1 | 測試2 | 測試3 | 測試4 | 測試5 | |
直線誤差 | +0.5cm | +0.3cm | -0.2cm | -0.5cm | +0.1cm |
5cm內彎曲偏差 | 0.05cm | 0.12cm | 0.08cm | 0.03cm | 0.18cm |
是否閉合 | 是 | 是 | 是 | 是 | 是 |
根據測試結果進行分析,直線線性平均誤差爲0.05cm,5cm內彎曲最大偏差爲0.092cm,5次測試均閉合,符合設計要求。
4.4基礎部分要求(4)
驅動舵機,使簽字筆繪製出半徑爲5cm的圓,測試5次,記錄其邊長偏差距離,5cm內彎曲最大偏差以及是否閉合,測試結果如表二所示。
測試1 | 測試2 | 測試3 | 測試4 | 測試5 | |
尖端最大毛刺 | 0.04 | 0.10 | 0.06 | 0.08 | 0.10 |
首尾連接位置間隙 | 0 | 0 | 0 | 0 | 0 |
根據測試結果進行分析,直尖端最大毛刺平均值爲0.076cm,首尾連接平均間隙爲0,即5次測試均閉合,符合設計要求。
第五章 運動學仿真
Siemens NX9.0仿真:
第六章 結論
通過比對嘗試各種機械機構方案,考慮到系統穩定性、成本和比賽週期,最終製作出本系統。俗話說,選擇比努力更重要,最初選擇方案用了0.5天。我們把重點放在了模擬舵機的型號選擇上,因爲舵機是該系統的關鍵。機械結構設計調整了2.5天,考慮到精確度的問題,我們對整體機械結構做了多次嘗試,不斷調整,因爲結構穩定性直接影響系統精度和穩定性,這裏我們作爲重點去做。MATLAB在線仿真了1.5天,通過限制角度,解決了MATLAB計算結果出現的“多值”問題。K60部分程序編寫調試用了2天,這中間包括電路的設計與焊接,根據比賽規定,設計出了符合規則的外圍電路。
經過本次電子設計大賽,本隊全體隊員技術上有了新一次的提高。在短時間內密切合作,完成規定任務,收穫了很多。
第七章 參考文獻
- 童詩白.模擬電子設計基礎[M].高等教育出版社,2000
- 譚浩強.C語言程序設計[M].清華大學出版社,2012
- 吳少君.單片機低功耗設計[M].人民郵電出版社,2005
附:技術要求
平面繪圖儀
一、主要任務
採用二自由度機械結構和控制系統,完成有關圖形繪製。
二、要求及說明
1.基本要求
(1)採用規定硬件完成設計機械和電子及控制系統。
硬件配置:供電不限(電池、適配器、臺式電源等)
,任意 CPU 或者可編
程芯片,標準模擬舵機 2 個(非連續旋轉型)
,0.5mm 簽字筆 1 支,其他。要
求有預留通訊接口:通訊方式爲 RS-232,波特率爲 115200 , n , 8 , 1。
(2)繪製一個任意圖形。
(3)繪製一條直線段。
(4)繪製一個正方形。
(5)繪製一個圓形。