智能车入门——舵机

在进行智能车竞赛时,舵机的学习过程至关重要,以下是在这一过程中需要注意的几个关键步骤。


 

 


舵机概念与结构

舵机主要由直流电机、变速齿轮组、电位器、控制板所构成,舵机的输出轴与电位器是同轴的,当舵机收到控制信号之后会驱动电机转动,从而带动齿轮组转动,齿轮组会带动输出轴和电位器转动,当输出轴转动到指定位置时电机停止转动。其中电位器的作用实际上是检测输出轴位置,

因此舵机内部是一个闭环调节的系统,这样才能保证舵机在来回转动的过程中不会出现累积误差。

1.1 电机

舵机的核心是一个电机,通常是直流电机。这个电机负责驱动舵机的运动。

1.2 齿轮系统

舵机中通常包含齿轮系统,通过齿轮传动将电机的高速旋转转换为较低速度但更高扭矩的旋转,以提供更为精细的运动控制。

1.3 位置反馈装置

舵机内置位置反馈装置,例如电位器或编码器,用于实时监测舵机的当前位置。这个信息在控制中非常关键,确保舵机能够按照预期的位置运动。

1.4 控制电路

舵机还包括一个控制电路,用于接收外部信号并控制电机的运动,以达到设定的目标位置。

1.5 硬件连线

舵机通常有三根线,分别是电源线、地线和控制信号线。

电源线连接到电源,提供电机所需的电能。一般舵机的电源电压在4.8V到7.4V之间。

地线连接到系统的电地,确保电流回路完整。

控制信号线是通过PWM信号进行通信的线路,负责传递控制信息以确定舵机的位置。

 


 

舵机的工作原理

舵机的工作原理基于闭环反馈系统。当接收到控制信号后,内部的位置反馈装置会监测当前位置,与控制信号中设定的目标位置进行比较。电机会根据比较结果进行调整,以实现准确的位置控制。控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms 的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。


 

舵机的控制原理

舵机的控制原理涉及到控制信号的脉冲宽度。

舵机分为数字舵机与模拟舵机,数字舵机的信号频率为50-300赫兹都可以正常使用,模拟舵机的信号频率为50赫兹,一般数字和模拟舵机的信号高电平时间范围都是0.5毫秒至2.5毫秒。

0.5毫秒舵机转动至0度,2.5毫秒舵机转动至180度。

通过单片机输出PWM信号,然后改变PWM信号的高电平时间就可以控制舵机转动到指定的位置了。

通常,舵机接收的PWM信号周期为20毫秒,脉冲宽度在0.5毫秒到2.5毫秒之间,其中1.5毫秒位置通常是舵机的中性位置。通过调整脉冲宽度,可以控制舵机的转动角度。

 舵机的控制与PWM信号的脉冲宽度存在直接关系。PWM脉冲的占空比直接决定了输出轴的位置不同的脉冲宽度对应不同的角度,例如最小脉冲宽度对应舵机的最左位置,最大脉冲宽度对应最右位置。这种映射关系允许通过微调PWM信号来实现对舵机位置的精准控制。

简单来说:PWM信号通过信号线控制舵机的输出量;

 舵机的转角与脉冲宽度之间存在一种映射关系,通常是线性关系。这个关系可以通过舵机的技术规格表来确定,不同型号的舵机可能有略微不同的映射关系。


 

舵机中值获取(装车前)

pwm_init(S_MOTOR_PIN,50,duty);

我们设定舵机频率为50HZ,PWM最大占空比PWM_DUTY_MAX为10000;

那么可求,舵机周期=1s/50hz=20ms。

由上文可知,周期20ms时,脉冲宽度在1.5ms时处于中值,

此时

duty_mid = 1.5*10000/20=750;

同理可求

duty_min = 0.5*10000/20=250;

duty_max = 2.5*10000/20=1250;

舵机中值为750  舵机最小值为250   最大值为1250  ,

这里的最大值、最小值指的是舵机器件的,当舵机安装到车模上后,由于因为机械限位,导致可活动范围小很多,因此用于转向的dutymax、dutymin  需要重新测量。


#include "headfile.h"  #define S_MOTOR_PIN   PWM4_MODULE2_CHA_C30       //定义舵机引脚   uint16 duty;  int main(void)  {  DisableGlobalIRQ();  board_init();   //务必保留,本函数用于初始化MPU 时钟 调试串口  systick_delay_ms(100);  //延时100ms,等待主板其他外设上电成功  //舵机居中   1.5ms/20ms * PWM_DUTY_MAX(PWM_DUTY_MAX是PWM的满占空比时候的值) PWM_DUTY_MAX在fsl_pwm.h文件中  duty = 1.5*10000/20;  pwm_init(S_MOTOR_PIN,50,duty);  //特别提示这里的舵机居中是在没有安装在车模上的时候,才能使用这个居中方式。  //如果舵机已经安装在车模上,切勿使用本程序,因为舵机由于机械限位,导致可活动范围小很多。  EnableGlobalIRQ(0);  while(1)  {  pwm_duty(S_MOTOR_PIN,750);  }  }  

 

此时程序将舵机占空比设置为750,然后下载,上电,使舵机转到中值,然后安装舵机,扣上圆盘即可。

 


舵机中值矫正(装车后)

 通过上文获得的舵机中值可能因为车模机械结构的原因,并不能使前轮完美对称,因此需要微调。

效果就是最简单地就是推一下车,车能笔直地前进。

这里可以用肉眼看,小车运动没有偏移,

