0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

将步进电机与STM32F103C8板连接的教程

科技观察员 来源:circuitdigest 作者:Pramoth Thangavel 2022-11-07 15:52 次阅读

步进电机是无刷直流电机,可以小角度旋转,这些角度称为步进。一般步进电机使用200步完成360度旋转,意味着其每步旋转1.8度。步进电机用于许多需要精确旋转运动的设备,如机器人天线、硬盘驱动器等。我们可以通过给出适当的说明将步进电机旋转到任何特定角度。主要有两种类型的步进电机可供选择,单极和双极。单极更容易操作、控制,也更容易获得。在本教程中,我们将步进电机与STM32F103C8(蓝色药丸)板连接。

所需材料

STM32F103C8 (蓝色药丸)

步进电机(28BYJ-48)

ULN2003 集成电路

电位器 10k

面包板

跳线

步进电机 (28BYJ-48)

28BYJ-48 是一款单极步进电机,需要 5V 电源。电机具有4线圈单极性布置,每个线圈的额定电压为+5V,因此使用Arduino,Raspberry Pi和STM32等任何微控制器都相对容易控制。但是我们需要像ULN2003这样的电机驱动IC来驱动它,因为步进电机消耗大电流,可能会损坏微控制器。

poYBAGNouTOAcaulAACKtPpkgRI756.jpg

另一个需要注意的重要数据是步幅角度:5.625°/64。这意味着电机按 8 步顺序运行时每一步移动 5.625 度,完成一整圈需要 64 步(5.625*64=360)。以下数据表中提供了其他规格

pYYBAGNouTaAbZUwAAB7b7VRrg0628.png

ULN2003 电机驱动器 IC

它用于根据从微控制器接收到的脉冲驱动电机。以下是ULN2003的图片图:

poYBAGNouTiATXtKAABQcZ6E12U320.png

引脚(IN1 到 IN7)是输入引脚,(OUT 1 到 OUT 7)是相应的输出引脚。COM 被赋予输出设备所需的正源电压。步进电机的进一步连接在下面的电路图部分给出。

电路图和连接

poYBAGNouUCAQbPrAACrOCxMxRI602.png

以下是上述电路图的连接说明。

STM32F103C8 (蓝色药丸)

如下图所示,PWM引脚以波形(~)表示,有15个这样的引脚可用于步进电机的脉冲输出。我们只需要四个引脚,我们使用(PA0到PA3)。

STM32-Pin-Details_0.png

STM32F103C8 带 ULN2003 电机驱动器 IC

引脚(PA0 至 PA3)被视为与 ULN2003 IC 的输入引脚 (IN1-IN4) 连接的输出引脚。

STM32F103C8的引脚 ULN2003 集成电路引脚
质保 合1
质量保证 IN2
质量保证 HNR
卡塔尔里亚尔 IN4
5V .COM
接地 接地

ULN2003 带步进电机的集成电路 (28BYJ-48)

ULN2003 IC 的输出引脚 (OUT1-OUT4) 连接到步进电机引脚(橙色、黄色、粉红色和蓝色)。

ULN2003 集成电路引脚 步进电机引脚
输出1
输出2 黄色
输出3 粉红色
输出4
.COM

STM32F103C8 带电位计

电位计用于设定步进电机的速度。

电位计 STM32F103C8
左(输入) 3.3
中心(输出) 质保
右(接地) 接地

采用STM32F103C8的旋转步进电机

以下是操作步进电机的几个步骤:

通过改变电位器设置步进电机的速度。

然后通过ARDUINO IDE(工具>串行监视器)或CTRL + SHIFT + M中的串行MONITER以顺时针(+值)或逆时针方向(-值)手动输入旋转步骤。

根据串行监视器中给出的输入值,步进电机中会发生某些旋转步骤。

例如

串行监控器中给出的值 旋转
2048 (360) 克莱克·怀斯
1024 (180)CLK WISE
512 (90)CLK WISE
-2048 (-360)反克利明智
-1024 (-180)反克利明智
-512 (-90)反克利明智

pYYBAGNouU2AMW14AACrF-gWbvY631.jpg

步进电机STM32编程

与前面的教程一样,我们通过USB端口使用Arduino IDE对STM32F103C8进行了编程,而无需使用FTDI编程器。

