摘 要: 提出了一种基于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 常开时,从图中知道是控制电机升操作,反之常闭是对电机降操作。为了提高电机的安全性,还采取了升降保护,如图中连接有两个限位开关,分别是升、降限位保护,即当到达极限点时限位开关断开,导致电机停止工作,起到保护电路的作用。