当前位置:首页 > 工业控制 > 伺服与控制
[导读]   摘 要: 提出了一种基于Atmega8 和Stm32F101 双处理器的投影机升降控制设计方案,介绍了其电路组成、功能以及软件流程。其中Atmega8 负责数据采集,Stm32F101 实现

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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

/************************************************************ 函数库说明:ATMEGE8 延迟库函数* 版本: v1.0...

关键字: atmega8 延迟 系统库函数

今天试试把数组存到flash里,再读出来,就在原先5110的工程上进行修改,能看出来我改在哪里了吗?uint8Chinese_Font[][25]PROGMEM={/*--文字:芜--*//*--楷体9;此字体下对应的点...

关键字: 5110 atmega8 flash版

/************************************************************ 函数库说明:ATMEGE8 AD模数转换 * 版本: v1.0...

关键字: atmega8 采集 ad中断方式

/****************************************************************** 函数库说明:ATMEGA8 串口通信* 版本: v1.0...

关键字: atmega8 usart 串口通信

/************************************************************ 函数库说明:ATMEGE8 PWM* 版本: v1.0...

关键字: atmega8 pwm

今天偶然的机会,因为定时器老是不对劲,而把晶振给拔了突然发现对程序的运行没有任何影响,这次我才想起来atmege8是不是有内部晶振哦。一查果然。。。。。。修改的方法是改熔丝位 时钟源 启动延时 熔丝...

关键字: atmega8 解锁 内部rc振荡

好吧,不得不承认,我使用飞思卡尔的XS128单片机已经非常之习惯了,结果一上手atmega8,最令我反感的就是atmega8不能对IO引脚进行操作,非要用些繁琐的位操作。我就不,我就要像飞思卡尔那样操作。。。于是。。。。...

关键字: atmega8 io引脚 飞思卡尔 xs128

2011年三月份,在各大媒体上都看见了日本地震后,核辐射搞得身边的人都很恐慌,于是我们就产生了制作一个可以深入灾难危险地带的飞行器的想法。无人驾驶的遥控飞行器可以毫无忌惮的深入危险之地,测量一些实时的数据传送回来,以便在...

关键字: atmega8 avr32 总线与接口 灾难检测飞行器

方式一://PC0接数据口SI 74HC595 第14脚 //PC1接SCK 74HC595第11脚 //PC2接RCK 74HC595第12脚 //74HC595 第13脚(/G)使能 接低电平 //74HC5...

关键字: atmega8 驱动74hc595

GCCAVR中读取Flash区数据定义(只能为全局变量):const int temp PROGMEM = 1;读取:pgm_read_byte(addr);pgm_read_word(addr);pgm_read_dw...

关键字: atmega8 Flash
关闭
关闭