基于ATMEGA16的检测避障智能车
图2-7 稳压电路原理图
2.4 光电检测模块 2.4.1 与非门74HC00D
74HC00D是PHILIPS公司的四路两输入与非门数字逻辑电路,共有四路输出。VCC输入是5V直流电压,最低电压是2V,保证了与非门芯片在起振电路中能够持续稳定[8]。引脚图如下:
图2-8 与非门引脚图
图2-9 与非门内部引脚逻辑图
9
菏泽学院本科课程设计(论文)
表2-1 与非门内部电平逻辑
2.4.2 光电对管
光电对管是红外线发射管与光敏接收管,或者红外线接收管,或者红外线接收头配合在一起使用时候的总称。发射管采用直径为5mm的红外发射管,发出波长为940nm。红外接收管为HS0038B红外遥控接收头,类似于接收管,具有单向导电性,因此工作时需加上反向电压,灵敏度高,一般只对红外线有反应,而且有很强的抗光干扰功能。接收头就是在红外线接收管的基础上增加了对微弱信号进行放大的处理的电路,类似开关电路,低电平有效输出[9]。
工作原理:由振荡回路产生的脉冲调制信号经发射电路后,由发光二级管发射出光信号脉冲。当测到物体进入接收物体可工作的范围时,被反射回来的光信号脉冲进入二极管。并在接收二极管电路中将光信号脉冲解调为电脉冲信号,再经正向放大器放大和滤波整形,然后用数字积分或RC高通滤波排除干扰,最后经过程序触发驱动器输出与非门控制信号。
2.4.3 模块原理图
电路的原理基于与非门与电容组合成的并联电路的充放电过程,产生38K赫兹的波,作为红外发发射的载波,接收头只接收这个频率的载波。电路接收一端的接收头是接收到脉冲信号后输出低电平[10]。
图2-10 红外发射电路原理图
图中有CMOSB和CMOSD两个与非门,通过与非门和电容的充放电能够实现电路的自起振。当4点位高电平时,11引脚为低电平,而B引脚为高电平,这时C1充电,当电容C1充满时,A点为高电平,4为低电平,电容C1只能通过B-C-4放电。放完电后,11引脚为高而B引脚为低,电路接着给电容C反向充电,等到到充满电后,A点为低电平,4为高电平,电容通过B-C-A放电,等放完电后A点为低电平,从而使11引脚输出低电平,
10
基于ATMEGA16的检测避障智能车
通过这个过程的反复进行,Port口就有脉冲输出,调节R1、R2和R3三个电阻的大小,实现38KHz的载波输出[11]。
图2-11 红外模块电路原理图
3 软件设计
3.1 程序设计软件
编程软件是用ATMEL公司的AVR Studio集成开发环境(IDE) ,包括了AVR Assembler编译器、AVR Studio调试、AVR Prog串行下载、并行下载功能和JTAG ICE自动仿真器等功能。软件汇集了汇编编译语言、仿真软件、程序下载、硬件仿真等基本功能,通过和其他的语言编译器配合使用即可完成高级语言的产品开发调试。其中I/O口的View目录窗口可以查看内部寄存器和四个I/O口的位变化。
图3-1 AVR Studio编程软件
下载软件是AVR_fighter,需要安装USBASP串口驱动。当下载是,特别注意熔丝位的设置,CKSEL3-CKSEL0四位是确定选取片内RC振荡器的频率,此时选取的是片内1MHz
11
菏泽学院本科课程设计(论文)
晶振。
图3-2 AVR_fighter下载软件
3.2 定时与计数 3.2.1 控制寄存器
程序中使用的定时器/计数器分为两个8位的定时器和16位定时器。其中TCCR0是8位的控制寄存器,TCNTO是8位的寄存器。通过 T/C 寄存器可以直接对计数器的 8 位数据进行读写访问。对 TCNT0 寄存器的写访问将在下一个时钟阻止比较匹配。在计数器运行的过程中修改TCNT0的数值有可能丢失一次TCNT0 和OCR0的比较匹配,其中CS02-CS01可以选择T/C的时钟源[12]。
图3-3 TCCRO控制寄存器
图3-4 时钟源配置图
12
基于ATMEGA16的检测避障智能车
TCCR1B是16位控制寄存器B。TCNT1H与TCNT1L组成了T/C1的数据寄存器TCNT1。通过它们可以直接对定时器/计数器单元的 16 位计数器进行读写访问。为保证 CPU 对高字节与低字节的同时读写,必须使用一个8位临时高字节寄存器 TEMP。“ 访问 16 位寄存器 ”在计数器运行期间修改TCNT1的内容有可能丢失一次TCNT1与OCR1x的比较匹配操作。写TCNT1寄存器将在下一个定时器周期阻塞比较匹配。其中CS12-CS10可以控制选择时钟源,配置方式与8位定时器相同,选择使用外部时钟源后,即使T1引脚被定义为输出,其 1 引脚上的逻辑信号电平变化仍然会驱动T/C1计数。
图3-5 TCCR1B控制器
采用终端屏蔽寄存器TIMSK作为定时器的软件开关,方便了对定时器和计数器的控制。TOIE1是T/C1溢出中断使能,当该位被设为“1”,且状态寄存器中的I位被设为“1”时,T/C1的溢出中断使能。一旦TIFR上的 TOV1 置位, CPU 即开始执行T/C1溢出中断服务程序。
图3-6 TIMSK屏蔽寄存器
采用TIFR作为中断标志寄存器,TOV1是T/C1溢出标志该位的设置与T/C1的工作方式有关。工作于普通模式和CTC模式时,T/C1溢出时TOV1置位。对工作在其它模式下的TOV1标志位置位。
图3-7 TIFR中断标志寄存器
3.2.2 中断定时器程序
SIG_OVERFLOW1是定时器/计数器1中断,在使用时还必须在定义头文件,宏 INTERRUPT的用法与SIGNAL类似,区别在于SIGNAL 执行时全局中断触发位被清除、其他中断被禁止,INTERRUPT执行时全局中断触发位被置位、其他中断可嵌套执行。 SIGNAL(SIG_OVERFLOW1) {
switch(flag) {
case 1:
13