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配置Anaconda Python环境的实现

《VSCode配置AnacondaPython环境的实现》VisualStudioCode中可以使用Anaconda环境进行Python开发,本文主要介绍了VSCode配置AnacondaPytho... 目录前言一、安装 Visual Studio Code 和 Anaconda二、创建或激活 conda

IDEA连接达梦数据库的详细配置指南

《IDEA连接达梦数据库的详细配置指南》达梦数据库(DMDatabase)作为国产关系型数据库的代表,广泛应用于企业级系统开发,本文将详细介绍如何在IntelliJIDEA中配置并连接达梦数据库,助力... 目录准备工作1. 下载达梦JDBC驱动配置步骤1. 将驱动添加到IDEA2. 创建数据库连接连接参数

MyBatis的配置对象Configuration作用及说明

《MyBatis的配置对象Configuration作用及说明》MyBatis的Configuration对象是MyBatis的核心配置对象,它包含了MyBatis运行时所需的几乎所有配置信息,这个对... 目录MyBATis配置对象Configuration作用Configuration 对象的主要作用C

IDEA与JDK、Maven安装配置完整步骤解析

《IDEA与JDK、Maven安装配置完整步骤解析》:本文主要介绍如何安装和配置IDE(IntelliJIDEA),包括IDE的安装步骤、JDK的下载与配置、Maven的安装与配置,以及如何在I... 目录1. IDE安装步骤2.配置操作步骤3. JDK配置下载JDK配置JDK环境变量4. Maven配置下

Springboot的自动配置是什么及注意事项

《Springboot的自动配置是什么及注意事项》SpringBoot的自动配置(Auto-configuration)是指框架根据项目的依赖和应用程序的环境自动配置Spring应用上下文中的Bean... 目录核心概念:自动配置的关键特点:自动配置工作原理:示例:需要注意的点1.默认配置可能不适合所有场景

Nginx配置系统服务&设置环境变量方式

《Nginx配置系统服务&设置环境变量方式》本文介绍了如何将Nginx配置为系统服务并设置环境变量,以便更方便地对Nginx进行操作,通过配置系统服务,可以使用系统命令来启动、停止或重新加载Nginx... 目录1.Nginx操作问题2.配置系统服android务3.设置环境变量总结1.Nginx操作问题

Keepalived+Nginx双机配置小结

《Keepalived+Nginx双机配置小结》本文主要介绍了Keepalived+Nginx双机配置小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1.1 软硬件要求1.2 部署前服务器配置调优1.3 Nginx+Keepalived部署1.3

Apache伪静态(Rewrite).htaccess文件详解与配置技巧

《Apache伪静态(Rewrite).htaccess文件详解与配置技巧》Apache伪静态(Rewrite).htaccess是一个纯文本文件,它里面存放着Apache服务器配置相关的指令,主要的... 一、.htAccess的基本作用.htaccess是一个纯文本文件,它里面存放着Apache服务器

nginx配置多域名共用服务器80端口

《nginx配置多域名共用服务器80端口》本文主要介绍了配置Nginx.conf文件,使得同一台服务器上的服务程序能够根据域名分发到相应的端口进行处理,从而实现用户通过abc.com或xyz.com直... 多个域名,比如两个域名,这两个域名其实共用一台服务器(意味着域名解析到同一个IP),一个域名为abc

nginx生成自签名SSL证书配置HTTPS的实现

《nginx生成自签名SSL证书配置HTTPS的实现》本文主要介绍在Nginx中生成自签名SSL证书并配置HTTPS,包括安装Nginx、创建证书、配置证书以及测试访问,具有一定的参考价值,感兴趣的可... 目录一、安装nginx二、创建证书三、配置证书并验证四、测试一、安装nginxnginx必须有"-