智能小车PWM调速原理

news2025/2/24 20:47:58

电机驱动电路

智能小车电机的驱动芯片采用L293D。L293D是一款单片集成的高电压、高电流、4通道电机驱动,设计用于连接标准DTL或TTL逻辑电平,驱动电感负载(诸如继电线圈、DC和步进电机)和开关功率晶体管等等。L293D有4个通道,每个电机需要用到两个通道,以实现电机的正反转。4个电机就需要用到8个通道。本小车需要2片L293D电机驱动芯片。

为了简化为双桥应用,L293D每个通道对都配备了一个使能输入端。L293D逻辑电路具有独立的供电输入,可在更低的电压下工作。

L293D具有如下特性:

1、L293D每个通道的电流输出能力达600 mA

2、L293D每个通道的峰值输出电流达1.2 A(非重复)

3、便于使能

4、L293D具有过温保护

5、逻辑“0”输入电压高达1.5 V(高抗噪性)

6、内置箝位二极管

智能小车的调速

智能小车的部分实验中,电机不能时刻保持在全速运转的状态,需要控制小车速度才能完成一些特定的功能。比如在“智能小车循迹实验”中,如果小车速度过快,来不及反应做出方向的调整,小车会很容易跑离轨迹。PWM调速是目前电机的主流调速方式。

智能小车采用脉宽调制(PWM)的办法来控制电机的转速,从而控制智能小车的速度。在此种情况下,电池电源并非连续地向直流电机供电,而是在一个特定的频率下为直流电机提供电能。

不同占空比的方波信号,调节对直流电机的通断电,能起到对直流电机调速作用。这是因为电机实际上是一个大电感,它有阻碍输入电流和电压突变的能力,因此脉冲输入信号被平均分配到作用时间上。

这样,改变L293D始能端EN1和EN2上输入方波的占空比就能改变加在电机两端的电压大小,从而改变了直流电机转速。

电路中用微处理机来实现脉宽调制,通常的方法有两种:

(1)用软件方式来实现:

通过执行软件延时交替改变EN1和EN2输出逻辑状态来产生脉宽调制信号,设置不同的延时时间得到不同的占空比。

(2)用硬件方式实现:

硬件自动产生PWM信号,不占用CPU处理的时间。这就要用到具有硬件PWM功能的芯片,在一串理想的脉冲周期序列中(如方波),正脉冲的持续时间与脉冲总周期的比值可以调节。

智能小车控制板采用STC89C52RC芯片,不具备硬件PWM波形发生器,我们采用定时器中断来产生固定占空比的脉冲信号,定时器的作用是准确的计算脉冲时间。采用定时器中断来产生PWM波形,而不是软件延迟的方法,可以有效的提升CPU的工作效率。

智能小车PWM调速前进

有时候我们需要控制智能小车的速度,不希望智能小车全速前进。比如在“智能小车循迹实验”中,如果小车速度过快,来不及反应做出方向的调整,小车会很容易跑离轨迹,这样就需要调整控制智能小车的速度了。

那么怎么样实现智能小车前进速度的调节呢?调节智能小车的速度,实际上是调节电机的运转速度,PWM调速是目前电机的主流调速方式。智能小车采用脉宽调制(PWM)的办法来控制电机的转速,从而控制智能小车的速度。在此种情况下,电池电源并非连续地向直流电机供电,而是在一个特定的频率下为直流电机提供电能。不同占空比的方波信号,调节对直流电机的通断电,能起到对直流电机调速作用。这是因为电机实际上是一个大电感,它有阻碍输入电流和电压突变的能力,因此脉冲输入信号被平均分配到作用时间上。这样,改变L293D使能端EN1和EN2上输入方波的占空比就能改变加在电机两端的电压大小,从而改变了直流电机转速。

智能小车PWM调速前进程序源代码

unsignedchar pwmval_left = 0; //变量定义

unsignedchar pwmval_right = 0; //变量定义

unsignedchar pwmval_left_init = 10;

//左电机占空比调节,调节值在0到20之间,调节此值可以调节小车的速度。

unsignedchar pwmval_right_init = 10;

//右电机占空比调节,调节值在0到20之间,调节此值可以调节小车的速度。

bitright_pwm = 1; //右电机PWM开关,为1时打开

bitleft_pwm = 1; //左电机PWM开关,为1时打开

voidleft_moto(void)

{

if(left_pwm)

{

if(pwmval_left <= pwmval_left_init){EN1 =1; }

else{EN1 = 0;}

if(pwmval_left >= 20){pwmval_left = 0;}

}

else{EN1 = 0;}

}

voidright_moto(void)

{

if(right_pwm)

{

if(pwmval_right <= pwmval_right_init){EN2= 1;}

else if(pwmval_right > pwmval_right_init){EN2= 0;}

if(pwmval_right >= 20){pwmval_right = 0;}

}

else{EN2 = 0;}

}

