2021-11-13 19:03:22 索炜达电子 1450
项目编号:E2251
文件大小:2.32M
源码说明:带中文注释
开发环境:C编译器
简要概述:
利用STM32F103精确控制步进电机
一、用到的元器件
STM32F103C8T6
42步进电机(42SHDC4040-17B)
TB6600电机驱动器升级版
二、42步进电机
1.步进电机的基本知识
(1)拍数——每一次循环所包含的通电状态数(电机转过一个齿距角所需脉冲数)
(2)单拍制分配方式——状态数=相数
(3)双拍制分配方式——状态数=相数的两倍
(4)步距角 ——步进机通过一个电脉冲转子转过的角度
N:一个周期的运行拍数
Zr:转子齿数
拍数:N=km
m:相数
k=1单拍制
k=2双拍制
(5)转速
6)角度细分的原理
电磁力的大小与绕组通电电流的大小有关。
当通电相的电流并不马上升到位,而断电相的电流也非立即降为0时,它们所产生的磁场合力,会使转子有一个新的平衡位置,这个新的平衡位置是在原来的步距角范围内。
2. 42步进电机参数
无法查找到42SHDC4040-17B型号的详细资料,以通用42步进电机为例:
步距角 1.8°
步距角精度 ±5%
相数 2相
励磁方式 混合式
转子齿数 50
拍制 双拍制
其他参数:无
由步距角=1.8°推算出转子齿数为50,拍制为双拍制
3. 42步进电机速度与角度控制
电机的转速与脉冲频率成正比,电机转过的角度与脉冲数成正比。所以控制脉冲数和脉冲频率就可以精确调速。
理论上步进电机转速 = 频率 * 60 /((360/T)*x)
转速单位: 转/ 分
频率单位:赫兹
x 细分倍数
T 步距角
例如,在本实验中,32细分;频率72000 赫兹;步距角1.8°;
三、TB6600电机驱动器升级版参数
TB6600步进电机驱动器升级版是一款专业的两相步进电机驱动,可实现正反转控制。通过S1,S2,S3 3位拨码开关选择7档细分控制(1,2/A,2/B,4,8,16,32,),通过S4,S5,S6 3位拨码开关选择8 档电流控制(0.5A,1A,1.5A,2A,2.5A,2.8A,3.0A,3.5A)。适合驱动57,42 型两相、四相混合式步进电机。
1.信号输入端
PUL+:脉冲信号输入正。( CP+ )
PUL-:脉冲信号输入负。( CP- )
DIR+:电机正、反转控制正。
DIR-:电机正、反转控制负。
EN+:电机脱机控制正。
EN-:电机脱机控制负。
共阳极接法:分别将PUL+,DIR+,EN+连接到控制系统的电源上, 如果此电源是+5V则可直接接入,如果此电源大于+5V,则须外部另加限流电阻R,保证给驱动器内部光藕提供8—15mA 的驱动电流。
共阴极接法:分别将 PUL-,DIR-,EN-连接到控制系统的地端;脉冲输入信号通过PUL+接入,方向信号通过DIR+接入,使能信号通过EN+接入。若需限流电阻,限流电阻R的接法取值与共阳极接法相同。
注:EN端可不接,EN有效时电机转子处于自由状态(脱机状态),这时可以手动转动电机转轴。
2.电机绕组连接
A+:连接电机绕组A+相。
A-:连接电机绕组A-相。
B+:连接电机绕组B+相。
B-:连接电机绕组B-相。
3.电源电压连接
VCC:电源正端“+”
GND:电源负端“-”
注意:DC直流范围:9-32V。不可以超过此范围,否则会无法正常工作甚至损坏驱动器.
4.拨码开关
电流大小设定
三、STM32F103
------说明:引脚部分在文章末尾有解释--------
1.引脚连接
A 0——PUL+
A 3——KEY1——V3
A12——DIR+
A11——EAN+
GND——EAN- ——KEY0
2.引脚功能
A0控制电机转速
A3控制按键
A9
A11
A11控制电机是否为锁死状态
A12控制电机正反转
3.定时器
1.本实验利用定时器TIM2和定时器TIM3构造一个主从定时器,TIM2作为主定时器控制电机的转速,TIM3作为从定时器控制电机的转动角度。
2.电机的转速和转角还与驱动器自身的细分数有关,但是驱动器细分数是通过影响电机的步距角来影响转速和转角,而TIM2和TIM3是控制步进电机的频率和脉冲数来控制转速转角
3.电机的转速和角度与定时器的关系(在不考虑电机自身的细分数下)
设TIM2的定时周期(即重装值)为nPDTemp2,预分频值为OCPolarity2
TIM3的定时周期(即重装值)为nPDTemp3,预分频值为OCPolarity3,
则单片机产生一个脉冲所需要的时间为:
4.在32细分的情况下电机1rad/s和转1°需要的重装值为nPDTemp2=11.25,nPDTemp3=17.7778。
目录│文件列表:
└ 步进电机程序—串口控制速度角度
│ reade me.txt
├ CMSIS
│ │ core_cm3.c
│ │ core_cm3.h
│ │ stm32f10x.h
│ │ system_stm32f10x.c
│ │ system_stm32f10x.h
│ └ startup
│ │ startup_stm32f10x_cl.s
│ │ startup_stm32f10x_hd.s
│ │ startup_stm32f10x_hd_vl.s
│ │ startup_stm32f10x_ld.s
│ │ startup_stm32f10x_ld_vl.s
│ │ startup_stm32f10x_md.s
│ │ startup_stm32f10x_md_vl.s
│ └ startup_stm32f10x_xl.s
├ FWlib
│ ├ inc
│ │ │ misc.h
│ │ │ stm32f10x_adc.h
│ │ │ stm32f10x_bkp.h
│ │ │ stm32f10x_can.h
│ │ │ stm32f10x_cec.h
│ │ │ stm32f10x_crc.h
│ │ │ stm32f10x_dac.h
│ │ │ stm32f10x_dbgmcu.h
│ │ │ stm32f10x_dma.h
│ │ │ stm32f10x_exti.h
│ │ │ stm32f10x_flash.h
│ │ │ stm32f10x_fsmc.h
│ │ │ stm32f10x_gpio.h
│ │ │ stm32f10x_i2c.h
│ │ │ stm32f10x_iwdg.h
│ │ │ stm32f10x_pwr.h
│ │ │ stm32f10x_rcc.h
│ │ │ stm32f10x_rtc.h
│ │ │ stm32f10x_sdio.h
│ │ │ stm32f10x_spi.h
│ │ │ stm32f10x_tim.h
│ │ │ stm32f10x_usart.h
│ │ └ stm32f10x_wwdg.h
│ └ src
│ │ misc.c
│ │ stm32f10x_adc.c
│ │ stm32f10x_bkp.c
│ │ stm32f10x_can.c
│ │ stm32f10x_cec.c
│ │ stm32f10x_crc.c
│ │ stm32f10x_dac.c
│ │ stm32f10x_dbgmcu.c
│ │ stm32f10x_dma.c
│ │ stm32f10x_exti.c
│ │ stm32f10x_flash.c
│ │ stm32f10x_fsmc.c
│ │ stm32f10x_gpio.c
│ │ stm32f10x_i2c.c
│ │ stm32f10x_iwdg.c
│ │ stm32f10x_pwr.c
│ │ stm32f10x_rcc.c
│ │ stm32f10x_rtc.c
│ │ stm32f10x_sdio.c
│ │ stm32f10x_spi.c
│ │ stm32f10x_tim.c
│ │ stm32f10x_usart.c
│ └ stm32f10x_wwdg.c
├ Listing
│ │ startup_stm32f10x_hd.lst
│ └ STM32-DEMO.map
├ Output
│ │ core_cm3.crf
│ │ core_cm3.d
│ │ core_cm3.o
│ │ delay.crf
│ │ delay.d
│ │ delay.o
│ │ ExtDll.iex
│ │ led.crf
│ │ led.d
│ │ led.__i
│ │ lowercomputer_v2.d
│ │ main.crf
│ │ main.d
│ │ main.o
│ │ misc.crf
│ │ misc.d
│ │ misc.o
│ │ nvic.crf
│ │ nvic.d
│ │ nvic.o
│ │ shangweiji.d
│ │ startup_stm32f10x_hd.d
│ │ startup_stm32f10x_hd.o
│ │ STM32-DEMO.axf
│ │ STM32-DEMO.build_log.htm
│ │ STM32-DEMO.hex
│ │ STM32-DEMO.htm
│ │ STM32-DEMO.lnp
│ │ STM32-DEMO.plg
│ │ STM32-DEMO.sct
│ │ STM32-DEMO.tra
│ │ STM32-DEMO_sct.Bak
│ │ STM32-DEMO_USART1-DEMO.dep
│ │ stm32f10x_adc.crf
│ │ stm32f10x_adc.d
│ │ stm32f10x_adc.o
│ │ stm32f10x_bkp.crf
│ │ stm32f10x_bkp.d
│ │ stm32f10x_bkp.o
│ │ stm32f10x_can.crf
│ │ stm32f10x_can.d
│ │ stm32f10x_can.o
│ │ stm32f10x_cec.crf
│ │ stm32f10x_cec.d
│ │ stm32f10x_cec.o
│ │ stm32f10x_crc.crf
│ │ stm32f10x_crc.d
│ │ stm32f10x_crc.o
│ │ stm32f10x_dac.crf
│ │ stm32f10x_dac.d
│ │ stm32f10x_dac.o
│ │ stm32f10x_dbgmcu.crf
│ │ stm32f10x_dbgmcu.d
│ │ stm32f10x_dbgmcu.o
│ │ stm32f10x_dma.crf
│ │ stm32f10x_dma.d
│ │ stm32f10x_dma.o
│ │ stm32f10x_exti.crf
│ │ stm32f10x_exti.d
│ │ stm32f10x_exti.o
│ │ stm32f10x_flash.crf
│ │ stm32f10x_flash.d
│ │ stm32f10x_flash.o
│ │ stm32f10x_fsmc.crf
│ │ stm32f10x_fsmc.d
│ │ stm32f10x_fsmc.o
│ │ stm32f10x_gpio.crf
│ │ stm32f10x_gpio.d
│ │ stm32f10x_gpio.o
│ │ stm32f10x_i2c.crf
│ │ stm32f10x_i2c.d
│ │ stm32f10x_i2c.o
│ │ stm32f10x_it.crf
│ │ stm32f10x_it.d
│ │ stm32f10x_it.o
│ │ stm32f10x_iwdg.crf
│ │ stm32f10x_iwdg.d
│ │ stm32f10x_iwdg.o
│ │ stm32f10x_pwr.crf
│ │ stm32f10x_pwr.d
│ │ stm32f10x_pwr.o
│ │ stm32f10x_rcc.crf
│ │ stm32f10x_rcc.d
│ │ stm32f10x_rcc.o
│ │ stm32f10x_rtc.crf
│ │ stm32f10x_rtc.d
│ │ stm32f10x_rtc.o
│ │ stm32f10x_sdio.crf
│ │ stm32f10x_sdio.d
│ │ stm32f10x_sdio.o
│ │ stm32f10x_spi.crf
│ │ stm32f10x_spi.d
│ │ stm32f10x_spi.o
│ │ stm32f10x_tim.crf
│ │ stm32f10x_tim.d
│ │ stm32f10x_tim.o
│ │ stm32f10x_usart.crf
│ │ stm32f10x_usart.d
│ │ stm32f10x_usart.o
│ │ stm32f10x_wwdg.crf
│ │ stm32f10x_wwdg.d
│ │ stm32f10x_wwdg.o
│ │ sys.crf
│ │ sys.d
│ │ sys.o
│ │ system_stm32f10x.crf
│ │ system_stm32f10x.d
│ │ system_stm32f10x.o
│ │ timer.crf
│ │ timer.d
│ │ timer.o
│ │ usart1.crf
│ │ usart1.d
│ └ usart1.o
└ USER
│ delay.c
│ delay.h
│ EventRecorderStub.scvd
│ JLink Regs CM3.txt
│ JLinkLog.txt
│ JLinkSettings.ini
│ main.c
│ main.h
│ nvic.c
│ nvic.h
│ STM32-DEMO.plg
│ STM32-DEMO.uvgui.Administrator
│ STM32-DEMO.uvgui.CGH
│ STM32-DEMO.uvgui.flyleaf
│ STM32-DEMO.uvguix.Administrator
│ STM32-DEMO.uvguix.jl_mlh
│ STM32-DEMO.uvgui_Administrator.bak
│ STM32-DEMO.uvgui_CGH.bak
│ STM32-DEMO.uvgui_flyleaf.bak
│ STM32-DEMO.uvopt
│ STM32-DEMO.uvoptx
│ STM32-DEMO.uvproj.saved_uv4
│ STM32-DEMO.uvprojx
│ STM32-DEMO_LED-DEMO.dep
│ STM32-DEMO_Target 1.dep
│ STM32-DEMO_USART1-DEMO.dep
│ STM32-DEMO_uvopt.bak
│ STM32-DEMO_uvproj.bak
│ stm32f10x_conf.h
│ stm32f10x_it.c
│ stm32f10x_it.h
│ sys.c
│ sys.cpp
│ sys.h
│ timer.c
│ timer.h
│ usart1.c
│ usart1.h
└ DebugConfig
│ USART1-DEMO_STM32F103C8_1.0.0.dbgconf
└ USART1-DEMO_STM32F103VE_1.0.0.dbgconf