【单片机学习笔记】(32):L298N H桥驱动电路原理、基于野火的通信协议进行PID参数设置、中断服务函数标志位注意事项、非独立IO口注意事项、野火PID助手调参失败原因

L298N H桥驱动电路原理

 

当驱动电压在7~12V时,可以不外接5V逻辑电平输入,直接由板载稳压给逻辑芯片供电。

如果12~24V时,则必须将5V供电端子拔下,使用外部电源供电。

基于野火的通信协议进行PID参数设置

学习野火的串口控制修改目标值教程。可以让PID参数整定更为方便,为蓝牙控制之类的控制通过打好串口通信协议代码实现的基础(要触类旁通,做到拿到一种新的协议之后能够快速移植并为我所用)

Frame 框架       protocol  协议      assistant  助手

移植时需要先配置好串口,在cubeMX上打开串口中断,并在生成的代码中在和编写串口中断服务函数,将怕protocol.c文件导入到工程中(或者将它们全部打包在同一个.c   .h文件里,自己去取消hal的uart注释和添加hal的uart.c文件)

关键函数:

int32_t protocol_init(void);    初始化接收协议(缓冲区初始化)

void protocol_data_recv(uint8_t *data, uint16_t data_len);   在串口中断服务函数中调用(将数据存入缓冲区)

int8_t receiving_process(void);   解析数据帧并传入参数

void set_computer_value(uint8_t cmd, uint8_t ch, void *data, uint8_t num);   向上位机发送数据

receiving_process()和et_computer_value()需要在循环中不断调用来同步上位机和下位机的信息

野火的例程是直接通过操控TIM6的定时器周期(用来控制采样周期),以及经过PID控制器计算后的输出值通过串口发送到上位机通道1来进行PID 的调参试验的。

如果是用来实际操作PID 调参(PID的采样周期设定与传感器性能有关)的话,其实例程中与TIM定时器6相关那些代码都可以不要了。

(以下文件中标记为黑体的文件里的代码通用性是最高的)

所以  “bsp_basic_tim.c  .h” 、”stm32f1xx.c” “bsp_debug_uart.c  .h”  “protocol.c  .h”  “bsp_pid.c   .h”   都有需要移植的。

移植过后放在了  “tim.c  .h” 、 “bsp_debug.c  .h”  “protocol.c   .h ”   “stm32f1xx.h”  “bsp_pid.c  .h”  这几个文件中

出现问题(无法再上位机查看PID实际值波形)

野火例程中没定义PID_ASSISTANT_EN,我自己在定义了#include "bsp_pid.h"

但即使定义之后,也还是看不见PID实际值波形的变化 (实际值一直是0)

即使直接将例程引脚修改后用正点原子的精英板,仍旧无法正常运行;

(这其实是我在移植野火的代码的时候没有在解析上位机信息的函数那里加上设置目标值的语句)

中断服务函数标志位注意事项

自行编写回调函数,让hal的类似HAL_TIM_IRQHandler()自行调用,就不用再自行清除标志位(由cubeMX生成的类似HAL_TIM_IRQHandler()已经有各种标志位的清除代码)

(下面这个HAL_TIM_IRQHandler外边编写业务代码,自行编写清除接收中断标志位)

非独立IO口注意事项

实测使用cubeMX生成的代码(默认是禁用IS62WV51216(SRAM)的片选的)(还没有禁止IS62WV51216的片选) 就无法正常使用PE0,PE1。

当PE1引脚做成按键的话(一侧下拉,另一侧连设置了上拉模式的PE1), 它会自动还是检测到低电平(可能是设置上拉失败了),导致该按键失效(默认情况下读取到的就是低电平)。)

一般这种都是不需要管得,但因为刚好这几个引脚受到外部SRAM的影响,导致无法正常设置输入上拉(实测输入上拉的电平为1V多一点,正常应该是3V多),但输出还是正常的。

PE1口按键失效原因(GPIO外设冲突)

