当前位置: 首页 > news >正文

【STM32F1】——舵机角度控制与TIM定时器

【STM32F1】——舵机角度控制与TIM定时器

一、简介

本篇主要对舵机DS-S002M模块调试过程进行总结,实现了以下功能:

1)舵机转动角度的控制:利用STM32F103C8T6的TIM定时器产生PWM信号控制舵机DS-S002M转动一定的角度。

二、DS-S002M数字舵机介绍

  1. 电压:4.8-6.0V
  2. 操作角度:180°
  3. 质量:5.8g
  4. 信号周期:20ms
  5. 脉冲宽度:500-2500us(0.5-2.5ms)
  6. 数字舵机/模拟舵机:数字舵机只需要发一次信号,模拟舵机需要持续发信号

三、相关基础知识

  1. 舵机控制原理

    向舵机发送一个时长为20ms的PWM信号,其高电平持续时间0.5 ~ 2.5ms,即所谓的占空比可以对应控制转角转动0 ~ 180°,即PWM的占空比决定舵机转角

  1. 信号基础——时钟周期与分频

    1)一般,STM32单片机的系统时钟Sys_tck = 72MHz(1MHz = 1 0 6 10^6 106 Hz),即将1秒分成7200万份,作为时基。在实际使用时,对Sys_tck进行切分,即分频。如采用7200分频(PSC=7200-1),即时基为0.01MHz,每份约0.1ms

    2)STM32单片机的最大分频数为65536

    3)为什么是PSC=分频数-1,是因为计算机是从0开始计数的。

  2. 如何产生PWM信号

    1)PWM波的产生需要两个因素:高低电平跳变+控制高低电平持续时间

    2)单片机中,PWM波的产生可以依靠定时器来实现

  3. 定时器——如何构造高低电平跳变:利用循环计数器自动复位计数

    1)STM32单片机的定时器本质上就是循环计数器,由一些寄存器构成。其中最重要的是计数寄存器CK_CNT和自动重载寄存器ARR

    2)对计数寄存器CK_CNT来说,时钟前进一下,其存储的数值自动加一或减一

    3)对自动重载寄存器ARR来说,相当于储存一个上限值。当CK_CNT大于ARR时,计数寄存器CK_CNT会自动复位重新循环计数。如果设置了中断时,还会触发对应的中断

    4)计数模式分为向上(0→ARR)、向下(ARR→0)、中心对齐(0→ARR→0)

  1. 定时器——如何控制高低电平持续时间:通过比较寄存器控制高电平持续时间

    从上面的内容我们可以看出:依靠循环计数器,可以实现跳变,但不能将间隔分成前后两端。如果在循环计数中,增加一个比较寄存器CCR,在计数器更新时与CCR比较,并输出比较的结果便可实现。当 0 < CK_CNT < CCR时,输出高电平,而CCR < CK_CNT < ARR时输出低电平,便实现了控制高低电平的持续时间。

  2. 定时器ARR和PSC的配置

    1)最重要的是定时器周期TIM_Period(ARR)和分频数TIM_Prescaler(PSC),两者之间存在确定的关系,可以表示为:PWM信号的周期(20ms)

    = ( A R R − 1 ) ∗ 时基 = ( A R R − 1 ) ∗ ( P S C − 1 ) / Sys_tck = (ARR-1) * \text{时基} = (ARR-1) * (PSC-1) / \text{Sys\_tck} =<

相关文章:

【STM32F1】——舵机角度控制与TIM定时器

【STM32F1】——舵机角度控制与TIM定时器 一、简介 本篇主要对舵机DS-S002M模块调试过程进行总结,实现了以下功能: 1)舵机转动角度的控制:利用STM32F103C8T6的TIM定时器产生PWM信号控制舵机DS-S002M转动一定的角度。 二、DS-S002M数字舵机介绍 电压:4.8-6.0V操作角度:…...

想要成为独立游戏作者 :通关!游戏设计之道 2-1 HUD