voidtimer0()interrupt 1 using 2

{

TH0=0xfc;TL0=0x66; //1Ms定时

pwmval_left=pwmval_left+1;pwmval_right=pwmval_right+1;

left_moto();right_moto();

}

voidtimer_init()

{

TMOD=0x01;

TH0=0xfc;TL0=0x66; //1ms定时

TR0=1;ET0=1;EA=1; //开总中断

}

voidmain()

{

timer_init();delay(10,100);

BEEP_IO=0;delay(100,100);BEEP_IO=1;

forward(); //调用前进函数

while(1);

}

从控制程序中我们可以知道,调节pwmval_left_init和pwmval_right_init的值就可以调节EN1和EN2上信号的占空比,从而调节左电机和右电机的运转速度,最终完成智能小车的运动速度。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

APB总线详解及手撕代码

本文的参考资料为官方文档AMBA™3 APB Protocol specification文档下载地址&#xff1a; https://pan.baidu.com/s/1Vsj4RdyCLan6jE-quAsEuw?pwdw5bi 提取码&#xff1a;w5bi APB端口介绍介绍总线具体握手规则之前&#xff0c;需要先熟悉一下APB总线端口&#xff0c;APB的端口…

【跟我一起读《视觉惯性SLAM理论与源码解析》】第二章 编程及编译工具

23.2.21终于拿到六哥的新书 感觉很是不错&#xff0c;打算近期写一写心得之类的 废话不多说&#xff0c;直接开啃 PS&#xff1a;我的建议是阅读完十四讲后再来看这本书&#xff0c;效果应该会很不错。 因为第一章都是介绍之类的我觉得没什么整理的必要&#xff0c;所以直接来…

Netty高级应用之:编解码器与群聊天室开发

Netty高级应用之&#xff1a;编解码器与群聊天室开发 文章目录Netty高级应用之&#xff1a;编解码器与群聊天室开发Netty编解码器Java的编解码Netty编解码器概念解码器(Decoder)编码器(Encoder)编码解码器CodecNetty案例-群聊天室聊天室服务端编写聊天室客户端编写Netty编解码器…

ChatGPT爆火背后的真相:学编程已经成为必选项

这一阵最热门的话题&#xff0c;莫过于人工智能新选手——ChatGPT&#xff0c;在推出后只用了两个月就积累了1亿用户&#xff01;它的出现在科技圈掀起了一阵“惊涛骇浪”&#xff0c;有人称ChatGPT的意义&#xff0c;堪比当年蒸汽机的出现&#xff0c;它足以爆发新一轮的“工业…

什么耳机适合跑步、挑选五款最佳的跑步耳机推荐

在进行户外跑步、骑行等运动&#xff0c;往往会感到枯燥乏味&#xff0c;很难坚持下去&#xff0c;就像我经常跑一圈就觉得没了动力&#xff0c;但是当我戴上耳机听音乐跑步时&#xff0c;不知不觉就结束了&#xff0c;就感觉时间过得很快。不过话有说回来&#xff0c;适合跑步…

【Spark分布式内存计算框架——离线综合实战】1. 综合实战概述

离线综合实战 大数据营销是基于多平台的大量数据&#xff0c;依托大数据技术的基础上&#xff0c;应用于互联网广告行业的营销方式。大数据营销的核心在于让网络广告在合适的时间&#xff0c;通过合适的载体&#xff0c;以合适的方式&#xff0c;投给合适的人。大数据营销是精…

buu [WUSTCTF2020]情书 1

题目描述&#xff1a; 题目分析&#xff1a; 翻译一下可知&#xff1a; 前提&#xff1a;用0、1、2、……枚举字母表25 使用RSA系统 加密&#xff1a;0156 0821 1616 0041 0140 2130 1616 0793 公钥&#xff1a;2537和13 私钥&#xff1a;2537和937 从提示可以得知 n 2537 , …

盘点四种自动化测试模型实例及优缺点

一&#xff0c;线性测试 1.概念&#xff1a; 通过录制或编写对应应用程序的操作步骤产生的线性脚本。单纯的来模拟用户完整的操作场景。 &#xff08;操作&#xff0c;重复操作&#xff0c;数据&#xff09;都混合在一起。 2.优点&#xff1a; 每个脚本相对独立&#xff0…

leetcode1143 最长公共子序列LCS

这道题目核心的一行代码就是判断s1的第i个字符和s2的第j个字符是否相等 是s1.charAt(i-1)s2.charAt(j-1) 而不是s1.charAt(i)s2.charAt(j) 动态规划就是搞清楚dp[i][j]的含义然后写出动态转移方程 (1)dp[i][j]的含义 dp[i][j]表示考虑s1的前i个字符&#xff0c;考虑s2的前j…