首先,我们必须包含步进库文件#include ,以便使用步进器函数。

#include

然后我们定义 no。旋转时要完成的步骤,这里我们使用 32,因为我们使用的是全步(4 步序列)所以 (360/32 = 11.25 度)。因此,对于一步,轴移动 11.25 度,即步幅角。在 4 步序列中,一个完整的旋转需要 4 个步骤。

#define STEPS 32

我们还可以使用半步模式,其中有 8 步序列 (360/64=5.625) 步幅。

Steps per revolution = 360 / STEP ANGLE

当我们设置速度时,我们必须从连接到电位计的PA4中获取模拟值。所以我们必须为此声明 pin

const int speedm = PA4

然后,我们将模拟值转换为数字值,将这些值存储在整数类型的变量中,之后我们必须映射ADC值以设置速度,因此我们使用以下语句。在此处了解有关将ADC与STM32配合使用的更多信息

int adc = analogRead(speedm);

int result = map(adc, 0, 4096, 1, 1023);

为了设置速度,我们使用stepper.setSpeed(result);我们的速度范围为 (1-1023)。

我们必须创建如下所示的实例来设置连接到电机的引脚。在这些步骤中要小心,因为大多数步骤在此模式中都会出错。它们给出了错误的模式,因此线圈无法通电。

Stepper stepper(STEPS, PA0, PA2, PA1, PA3);

以下语句用于从串行监视器获取步骤的值。例如,我们需要 2048 个值进行一次完整旋转 (32*64 = 2048),即 64 将是齿轮比,32 将是一次旋转的半步序列。

rotate = Serial.parseInt();

下面的代码用于调用实例并运行电机。如果旋转值为 1,则调用函数步进器一次,完成一次移动。

stepper.step(rotate);

/STM32 stepper motor control code

//CIRCUIT DIGEST


#include // Include the Stepper motor header file

#define STEPS 32 // change this to the number of steps on your motor

const int speedm = PA4; // Pin for input speed

Stepper stepper(STEPS, PA0, PA2, PA1, PA3); // create an instance of the stepper class using the steps and pins

int rotate = 0; //declare variable rotate with 0 for input rotation.

void setup() //Setup() runs only once

{

Serial.begin(9600); //begins serial communication at 9600baud rate

pinMode(speedm,INPUT); //set pin PA4 as input

}


void loop() //loop() runs infinitely