HUD特指显示屏幕上的信息&#xff0c;在是UI的子集&#xff0c;UI是一个游戏中虽有的交互元素的总称 本文用了大量ai总结 &#xff0b; 个人微调&#xff0c;不喜勿喷&#xff0c;前篇如下想要成为独立游戏作者 &#xff1a;通关&#xff01;游戏设计之道 1-4 操作篇-C…...

sql专题 之 三大范式

文章目录 背景范式介绍第一范式&#xff1a;属性不可再分第二范式第三范式注意事项 为什么不遵循后续的范式数据库范式在实际应用中会遇到哪些挑战&#xff1f; 背景 数据库的范式&#xff08;Normal Form&#xff09;是一组规则&#xff0c;用于设计数据库表结构以 减少数据冗…...

node.js安装和配置教程

软件介绍 Node.js是一个免费的、开源的、跨平台的JavaScript运行时环境&#xff0c;允许开发人员在浏览器之外编写命令行工具和服务器端脚本。 Node.js是一个基于Chrome JavaScript运行时建立的一个平台。 Node.js是一个事件驱动I/O服务端JavaScript环境&#xff0c;基于Goo…...

定时器输入捕获实验配置

首先&#xff0c;第一个时基工作参数配置 HAL_TIM_IC_Init( ) 还是一样的套路&#xff0c;传参是一个句柄&#xff0c;先定义一个结构体 Instance&#xff1a;指向TIM_TypeDef的指针&#xff0c;表示定时器的实例。TIM_TypeDef是一个包含了定时器寄存器的结构体&#xff0c;用…...

【C/C++】memcpy函数的使用

零.导言 当我们学习了strcpy和strncpy函数后&#xff0c;也许会疑惑整形数组要如何拷贝&#xff0c;而今天我将讲解的memcpy函数便可以拷贝整形数组。 一.memcpy函数的使用 memcpy函数是一种C语言内存函数&#xff0c;可以按字节拷贝任意类型的数组&#xff0c;比如整形数组。 …...

spring-security(两种权限控制方式)

案例(写死的用户密码) package com.zking.security.service;import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.AuthorityUtils; import org.springframework.security.core.userdetails.User; import org.sp…...

【mongodb】数据库的安装及连接初始化简明手册

NoSQL(NoSQL Not Only SQL )&#xff0c;意即"不仅仅是SQL"。 在现代的计算系统上每天网络上都会产生庞大的数据量。这些数据有很大一部分是由关系数据库管理系统&#xff08;RDBMS&#xff09;来处理。 通过应用实践证明&#xff0c;关系模型是非常适合于客户服务器…...

【科普】卷积、卷积核、池化、激活函数、全连接分别是什么?有什么用?

概念定义作用/用途解释举例卷积 (Convolution)是一种数学操作&#xff0c;通过在输入数据&#xff08;如图片&#xff09;上滑动卷积核&#xff0c;计算局部区域的加权和。提取数据中的局部特征&#xff0c;例如边缘、角点等。卷积就像在图片上滑动一个小的窗口&#xff0c;计算…...

距离向量路由选择协议和链路状态路由选择协议介绍

距离向量路由选择协议&#xff08;Distance Vector Routing Protocol&#xff09;和链路状态路由选择协议&#xff08;Link-State Routing Protocol&#xff09;是两种主要的网关协议&#xff0c;它们用于在网络内部选择数据传输的最佳路径。下面分别介绍这两种协议&#xff1a…...

【AI大模型】大型语言模型LLM基础概览:技术原理、发展历程与未来展望

目录 &#x1f354; 大语言模型 (LLM) 背景 &#x1f354; 语言模型 (Language Model, LM) 2.1 基于规则和统计的语言模型&#xff08;N-gram&#xff09; 2.2 神经网络语言模型 2.3 基于Transformer的预训练语言模型 2.4 大语言模型 &#x1f354; 语言模型的评估指标 …...

ubuntu 22.04 server 安装 和 初始化 LTS