使用cubeMX来生成的代码,默认就是禁止了外部SRAM(IS62WV51216这些外设的片选的。如果真的需要自己去设置禁止某外设的片选,那就将相应引脚复用后再输出禁止的电平(stm32一般是高电平禁止片选)

实测即使亲自设置禁止IS62WV51216的片选后,将F1核心板PE1设置为输入上拉后,用万用表测得电平为1V,经与正点原子的技术人员交流后,确认是由于外部SRAM的影响,导致输入无法正常使用(输出正常)。

野火上位机PID调参失败原因

原因是protocol.creceiving_process()函数中判断是设置目标值的命令后没有对PID结构体中的pid.target_val进行赋值

增加之后,野火PID调试助手可正常运行,可以通过该上位机直接给运行中的下位机进行实时PID调参,修改目标值,实时查看PID控制器处理过后的实际值的波形。

  • 13
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
基于STC89C52单片机+ L298N驱动的智能循迹避障小车设计: 摘 要:利用红外对管检测黑线与障碍物,并以STC89C52单片机为控制芯片控制电动小汽车的速度及转向,从而实现自动循迹避障的功能。其中小车驱动L298N驱动电路完成,速度由单片机输出的PWM波控制。 关键词:智能小车;STC89C52单片机L298N;红外对管 第二章 方案设计与论证 根据要求,确定如下方案:在现有玩具电动车的基础上,加装光电检测器,实现对电动车的速度、位置、运行状况的实时测量,并将测量数据传送至单片机进行处理,然后由单片机根据所检测的各种数据实现对电动车的智能控制。这种方案能实现对电动车的运动状态进行实时控制,控制灵活、可靠,精度高,可满足对系统的各项要求。 2.1 主控系统 根据设计要求,我认为此设计属于多输入量的复杂程序控制问题。据此,拟定了以下两种方案并进行了综合的比较论证,具体如下: 方案一: 选用一片CPLD(如EPM7128LC84-15)作为系统的核心部件,实现控制与处理的功能。CPLD具有速度快、编程容易、资源丰富、开发周期短等优点,可利用VHDL语言进行编写开发。但CPLD在控制上较单片机有较大的劣势。同时,CPLD的处理速度常快,而小车的行进速度不可能太高,那么对系统处理信息的要求也就不会太高,在这一点上,MCU就已经可以胜任了。若采用该方案,必将在控制上遇到许许多多不必要增加的难题。为此,我们不采用该种方案,进而提出了第二种设想。 方案二: 采用单片机作为整个系统的核心,用其控制行进中的小车,以实现其既定的性能指标。充分分析我们的系统,其关键在于实现小车的自动控制,而在这一点上,单片机就显现出来它的优势——控制简单、方便、快捷。这样一来,单片机就可以充分发挥其资源丰富、有较为强大的控制功能及可位寻址操作功能、价格低廉等优点。因此,这种方案是一种较为理想的方案。 针对本设计特点——多开关量输入的复杂程序控制系统,需要擅长处理多开关量的标准单片机,而不能用精简I/O和程序存储器的小体积单片机,D/A、A/D功能也不必选用。根据这些分析,我选定了P89C51RA单片机作为本设计的主控装置,51单片机具有功能强大的位操作指令,I/O均可按位寻址,程序空间多达8K,对于本设计也绰绰有余,更可贵的是51单片机价格常低廉。 在综合考虑了传感器、两部电机驱动等诸多因素后,我们决定采用一片单片机,充分利用STC89C52单片机的资源。 2.2 电机驱动模块 方案一: 采用继电器对电动机的开或关进行控制,通过开关的切换对小车的速度进行调整.此方案的优点是电路较为简单,缺点是继电器的响应时间慢,易损坏,寿命较短,可靠性不高。 方案二: 采用电阻网络或数字电位器调节电动机的分压,从而达到分压的目的。但电阻网络只能实现有级调速,而数字电阻的元器件价格比较昂贵。更主要的问题在于一般的电动机电阻很小,但电流很大,分压不仅回降低效率,而且实现很困难。 方案三: 采用功率三极管作为功率放大器的输出控制直流电机。线性型驱动电路结构和原理简单,加速能力强,采用由达林顿管组成的 H型电路(如图2.1)。用单片机控制达林顿管使之工作在占空比可调的开关状态下,精确调整电动机转速。这种电路由于工作在管子的饱和截止模式下,效率常高,H型电路保证了简单的实现转速和方向的控制,电子管的开关速度很快,稳定性也极强,是一种广泛采用的 PWM调速技术。现市面上有很多此种芯片,我选用了L298N(如图2.2)。 这种调速方式有调速特性优良、调整平滑、调速范围广、过载能力大,能承受频繁的负载冲击,还可以实现频繁的无级快速启动、制动和反转等优点。因此决定采用使用功率三极管作为功率放大器的输出控制直流电机

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值