学合理的系统模型是很有必要的。
在对滴速进行控制时,我们借鉴了 PID 算法,建立了一个闭环控制状态,利用类似于
锁相环的模型:即把设定的滴速和当前的滴速进行比较,输出一个差值,利用这个差值的
极性来决定电机的正反转,并拉小这个差值直至最小。因为每检测到一个传感信号,我们
就把设定值和当前值进行比较,这样不仅提高了设备的响应速度,而且由于我们这个系统
的基准时钟是以 10 毫秒为单位了,因为我们能分辨到 10 毫秒的数量级,可以使当前值非
常接近我们所设定的设定值。
这一点可以参照电机控制的流程图。(图 12)
1、运算过程:因为我们系统的基准时钟是以 10 毫秒为单位了,虽然加大了系统的精度,
但是却给系统的数值运算带来了麻烦,直接用四则运算(特别是乘除的运算)很容易
带来无法避免的运算误差,即在运算是因为运算位数的限制而带来的数据尾数的丢失。
前面说过这种误差将对我们对信号的处理和显示产生很大了影响,甚至会得到一个误
差很大的最终输出,为避免这种情况,我们在保证精度的基础上采用了查表法,并且
在建立表格时对数据进行一定的折中处理,使得最终得到了结果的误差能尽量小,实
践证明我们这种方法还是有一定的实用性的。而且查表法的结果便于以后系统误差的
自我校正,因为它保存了一个恒值。
2、对数据表格的处理:前面说过我们这个系统的基准时钟有两个字节单元,而即使采用
题目要求的滴速(20~150 分/滴)也将需要 260 个字节,这已经超过了 8 位单片机的查
表范围,所以怎样建立一个合理的查表算法是很有必要的。通过对数据的观察,我们
发现虽然每个时间量有两个字节,但是在秒字节的单元里,总共只能出现 4 种取值,
即 1、2 和 3 以及 0 ,所以我们可以以这 4 个值为标量对表格的数据进行划分,由于有
了秒字节单元来做区分,我们只要在表格中写入 10 毫秒字节单元的值就行了,通过综
合处理,在保证精度的基础上,我们所建立的表格的字节数为 100 多个,这样不仅满
足了 8 位单片机的查表范围,而且大大了节省了内存,有利于系统资源的优化分配。
3、通信的建立:在选择方案时,考虑到通信线的多少,我们采用了串行通信,直接利用
单片机本身的串行通信口,在软件上我们考虑用串行通信的方式 0 来进行通信。通信
协议如下:先发送握手信号,然后发送被呼叫的从机号,每个从机在接收到地址时跟
自身的地址进行比较,如果不是被呼叫机,则关闭通信链路;如果是则发送响应信号。
当确定了通信的链路后,就按照预定的数据包格式进行通信。数据包格式如下:
2、程序流程图