ubuntu 22.04 server 安装 和 初始化 下载地址 https://releases.ubuntu.com/jammy/ 使用的镜像是 ubuntu-22.04.5-live-server-amd64.iso usb 启动盘制作工具 https://rufus.ie/zh/ rufus-4.6p.exe 需要主板 支持 UEFI 启动 Ubuntu22.04.4-server安装 流程 https://b…...

大数据机器学习算法与计算机视觉应用03:数据流

Data Stream Streaming ModelExample Streaming QuestionsHeavy HittersAlgorithm 1: For Majority elementMisra Gries AlgorithmApplicationsApproximation of count Streaming Model 数据流模型 数据流就是所有的数据先后到达&#xff0c;而不是同时存储在内存之中。在现…...

【代码随想录day25】【C++复健】491.递增子序列;46.全排列;47.全排列 II;51. N皇后;37. 解数独

491.递增子序列 本题做的时候除了去重逻辑之外&#xff0c;其他的也勉强算是写出来了&#xff0c;不过还是有问题的&#xff0c;总结如下&#xff1a; 1 本题的关键&#xff1a;去重 与其说是不知道用什么去重&#xff0c;更应该说是完全没想到本题需要去重&#xff0c;说明…...

AI智能识物(微信小程序)

AI智能识物&#xff0c;是一款实用的小程序。可以拍照智能识物&#xff0c;可识别地标、车型、花卉、植物、动物、果蔬、货币、红酒、食材等等&#xff0c;AI智能技术识别准确度高。 更新说明&#xff1a; 此源码为1.2.0版本。 主要更新内容&#xff1a;新增security.imgSec…...

游戏引擎学习第三天

视频参考:https://www.bilibili.com/video/BV1XTmqYSEtm/ 之前的程序不能退出&#xff0c;下面写关闭窗体的操作 PostQuitMessage 是 Windows API 中的一个函数&#xff0c;用于向当前线程的消息队列发送一个退出消息。其作用是请求应用程序退出消息循环&#xff0c;通常用于处…...

帝国CMS7.5仿模板堂柒喜模板建站网 素材资源下载站源码

环境要求&#xff1a;phpmysql、支付伪静态 本套模板采用帝国cms7.5版UTF-8开发&#xff0c;一款非常不错的高端建站源码模板&#xff0c; 适用于中小型网络建站工作室源码模板下载站&#xff0c;支持自定义设置会员组。 源码下载&#xff1a;https://download.csdn.net/down…...

聊一聊Spring中的自定义监听器

前言 通过一个简单的自定义的监听器&#xff0c;从源码的角度分一下Spring中监听的整个过程&#xff0c;分析监听的作用。 一、自定义监听案例 1.1定义事件 package com.lazy.snail;import lombok.Getter; import org.springframework.context.ApplicationEvent;/*** Class…...

【王木头】最大似然估计、最大后验估计

目录 一、最大似然估计&#xff08;MLE&#xff09; 二、最大后验估计&#xff08;MAP&#xff09; 三、MLE 和 MAP 的本质区别 四、当先验是均匀分布时&#xff0c;MLE 和 MAP 等价 五、总结 本文理论参考王木头的视频&#xff1a; 贝叶斯解释“L1和L2正则化”&#xff…...

智谱AI视频生成模型CogVideoX v1.5开源 支持5/10秒视频生成

今日&#xff0c;智谱技术团队发布了其最新的视频生成模型 CogVideoX v1.5&#xff0c;并将其开源。这一版本是自8月以来&#xff0c;智谱技术团队推出的 CogVideoX 系列中的又一重要进展。 据了解&#xff0c;此次更新大幅提升了视频生成能力&#xff0c;包括支持5秒和10秒的视…...

安全测试人员必备:手把手教你用WePE+Ghost镜像在VMware里快速部署Win7靶机环境

安全测试人员必备&#xff1a;手把手教你用WePEGhost镜像在VMware里快速部署Win7靶机环境 在网络安全学习和渗透测试领域&#xff0c;拥有一个随时可用的标准化测试环境至关重要。对于刚入门的安全研究员、白帽子或需要进行漏洞复现的技术人员来说&#xff0c;Windows 7系统仍然…...

