2021-11-13 19:03:22 索煒達(dá)電子 1824
項(xiàng)目編號(hào):E2251
文件大?。?.32M
源碼說(shuō)明:帶中文注釋
開(kāi)發(fā)環(huán)境:C編譯器
簡(jiǎn)要概述:
利用STM32F103精確控制步進(jìn)電機(jī)
一、用到的元器件
STM32F103C8T6
42步進(jìn)電機(jī)(42SHDC4040-17B)
TB6600電機(jī)驅(qū)動(dòng)器升級(jí)版
二、42步進(jìn)電機(jī)
1.步進(jìn)電機(jī)的基本知識(shí)
(1)拍數(shù)——每一次循環(huán)所包含的通電狀態(tài)數(shù)(電機(jī)轉(zhuǎn)過(guò)一個(gè)齒距角所需脈沖數(shù))
(2)單拍制分配方式——狀態(tài)數(shù)=相數(shù)
(3)雙拍制分配方式——狀態(tài)數(shù)=相數(shù)的兩倍
(4)步距角 ——步進(jìn)機(jī)通過(guò)一個(gè)電脈沖轉(zhuǎn)子轉(zhuǎn)過(guò)的角度
N:一個(gè)周期的運(yùn)行拍數(shù)
Zr:轉(zhuǎn)子齒數(shù)
拍數(shù):N=km
m:相數(shù)
k=1單拍制
k=2雙拍制
(5)轉(zhuǎn)速
6)角度細(xì)分的原理
電磁力的大小與繞組通電電流的大小有關(guān)。
當(dāng)通電相的電流并不馬上升到位,而斷電相的電流也非立即降為0時(shí),它們所產(chǎn)生的磁場(chǎng)合力,會(huì)使轉(zhuǎn)子有一個(gè)新的平衡位置,這個(gè)新的平衡位置是在原來(lái)的步距角范圍內(nèi)。
2. 42步進(jìn)電機(jī)參數(shù)
無(wú)法查找到42SHDC4040-17B型號(hào)的詳細(xì)資料,以通用42步進(jìn)電機(jī)為例:
步距角 1.8°
步距角精度 ±5%
相數(shù) 2相
勵(lì)磁方式 混合式
轉(zhuǎn)子齒數(shù) 50
拍制 雙拍制
其他參數(shù):無(wú)
由步距角=1.8°推算出轉(zhuǎn)子齒數(shù)為50,拍制為雙拍制
3. 42步進(jìn)電機(jī)速度與角度控制
電機(jī)的轉(zhuǎn)速與脈沖頻率成正比,電機(jī)轉(zhuǎn)過(guò)的角度與脈沖數(shù)成正比。所以控制脈沖數(shù)和脈沖頻率就可以精確調(diào)速。
理論上步進(jìn)電機(jī)轉(zhuǎn)速 = 頻率 * 60 /((360/T)*x)
轉(zhuǎn)速單位: 轉(zhuǎn)/ 分
頻率單位:赫茲
x 細(xì)分倍數(shù)
T 步距角
例如,在本實(shí)驗(yàn)中,32細(xì)分;頻率72000 赫茲;步距角1.8°;
三、TB6600電機(jī)驅(qū)動(dòng)器升級(jí)版參數(shù)
TB6600步進(jìn)電機(jī)驅(qū)動(dòng)器升級(jí)版是一款專業(yè)的兩相步進(jìn)電機(jī)驅(qū)動(dòng),可實(shí)現(xiàn)正反轉(zhuǎn)控制。通過(guò)S1,S2,S3 3位撥碼開(kāi)關(guān)選擇7檔細(xì)分控制(1,2/A,2/B,4,8,16,32,),通過(guò)S4,S5,S6 3位撥碼開(kāi)關(guān)選擇8 檔電流控制(0.5A,1A,1.5A,2A,2.5A,2.8A,3.0A,3.5A)。適合驅(qū)動(dòng)57,42 型兩相、四相混合式步進(jìn)電機(jī)。
1.信號(hào)輸入端
PUL+:脈沖信號(hào)輸入正。( CP+ )
PUL-:脈沖信號(hào)輸入負(fù)。( CP- )
DIR+:電機(jī)正、反轉(zhuǎn)控制正。
DIR-:電機(jī)正、反轉(zhuǎn)控制負(fù)。
EN+:電機(jī)脫機(jī)控制正。
EN-:電機(jī)脫機(jī)控制負(fù)。
共陽(yáng)極接法:分別將PUL+,DIR+,EN+連接到控制系統(tǒng)的電源上, 如果此電源是+5V則可直接接入,如果此電源大于+5V,則須外部另加限流電阻R,保證給驅(qū)動(dòng)器內(nèi)部光藕提供8—15mA 的驅(qū)動(dòng)電流。
共陰極接法:分別將 PUL-,DIR-,EN-連接到控制系統(tǒng)的地端;脈沖輸入信號(hào)通過(guò)PUL+接入,方向信號(hào)通過(guò)DIR+接入,使能信號(hào)通過(guò)EN+接入。若需限流電阻,限流電阻R的接法取值與共陽(yáng)極接法相同。
注:EN端可不接,EN有效時(shí)電機(jī)轉(zhuǎn)子處于自由狀態(tài)(脫機(jī)狀態(tài)),這時(shí)可以手動(dòng)轉(zhuǎn)動(dòng)電機(jī)轉(zhuǎn)軸。
2.電機(jī)繞組連接
A+:連接電機(jī)繞組A+相。
A-:連接電機(jī)繞組A-相。
B+:連接電機(jī)繞組B+相。
B-:連接電機(jī)繞組B-相。
3.電源電壓連接
VCC:電源正端“+”
GND:電源負(fù)端“-”
注意:DC直流范圍:9-32V。不可以超過(guò)此范圍,否則會(huì)無(wú)法正常工作甚至損壞驅(qū)動(dòng)器.
4.撥碼開(kāi)關(guān)
電流大小設(shè)定
三、STM32F103
------說(shuō)明:引腳部分在文章末尾有解釋--------
1.引腳連接
A 0——PUL+
A 3——KEY1——V3
A12——DIR+
A11——EAN+
GND——EAN- ——KEY0
2.引腳功能
A0控制電機(jī)轉(zhuǎn)速
A3控制按鍵
A9
A11
A11控制電機(jī)是否為鎖死狀態(tài)
A12控制電機(jī)正反轉(zhuǎn)
3.定時(shí)器
1.本實(shí)驗(yàn)利用定時(shí)器TIM2和定時(shí)器TIM3構(gòu)造一個(gè)主從定時(shí)器,TIM2作為主定時(shí)器控制電機(jī)的轉(zhuǎn)速,TIM3作為從定時(shí)器控制電機(jī)的轉(zhuǎn)動(dòng)角度。
2.電機(jī)的轉(zhuǎn)速和轉(zhuǎn)角還與驅(qū)動(dòng)器自身的細(xì)分?jǐn)?shù)有關(guān),但是驅(qū)動(dòng)器細(xì)分?jǐn)?shù)是通過(guò)影響電機(jī)的步距角來(lái)影響轉(zhuǎn)速和轉(zhuǎn)角,而TIM2和TIM3是控制步進(jìn)電機(jī)的頻率和脈沖數(shù)來(lái)控制轉(zhuǎn)速轉(zhuǎn)角
3.電機(jī)的轉(zhuǎn)速和角度與定時(shí)器的關(guān)系(在不考慮電機(jī)自身的細(xì)分?jǐn)?shù)下)
設(shè)TIM2的定時(shí)周期(即重裝值)為nPDTemp2,預(yù)分頻值為OCPolarity2
?TIM3的定時(shí)周期(即重裝值)為nPDTemp3,預(yù)分頻值為OCPolarity3,
則單片機(jī)產(chǎn)生一個(gè)脈沖所需要的時(shí)間為:
4.在32細(xì)分的情況下電機(jī)1rad/s和轉(zhuǎn)1°需要的重裝值為nPDTemp2=11.25,nPDTemp3=17.7778。
目錄│文件列表:
└ 步進(jìn)電機(jī)程序—串口控制速度角度
│ 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