基于 AVR 单片机的自动对靶喷雾控制系统设计

发布者:cwk2003最新更新时间:2013-10-09 来源: eefocus关键字:AVR  自动对靶  喷雾控制系统 手机看文章 扫描二维码
随时随地手机看文章
1. 引言

众所周知,我国农药生产技术处于国际先进水平,而我国植保机械和农药使用技术严重
落后的现状与我国高速发展的农药水平极不相称,已严重妨碍了农作物病虫害的防治,带来
了诸如农药利用率低、农产品中农药残留超标、环境污染、作物要害、操作者中毒等负面影
响。农药利用率最好的也不足 30%,农药流失量高达 60%~70%,不仅经济损失重大,也造
成了严重的“农残问题”和环境污染。而采用自动对靶喷雾技术,可节省农药 50%~80%,因
此开展对靶喷雾技术研究将成为我国植保机械的下一个重要的研究方向。为此,本文提出了
一种以 AVR 系列的 ATmega16 单片机为 CPU,以 PC 机作为上位机,以摄像头采集的信号
作为触发信号,结合单片机控制技术和数字图像处理技术,实现自动对靶喷雾的控制系统。

2. 系统工作原理

该系统结构框图如图 1 所示,该实验装置以 PC 机作为上位机,以转盘的转动模拟拖拉
机的行走,转盘上放置着模拟杂草作为靶标。通过 PC 机对由 CCD 摄像头采集进来的信号
进行处理,对采集的彩色图像用绿色占优法进行颜色分割,当绿色分量大于一定阀值时,便
判定摄像头下有靶标,识别出靶标后,将控制信号由串口发送给单片机,根据转盘速度的不
同,设定相应的延迟时间,对信号进行延迟处理,当杂草到达喷头下方后,控制执行机构执
行喷雾,从而实现自动对靶喷雾。
 

3. 硬件结构设计

该硬件系统主要用于实现以下功能:(1)与上位机实现串口通信;(2)提供人机口,
可根据转速不同,设定不同延迟时间;(3)输出控制信号控制电磁阀的开闭。根据系统实
现的功能要求、可靠性、产品成本以及使用方便等因素,设计如图 2 所示的自动对靶控制
器硬件原理图。
 

 

3.1 单片机选型

该系统选择 AVR 系列的单片机 ATmega16 作为系统的 CPU,AVR 是 Atmel 公司生产的
高性能、低功耗的 8 位新型单片机,采用先进的 RISC 指令结构,执行速度快,可达到
1MIPS/MHZ,端口驱动能力强(20~40mA),而且全部具有在线下载功能。ATmega16 属于
AVR 的 mega 系列高档单片机,具有 16K 字节的系统内可编程 Flash,以及一个通用同步和
 

步串行接受器和转发器(USART),能为主机或从机提供时钟的同步操作,能大大简化单
片机与 PC 机的串口通信。 而且 ATmega16 单片机还具有 JTAG 接口,通过 JTAG 接口可进
行在线程序下载以及片上调试。本系统就是采用 JTAG 接口进行在线程序下载以及片上调试
的。

3.2 数据显示以及按键设定

考虑到实际的对靶延迟时间,采用 2 位共阴极超亮 LED,延迟时间范围为 0.0~9.9 秒,
IN74HCX245 作为 LED 的显示驱动器。其中管脚 1 为方向选择位,管脚 19 为输出使能位,
管脚 1 接高电平,管脚 19 接地,表明数据输出方向为从 A 到 B。该系统总共有 4 个按键,
分别为 2 个加按键,2 个减按键,S2、S3 为加按键,每按下一次分别为加 0.1s 和 1.0s,S4、
S5 为减按键,每按下一次分别为减 0.1s 和 1.0s。按键采用扫描方式,初始化时设定 PB0、
PB1、PD4、PD5 位状态为输入,高电平,内部电阻上拉使能,通过扫描上述四位是否为变
为低电平,判断按键是否按下。按下后将相应的加减标志位置 1,然后再相应的改变延迟时
间,并送数码管显示。

3.3 通讯设计

下位机与上位机的通讯采用 RS232 总线标准,由 MAX232 与 ATmega16 单片机的 USART
串行口构成与上位机的通讯电路。TXD 和 RXD 为 ATmega16 的 USART 串行口的发送引脚
和接收引脚。[page]

3.4 输出控制

单片机的控制信号通过 PC0 引脚输出。PC0 接固态继电器(SSR),通过固态继电器控
制电磁阀的开闭。当 PC0 为高电平时,继电器吸合开关,接通电源,打开电磁阀进行喷雾;
当 PC0 为低电平时,开关断开,电磁阀关闭,不进行喷雾。