告别报错!保姆级教程:在PyCharm 2023.3上完美安装ManimCE(附国内镜像加速)

在PyCharm 2023.3中零失败安装ManimCE的终极指南 当数学可视化遇上Python&#xff0c;ManimCE无疑是当前最强大的工具之一。但对于许多开发者来说&#xff0c;从环境配置到成功运行第一个动画&#xff0c;这段旅程往往充满坎坷。本文将彻底解决安装过程中的所有痛点&#xff0c…...

SSD硬件加密性能无损?十年调查揭示五大认知误区与实战指南

1. 项目概述&#xff1a;一次关于SSD认知误区的深度调查最近在整理资料时&#xff0c;翻到了一篇2014年来自EE Times的旧文&#xff0c;内容是关于存储网络行业协会&#xff08;SNIA&#xff09;发起的一项固态硬盘&#xff08;SSD&#xff09;用户调查。虽然时间过去近十年&am…...

企业如何通过Taotoken实现API Key的统一管理与审计

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 企业如何通过Taotoken实现API Key的统一管理与审计 在将大模型能力集成到企业业务流程的过程中&#xff0c;一个常见的挑战是如何安…...

工程师创意竞赛全流程策划:从社区激活到公平投票的实战指南

1. 项目概述&#xff1a;一场别开生面的工程师创意竞赛又到了二月底&#xff0c;这意味着我们年初启动的那个“独轮车”图片配文竞赛&#xff0c;终于要进入最激动人心的投票环节了。我记得很清楚&#xff0c;那是2012年2月初&#xff0c;编辑部觉得冬天太沉闷&#xff0c;想找…...

新手避坑指南:用Virtuoso和Calibre做DRC/LVS检查时,IO Pad和电源连接的那些坑

数字后端验证实战&#xff1a;Virtuoso与Calibre中的DRC/LVS避坑指南 第一次用Virtuoso和Calibre做DRC/LVS检查的新手工程师&#xff0c;往往会在IO Pad和电源连接上栽跟头。这些看似基础的问题&#xff0c;轻则导致验证失败&#xff0c;重则影响芯片功能。本文将结合SIMC 0.18…...

Audacity音频编辑完全手册:从零开始制作专业音频作品

Audacity音频编辑完全手册&#xff1a;从零开始制作专业音频作品 【免费下载链接】audacity Audio Editor 项目地址: https://gitcode.com/GitHub_Trending/au/audacity 想制作播客却不知道如何剪辑&#xff1f;需要为视频添加背景音乐但找不到合适的工具&#xff1f;或…...

Agent 工程化系列 · 第 05 篇_FunctionCall底层到底怎么实现

Agent 工程化系列 第 05 篇 Function Call 底层到底怎么实现&#xff1f;模型不是在调用函数&#xff0c;而是在生成调用意图。开篇定位 前面第 04 篇&#xff0c;我们讲清楚了 Function Call 是什么&#xff1a; 它不是让大模型“真的去执行函数”&#xff0c;而是让模型在合…...

构建本地化X内容智能引擎:从数据捕获到AI辅助创作的全流程实践

1. 项目概述&#xff1a;打造你的本地X内容智能引擎 如果你和我一样&#xff0c;每天花大量时间在X&#xff08;原Twitter&#xff09;上&#xff0c;不是为了刷屏&#xff0c;而是为了工作——寻找灵感、分析趋势、构思内容&#xff0c;那你一定体会过那种“信息过载”与“灵…...

AI智能体集成Telegram:双模式MCP服务器原理与实战部署

1. 项目概述 如果你正在为你的AI助手&#xff08;比如Claude、Cursor的Composer&#xff0c;或者其他支持MCP协议的智能体&#xff09;寻找一个功能强大、接入灵活的Telegram集成方案&#xff0c;那么你很可能已经厌倦了那些功能单一、配置复杂的传统机器人框架。今天要聊的这…...