车辆自动转向系统如何安装和调试?,汽车转向系统调试

如何利用ESP32主板控制车模转向?

视频加载中...

一、问题/目标

  无线电轨车模精确沿着赛道运行, 不仅仅可以放置冲出赛道, 更重要的是能够以最大功率接收到无线电能这个车模如何拐弯循迹的呢? 下面介绍一下这个车模运动方向控制的基本原理以及在 ESP32中的编程方法。

二、基本原理

  无线电轨车模是一个四轮结构的车模, 它依靠后轮驱动, 前轮转向控制车模的运动。这种结构也称为 阿克曼车辆转向机构, 只是车模上进行了简化。前轮转向使用了小型的舵机,它转动轴通过机械连接,可以控制车模前轮的同时转动。

  这种小型舵机的结构大体相同,它们在供电情况下, 结构控制脉冲指令,通过内部的电机驱动转轴运动, 并使得转轴输出角度与给定脉冲宽度成比例。 它是一个内部有位置反馈的随动系统。舵机的引线通常包括 电源线, 地线 以及脉冲信号线。 脉冲时间宽度 从1ms 到 2ms 分别对应舵机转动角度从最左边转移到最右边。 脉冲频率一般取 50Hz 左右。 它可以通过 ESP32 中的定时器产生电脉冲来进行驱动。

  在主控板上, 连接舵机的端口在电源接口左边, 从左到右分别是 信号线, 5V电源线, 以及地线。电路原理图显示, 信号线名称定义为 Servo, 通过电阻 R9 进行隔离之后与外界相连。在 ESP32 管脚上,Servo 连接到 IO27 , 这个端口可以定义为 内部 PWM 输出端口。 下面应用举例中, 通过编程来测试舵机的控制。

三、应用举例

1、测试程序

  首先看一下测试程序, 前面三个语句分别导入 MicroPython 内部软件包, 包括管脚模块和PWM模块。利用time 进行软件延时。这儿是定义了三个全局变量, 实际上存储了三个整形常量。 最后介绍这三个变量的取值原理。接下来是定一个 PWM 接口, 也就是脉冲宽度调制接口, 输出舵机控制命令脉冲。第一个参数是 PWM 对应的管脚, 原理图上给出对应的 IO27 管脚,第二个是脉冲频率, 对应50Hz,第三个是脉冲的占空比, 利用前面对应的常量 Servo_Center, 对应着 1.5ms。这里声明一个控制板上LED的管脚, 用于显示程序执行状态。 主程序是一个有 while 定义的无限循环程序。

这是程序主题部分。 包括有两个几乎相同的部分。第一部分有四句话。print 语句是通过 REPL 输出信息 Servo Left, 表示舵机转轴摆向最左边。 LED 管脚置为 0, 对应的低电平, 板上 D1 对应的LED点亮。第三句话是核心, 设定 PWM 输出信号的占空比。 这里使用了 Servo_Left 对应的常量, 对应输出脉冲宽度为 1ms。接下来是利用 time 延时0.5秒第二部分的作用与前面部分几乎相同, 只是分别输出 Serve Right, LED 熄灭。设置 PWM 输出脉冲宽度 为两毫秒。 对应占空比常量是 Servo_Right。程序循环运行之后, 输出 PWM 控制信号可以控制舵机左右摆动。

  下面解释一下前面定义的三个变量,它们实际上定义了 PWM 输出三种脉冲宽度对应的 PWM 占空比常量。在定义PWM对象时,设置的频率为 50Hz,对应周期为 20毫秒。在ESP32中, 设置PWM占空比使用一个 16位无符号整形数表示整个周期,因此如果输出1.5毫秒的时间脉冲,就使用 1.5 除以 20 , 再乘以0xffff, 使用这个常数设置 PWM 的占空比, 对应输出便是 1.5毫秒。

由于设置占空比的函数 duty 只接受整形数, 所以最终利用 int 将计算结果转换成整数数。同样的道理,可以分别得到 1毫秒, 2毫秒 PWM 脉冲宽度所对应的常量。 利用这些常量,可以设置 PWM 输出脉冲时间宽度,1.5毫秒, 1毫秒, 2毫秒 通常情况下使得舵机输出轴处在中间, 左边以及右边。 这三个常量在后面的程序中被使用。

2、测试结果

  将程序拷贝到 Thonny 环境之内,运行之后, 可以看到 Shell 窗口内交替出现 Servo Left, Servo Right 。 这说明 程序运行正常。在电路板上, 可以看到 LED1 大约 1 Hz 的频率闪烁。

  使用示波器,测量ESP32主控板舵机的控制信号波形,可以看到输出幅值为3V的脉冲, 它的宽度呈现周期变化。缩小示波器时基频率, 看到舵机控制信号的频率为 50Hz,这与软件设定的 PWM 频率是一致的。拉宽示波器时基, 可以看到输出脉冲信号时间宽度,两种时间宽度分别是 1毫秒 以及 两毫秒这是前面测试程序对应的输出信号波形。

  将一个舵机的控制引线接入主控板的舵机接口。大家注意到舵机引线的颜色分别是 白、红、黑。 对应着信号线、 电源线以及地线。这个顺序与舵机接口是对应的。舵机接入后, 便开始 每隔 一秒钟来回摆动一次。这与软件给定的指令是对应的。大家需要知道, 具体摆动的角度, 在相同的控制信号作用下, 与舵机的具体型号有关系。 因此, 需要通过修改软件来改变舵机转动的角度。

▲ 图1.3.1 舵机运动


四、知识联系

  需要说明的是,舵机控制信号所使用的 PWM 对象,与后面控制电机速度的 PWM 是相同的, 都属于脉冲宽度调制信号。只是他们各自使用不同的ESP32 的输出管脚,电机控制信号的频率往往是在几千赫兹,使用不同的占空比 来控制电机运行的不同速度。 占空比越大, 等效施加在电机上的电压就越大, 电机转速就越高。因此掌握 PWM 的用途, 可以控制不同的对象。

五、练习/实验

  本文介绍了 ESP32控制车模转向的基本原理,基于上面给出的例程, 大家可以尝试控制车模舵机按照不同的幅度和周期进行转动。 基于此为之后的车模控制奠定基础。

  下面是使用功率测量模块测量控制板在舵机 运动情况下的电流消耗, 可以看到舵机所消耗的电流是非常大的。 因此在控制舵机的时候需要尽可能减少对其角度的改动。

▲ 图1.5.1 驱动舵机是工作电流

参考资料

<1>

清华云盘资料下载: https://cloud.tsinghua.edu.cn/d/7471180bdb0f4d1ebbc7/

<2>

无线电轨智能车校内赛 | 如何学习无线电轨车模?: https://zhuoqing.blog.csdn.net/article/details/131876635

<3>

基础Python学习网站 Learn Python: https://www.learnpython.org/

2024-09-19

后面没有了,返回>>电动车百科