【STM32智能车】电机控制

【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,Timercs = 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.hqwc.cn/news/3156.html

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

相关文章

2022前端趋势报告(下)

前端博主,热衷各种前端向的骚操作,经常想到哪就写到哪,如果有感兴趣的技术和前端效果可以留言~博主看到后会去代替大家踩坑的~ 主页: oliver尹的主页 格言: 跌倒了爬起来就好~ 一、前言 本文内容来自于《St…

go 调试利器之pprof指标分析

文章目录 概要一、指标类型1.1、堆栈指标1.2、CPU指标分析1.3、http-pprof 二、go tool pprof2.1、可视化2.2、CPU火焰图 概要 Go语言原生支持对于程序运行时重要指标或特征进行分析。pprof是其中一种重要的工具,其不仅可以分析程序运行时的错误(内存泄…

html5前端学习2

一篇思维题题解: 第五周任务 [Cloned] - Virtual Judge (vjudge.net) http://t.csdn.cn/SIHdM 快捷键: CtrlAltDown 向下选取 CtrlAltUp 向上选取(会出现多个光标,可以同时输入) CtrlEnter …

24个Jvm面试题总结及答案

1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。 Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每…

html实现多种风格的时间轴(附源码)

文章目录 1.设计来源1.1 对称风格时间轴1.2 横向风格时间轴1.3 回忆风格时间轴1.4 记事风格时间轴1.5 简易风格时间轴1.6 科技风格时间轴1.7 列表风格时间轴1.8 跑道风格时间轴1.9 人物风格时间轴1.10 容器风格时间轴1.11 沙滩风格时间轴1.12 双边风格时间轴1.13 图文风格时间轴…

基于原生 js 实现今日新闻网站

完整资料进入【数字空间】查看——baidu搜索"writebug" 一、今日新闻网站设计报告 1.1 1 设计思路 该网站设计大部分都是基于原生 js 实现。基本思想为首先将基本的页面架构包括 header,导航条写好。之后根据后台 PHP 请求接口请求返回 JSON 格式数据后…

【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)

文章目录 1. Linux背景1.1 发展史1.2 开源精神1.3 官网1.4 企业应用现状1.5 发行版本1.6 os概念,定位 2. Linux下基本指令2.1 几个常用基本命令演示2.2 某些概念的解释2.3 ls 指令2.4 pwd 指令2.5 cd 指令Linux的目录结构绝对路径与相对路径cd 常用快捷命令 2.6 tou…

30_小驰私房菜_qcom根据关键日志信息,快速排查问题

根据关键日志信息,能帮忙我们快速的定位和分析问题。是一项必须得掌握的技能。 一、查看当前是哪个app调用的相机 logcat 关键字“CameraService::connect” 如下面日志打印所示,我们还可以看到是调用的Camera API 1还是Camera API 2. 二、查看配流情况 1) qcom 平台 …

一套A股量化系统

shares A 股量化交易系统后台开发语言 Go/Python gmsec算法使用:pytorch全链路量化,行业板块分析,直接贴图。欢迎体验

12 | 领域建模:如何用事件风暴构建领域模型?

目录 事件风暴需要准备些什么? 1. 事件风暴的参与者 2. 事件风暴要准备的材料 3. 事件风暴的场地什么样的场地适合做事件风暴呢? 4. 事件风暴分析的关注点 如何用事件风暴构建领域模型? 1. 产品愿景 2. 业务场景分析 3. 领域建模 4…

HashSet、LinkedHashSet、TreeSet有什么区别

- HashSet、LinkedHashSet 和 TreeSet 都是 Set接口的实现类,都能保证元素唯一,并且都不是线程安全的。HashSet 的底层数据结构是哈希表(基于 HashMap 实现),元素存入和取出顺序不一致。LinkedHashSet 的底层数据结构…

Java Servlet 技术

一、Servlet 简介 Servlet 是 JavaEE 的规范之一,通俗的来说就是 Java 接口,将来我们可以定义 Java 类来实现这个接口,并由 Web 服务器运行 Servlet ,所以 TomCat 又被称作 Servlet 容器。 Servlet 提供了动态 Web 资源开发技术…