OpenMV输出PWM,实现对舵机控制
创始人
2024-02-18 00:56:23
0

OpenMV的定时器官方函数介绍:Timer类 – 控制内部定时器

目录

OpenMV的PWM资源介绍

为什么要用OpenMV输出PWM

OpenMV的PWM资源分配

资源

注意 

建议

PWM输出代码

代码讲解

Timer

Timer.channel

tim.channel与Timer.channel区别

Timer.channel解析


OpenMV的PWM资源介绍

为什么要用OpenMV输出PWM

OpenMV有9个外接IO可以供我们使用,很多时候我们只是把OpenMV当成一个图像识别的工具,这样并没有充分利用他的资源。

OpenMV的9个IO口中6个可以输出PWM,而且控制方法特别简单。在我们进行比赛过程中,可能要对物块进行颜色识别并且抓取,我比较推荐使用OpenMV做出颜色识别之后,控制机械臂抓取物体。这样减少了主控的负担,充分利用了资源。由于OpenMV的PWM输出极其简单,也减少了工作量。

注意:我们这里只会讲解输出PWM的部分,关于OpenMV的定时器编码器模式,比较模式和捕获模式需要自行研究

OpenMV的PWM资源分配

资源

OpenMV的PWM资源如下

注意 

定时器1不能作为PWM输出口,在官方文档里面说了定时器(1)用于摄像头,所以不能动用定时器1。

 如果我们动用了定时器1,会报错

建议

因为我们只能使用6个IO输出PWM,然后P4P5是要用于与主控进行串口通讯的。所以刚好可以使用4个PWM输出,正好可以使用四轴机械臂。如果机械臂多于4个舵机,慎用!!!

PWM输出代码

OpenMV其实就是一个STM32的单片机,相信绝大多数打比赛的人都是使用的STM32F103进行的入门学习。我们都知道,STM32可以进行硬件PWM的输出,他的1个定时器有4个通道。每个通道都能输出PWM。OpenMV亦是如此。

# PWM 控制例子
#
# 这个例子展示了如何使用OpenMV的PWMimport time
from pyb import Pin, Timertim = Timer(4, freq=50) #设置频率,初始化定时器4,将其设置为50HZ,也就是说一个PWM周期为20ms
Tim = Timer(2, freq=50) #设置频率,初始化定时器2,将其设置为50HZ,也就是说一个PWM周期为20ms# 生成50HZ方波,使用TIM4,channels 1,2,3分别是 5% , 10% ,15占空比。
tim.channel(1, Timer.PWM, pin=Pin("P7"), pulse_width_percent=5)
tim.channel(2, Timer.PWM, pin=Pin("P8"), pulse_width_percent=10)
tim.channel(3, Timer.PWM, pin=Pin("P9"), pulse_width_percent=15)# 生成50HZ方波,使用TIM2,channel  1,2,3分别是 20% , 25% ,30占空比。
Tim.channel(1, Timer.PWM, pin=Pin("P6"), pulse_width_percent=20)
Tim.channel(4, Timer.PWM, pin=Pin("P5"), pulse_width_percent=25)
Tim.channel(3, Timer.PWM, pin=Pin("P4"), pulse_width_percent=30)while (True):time.sleep_ms(1000)

代码讲解

Timer

tim = Timer(4, freq=50) #设置频率,初始化定时器4,将其设置为50HZ,也就是说一个PWM周期为20ms
Tim = Timer(2, freq=50) #设置频率,初始化定时器2,将其设置为50HZ,也就是说一个PWM周期为20ms

(1)我们看这个代码很简单,就是说,现在定时器4的PWM输出频率为50HZ。

(2)什么是HZ,1HZ表示1S变化一次,如果是50HZ,表示1S变化50次,1/50s=20ms。那么现在一个PWM周期为20ms

(3)现在对tim的控制,就是对以50HZ跳变的定时器4控制。Tim是对以50HZ跳变的定时器2控制。

Timer.channel

tim.channel与Timer.channel区别

因为之前tim = Timer(4, freq=50),那么现在tim就是Timer类,通俗来说现在tim就是Timer。而tim.channel现在就可以理解为Timer.channel。同理Tim.channel可以理解为Timer.channel。

Timer.channel解析

我们只讲PWM有关部分!

我们先看官方手册的解释:

 (1)这个表明,我们必须传入通道变量channel。这个值可以是如下:

1  //通道1
2  //通道2
3  //通道3

(2)之后还可以传入参数mode。 可选参数有多个,我只讲PWM部分!

Timer.PWM            // 配置PWM模式下的定时器(高电平有效)
Timer.PWM_INVERTED   //配置PWM模式下的定时器(低电平有效)

(3)callback ,这个是设置定时器中断里面的函数的。不用管他

与PWM无关,不解释。想了解的自行学习!

(4) pin ,设置PWM输出我引脚。比如我想让定时器2的通道3输出PWM,就写成pin=Pin("P4")。大写字母P。

个人建议使用pulse_width_percent因为这样可以直观的设置占空比是多少。比如我们要设置占空比为50%,就可以写成pulse_width_percent=50;

pulse_width            //决定使用的初始脉宽值。
pulse_width_percent    //决定使用的初始脉宽值百分比。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...