平 面 绘 图 仪 设 计 报 告
指导教师:宫玉琳
队员:池林辉 袁溯 郭柴旺
2016年6月11日
摘要:
该绘图仪以飞思卡尔公司Freescale Kinetis MK60FN1M0 120M 为控制核心,主要由两个S3010模拟舵机,两个10cm机械臂组成。通过MATLAB建模,对大赛要求图形取模,得到对应的角度变换数组,在K60中把角度转化成占空比。通过串口接受命令,以固定频率连续对舵机进行控制,带动机械臂摆动,最终由签字笔绘制出任意图形,直线,正方形以及圆。另外,本系统具有指示灯,方便用户观察当前绘图状态。本系统除大赛规定图形外,还可绘制其他任意图形,应用广泛,改进空间很大,前景可观。从测试结果不难看出,本方案合理可靠,成本低廉,绘图精准美观。并且系统设计结构简单,外观精简,易于控制,具有很高的系统稳定性。
目录
第一章 系统方案
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.2 C语言软件设计
4.1 基础部分要求(1)
4.2 基础部分要求(2)
4.3 基础部分要求(3)
4.4基础部分要求(4)
(一)主要任务
采用二自由度机械结构和控制系统, 完成有关图形绘制。
(二)要求及说明
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.作品绘制图样。
方案一:采用双臂结构进行控制,每一对机械臂下都放置一个舵机,两个舵机并排放置,双臂连接处放置签字笔,通过控制舵机对机械臂旋转角度进行控制,以精确绘图。如图一所示。该方案精度较高,但机械结构上实现较为复杂。
方案二:采用单臂结构进行控制,每一个连接处下放置一个舵机,两个舵机一前一后放置,前臂末端放置签字笔,通过控制舵机对机械臂的旋转角度进行控制,以精确绘图。如图二所示。该方案精度不如方案一,但其机械结构简单,易于实现。
在以上两种方案中,考虑到二者的精度差别在可接受范围内,而方案二的机械结构较易实现,综合各方面考量,我们采用方案二。
方案一:题目所给的绘图仪结构如图3所示,此结构易于搭建,虽可实现系统要求,但由于机械臂的长度较长与笔和杆之间是单层连接设计,不易控制签字笔的运动,使得签字笔的自由度大于1,极大地干扰到图形的绘制。
方案二:在方案一的结构基础上进行改进。在机械臂与签字笔连接处使用双层连接,以保证签字笔运动的自由度为1,从而能够较为精确地绘图。具体结构如图4所示。
综合考虑,本系统机械结构采用方案二。
1.S3010模拟舵机
2.S3003模拟舵机
3.MG995模拟舵机
数字舵机精度高,但由于大赛要求使用模拟舵机,考虑到物流问题,我们最终在这三款舵机中选择性能更好,价格更贵的S3010,以满足2mm的精度要求。
duty_1=1030+xian_1[ii]/12*100;
duty_2=1640-xian_2[ii]/12*100;
式中1030,1640分别是连个舵机处于0角度对应的占空比
本系统通过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程序中,采用串口中断,按键中断对系统进行控制。从而执行相应的图形绘制工作。
(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.圆
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.正方形
①第一条线:
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;
例如:第一条线:
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语言软件设计
第四章 测试方案与结果
由于该基础项对图形的具体形状没有要求,故任意形状均符合该项要求
驱动舵机,使签字笔绘制出一条长为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次测试均闭合,符合设计要求。
驱动舵机,使签字笔绘制出半径为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天,这中间包括电路的设计与焊接,根据比赛规定,设计出了符合规则的外围电路。
经过本次电子设计大赛,本队全体队员技术上有了新一次的提高。在短时间内密切合作,完成规定任务,收获了很多。
附:技术要求
平面绘图仪
一、主要任务
采用二自由度机械结构和控制系统,完成有关图形绘制。
二、要求及说明
1.基本要求
(1)采用规定硬件完成设计机械和电子及控制系统。
硬件配置:供电不限(电池、适配器、台式电源等)
,任意 CPU 或者可编
程芯片,标准模拟舵机 2 个(非连续旋转型)
,0.5mm 签字笔 1 支,其他。要
求有预留通讯接口:通讯方式为 RS-232,波特率为 115200 , n , 8 , 1。
(2)绘制一个任意图形。
(3)绘制一条直线段。
(4)绘制一个正方形。
(5)绘制一个圆形。