4. 软件结构设计

自动对靶控制系统运行程序采用 C 语言编写,采用模块化设计,整个程序由功能模块
子程序构成。上位机软件是基于 Visual C++6.0 开发的。

4.1 下位机软件结构

下位机软件的主要软件模块有初始化、延时、显示、键盘扫描、中断处理等功能模块。
其中延时函数采用循环计数的方法,单片机晶振频率为 7.3728MHZ,计数循环次数为 1832,
在 AVR Studio 下仿真,1ms 误差为 0.44us,所以完全可以满足实际要求。初始化时延迟时
间为 0.0s,串口为异步通信模式,8 位数据位,2 位停止位,波特率设为 9600。其主程序流
程图如图 3 所示。
 

4.2 上位机软件结构

上位机软件是基于 Visual C++6.0 开发的。上位机软件主要由两部分组成:(1)串口通信
部分,(2)图像处理部分。
其中串口通信通过串口类 CSerialPort 实现[3]。图像处理部分采用采集卡实时采集图像,
该系统的图像采集卡为嘉恒中自公司的 OK_C30A 采集卡。该卡是基于 PCI 总线,能采集彩
色又能采集黑白图像的采集卡,适用于图像处理、工业监控和多媒体的压缩、处理等研究开
发和工程应用领域[8]。通过该公司提供的 API 实现图像的采集和显示。图像的实时采集通过
VC 中的响应 WM_TIMER 消息实现,即每隔一定时间通过在 OnTimer 函数中调用采集卡的
API 将图像采集进来并显示。而由于杂草为绿色,所以用 2g-r-b 分量对图像进行分割[4],当
其值大于一定阀值后便认为此像素为绿色,当绿色像素所占整个图像超过一定比例时便判定
摄像头下有杂草,然后通过串口将信号发送给下位机。

5. 实验结果

本实验在直径 67cm 的转盘上进行,通过转盘转动模拟拖拉机的行走。本实验测定了不
同转速下的实际对靶延迟时间,其中每个转速下用秒表测定 20 次,实验数据如表 1 所示

设定的延迟时间即软件中的延迟时间 T,实际延迟时间为摄像头从采集到靶标图像到执行机
构进行喷雾之间所经过的实际时间。其能实现自动对靶的最大转速为 38r/min 即 1.33m/s。
而且通过表 1 数据可知,延迟时间误差小于 0.2s,可满足自动对靶的要求。

6. 结论

本系统通过对电磁阀的控制实现了农药喷施的自动对靶,并在实验室条件下调试成功。
该系统运行稳定,延时准确,在一定速度范围内能实现精确对靶,从而大大提高了农药的利
用率,并且硬件实现简单,为进一步在田间推广打下了很好的基础。若能进一步优化图像处
理算法,减少图像处理时间,以及提高硬件的响应速度,从而提高能响应自动对靶的行走速
度,并且提高图像处理算法处理复杂背景下的杂草识别的能力,实现在田间复杂环境下的自
动对靶喷雾。

关键字:AVR  自动对靶  喷雾控制系统 引用地址:基于 AVR 单片机的自动对靶喷雾控制系统设计

上一篇:遥控车门开关解决方案
下一篇:基于ATmega8的无线扩音系统设计

推荐阅读最新更新时间:2024-03-16 13:28

