STM32单片机模拟量脉冲调速的STM32Cube配置

2023-11-21 05:20

本文主要是介绍STM32单片机模拟量脉冲调速的STM32Cube配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

STM32单片机模拟量脉冲调速的STM32Cube配置

有些时候我们需要伺服电机以速度模式运行。当伺服电机以速度模式运行时最优选的方式自然是通过伺服驱动器自身的模拟量输入来进行调速。但是一些伺服驱动器本身不带有模拟量输入,此时我们可以用单片机制作一个建议的模拟量脉冲调速装置——通过单片机来接收模拟量信号,然后根据模拟量的不同来调节输出脉冲的频率,以此来实现对伺服电机的模拟量调速控制。

要实现上述的功能,主要需要单片机进行1ADC、2脉冲输出。为了实现这两个功能,下面将简略对这两个功能进行解释并简略介绍STM32Cube的相应配置。

ADC

ADC是Analog-to-digital converter的缩写,直译为模数转换。它的作用是将模拟量(通常由电压形式表达)转换为可以数字处理的数字量的过程。
而上面提到的模拟量是指变量在一定范围连续变化的量,比如一个在0V到5V之间变化的电压。模拟量与数字量最大的区别在于模拟量是“连续的”、而数字量是“阶跃的”。一个模拟量可以从一个值连续的变为另一个值,就好像给游泳池加水的时候水面一点点的由低到高。而数字量是非连续的,它的相邻值之间存在最小的差,它的变化是阶跃的,非连续的。
对于单片机来说,其内部的运算都是数字式的,所以对于外界的模拟量必须先经过ADC将其转换为相应的数字量单片机才能进一步进行处理。

STM32单片机的ADC配置

在此以STM32F103C8T6为例:该单片机有两个ADC——ADC1,ADC2,每一个ADC又有多个通道。我们可以选择第一个ADC的第一个通道如下图(展开Analog页——选择ADC1——选中IN0)。
在这里插入图片描述

脉冲

脉冲的标准定义实际上一种比较广义的定义,像方波,突变的电压信号等等等都可以算作脉冲。
但在伺服控制中,脉冲特指方波信号。例如接收脉冲控制的伺服驱动器就是通过特定的IO阵脚接收外界的方波脉冲来确定伺服系统的目标位置的。对于单片机来说,产生一个脉冲的实质就是将IO的输出电平进行切换。例如GPIO的PA0引脚将电平从GND抬升到VDD然后又下拉至GND就是产生了一个脉冲信号。

STM32单片机GPIO的配置

既然我们要产生脉冲的输出,显然需要有对应的GPIO作为输出,但除了这个输出我们还需要输入引脚来引入信号以让单片机获得“正转、反转、停止”的命令。除此之外,因为涉及到电机的正反转,所以必然要使用到伺服驱动器的方向针脚,所以GPIO除了一个作为脉冲输出的输出引脚外还需要一个作为方向输出的输出引脚。
在这里我们选择PA3、PA4、PA5作为输入,其分别代表“正转”、“反转”、“停止”信号;PA6、PA7作为输出,其分别用作产生“脉冲”和“方向”信号。
我们可以在STM32Cube的Pinout view界面选择这几个引脚并根据需要选择为“GPIO_INPUT”、“GPIO_OUTPUT”如下图。
在这里插入图片描述

考虑到输入信号的抗干扰性(实际现场往往有干扰信号,尤其是伺服驱动器本身会产生大量的谐波和射频干扰),我们常常采用上拉/下拉电阻来增强抗干扰性。我们可以展开System Core页——选择GPIO——然后将各个GPIO进行相应的配置。在这里,我们选择将PA3、PA4、PA5配置为内部下拉——选择“Pull-down”。在下拉模式下,当没有具体输入时引脚的值将一直为0。
在这里插入图片描述

时钟

时钟是单片机的核心,单片机内的各种功能都是按照时钟来运行的,所以我们需要对时钟进行必要的配置。

由于在进行试验的时候使用的是STM32F103C8T6最小系统板,该电路板上装有8MHz的晶振作为外部高速时钟(HSE)。所以我们在配置时钟时先展开System Core页——选择RCC——选择HSE为“Crystal”。
在这里插入图片描述

STM32单片机的时钟配置

配置可以按照下图进行。
在这里插入图片描述

计时器

单片机内部有多个计时器,计时器在被开启后会根据配置按照计时器时钟进行加减计数,在计数达到后便可以触发特定中断。由此,通过计时器中断方式我们可以较为精确的进行特定动作。

我们要发送脉冲实际上需要考虑伺服驱动器的接收能力,如果单片机发送的脉冲频率大于驱动器的接收频率,驱动器的运行将与实际发送的脉冲偏离。所以我个人并不推荐通过函数或写寄存器的方式拉高电平后马上拉低来产生脉冲的方式。

↓这是不推荐的方式,这种方式的脉冲频率非常高,以至于伺服驱动器无法正确获得脉冲数。

HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_RESET);

一种改进的方式是在拉高电平后通过一个延时再拉低电平。但是这种方式降低了单片机CPU的运行效率(大量用于延时的无效运算),故也是不推荐的,但是这种方式本身的确是可以正常运行的。

↓该方式亦不推荐,但伺服可以正常接收脉冲

HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET);
for(int i=0;i<65530;i++);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_RESET);

在此推荐的脉冲方式为通过计时器中断来产生脉冲。即配置计时器按照一定频率运行,在不需要发送脉冲时,计时器中断触发后完全不进行电平操作;而当需要发送脉冲时,计时器中断触发后进行电平反转。通过这样的方式正常产生脉冲的同时又防止了CPU的大量算力用于延时计算。

STM32单片机的计时器配置

在这里我们使用TIM4计时器,配置上展开Timers页——选择TIM4——选中“Internal Clock”来激活TIM4的进一步配置。在Parameter Setting里修改Prescaler为71,修改Counter Period为99,以产生10kHz的计时器中断。操作完成后需要在NVIC Setting内勾选计时器中断。
在这里插入图片描述

至此,整个前期配置就基本完成了。后续的编程思路为——计时器中断每次触发时,通过
ADC获得电位器读数,通过该读数来影响脉冲频率;当需要发送脉冲时,中断中对PA6的电平进行改变。除此之外中断中还设置有案件的判断等功能。具体程序可由下面链接下载。

ADC控制脉冲频率程序

这篇关于STM32单片机模拟量脉冲调速的STM32Cube配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/400073

相关文章

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

Nginx 重写与重定向配置方法

《Nginx重写与重定向配置方法》Nginx重写与重定向区别:重写修改路径(客户端无感知),重定向跳转新URL(客户端感知),try_files检查文件/目录存在性,return301直接返回永久重... 目录一.try_files指令二.return指令三.rewrite指令区分重写与重定向重写: 请求

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Maven 配置中的 <mirror>绕过 HTTP 阻断机制的方法

《Maven配置中的<mirror>绕过HTTP阻断机制的方法》:本文主要介绍Maven配置中的<mirror>绕过HTTP阻断机制的方法,本文给大家分享问题原因及解决方案,感兴趣的朋友一... 目录一、问题场景:升级 Maven 后构建失败二、解决方案:通过 <mirror> 配置覆盖默认行为1. 配置示