【STM32智能车】电机控制

news2024/11/18 23:25:19

【STM32智能车】电机控制

  • PWM
    • PWM基本用法:
  • 电机驱动
  • 基本控制
  • 基本状态

欢迎收看由咸鱼菌工作室出品的STM32系列教程。本篇内容主要电机控制


在这里插入图片描述

PWM

我们要控制电机,就要先了解一下PWM。

PWM(Pulse Width Modulation)控制——脉冲宽度调制技术,通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形(含形状和幅值)。其具有两个很重要的参数:频率和占空比。

电机PWM驱动可以使用单片机、FPGA或电机专用的PWM芯片来实现,可以对电机进行精确的控制和调节。相比于其他传统的电机驱动方式,电机PWM驱动具有效率高、响应快、稳定性好等优点,因此被广泛应用于各种电机控制系统中,例如电动汽车、工业自动化设备、家电等领域。

详情请查看:PWM如何控制直流电机

PWM基本用法:

from pyb import Pin, Timer

现在我们可以通过以下步骤来使用pyb.pwm模块:

  1. 创建一个定时器对象
tim = Timer(4, freq=1000)

其中 Timer() 函数用于创建一个定时器对象,并且可以选择性地指定频率。

  1. 使用定时器对象创建一个PWM通道
channel = tim.channel(1, Timer.PWM, pin=Pin("X1"), pulse_width_percent=50)

在此示例中,我们创建了一个PWM通道,位于引脚X1上,并且初始占空比为50%。

  1. 修改占空比
channel.pulse_width_percent(75)

我们可以使用 pulse_width_percent() 方法来更改占空比。

基本使用

from pyb import Pin, Timer

# 创建定时器对象
tim = Timer(4, freq=1000)

# 创建PWM通道
channel = tim.channel(1, Timer.PWM, pin=Pin("X1"), pulse_width_percent=50)

# 修改占空比
channel.pulse_width_percent(75)

电机驱动

PS:ZTMR开发板自带电机驱动,其他没有电机驱动的板子,要额外弄一个电机驱动板哦。
在这里插入图片描述
引脚说明
ZTMR电机驱动电路。注意,这里的引脚不能改哦。
在这里插入图片描述

基本控制

原理图比价复杂,专业人能看懂,我们只需要看下面引脚说明即可。下图是开发板标号对应的内部引脚。

引脚说明
B10只有为高电平时,马达才会转
B8PWM控制A电机
B9PWM控制B电机
B12A0
B13A1
B14B0
B15B1

查看ZTMR原理图可知

引脚定时器Timer对应通道CH
B8TIM10CH1
TIM4CH3
B9TIM4CH4
TIM11CH1

基本状态

我们在这里之控制一个电机,1个电机有3种状态:正转,反转,停止。so,代码如下

#main.py -- put your code here!

from pyb import Pin,Timer

cs = Pin('C8',Pin.OUT_PP)    #C8设置为输出引脚输出高电平
cs(1)

ch1 =None
ch2 =None     #初始化
#A电机正反转
p1 = Pin('B8') 
tim1 = Timer(10, freq=120)                  
ch1 = tim1.channel(1, Timer.PWM, pin=p1)
ch1.pulse_width_percent(100)
A0 = Pin('B12',Pin.OUT_PP)
A1 = Pin('B13',Pin.OUT_PP)
A0(1)       #A0值:0      0       1
A1(0)       #A1值:0      1       0
			#状态: 停    状态1正转   状态2反转 
			#不能同时为1
#正反转需要看位置调换

ZTMR开发板提供了2个电机接口,A电机,B电机。

为了展示效果,我把电机插入到A电机口。
在这里插入图片描述
通电即可
在这里插入图片描述

智能车最最基础的控制就是驱动电机(简化了,实际情况更复杂。)我们先了解了单个电机的控制后就可以进入智能车专题了。

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

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

相关文章

全开源的 agv 小车

最近github 有 一个开源的stm32 大荷载小车,从pcb 到代码到cad 文件全部开源 代码在 git 小车的实物图 小车的cad 模型 小车的 abaqus 力学分析模型 pcb 图 控制板接线图 全开源小车 代码在 git

港科夜闻|香港科大(广州)与特斯联共建研究中心,打造国际领先的创新联合体...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大(广州)与特斯联共建研究中心,打造国际领先的创新联合体。6月27日,“数字世界”联合研究中心正式揭牌成立,这个由香港科大(广州)与特斯联共同打造的研究中心,旨在推…

hive中的datagrip和beeline客户端的权限问题

hive中的datagrip和beeline客户端的权限问题 使用ranger和kerberos配置了hadoop和hive,今天想用来测试其权限 测试xwq用户: 1.首先添加xwq用户权限,命令如下: useradd xwq -G hadoop echo xwq | passwd --stdin xwq echo xwq …

【笔记】EDA学习笔记

网课:立创EDA(专业版)电路设计与制作快速入门 资料:pan.baidu.com/s/1UlcfvAZ13s_wOHo3cvNQxA?pwdb9x8 提取码:b9x8 解压密码:123456 1.创建项目 略 2.原理图设计环境设置 2.1设置 默认网格尺寸&#…

阿里云云效 流水线发布spring cloud项目及Vue项目

1. 单体spring boot 项目流水线主机部署 1.1 创建流水线 页面地址 我们选择模板,当然也可以自己新建一个 1.2 添加流水线源 这里是根据自己的代码仓库决定的,我用的gitee,需要添加服务连接 添加服务连接 新建服务授权/证书 点击新建自动跳转至gitee认证页面,同意授权即可 授权…

