标题 | 基于Arduino和PIC单片机智能小车平台的研究与设计 |
范文 | 章杰瑞+周屹 摘要:市场上智能小车普遍存在功能单一、扩展能力差等特点。基于此提出了一种基于Arduino和PIC18F45K22单片机为核心、以智能小车作为研究对象的小车开发研究平台。整个系统由电源、控制模块、电机驱动、红外收发和LCD显示五部分构成。Arduino为控制主机,通过制定的通信协议与PIC从机端进行通信,基于该平台可实现红外避障、寻迹、手机蓝牙遥控等功能,同时也可通过平台的扩展模块对智能小车进行研究与开发,提高了小车硬件平台的利用率。 关键词:Arduino;PIC18F45K22单片机;智能小车;开发平台;通信协议 中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2017)29-0187-04 Abstract:This paper introduces a Based on the Arduino and PIC18F45K22 single-chip as the core, with the smart car as the object of study of car development research platform. The system is composed of a power supply, control module, motor drive, infrared transceiver and LCD display five parts.Arduino for host control, through the formulation of communication protocol and pic from the terminal to communicate. Based on the platform can realize infrared obstacle avoidance, tracing, Bluetooth mobile phone remote control functions, but also through the expansion modules of the platform of the intelligent vehicle for research and development, improve the utilization rate of the robot hardware platform, is a promising and research Meaning of the smart car development platform. Key words:Arduino;PIC18F45K22 single-chip;smart car;development platform;communication protocol 随着单片机及自动化控制技术的普及,智能小车已逐渐融入我们的生活中。现今大多数智能小车普遍存在功能单一性、可扩展性不强等问题,并且各种智能小车之间存在的品牌和产商的差异,其硬件模块也不尽相同,给程序的移植和功能扩展带来一定的阻力,降低了智能小车的通用性[1]。针对上述的问题,将智能小车的底层驱动模块和控制模块分离出来,只需对Arduino结合通信协议进行编程,即可在平台上实现智能小车的多种功能;同时将两块单片机的端口资源进行扩展,构成整个平台的硬件电路部分,提高了平台的通用性。 1 智能小车平台硬件设计 智能小车平台的硬件部分以模块化方法进行设计,其内容包括电源模块、控制模块、电机驱动电路模块、LCD显示模块、红外收发功能模块等,图1为硬件设计框图;图2为智能小车平台的实物图。 2 智能小车开发平台PCB设计 在PCB图绘制过程中,Arduino控制模块参考Arduino UNO进行设计。电源模块由多种不同的电压构成,在信号线和电源线上的线宽设计也有一定的区别。其PCB设计图如图3所示。 2.1 电源模块设计 電源模块在整个系统设计过程中占有举足轻重的地位,该模块设计的稳定性决定了整个平台设计的成败。图4为电源模块的设计框图。 该平台的主要电源为一块12V、7200mA的可充电式锂电池提供,经过保险、逆流保护、稳压等措施变压至其他电压值供给其他模块。12V电源供给电机使用,Arduino和PIC单片机工作电压为5V,显示模块、电机驱动芯片、红外收发模块的工作电压均为5V,此外Arduino可提供5V和3.3V双电压。同时电源设计中留出一个稳压芯片的扩展位,为后续扩展外部传感器留出电源扩展的余地。 2.2 控制模块设计 控制模块在整个系统中起到核心控制的作用。系统设计中采用Arduino和PIC两个控制单元,以主从通信方式控制整个平台的正常运作。主从双方通过SPI总线进行数据交互。设计过程中,Arduino模块以ATMEGA328p单片机为控制核心,该模块参考Arduino UNO进行设计[2]。Arduino主要负责控制命令关键词的发送和从机数据的接收,并不直接参与底层硬件模块的控制工作;PIC单片机主要负责接收主机发送来的命令关键词,根据不同的命令执行相应的子函数,从而实现不同的功能。其控制框图如图5所示。 2.3 电机驱动模块设计 电机驱动模块中采用L298N作为电机驱动芯片,该芯片内含两个H桥的高电压大电流全桥式驱动器,搭载外部续流二极管保护电路,即可实现两个电机的运动姿态控制[3]。其设计电路图如图6所示。 由于智能小车的电机不带有转速编码盘或其他测速传感器,通过设定PWM输出脚的脉冲信号占空比大小来调节小车的速度。使能PWM控制端之后,改变控制信号输入脚的电平可以使小车实现多种姿态的变化,包括前进、后退、左转、右转、原地旋转等。 2.4 LCD显示模块设计 LCD显示模块主要由LCD1602和背光、对比度调节电路构成,该模块主要用于显示小车平台正在执行某个功能的相关信息。设计中采用了四线制的方式进行显示数据的传输[4],节约了PIC单片机的I/O端口,其设计电路图如图7所示。 2.5 红外收发模块设计 红外收发模块的设计包括红外发射头和接收头的驱动电路设计,其中两个红外发射头采用PNP三极管进行驱动[5],接收端有相应的指示灯作为数据接收指示。红外发射头放置在PCB的顶层,接收头放置在PCB的底层,两个接收头的接收面正对各自的发射头正前方,并且两个发射头和接收头呈一定角度分布在智能小车的车头两侧,有效降低红外信号的误接收率。同时调整红外发射头驱动电路中的可调电阻,可增加或减少通过红外发射头的电流。借助该模块可实现智能小车红外避障功能。 3 软件设计 Arduino和PIC单片机的通信建立在SPI通信协议上,Arduino工作为SPI主模式,PIC单片机工作为SPI从模式。SPI是串行外设接口(Serial Peripheral Interface)的缩写,这是一种高速、全双工、同步的通信总线,主机发送一个字节数据的同时也将接收一个字节的数据。该通信总线一般由四条通信线路组成,分别是数据输出线、数据输入线、时钟线、片选线[6]。 软件设计主要建立在Arduino和PIC单片机两个控制模块上,Arduino模块的程序设计在Arduino IDE上实现,其编程环境集成了大量的官方库函数[7],充分提高了开发进度。PIC单片机的程序设计在MPLAB IDE上实现。由于其开发环境没有集成相应的C语言编译器,所以还需下载编译器进行安装,并在开发环境中指定编译器的路径[8]。软件设计内容主要包括主机和从机的通信程序设计、通信协议头文件设计和从机数据处理、硬件控制等内容。 3.1 主機程序设计 主机程序设计中,关键函数包括SPI连接、SPI通信初始化、SPI数据发送和接收函数等,主机与从机的SPI通信是否能成功建立起来是实现其他功能函数的重要前提。SPI总线初始化函数进行SPI功能的初始化,包括片选引脚的选中和输入输出模式设定、数据传输的方式、时钟的极性和相位等内容。设置完成之后,loop主函数部分即可调用相应的功能库函数。这个过程包括片选信号端电平拉低、发送命令关键词和数据、片选信号端电平拉高三个步骤,配合相应的时序即可完成一个字节或多个字节数据的发送与接收[9],其程序流程图如图8所示。 3.2 从机程序设计 从机的程序设计内容包括初始化和子函数的调用两大部分。PIC单片机配置位的设定包括芯片振荡器模式的选择、关闭看门狗、禁用后台调试器以及代码区、数据区和引导区中数据有无保护的设置等内容。配置位设置完成之后,从机的SPI初始化需和主机SPI初始化的通信时序应保持一致。程序设计中,接收主机的数据采用中断响应的方式进行接收。接收成功之后,通过关键命令字的判断进入相应的子函数,再通过数据的判断进行底层硬件的控制,实现相应的功能,其程序流程图如图9所示。 4 智能小车平台扩展设计 该智能小车平台与其他的智能小车最大的不同点是其具有扩展接口功能。基于此功能可以在小车上轻易添加更多外设实现丰富的功能,同时也可基于扩展端口进行智能小车的开发与研究,具有一定的实际应用意义[10]。 4.1 Arduino功能扩展设计 Arduino模块具有14个数字输入输出端口、6个模拟输入输出端口。由于其本身具有扩展性较强的特点,可以使用多种外设或传感器模块与其搭配,实现功能丰富的电子制作。扩展模块设计中将上述端口进行外扩,将上述的每个数字端口和模拟端口均加入VCC、GND两个引脚,该扩展方法实现的“一口三线”接口,与大多数Arduino传感器扩展模块接口相匹配。扩展之后降低了传感器或其他模块与Arduino连接时接线的复杂度,同时如果多个模块与其相连,解决了VCC、GND资源不够的问题[11],图10为扩展模块的设计框图。 4.2 PIC18F45K22功能扩展设计 PIC18F45K22是一款内部资源丰富的8位单片机,不仅拥有多路比较/捕捉/PWM功能,同时其灵活的振荡器设计给时钟部分提供了多样的选择,是一款功能强大的高性能单片机。设计过程中将未使用的AD端口进行扩展,扩展方法与Arduino的扩展方法一样,为传感器或其他模块扩展提供更加人性化的接口。 5 示例功能 示例功能部分主要介绍了基于该平台实现的两个实际功能:红外避障和蓝牙遥控。上述功能是基于该平台的硬件和软件模块来设计实现的,用于平台的实际功能演示。 5.1 红外避障 该功能基于平台的两组红外收发器实现智能小车的自动避障功能。设计中采用外部中断和定时器中断的方式来检测红外接收头的信号输出脚电压的变化情况,有效降低红外信号检测的滞后性,从而提高智能小车对障碍物的检测灵敏度。通过调节PWM信号的占空比实现智能小车的运动速度调节;调节小车避障动作的延时参数和红外发射头可调电阻阻值可调整智能小车的避障效果。 5.2 蓝牙遥控 该功能基于Arduino连接一块蓝牙模块和一款手机APP蓝牙遥控实现手持设备遥控智能小车。Arduino模块通过串口接收蓝牙模块从设备端接收的数据并进行解析,将解析结果的控制逻辑和APP手势控制逻辑进行判断和处理,即可实现手持设备无线遥控智能小车的效果。通过手势的前后左右操控可让小车实现相对应的功能。手持设备控制软件采用第三方开发的一款APP,该软件支持蓝牙连接,具备蓝牙数据发送和接收功能,其主界面如图11所示。 6 总结 |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。