Atmel推出32位AVR® 32微控制器AT32UC3L
爱特梅尔公司 (Atmel® Corporation) 宣布推出采用其picoPower™ 低功耗技术和嵌入式电容性触摸控制器外设的32位AVR® 32微控制器,型号为AT32UC3L。该器件是业界功耗最低的32位微控制器,在处理实时应用时的工作模式下,功耗低至0.48mW/MHz。AT32UC3L还是首个具有内置电容性触摸界面的微控制器产品,适用于广泛的嵌入式应用。AT32UC3L 的推出扩展了爱特梅尔包括ARM 及AVR32 产品的 32位MCU系列。 picoPower 技术设定全新的 32位微控制器功耗标准:AT32UC3L 采用爱特梅尔的picoPower 技术,在32 KHz 实时时钟工作模式下的耗
[单片机]
Atmel推出32位<font color='red'>AVR</font>® 32微控制器AT32UC3L
avr EEPROM 数据丢失问题 原因与解决方案
总结一下引起 AVR 内部 EEPROM 数据丢失的原因: 1. 程序问题; 2. 程序跑飞; 3. EEPROM相关寄存器因强磁场、高压静电等外部干扰出错所产生的写入动作; 4. 系统有很大的感性负载,在断电的时候会产生一个反向高压,EEPROM有可能会自擦除。 (还有什么原因,欢迎大家继续列举,以便完善及想办法解决) 针对问题1,程序问题不再该文讨论范围内。 针对问题2,程序跑飞,这个因该是引起 EEPROM 数据丢失的主要原因。但是引起程序跑飞的原因却是多方面的。 第一. 电压不正常,工作不稳定,程序跑飞。针对这个问题,可以开启内部BOD、或者外加复位芯片解决,在
[单片机]
<font color='red'>avr</font> EEPROM 数据丢失问题 原因与解决方案
关于AVR单片机的看门狗
看门狗这个东西以前没接触过 理解它费了一点周折。 使用它的复位MCU的功能实现LED的闪烁。 准备工作是设定WDT的超时时间(如1s) 首先使能看门狗(wdt_enable),然后喂狗(wdt_reset),再延时灯的闪烁时间(delay=0.5s),使灯亮(SET_LED);再用一个恰当的比较长的延时(delay 0.5s)饿死狗。之后MCU重启,如此往复。 (1)延时可以调用库函数,还可以使用定时器; (2)SET_LED; while(1) wdt_reset(); 表示 不断喂狗,从而不让MCU重启,使灯一直亮着。程序中使用这些代码的用途待考证,可以给作者发email 嘿嘿~ (3)软件看门狗和硬件看门
[单片机]
AVR学习心得(三)
AVR mega128 SPI 控制HC595 经过多天的努力,终于对AVR控制HC595驱动数码管,有了全面的认识和了解。下面我将把AVR控制HC595的设计经验写在下面: AVR控制HC595控制有两种方法: 一种:利用AVR自带的SPI接口控制; 一种:利用AVR端口模拟SPI方式控制。 原理图: 说明: 1。用AVR自带的SPI总线接口控制时,要注意几个SPI寄存器的使用: 设置SPI的管脚状态: DDRB|=(1 MOSI)|(1 SCK)|(1 SS); //MOSI,SCK,SS为输出状态。 SPI控制寄存器SPCR: SPCR=(1 SPE)
[单片机]
<font color='red'>AVR</font>学习心得(三)
建立一个属于自己的AVR的RTOS(1)—函数的运行
自从03年以来,对单片机的RTOS的学习和应用的热潮可谓一浪高过一浪.03年,在离开校园前的,非典的那几个月,在华师的后门那里买了本邵贝贝的《UCOSII》,通读了几次,没有实验器材,也不了了之。 在21IC上,大家都可以看到杨屹写的关于UCOSII在51上的移植,于是掀起了51上的RTOS的热潮。 再后来,陈明计先生推出的small rots,展示了一个用在51上的微内核,足以在52上进行任务调度。 前段时间,在ouravr上面开有专门关于AVR的Rtos的专栏,并且不少的兄弟把自己的作品拿出来,着实开了不少眼界。这时,我重新回顾了使用单片机的经历,觉得很有必要,从根本上对单片机的RTOS的知识进行整理,于是,我开始了编写一个
[单片机]
AVR读键盘使用IF语句
#include avr/io.h int main(void) { DDRD &= ~(1 6);//第六位设置为输入 DDRD &= ~(1 3);//第六位设置为输入 DDRD &= ~(1 7);//第六位设置为输入 PORTD |= (1 6);//打开上啦电阻 PORTD |= (1 7);//打开上啦电阻 DDRA |= (1 3);//设置为输出 DDRB |= (1 0);//设置为输出 DDRB |= (1 1);//设置为输出 PORTA &= ~(1 3);//关蜂鸣器 while(1) {
[单片机]
使用AVR单片机做AD转换的几点建议
结合自己的开发经验给出几点建议: AD转换时间应当大于64us(预分频决定),如果采样保持时间短,采集结果可能不准确; 应该让采集电压源尽量保持稳定; (是让采样保持电路稳定。) AVCC和VCC之间的电压差不得超过0.3V,否则采样值波动会很大; 在采样的过程中,不要有数字电路的操作,比如IO口赋值等; 如果有可能,请使用外部参考电压源; 选择合适的参考电压值,比如测1.5V电压,参考电压为2V就比较合适; 如果AD采样要求较高,被测电路与芯片工作电路分开供电。 调试的过程中不要有JTAG的参与,JTAG会影响采样结果,应该将程序直接烧录到单片机中,用串口或者LED等查看结果。 按照以上建议,
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved