本发明专利涉及机械设计技术领域,尤其涉及一种基于自由摆的平板控制系统。
背景技术:
传统的角随动实验系统采用自整角机与力矩电机配合模拟电路实现角度控制,自整角机和模拟电路本身的非线性特性使得角随动控制精度大打折扣,不适合经典控制理论实验课程的开展。
发明专利内容
本发明专利涉及一种基于自由摆的平板控制系统,本发明以单片机为控制核心,采用增量旋转编码器实时采集自由摆旋转角度及方向,通过步进电机开环控制平板旋转角度,以实现控制要求。
附图说明
图1:系统组成框图。
图2:系统总体框图。
图3:主程序流程图。
图4:模式一程序流程图。
图5:模式二角度测量中断服务程序流程图。
图6:模式二程序流程图。
图7:模式三的程序流程图。
具体实施方式
为了使本发明专利的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明专利进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明专利,并不用于限定本发明专利。
本发明专利涉及一种基于自由摆的平板控制系统,本发明以单片机为控制核心,采用增量旋转编码器实时采集自由摆旋转角度及方向,通过步进电机开环控制平板旋转角度,以实现控制要求。
进一步的,本发明的基本要求是保持平板上硬币的平衡滑动小或滑落少,进一步的要求是让平板上激光笔射在靶纸上的光斑偏移量尽可能小。
进一步的,本发明采用以单片机为核心的自由摆控制系统主要由单片机控制模块、角度测量获取模块、平板平衡控制模块、电机驱动模块和角度值显示模块组成,系统框图如图1所示。
进一步的,本发明选用stc89c51单片机作为控制核心,它具有8k字节flash,256字节ram,32位i/o口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
进一步,本发明采用单片机最小系统。单片机最小系统包含了显示、矩阵键盘、a/d、d/a等模块,能明显减少外围电路的设计,降低系统设计的难度。
进一步,本发明采用增量式光电旋转编码器,光电编码器是一种角度(角速度)检测装置,它将输入给轴的角度量,利用光电转换原理转换成相应的电脉冲。旋转编码器具有体积小,精度高,工作可靠,接口数字化等优点。此外旋转编码器安装较为方便,接口电路较为简单,能够减少系统硬件电路的工作量。
进一步,本发明选定的步进电机型号为42byg250-48。该电机为两相步进电机,它的步距角仅为1.8°扭矩为0.50n/m,有较高的空载启动频率,在十六细分后能实现0.225°的步距角能够满足本系统的控制要求。
进一步,本发明的系统总体框图如图2所示。
进一步的,本发明的主程序根据不同的要求设定不同的控制模式,在各个模式间切换。根据设计要求,我们把程序归为几个模式,由按键切换模式。具体分配如下:
(1)模式一对应为基本要求一,即平板跟随自由摆旋转一周误差不超过45°;
(2)模式二对应为基本要求二和基本要求三,即保持硬币在平板上的平衡,不让硬币掉落;
(3)模式三对应发挥部分一和发挥部分二,对激光笔入射位置的调整以及保持激光笔入射位置的固定与平衡。
进一步,本发明的主程序流程如图3所示,主程序由两个按键控制三个模式的选择。当系统启动时,s1按下选择模式一,s2按下选择模式二;若s1和s2都未按下,那么执行模式三。
进一步的,本发明的模式一程序流程如图4所示。因为自由摆的周期是固定的,计算为2s一个周期,所以需要控制电机转动在2s内旋转360。采用定时器定时,在十六细分下,发每个脉冲的周期为625us。定时器定时即为625us。3200脉冲电机旋转一周,此时,每旋转一周,记录旋转周数的变量加一,到五周后,程序执行结束。
进一步的,本发明的模式二的角度测量中断服务判断程序如图5所示。进入中断程序后,需要确定的是左右侧的方向标志。设定两个定时器分别为t1和t2。t1为左侧的计数器,t2为右侧的计数器。判断当t2大于零而且t1等于零时,表明平板往右摆,置右摆标志位为一。判断当t1大于零而且t2等于零时,表明平板往左摆,置左摆标志位为一。对应的计数器加一后,开始查表,找到对应的电机脉冲数,送给电机,从而控制电机转动。
进一步,本发明选择模式二后,摆杆缓慢拉到一定的角度,同时单片机获得旋转编码器所送来的脉冲并记录下来,拉到一定角度后摆杆停止,此时,单片机就获得了最后的角度值。按键开始后,单片机根据获取的角度值,换算为电机的转动脉冲数,发给电机,电机立即开始转动,保持平板对摆杆的垂直。最后,电机锁定,避免电机的抖动。此时程序执行结束。模式二的程序流程如图6所示。
进一步的,与模式二的中断服务程序相同,对左右侧判断是一样的方法。相对于模式三的特殊性,在获取角度之后,换算为电机的脉冲数,还应该计算此次的脉冲数与前一次的脉冲数的差值,也就是计算出脉冲数的增量值,是电机转动的是一具增量变化的,这样就能达到电机的转动是跟随角度脉冲变化的快慢以及大小而跟这变化。达到最终的实时控制,保持激光笔在靶纸上光斑的位置恒定。
进一步,本发明选择模式三后,摆杆开始拉动摆杆,单片机内部立即根据旋转编码器的a通道和b通道的脉冲相位关系,判断出平板摆动位置在中心线的左右侧。判定之后,θ3(反转标志位)的值或θ4(正转标志位)的值对应增加,记录下旋转编码器的脉冲数。再通过计算,转换为电机的转动脉冲数。如果开始按键s3按下,那么所计算的电机旋转脉冲发给电机,电机立即转动对应地调整平板位置,使激光笔找着最初入射靶纸上的位置或者是保持靶纸上激光笔的光斑入位置尽可能保持不变。模式三的程序流程图,如图7所示。
进一步的,本发明的重要源程序代码如下:
(1)判断正反转程序
voidint0_fun()interrupt0
{
if(e6b2c_b==1)//若为右摆
{
int0_flag_l=0;//左摆计数值清零
int0_flag_r++;//右摆计数
flag_r==1;
flag_l==0;
}
if(e6b2c_b==0)//若为左摆
{
int0_flag_r=0;//右摆计数值清零
int0_flag_l++;//左摆计数
flag_r==0;
flag_l==1;
}
}
(2)电机正反转程序
voidmotor_ni(uintb)
{
unsignedchari,j;
j=0;
for(i=0;i<16*b;i++)
{
motor&=0xf0;
motor|=ffw[j];
j++;
if(j>=8)j=0;
delay(2);
}
delay(200);
}
voidmotor_shun(uinta)
{
unsignedchari,j;
j=0;
for(i=0;i<16*a;i++)
{
motor&=0xf0;
motor|=ffz[j];
j++;
if(j>=8)j=0;
delay(2);
}
delay(200);
}
(3)摆角测量程序
voidangle_count()
{
angle_r=int0_flag_r*0.36;
angle_l=int0_flag_l*0.36;
if(angle_r>0)
{
angle_l=0;
angle=angle_r;
}
elseif(angle_l>0)
{
angle_r=0;
angle=angle_l;
}
}
以上所述仅为本发明专利的较佳实施例而已,并不用以限制本发明专利,凡在本发明专利的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明专利的保护范围之内。