【C++】类型转换方法

本篇博客让我们来见识一下C中新增的类型转换方法 文章目录1.C语言中类型转换2.C中的强制类型转换2.1 static_cast2.2 reinterpret_cast2.3 const_castvolatile关键字2.4 dynamic_cast3.C强制类型转换的作用4.RTTI1.C语言中类型转换 在C语言中&#xff0c;类型转换有下面两种形…

音视频基础之ffmpeg命令实战一

一&#xff1a;概念区别 ffmpeg/ffmplay/ffprobe区别 ◼ffmpeg: Hyper fast Audio and Video encoder 超快音视频编码器&#xff08;类似爱剪辑&#xff09; 如&#xff1a;把10分钟的视频剪辑为2分钟。 ◼ffplay: Simple media player简单媒体播放器 ◼ffprobe: Simple multi…

0202插入删除-算法第四版红黑树-红黑树-数据结构和算法(Java)

文章目录4 插入4.1 序4.2 向单个2-结点插入新键4.3 向树底部的2-结点插入新键4.4 向一棵双键树&#xff08;3-结点&#xff09;中插入新键4.5 颜色调整4.6 根结点总是黑色4.7 向树底部的3-结点插入新键4.8 将红链接在树中向上传递4.9 实现5 删除5.1 删除最小键5.2 删除6 有序性…

ASE4N65SE-ASEMI高压MOS管ASE4N65SE

编辑-Z ASE4N65SE在TO-220F封装里的静态漏极源导通电阻&#xff08;RDS(ON)&#xff09;为2.5Ω&#xff0c;是一款N沟道高压MOS管。ASE4N65SE的最大脉冲正向电流ISM为16A&#xff0c;零栅极电压漏极电流(IDSS)为10uA&#xff0c;其工作时耐温度范围为-55~150摄氏度。ASE4N65S…

面试官:说说react的渲染过程

hello&#xff0c;这里是潇晨&#xff0c;大家在面试的过程中有没有遇到过一些和react相关的问题呢&#xff0c;比如面试官让你说说react渲染的过程&#xff0c;这到题目比较开放&#xff0c;也比较考验大家对react渲染原理以及源码的整体架构的理解。 整体流程&#xff1a; r…

AcWing语法基础课笔记 第八章 C++ STL 第九章 位运算与常用库函数

第八章 C STL 第八章 C STL 1.#include <vector> 2.#include<queue> 3.#include <stack> 4.#include <deque> 5.#include <set> 6.#include<map> 第九章 位运算与常用库函数 STL是提高C编写效率的一个利器。 ——闫…

文献阅读笔记 # 区块链在软件供应链管理中的应用探索

崔宝江, 宋绪言. 区块链在软件供应链管理中的应用探索[J]. 保密科学技术, 2019(5): 41-44.主要作者来自北京邮电大学网络空间安全学院 移动互联网安全技术国家工程实验室&#xff1b; 摘要 探索用区块链技术保障软件供应链安全 1 引言 略。 2 软件供应链面临的安全风险 一…

网络协议(一)应用层(自定制协议、HTTP协议)

目录 应用层&#xff1a;负责应用程序之间的数据沟通 一、自定制协议&#xff08;私有协议&#xff09; 二、HTTP协议 1&#xff09;、请求行解析&#xff1a;GET /index.html HTTP/1.1 第一部分&#xff1a;请求方法&#xff1a;多种多样&#xff0c;描述不同的请求目的 …

吐血整理的网络工程师必懂的26个技术名词,自查一下看看自己知道多少 ?

在做网络工程师的工作时候&#xff0c;虽说那些晦涩难懂的英语以及技术名词很难记 比如我这个英语从不及格的小乐色&#xff0c;但是你会发现很多都会用到&#xff0c;所以多多少少还是要储备一些在脑子里&#xff0c;有点印象就OK了。查起来也方便不是&#xff01;那么今天咱…

基于龙芯 2K1000 的嵌入式 Linux 系统移植和驱动程序设计(二)

第 3 章 嵌入式软件系统移植本课题中嵌入式系统正常工作的前提是嵌入式软件系统完整且能正常工作&#xff0c; 以便为之后的软件开发提供一个能够正常工作的平台。引导程序 PMON 需要完成 内核引导&#xff0c;嵌入式 Linux 内核需要具有完备的功能且能够正常使用&#xff0c;根…

2023年 Android Studio Unable to find bundled Java version 解决方法

学习flutter过程中发现 Unable to find bundled Java version 错误搜索网上的解决方案都不对最后在 b站 https://www.bilibili.com/video/BV1S4411E7LY?p17&vd_sourced7cf0e2cd70b3cc57314d2efcb598c3d 教程的课件中找到了解决方哦 我的flutter版本 C:\Users\Ken>flu…