{

if (Serial.available()>0) //Checks if serial data is entered or not in serial monitor

{

rotate = Serial.parseInt(); //gets the value for rotation from serial monitor

int adc = analogRead(speedm); //read analog value from pin PA0

int result = map(adc, 0, 4096, 0, 1023); //maps the result of ADC from (0to4096)with (0to1023)

stepper.setSpeed(result); //sets the speed of motor

stepper.step(rotate); //makes the motor to rotate

Serial.println(rotate); //prints the value you specified to rotate

}

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 步进电机
    +关注

    关注

    150

    文章

    3109

    浏览量

    147433
  • STM32F103C8
    +关注

    关注

    1

    文章

    23

    浏览量

    8081
收藏 人收藏

    评论

    相关推荐

    使用ESP8266STM32F103C8连接到互联网的方法

    在本教程中,我们使用 ESP8266 STM32F103C8 连接到互联网。在这里,我们 ESP8266 Wi-Fi 模块与我们的蓝丸 STM
    的头像 发表于 10-28 17:25 1.1w次阅读
    使用ESP8266<b class='flag-5'>将</b><b class='flag-5'>STM32F103C8</b><b class='flag-5'>连接</b>到互联网的方法

    如何在STM32F103C8中使用中断

    在本项目中,为了理解STM32F103C8中的中断,我们将使用按钮作为外部中断。在这里,我们将从 0 开始递增一个数字并将其显示在 16x2 LCD 上,每当按下按钮时,LED 就会亮起,LCD 显示屏就会显示中断。松开按钮后,LED 立即熄灭。
    的头像 发表于 11-03 17:11 2504次阅读
    如何在<b class='flag-5'>STM32F103C8</b>中使用中断

    伺服电机STM32F103C8连接起来的教程

    在本教程中,我们将了解伺服电机以及如何伺服与STM32F103C8连接。 还连接了一个电位计
    发表于 11-04 14:49 2968次阅读
    <b class='flag-5'>将</b>伺服<b class='flag-5'>电机</b>与<b class='flag-5'>STM32F103C8</b><b class='flag-5'>板</b><b class='flag-5'>连接</b>起来的教程

    如何使用USB端口对STM32F103C8进行编程

    搭载STM32F103C8微控制器的STM32开发采用ARM Cortex M3架构,具有高运行速度和更多外设选项,因此越来越受欢迎。此外,由于该可以使用Arduino IDE轻松
    发表于 11-08 17:11 6031次阅读
    如何使用USB端口对<b class='flag-5'>STM32F103C8</b><b class='flag-5'>板</b>进行编程

    如何LCD与STM32F103C8T6 STM32开发连接并编程

    在本教程中,我们学习如何16×2 LCD显示器与STM32F103C8T6 STM32开发连接
    的头像 发表于 11-09 16:18 1.3w次阅读
    如何<b class='flag-5'>将</b>LCD与<b class='flag-5'>STM32F103C8</b>T6 <b class='flag-5'>STM32</b>开发<b class='flag-5'>板</b><b class='flag-5'>连接</b>并编程

    STM32F103C8

    有人用过STM32F103C8吗?CAN总线与它连接时应该接那两个引脚,说明书里没有具体的说法,谢谢啦
    发表于 08-04 20:32

    STM32F103C8开发介绍参考资料下载

    本帖最后由 真心朋友 于 2013-6-27 16:28 编辑 STM32F103C8开发(旺旺:fan2012918)宝贝详情一、板子资源一个JLINK\ULINK 20PIN仿真器接口
    发表于 06-18 14:14

    stm32f103c8

    近期买了一块stm32f103c8的系统,苦于没有对应资料学习,哪位神给介绍下。网上找过很多资料,可差不多都是和指定开发相关的,不好入门啊。{:23:}
    发表于 07-14 10:57

    stm32f103C8如何移植FreeRTOS

    命名为FreeRTOS。选择芯片STM32F103C8。3、搭建工程框架,打开官方固件库包:1)STM32F10x_StdPeriph_Lib_V3.5.0\Libraries...
    发表于 08-24 07:57

    IAP在STM32F103C8上的实现

    IAP 在STM32F103C8上的实现已经在[STM32F103C8在应用编程(IAP)介绍及实现]具体讲解了。但由于STM32F030C8STM32F103C8在中断向量表上的设
    发表于 03-02 07:34

    STM32F103C8的电路原理图免费下载

    本文档的主要内容详细介绍的是STM32F103C8的电路原理图免费下载。
    发表于 04-23 17:14 63次下载
    <b class='flag-5'>STM32F103C8</b>的电路原理图免费下载

    STM32F103C8T6核心的资料合集免费下载

    本文档的主要内容详细介绍的是STM32F103C8T6核心的资料合集免费下载包括了:STM32F103C8T6核心测试程序(PC13闪烁),ST
    发表于 06-04 08:00 720次下载
    <b class='flag-5'>STM32F103C8</b>T6核心<b class='flag-5'>板</b>的资料合集免费下载

    基于STM32F103C8 输入捕获实验

    基于STM32F103C8 输入捕获实验-目的该项目是在实习时做的一个基于STM32+CUBEMX工具读取温度计输出的PWM波的实验,使用到了TIMER读取输入捕获和UART输出到串口,最终实现读取
    发表于 11-30 10:36 12次下载
    基于<b class='flag-5'>STM32F103C8</b> 输入捕获实验

    如何使用STM32F103C8的GPS模块获取位置坐标

    在本教程中,我们GPS 模块与 STM32F103C8 微控制器连接,以查找位置坐标并将其显示在16x2 LCD显示屏上。
    的头像 发表于 09-08 15:03 8416次阅读
    如何使用<b class='flag-5'>STM32F103C8</b>的GPS模块获取位置坐标

    基于MCP4725设计使用STM32F103C8的数模转换器

    今天我们将使用相同的 MCP4725 DAC IC 来设计一个使用 STM32F103C8 微控制器的数模转换器。
    发表于 09-08 15:24 4645次阅读
    基于MCP4725设计使用<b class='flag-5'>STM32F103C8</b>的数模转换器