个人喜欢看陀螺仪的值,如果车走的直,那么偏航角就应该是0

	ips114_showstr(0,4,(const char*)("gyroz:"));ips114_showstr(0,5,(const char*)("Angle:"));ips114_showint16(80,4,treat_gyro_z);ips114_showfloat(80,5,ICMIntegrate.TurnAngle_I,3,2);if(KeyCenter==onepress){KeyCenter=nopress;ParamsAdjustShort(&ServoAdd,120,2,1);}ips114_showint16(80,0,ServoOut);	

矫正方法很简单粗暴,就是一点点地更改duty的值,直到符合效果。

这里推荐结合按键调参模块,节省反反复复改参、下载的步骤。

智能车模块详解——按键及按键调参

uint16 duty;  int main(void)  {  DisableGlobalIRQ();  board_init();   //务必保留,本函数用于初始化MPU 时钟 调试串口  duty = 750;  pwm_init(S_MOTOR_PIN,50,duty);  EnableGlobalIRQ(0);    while(1)  {  pwm_duty(S_MOTOR_PIN,duty);  }  }  

 舵机中值获取(装车后补救)

 如果没有使舵机打到中值,就已经装好车了,那么应该怎么办?

最好的方法就是,拆了舵机圆盘,按照上面的步骤重新操作。

如果不想的话,可以按照下面的方法操作。

首先拔掉板子上的舵机信号线,然后下载上面的代码,设置占空比在一个合理的范围。

然后使用试触法,在接上舵机信号线时,如果舵机打死,立刻拔掉线,再调整duty值,重复上面步骤,直到舵机没有打死,然后重新测定转向占空比的范围、舵机中值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/209250.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最近技术圈发生了很多大事,来聊聊

如标题所说,最近这几年全球都大事频发。有事甚至不知道是我更关心社会和时政、还是真的进入一个大变革时代。 可以确认的是,现在这个时代、科技的发展到了一个可感知到越来越快的速度。 … 前几天,当下AI 领域最有知名的人奥特曼被 OpenAI…

数据挖掘 K近邻

什么时候用K近邻? 交叉验证的时候。最常见的交叉验证方法是K折交叉验证,其中数据集被均匀分成K个子集,称为折,然后执行K次训练和测试,每次选择不同的折作为测试集,其余的作为训练集。最后,将K次…

JavaScript编程基础 – 对象

JavaScript编程基础 – 对象 JavaScript Programming Essentials – Object 本文简要介绍JavaScript面向对象编程,如何实现其中的对象以及实例演示,希望对大家学习JavaScript有所帮助。 1. 面向对象编程特点 面向对象编程(Object-Oriented Programmi…

基于SpringBoot的图书管理系统

基于SpringBoot的图书管理系统 图书管理系统开发技术功能模块代码结构数据库设计运行截图源码获取 图书管理系统 开发技术 技术:SpringBoot、MyBatis-Plus、MySQL、Beetl、Layui。 框架:基于开源框架Snowy-Layui开发。 工具:IDEA、Navicat等…

【正则插件】前端正则插件以及预览插件推荐

1) 2) any-rule Pegex Previewer 下载好插件之后 在代码层右键选择 选择你需要的正则表达式,随后可以使用第二个插件 正则表达式插入之后顶部会有 Test Regex.. 点击会出现以下内容 将他 ctrl a 删除,输入你对应的正则表达…

【IEEE独立出版 | 往届均完成检索】2024年第四届消费电子与计算机工程国际学术会议(ICCECE 2024)

#国际学术会议# 推荐 #广州# 【IEEE独立出版 | 往届均完成检索】2024年第四届消费电子与计算机工程国际学术会议(ICCECE 2024) 2024 4th International Conference on Consumer Electronics and Computer Engineering 2024年1月12-14日 | 中国广州 会…

【Linux】make/Makefile 进度条小程序

目录 一,认识 make/makefile 二,实例代码 1,依赖关系 2,原理 3,项目清理 4,测试讲解 三,Linux第一个小程序-进度条 game.h game.c test.c 程序详解 一,认识 m…

论设备管理的发展趋势及对策

作者:韩平 设备是企业生产要素的一个重要组成部分,是企业进行生产活动的物质硬件基础,也是决定企业生产效能的重要因素之一。 设备管理又称设备工程,是根据企业生产经营目标,为了提高设备效能,在调查研究…

【Web】NodeJs相关例题wp

目录 ①[GKCTF 2020]ez三剑客-easynode ②[MoeCTF 2021]fake game ③[安洵杯 2020]Validator ④ [HZNUCTF 2023 final]eznode ⑤[CNSS] 🏭 EzPollution_pre ⑥[CNSS]✴️ EzPollution ①[GKCTF 2020]ez三剑客-easynode const express require(express); co…

009 OpenCV threshold

一、环境 本文使用环境为: Windows10Python 3.9.17opencv-python 4.8.0.74 二、二值化算法 2.1、概述 在机器视觉应用中,OpenCV的二值化函数threshold具有不可忽视的作用。主要的功能是将一幅灰度图进行二值化处理,以此大幅降低图像的数…

使用 PowerShell 创建共享目录

在 Windows 中,可以使用共享目录来将文件和文件夹共享给其他用户或计算机。共享目录可以通过网络访问,这使得它们非常适合用于文件共享、协作和远程访问。 要使用 PowerShell 创建共享目录,可以使用 New-SmbShare cmdlet。New-SmbShare cmdl…

规则引擎Drools使用,0基础入门规则引擎Drools(一)基础入门

文章目录 系列文章索引一、规则引擎概述1、引出问题2、什么是规则引擎3、使用规则引擎的优势4、规则引擎应用场景 二、Drools介绍1、Drools概述2、Drools构成3、相关概念说明4、Drools执行过程5、KIE介绍 三、Drools入门案例1、业务场景说明2、开发实现 四、Drools基础语法1、规…