您好, 访客   登录/注册

基于PID算法的语音智能小车设计

来源:用户上传      作者:

  摘 要: 本设计基于PID算法设计了一种智能语音控制小车,主要包括电机驱动模块、语音识别模块、单片机控制模块。核心部分是采用STM32F101单片机和LD3320语音芯片实现语音智能控制,LD3320芯片对语音信号检测和数据采集,并将数据传送给STM32F101单片机,STM32F101单片机对语音信息进行分析,实现对小车的智能控制。系统主要硬件电路包括主控模块电路、语音通信电路、电机驱动电路。软件设计主要包括单片机语音通信程序、数据处理分析程序、电机驱动程序、PID算法的实现。使用L298N电机驱动以及5V直流电机,采用PID算法可以方便、灵活控制速度。在各模块的软件设计与仿真之后,经过各模块实物的制作以及测试,完成了智能操控系统儿童电动车的制作。语音识别距离范围5m;实现小车前进、后退、左转、右转、加速、减速等功能。
  关键词: PID算法;STM32F101;LD3320;L298N;语音控制
   1 系统结构
  1.1 系统整体结构
  本次设计中主要包含四个主要部分:语音芯片对语音正确的识别、单片机对关键词的匹配、控制信号的发送、驱动电路驱动电机。
  总体框图如图1所示:
  1.2 系统硬件设计
  在本设计中,硬件电路主要包括四大模块:语音芯片电路、单片机控制电路、驱动电路和电源电路。
  1.2.1 主控模块硬件电路设计
  按照此次设计的要求,开始对芯片种类的查找,翻看资料进行优缺点比较,要使用STM32作为本设计的主控芯片。STM32系列位微控制器使用来自于ARM公司具有突破性的Cortex-M3内核,特别设计适用于集性能高、功耗低、实时应用、竞争性价格具有优势于一体的嵌入式领域[1]。
  本次设计采用的STM32F101R8T6芯片,STM32芯片的脉宽是由两种不同的寄存器通过确定频率和根据占空比产生PWM信号来调节的。输出三种PWM边沿对齐模式来实现设计要求。使PWM控制信号的输出更加方便,因此可按照需要选择使用。组成STM32的最小系统电路有电源电路、复位电路以及振荡电路等。51个GPIO,所有I/O口都可以连接到16个外部中断;3个16位定时器,每个定时器有多达4个用于输入捕获/输出比较/PWM或脉冲计数的通道和量编码器输入,1个16位带死区控制和紧急刹车,用于电机控制的PWM高级控制定时器,2个看门狗定时器——独立的和窗口型的[2]。
  1.2.2 语音信号检测电路设计
  本设计采用的语音芯片是LD3320语音芯片,LD3320芯片是一種语音识别专用的集成芯片,无需提前录入和模拟训练,不会限制特定的语音信息,能够快速可靠并准确的识别关键词。每次在程序中可写入50个关键词组,可以是单字、词组或短句,识别句的内容可随时修改,输入语音信息后,语音芯片会按照关键词组一一比较。该芯片中包含了关于语音识别处理的一系列结构和外部电路,包括AD/DA转换器、麦克风接口、声音放大器、声音输出接口以及LED灯监测系统等。不需要外接辅助的Flash和RAM,使用方便[3]。语音识别后的结果数据存储在寄存器中,寄存器是暂存数据、指令和地址的,数据的传递都是通过对寄存器的操作来完成数据发送和数据接收的。例如在进行语音识别的时候,存储要匹配识别的关键词语列表,设定输入信号的识别模式,识别过程完成后获取的识别结果都是通过读/写寄存器来完成。在LD3320语音芯片在对语音检测时,可以对干扰噪音时间进行判断,根据时间长度可以检测出指令是否终止。该芯片与STM32控制器之间的通讯方式可以采用并行通信或SPI通讯的方式,本设计中选用并行接口通信,因为当单片机接收语音芯片发送的数据时,必须先将串行数据通过并行数据,然后再输入到单片机。会产生误差,影响识别的精确度。当单片机需要向驱动电路发送控制信号时,也需要将数据转换成二进制数,并行传送。语音模块电路图如图2所示:
  1.2.3 电机驱动模块
  电机使用2个有刷直流电机,高转速控制灵活简便。L298N是双H桥驱动电机芯片,内含四通道逻辑电路,可以用来驱动一个两相步进电机或两个驱动电机、继电器线圈等感性负载,是专门用作驱动的集成电路[4]。最高输出电流为4A,最高工作电压为50V,在本设计中,输出电流为2A,输出电压为5V,该电路可以外接检测电路,将变化量反馈给单片机电路。有四种电机控制模式:正转/反转/制动/停止;可对直流电机进行PWM调速。
  1.2.4 电源模块
  在本次设计的电路中,对L298N驱动芯片和对电机的驱动电源都采用5V供电,而单片机和语音芯片通过TTL转换接口采用转换出来的3.3V进行供电,又因为单片机要给驱动电路发送控制信号,所以单片机和驱动电路的连接就是将两个模块的GND连接在一起,实现通信。可以用三节AA电池供电,也可采用充电宝电源通过稳压芯片供电。由于不断调试耗费电池量大,而且充电宝优可提供稳定的5V电压,环保且高效的给小车提供动力。所以选择充电宝供电。
  2 系统软件设计
  2.1 STM32控制系统软件设计
  STM32控制系统程序采用C语言编程,KEIL开发软件进行开发。首先进行初始化操作,将控制系统各个模块进行初始化,包括语音交互模块、触摸屏模块以及串口通信的软件初始化。当按下启动开关后才可正常工作,在工作时,当有语音输入时,语音识别模块对关键词一一分析比较,系统便会根据关键词对应控制小车来实现不同的动作,LD3320芯片最多可以对50个关键词进行识别处理,因此可实现50种不同的控制动作。文中对智能小车的动作测试只有六种,如果以后要增加其他功能,可以根据设计要求继续添加。
  2.2 语音数据采集的设计
  语音识别的操作顺序是:语音输入LD3320音频处理器进行处理,音频采样录入识别列表,保存在存储器中,MCU读取存储器,与关键词相匹配开始识别,识别结果发送给单片机。并准备好中断响应函数,打开中断允许位。在本次设计中,起初采用的就是触发方式识别配合按键控制的,但由于每次启动识别都需要重复按键,所以就优化了识别方式,改用了循环识别,使其更加智能化。   3 自整定模糊PID的算法实现
  本设计采用PID调节方式来实现小车的运动状态的变化。传统的PID控制结构如图4所示:
   在过程控制中模糊控制器与PID控制器的结合控制成为了很重要的研究方向。在本设计中,模糊控制在整个复合控制器中起辅助控制的作用,本质为PID控制器。主要利用模糊控制器的反模糊化输出来调节PID控制器的三个参数,从而使PID控制器的三个参数能够自调整达到提高控制性能的目的[5]。以模糊控制器来辅助PID控制器的模糊控制原理如图5所示:
  模糊控制器的输入为预设值r(t)與反馈值得到的偏差e(t)以及偏差变化率Δe(t),输出经模糊控制器得到3个参数的增量ΔKp,ΔKi,ΔKd,再与预先整定的PID控制器的3个参数Kp0,Ki0,,Kd0求和。Kp=Kp0+ΔKp ;Ki=Ki0+ΔKi;Kd=Kd0+ΔKd。
  这样就实现了Kp,Ki,Kd的参数变化整定,进而根据被控对象的特点变化而产生改变提高性能指标。
  4 结语
  主要阐述了语音控制的智能小车的总体设计思路和系统框架结构,主要完成了智能语音小车的软硬件设计,并画出了软件流程图。并采用模糊控制PID算法对直流减速电机的转速进行控制。在上位机绘制PID曲线方便PID参数整定。将分模块和整机分别进行测试,结果显示该系统运行稳定,精确度较高,具有一定的抗干扰能力,可被广泛应用在教学、智能玩具和搬运等场合,有很好的实用价值[6]。
  参考文献:
  [1]杨婉荣.PCR仪温度控制系统的研究与设计[D].西安工业大学,2014.
  [2]蒋鸣东.利用STM32实时温度采集及无线传输设计[J].电脑知识与技术,2013,9(12):2929-2933.
  [3]邓天金,王昭武,余达.基于单片机控制的多功能智能语音风扇[J].电子世界,2017(23):21-22.
  [4]肖顺梅.智能康复训练器控制系统的设计与研究[D].南京理工大学,2015.
  [5]彭少康.PCR仪温度检测与控制系统的研究与设计[D].南华大学,2016.
  [6]冷雪锋.基于PID的STM32智能小车机器人的设计[J].自动化技术与应用,2016,35(11):122-127.
  *通讯作者: 于源华。

转载注明来源:https://www.xzbu.com/1/view-15307632.htm