基于Atmegal6L单片机的智能小车的设计与制作
引言
自工业革命以来,随着电气的发展,人类进入了文明的新阶段。机器人已经广泛用于工业、农业、服务业、军事、机械、交通、航天航空等领域。智能机器人水平的不断提高,大大提高了劳动效率,减轻了劳动强度。机器人与人类并肩作战,在征服自然,改造自然地过程中发挥着重要作用。
智能小车是集理论力学、机械结构、数字电路、模拟电路、传感器、单片机、控制理论和算法等多门学科为一体的综合系统,其内容涵盖机械、电子、自动控制原理、计算机、传感技术等多个学科和领域。
本文设计的基于ATmagel6L的智能小车就是要求其从起跑线出发,然后通过自身自动调整向角和车速,使其自动沿着一条黑色引导线行驶。
1 智能小车的硬件设计方案
本智能小车控制系统的结构如图1所示。其中的Atmegal6L单片机是智能小车的控制模块,它是高性能、低功耗的8位AVR微处理器,采用先进的RISC结构,具有16K字节的系统内可编程Flash和512字节的EEPROM。工作于16MHz时,其性能高达16MIPS,并具有32个可编程通用I/0口和用于边界扫描的JTAG接口,基本都能够满足设计要求。电路稳压模块输入12V电压。经过稳压电路后可得到9V、5V两种电压,其中9V电压用于电机驱动模块的工作电压,5V电压则用于单片机的工作。图2所示是RPR220光电传感模块的电路图,光电传感是由10个RPR220型光电对管组成。RPR220是一种一体化反射型光电探测器,其发射器是一个砷化镓红外发光二极管,而接收器则是一个高灵敏度的硅平面光电三极管。L298N的INPUT、OUTPUT两端口用于提供稳定的电压以使电机转动。
1.1光电传感模块
图2所示是本系统中光电传感模块的电路图。寻线路径一般是刻在白色平面上的3cm的黑线,小车沿着黑线循径,当检测到白线,即二极管发出的光被白线反射回来时,光电对管中的三极管导通,比较器6号端口输入为低电平,经过比较器后,7号端口输出为高电平。当检测到黑线时,光被吸收,光强度减弱,光电对管中的三极管不导通,比较器6号端输入为高电平,7号端输出为低电平。通过PC端口将高低电平(l和0)反馈给单片机后,经单片机处理后可用于调整车头的转向,以使黑线刚好在10个光电探头的中间,从而使小车平稳前进。在7号端串一个0.1μF的电容再接地,这样,经过滤波后进入到单片机中的方波就非常完美。将这个光电管与码盘相连,通过光电管不断扫描码盘格数,这样,当码盘转动且转速较低时,6号端的信号就可变为频率与转速一一对应的方波。但是,当码盘速度很快时,6号端信号将变为频率与转速一一对应的正弦信号。放大器LM324可用作比较器,可将6号端处的正弦信号与基准电压进行比较后,然后将在7号端产生频率与转速一一对应的方波,单片机采集此信号后,即可根据公式计算出直流电机的各个参数,从而精确地控制小车的转向与位移。
1.2电机驱动模块
图3所示是L298N驱动模块的电路连接图。L298N作为电机驱动芯片,是一款高电压大电流全桥驱动芯片,它的频率高,可控制两个直流电机,而且具有控制使能端,工作电压可通过4、9引脚分别输入9V、5V电压。ENA、ENB引脚是两个使能端口,而INT、OUT则为电机驱动引脚,通过改变OUT端的逻辑电平可控制电机的正、反、停止状态,表1所列是直流电机控制逻辑。L298N的5、6、7、10、ll、12六个引脚可直接与单片机的PD端口相连,而通过对单片机的编程则可以实现直流电机PWM调速。
l.3单片机控制模块
采用Atmel公司的Atmegal6L单片机可对小车进行控制,该单片机具有32个功能强大的可编程I/O接口和4个PWM通道,并具有八路十位ADC,可对小车进行实时控制。该单片机的PC0~PC7八个端口可与光电传感模块的八个光电探头相连。设探头检测的逻辑实际值为P,假定值N,车轮的运动状态分别为forward-move、right-move、leftmove、hard-right-move、hard-left-move,通过对实际值P与假定值N(0b0011-1100)的比较,可得出如表2所列的Atmegal6L单片机的控制模块参数表,其中x为无关项。设计时,可将Atmegal6L的PD2~PD3分别连接带码盘的两个光电对管,以用于精确测量车轮的转向与位移;PD5和PD4可分别连在电机驱动模块的使能端ENA和ENB。PDl、PD0、PD6和PD7分别于电机驱动模块的INl、IN2、IN3、IN4相连,INl、IN2口一般用于PWM的输入,以便利用PWM调速法,即由单片机输出一系列频率固定的方波,并通过功率放大器来驱动电机,再通过单片机编程来改变输出方波的占空比,这样就可改变加在电机上的平均电压,从而改变电机的转速。
2 智能小车的软件设计方案
基于AVR单片机和C语
- 基于MCS-51单片机的智能机器人迷宫车设计(04-20)