网安等保 | 主机安全之KylinOS银河麒麟服务器配置优化与安全加固基线文档脚本分享...

欢迎关注「全栈工程师修炼指南」公众号 点击 👇 下方卡片 即可关注我哟! 设为「星标⭐」每天带你 基础入门 到 进阶实践 再到 放弃学习! “ 花开堪折直须折,莫待无花空折枝。 ” 作者主页:[ https://www.weiyigeek.top ] 博客&…

线程不安全举例

1、举例说明集合类线程不安全 &#xff08;1&#xff09;查看源码可证明 看ArrayList源码 没有sync、lock&#xff0c;线程不安全 &#xff08;2&#xff09;创建多个线程写入读取数据 List<String> list new ArrayList<>(); for (int i 1; i <30 ; i) {n…

2023年Web安全学习路线总结!430页Web安全学习笔记(附PDF)

关键词&#xff1a;网络安全入门、渗透测试学习、零基础学安全、网络安全学习路线、web安全攻防笔记、渗透测试路线图 网络安全的范畴很大&#xff0c;相较于二进制安全等方向的高门槛、高要求&#xff0c;Web安全体系比较成熟&#xff0c;在现阶段来看&#xff0c;但凡有自己…

k8s下安装redis

一、使用helm安装redis 执行以下命令添加redis的repo helm repo add bitnami https://charts.bitnami.com/bitnami 创建的master和replica pod的默认size是8Gi&#xff0c;如果k8s的node没有足够的空间&#xff0c;会抛出如下错误&#xff1a;default-scheduler 0/3 nodes …

安全防御 --- SSL VPN

附&#xff1a;无线项目介绍 SSL VPN 有浏览器的设备就可以使用SSL&#xff0c;进而使用SSL VPN。无需担心客户端问题&#xff0c;所以SSL VPN也称为无客户端VPN。SSL VPN在client to lan场景下特别有优势。 实际实现过程&#xff08;基于TCP实现&#xff09; &#xff08;1&…

Nginx SSL使用自制证书

1. 生成证书 keytool -genkey -v -alias <Alias别名> -keyalg RSA -keystore <KeyStore文件> -validity <有效期> keytool -genkey -v -alias nginx -keyalg RSA -keystore nginx.keystore -validity 36500 alias别名为 nginxkeystore文件为 nginx.keystore…

C/C++内存管理(内存分布、动态内存分配、动态内存分配与释放、内存泄漏等)

喵~ 内存之5大区&#xff08;栈区、堆区、静态区、常量区、代码区&#xff09;C/C中各自的内存分配操作符内存泄露?内存泄漏检测方法 内存之5大区&#xff08;栈区、堆区、静态区、常量区、代码区&#xff09; 1、栈区&#xff08;stack&#xff09;&#xff1a;由编译器自动分…

避雷投稿!这3本SCIE期刊处于On Hold状态!有剔除风险!

今年3月份科睿唯安剔除的大量期刊中&#xff0c;有几本期刊之前被WOS数据库标记为“On Hold”状态&#xff0c;后面也出现了一些期刊解除“On Hold”状态的情况。 目前&#xff0c;WOS数据库查询有3本SCIE期刊正处于“On Hold”状态&#xff0c;这是什么信号呢&#xff1f;对于…

org.apache.thrift.transport.TTransportException: GSS initiate failed

hive配置kerberos發現錯誤&#xff0c;就所有的配置都配好了&#xff0c;但是使用datagrip連接hive時報錯如下&#xff1a; org.apache.thrift.transport.TTransportException: GSS initiate failed 後面是沒有認證的原因&#xff0c;使用kinit 認證即可 還有一種情況是 我使…

7.1下周黄金非农数据是否会影响美联储七月暂停加息?

近期有哪些消息面影响黄金走势&#xff1f;下周黄金多空该如何研判&#xff1f; ​黄金消息面解析&#xff1a;周五(6月30日)&#xff0c;现货黄金价格收盘上涨&#xff0c;盘中一度升破1920美元关口。美国疲软的个人消费支出推动了美国国债收益率的下降&#xff0c;从而导致美…

libevent实践04:监听管道第二季

一 本次实例使用函数简介 事件集合初始化&#xff1a; struct event_base *event_init(void); 示例&#xff1a; struct event_base *base event_init(); 单个事件初始化 void event_set(struct event *ev, evutil_socket_t fd, short events,void (*callback)(evutil_s…

两小时快速入门 TypeScript 基础(二)面向对象

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;也会涉及到服务端&#xff08;Node.js 等&#xff09; &#x1f4c3;个人状态&#xff1a; 2023届本科毕业生&#xff0c;已拿多个前端 offer&#x…

【实战】 二、React 与 Hook 应用:实现项目列表 —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(二)

文章目录 一、项目起航&#xff1a;项目初始化与配置二、React 与 Hook 应用&#xff1a;实现项目列表1.新建文件2.状态提升3.新建utils4.Custom Hook 学习内容来源&#xff1a;React React Hook TS 最佳实践-慕课网 相对原教程&#xff0c;我在学习开始时&#xff08;2023.0…

【每天40分钟,我们一起用50天刷完 (剑指Offer)】第十二天 12/50

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

服务运营|MS 论文解读:MIR 增强的Benders 分解用于具有到达率不确定性的多类服务系统人员调度问题

推文作者&#xff1a;王畅&#xff0c;蔡君洋&#xff0c;Guo 编者按 劳动力调度是服务系统运营的一个重要应用场景&#xff0c;当系统中的服务集和客户集异构且客户到达率不确定时&#xff0c;劳动力调度问题会变得特别复杂。本文因此引入了一个两阶段的随机整数规划模型&…