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

相关文章

VScode连接远程Linux服务器环境配置图文教程

《VScode连接远程Linux服务器环境配置图文教程》:本文主要介绍如何安装和配置VSCode,包括安装步骤、环境配置(如汉化包、远程SSH连接)、语言包安装(如C/C++插件)等,文中给出了详... 目录一、安装vscode二、环境配置1.中文汉化包2.安装remote-ssh,用于远程连接2.1安装2

Redis多种内存淘汰策略及配置技巧分享

《Redis多种内存淘汰策略及配置技巧分享》本文介绍了Redis内存满时的淘汰机制,包括内存淘汰机制的概念,Redis提供的8种淘汰策略(如noeviction、volatile-lru等)及其适用场... 目录前言一、什么是 Redis 的内存淘汰机制?二、Redis 内存淘汰策略1. pythonnoe

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个

windos server2022里的DFS配置的实现

《windosserver2022里的DFS配置的实现》DFS是WindowsServer操作系统提供的一种功能,用于在多台服务器上集中管理共享文件夹和文件的分布式存储解决方案,本文就来介绍一下wi... 目录什么是DFS?优势:应用场景:DFS配置步骤什么是DFS?DFS指的是分布式文件系统(Distr

关于Maven中pom.xml文件配置详解

《关于Maven中pom.xml文件配置详解》pom.xml是Maven项目的核心配置文件,它描述了项目的结构、依赖关系、构建配置等信息,通过合理配置pom.xml,可以提高项目的可维护性和构建效率... 目录1. POM文件的基本结构1.1 项目基本信息2. 项目属性2.1 引用属性3. 项目依赖4. 构

龙蜥操作系统Anolis OS-23.x安装配置图解教程(保姆级)

《龙蜥操作系统AnolisOS-23.x安装配置图解教程(保姆级)》:本文主要介绍了安装和配置AnolisOS23.2系统,包括分区、软件选择、设置root密码、网络配置、主机名设置和禁用SELinux的步骤,详细内容请阅读本文,希望能对你有所帮助... ‌AnolisOS‌是由阿里云推出的开源操作系统,旨

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

gradle安装和环境配置全过程

《gradle安装和环境配置全过程》本文介绍了如何安装和配置Gradle环境,包括下载Gradle、配置环境变量、测试Gradle以及在IntelliJIDEA中配置Gradle... 目录gradle安装和环境配置1 下载GRADLE2 环境变量配置3 测试gradle4 设置gradle初始化文件5 i

SpringCloud配置动态更新原理解析

《SpringCloud配置动态更新原理解析》在微服务架构的浩瀚星海中,服务配置的动态更新如同魔法一般,能够让应用在不重启的情况下,实时响应配置的变更,SpringCloud作为微服务架构中的佼佼者,... 目录一、SpringBoot、Cloud配置的读取二、SpringCloud配置动态刷新三、更新@R

MySQL中my.ini文件的基础配置和优化配置方式

《MySQL中my.ini文件的基础配置和优化配置方式》文章讨论了数据库异步同步的优化思路,包括三个主要方面:幂等性、时序和延迟,作者还分享了MySQL配置文件的优化经验,并鼓励读者提供支持... 目录mysql my.ini文件的配置和优化配置优化思路MySQL配置文件优化总结MySQL my.ini文件