伺服与控制
摘 要: 提出了一种基于Atmega8 和Stm32F101 双处理器的投影机升降控制设计方案,介绍了其电路组成、功能以及软件流程。其中Atmega8 负责数据采集,Stm32F101 实现对电机的控制,处理器间通过I2C 总线进行通讯。系统采用了红外遥控或外部按键输入装置控制,也可以用PC 机联机控制。试验验证设计方案正确、有效,定点精度符合实用要求。
1 引言
投影机升降控制系统由Atmega8 数据采集电路、Stm32F101 控制电路、电动机旋转圈数检测模块、红外遥控接收发模块、外部按键模块以及外接抗干扰等电路构成。目标是对投影机等多媒体设备的升降控制。方案中能随时设置投影机到达的最高点和最低点的上限值,设置完毕后无论投影机在哪个位置,当按上升键时能到达设置的最高点,按下降键时能到达设置的最低点,按停止键时停止运动。采用粗调与微调相结合的操作方式,长按操作键3 秒时投影机连续升或降,松手时停止,主要用于粗调;短按操作键时投影机升或降一定距离后自动停止,用于微调。当设置完后,用保存键保存设置,倘若没有保存设置,则设置点无效。红外遥控器既可设置运行参数,也可升降控制。
2 基本控制方法
控制系统的关键在于可以控制投影机升降到任意位置,升降过程是靠电动机实现的,升降的直线距离与电动机旋转圈数相对应,实现了对电动机旋转圈数的控制也就实现了升降直线距离的控制。本方案的技术突破点在于将精确直线距离控制转化为对电动机旋转圈数的控制,电动机旋转一圈对应升降直线距离一毫米,本方案的直线距离控制准确度为一毫米,即实现对电动机旋转一圈的数字控制。电动机控制模块中采用2 个红外传感器实现电动机旋转圈数与旋转方向的采集,由Atmega8 两根I/O 引脚采集传感器输出的信号,引脚的电平组合信号变化状态为00,10,11,01(顺时针方向)或者00,01,11,10(逆时针方向)。本文利用motor _state 结构体表示电机的状态,结构体中每个元素的含义如下:
通过结构体前两个元素值比较可以知道电机是否转动;通过3,4 元素比较可以精确定位投影位置,当相等时产生中断,命令电机停止转动;在后2 个元素中,当两引脚由00 到10 时,motor _ bit _ L 第0位置一,10 到11 时,第1 位置一,11 到01 时,第2 位置一,01 到00 时,第3 位置一,所以当低4位全为1 时表示电机逆时针转动一圈,顺时针转动一圈则由motor _ bit _ R 表示。
3 控制系统硬件设计
控制系统总体上分为信号采集与电动机控制两大部分。
如系统框图右侧Atmega8 主要用作红外传感器信号电平采集,当Stm32F101 控制电机升降时,电机圈数检测电路会通过红外传感器向Atmega8 输入信号,从而判断出电机的运行情况。左侧为Stm32F101 控制电机的升降部分。命令可以分别由红外遥控或者与PC 机联机后的按键方式输入。当Atmega8 采集红外传感器信号电平时,可以通过I2C总线与Stm32F101 传递信息,在投影机到达目的点时发出中断信号使Stm32F101 产生中断,处理相关的操作。图中所示,通过串口可以方便读写2 个E2PROM 的内部数据。掉电保存模块采用的是CAT24WC16,即使在运行中突然停电,也能自动保存电机停电时刻的状态参数,即保存motor _state结构体变量。
图1 控制器系统硬件结构图
3.1 电机圈数检测单元
此单元在整个系统中处于重要地位,在电机转轴一端套着半圆铁片,置于红外传感器发射端和接收端之间,当电机转动时铁片跟着旋转。圈数检测单元中有两个红外传感器,其中每个红外传感器由发射端和接收端组成。发射端和接收端之间被半圆铁片挡住时输出信号为低电平0,没有挡住时输出信号为高电平1.由于是半圆铁片,随着电机的不断旋转,Atmega8两个引脚接收红外传感器信号,不断循环地检测两引脚的输入电平。当两引脚的输入电平没有变化时代表电机没有转动,当变化状态为00,10,11,01 或者00,01,11,10 时,表明电机转动。状态顺序反映出电机顺时针或者逆时针方向旋转。
3.2 电机控制模块
图2 是Stm32F101 对电机控制的硬件原理图。
图2 电机控制硬件结构图。
图中ULN2803A 是达林顿驱动器件, 受控于Stm32F101,MOTO_UD,MOTO_ON,SPK 直接与Stm32F101 连接,它们的作用分别是控制电机升降,控制电机工作还是停止,控制蜂鸣器响停。继电器RL303 工作时,电机工作在220V 交流下,反之则停止工作。而继电器RL302 常开时,从图中知道是控制电机升操作,反之常闭是对电机降操作。为了提高电机的安全性,还采取了升降保护,如图中连接有两个限位开关,分别是升、降限位保护,即当到达极限点时限位开关断开,导致电机停止工作,起到保护电路的作用。
3.3 外部输入模块
图3 是外部按键输入模块,图中key_1,key_2,key_3 与Stm32F101 引脚分别相连,键按下时该键输入为0,当多于一个键同时按下时视为无效。则有效模式分别对应110,101,011 三种状态。当按下其中任意一键时,发光二极管导通,发出光信号作为三极管的基极输入,三极管导通,对应Stm32F101引脚低电平,从而作出相应处理。采用光电耦合,增强了抗干扰能力。
图3 外部按键结构图。
图4 为红外遥控解码模块接口图,D0,D1,D2,D3连到Stm32F101.红外遥控模块采用了解码电路(BM2272)与编码电路(BM2262)配合使用的一块解码专用集成电路。图4 中BM2272 模块接收BM2262红外线传输方式发送来的一系列地址和数据,通过地址位进行2 次连续比较,如果发现没有错误的码字和不匹配的字,输入的数据被解码并传送给相应的数据脚输出,同时VT 脚输出一个高低平的脉冲来表明一个有效地发射。
图4 红外模块遥控解码模块接口图。
4 软件设计
软件总体设计分为Atmega 8 软件设计和Stm32F101 软件设计。Stm32F101 收到命令后进入相关的处理函数,根据命令执行不同的操作,同时通过I2C 总线与Atmega8 通讯。
4.1 Atmega8 软件流程
开始后首先执行系统初始化,其中包括初始化定时器,串口,I2C 等,然后从E2PROM 中读取掉电时刻保存的电机参数,完全还原电机掉电时的状态。进入主函数后循环执行各个子函数。当电机转动时,根据采集的电平信号更新结构体变量,转过一圈motor_ data 元素加1 或者减1,当motor _ data 与motor_ over 相等时产生外部中断信号使Stm32F101 发生中断,在中断函数体内执行程序使电机停止下来。
无论何时掉电,都会立即进入掉电保存程序,将重要参数写进E2PROM,下次上电时完全还原电机掉电时刻的参数。由于Stm32F101 是主I2C,当Atmege8 接收到I2C 数据时产生I2C 中断,保存数据到相应数组,同时置位相关标志位,当循环到I2C中断标志为1 时,马上进入处理命令函数,满足条件时中断Stm32F101,程序流程图如图5 所示。
图5 Atmega8 软件流程图。
4.2 Stm32F101 软件流程
上电复位后进行系统初始化,主函数循环执行3个子函数,等待着外部控制命令输入。当接收到任意一种外部命令时,Stm32F101 使Atmega8 产生I2C 中断,传递相关数据,Atmega8 响应正常后Stm 32F101才执行控制电机的操作,程序流程图如图6 所示。
图6 Stm32F101 软件流程图。
5 实验结果分析
首先设置投影机的最低点和最高点分别为20.00cm、120.00cm,实验中总是在投影机下降过程中断电片刻后上电,反复记录投影机所到达的最低点和最高点,实验数据见表1.由测试结果可知,测量误差在1mm 以内,并且随着实验次数的增加测试数据会向下偏移。同样可以试验,在投影机上升过程中断电时,随着实验次数的增加测试数据会向上偏移,故而在实际应用当中,投影机所到达设置点的误差能确保在1mm 以内。
表1 实验测试数据 cm
6 结论
本方案的技术突破点在于:
首先,Atmega8 采集红外传感器信号电平两种变化状态00,10,11,01 和00,01,11,10 及其相关算法处理,正确并且快速地获取电机的转动状态和转动圈数,实现了精确直线距离控制转化为对电动机旋转圈数的控制。
其次,采用双处理器,Atmega8 负责信号采集分析,Stm32F101 负责电机控制,使得实时性更高,响应速度更快,从而稳定性和精度性都有了明显的提高,完全满足投影机等多媒体设备的定位需求。
全部0条评论
快来发表一下你的评论吧 !