编码器速度和方向检测,371电机方向与速度检测,stm32编码器接口模式_第1页
编码器速度和方向检测,371电机方向与速度检测,stm32编码器接口模式_第2页
编码器速度和方向检测,371电机方向与速度检测,stm32编码器接口模式_第3页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、编码器是什么玩意呢,它可是一个好玩的东西,做小车测速必不可少的玩意, 下面,我将从编码器的原理讲起,一直到用stm32的编码器接口模式,测出电机 转速与方向。1编码器图I颯码界示建田图1为编码器的示意图,中间是一个带光栅的码盘,光通过光栅,接收管 接收到髙电平,没通过,接收到低电平。电机旋转一圈,码盘上有多少光栅,接 受管就会接收多少个髙电平。371电机中的码盘就是这样的,他是334线码盘, 具有较髙的测速精度,也就是电机转一圈输出334个脉冲,芯片上已集成了脉冲 整形触发电路,输出的是矩形波,直接接单片机10就0K。增量式旋转编码器通过部两个光敏接受管转化其角度码盘的时序和相 位关系,得到其

2、角度码盘角度位移量增加(正方向)或减少(负方向)。下图为 编码器的原理图:«2常量氏険转編於豪A.B两点对应两个光敏接受管,A.B两点间距为S2 ,码盘的光栅间距分别为 SO和Slo S0+S1的距离是S2的四倍。这样保证了 A, B波形相位相差90度。旋 转的反向不同,锯齿波A, B先到达髙电平的顺序就会不同,如上图左侧所示, 顺序的不同,就可以得到旋转的方向。2. stm32编码器接口模式(寄存器)stm32的编码器接口模式在STM32中文参考手册中有详细的说明,在手 册273页,节。程序是完全按照下图方式,设置寄存器的。请到本文尾下载STM32中文参考手册 CC1S=,0T (

3、TIMx_CCMR1 寄存器.IC1FP1 映射到TI1) CC2S=f0r (TIMx_CCMR2寄存器 IC2FP2映射到TI2) CC1P='O' (TIMx_CCER寄存器,IC1FP1 不反相,IC1FP仁TI1) CC2P=,0, (TIMx_CCER寄存器,IC2FP2不反相,IC2FR2二TI2) SMS=*01T (TIMx_SMCR寄存器.所有的输入均舎上升沿和下降沿有效). CEN='1' (TIMx_CR1寄存器,计数器使能)图132 编码器模式下的计数器操作实例向前向后毛刺向前711 _1TI2毛刺L_rrru计数器图3从图3中可以看出

4、,TI1波形先于TI2波形90°时,每遇到一个边沿变 化是,计数器加1 (可以通过寄存器设置加减),可以看出一个光栅,被计数了 4次。TI1波形后于TI2波形90°时、每遇到一次边沿变化,计数器减1。/T1M2 Encoder lnit.Tim2 CHI(PA0>:Tim2_CH2(PAl)2./axr:自动J Xflt OXI-FFF3./psc:时钟侦分義ft:不分頻4.void TIM2 Encoder Inlt(ul6 arrul6 psc)5.6.ROC->APB1ENR =l«0:/TIM2时钟便fg?.RCC->APR2fcNR|=

5、l«2;/使艳PORTA叶怕8.9GP!ChV>CRL&=0XFFFFFI-00:/PAO.PAI 清除10.GPIOA-XTRL =0X00000041:/PAO.PAI浮空输入11.12.TIM2->ARR=arr:/设良计动重狀值13.TIM2->PSC=psc:15.T1M2-X:attl1= l«0:/输入模或.IC1FPI映纣到T【1上16.TIH2-XXMR11= l<<&/输入橫氏IC2FP2映射到TI2上17.T1M2-XCER1= 0«l:/1C1不氏向18.T1M2-XCER1= 0«5

6、:/IC2不反向19.TIM2->SMCR1= 3«0s所用输入均在上升沿或下薛沿韦效20.T1M2-XR1 =:l«0;/ft nt计欽莽21. 3硬件用到的模块有STM32核心板、L298电机驱动、371带编码器电机(1: 34)。 这里主要介绍一下电机,1: 34指的是电机轴转动34圈,电机输出1圈。1: X, X值越小,电机的输出转速也就越快,扭矩也就越小;反之,X值越大,电机的 输岀转速越慢,扭矩也越大。Trrvv/DMi極惆胡冃® 4电机实钩图左边两根黄线是电机两极。绿线和白线是脉冲输出线,分别接编码器的接收 管A、B,用一根可以测得速度,两根同

7、时用可测出电机速度与转向。红线和黑 线是编码器电源接线,红正黑负,电压3. 3V-5V,不不可接反。4控制代码工佑指禾灯.电机方向与壇度控制代殍.I. /LED 10初始化绻口 PD.2运行始示灯void LED Init(void)RCC->APK2ENR =l«5:使能PORTD叶钟GP10D-XR1. =0X(XXKKJ300:/PD.2推松输出使能临TC叶桦/PCO竣悅綸出/PCl'O输出髙电平25.26. 9./P0.2 输出If9./电机鎂奖方向控制倍号塔口初姑化10. /pcro 输

8、出.偷出髙11. void M lnit(void)12. 13. RCC->APR2ENR =l«4;14. GPIOC-XZRiOXFFFFFFOO:15. GPIOC-XKU =0X00000033;16. GPIOC-X)ORi=OXF«0:17. 18.18. 定时STIM3,卩AM 出初始代.5119. /air:自动重袭偵20. /psc:时钟侦分擾数21. "设置自动重茨值为900 坯么卩川茨=72000/9<Kl=8Khz22. /屯STM32參芳手册.卩枫蟆丈。23. void TIM3 PWI InitCuiB arr.ulG p

9、sc) /arr 设定计数再自动重袭值/pzc汰分驟界不分«.psc=0RCC->APB 1ENR =l«l:TIH3 叶钟便繼GPl(h->CRIl=OXFOFFFFFF;/PA6 输出GPI(hV>RL =0X015000000;/M 用功栽输出GPIOiX-XJl&R =1«6:/PA6 上拉TIM3->ARR=arr: 设定计數却自动豐装值TIM3->PSC=psc:/«分疑昙不分疑T1M3->0«1|=6«4:/CHI PW!1符电平韦效TlM3-XX»l;=i«

10、;3: /CHIT1M3-X?CEB!=1«O;/0C1 冷出使能41. TlM3-XRl=0x0080:/ARM-使能42. TIM3-XR1 =0x01:使能定时睜 343. 44.44. "电机方向与連度控制.連度潢节滋为-100>10045. 大于。叶,正総.小于0时.反转46. /占空比飪于0.4叶胆机不转47. / (占空比是指髙电平在一个周期之所占的叶何比罕)48. /7IMS->CCR1 的为 0、900 (因为 arr=900>49. /见 STM32 參才手新 « A 50. void k>ior Speed Contr

11、ol (slB anltirSpeed)53. sl6 speed = 0 :54.5S.i f (ftuiorSpeed>iOO) spe«d = 100;else if (tKitorSpeeiK-lOO) speed = -100;57.58.i f(speed = 0)59.60.M 1 =else speed = uutorSped:3.71.75. 76.else if($pe<?d > 0)IM_1 = 0:M_2 = kT1M3-XXR1 = speed 9;)elseM_1

12、= 1:M.2 = 0:TIM3-XZCR1 = -spe<fd * 9:电机速度与方向楡测代码1. /TIM2EncoderJnit.TlH.2 Clli(PAO):Tln2ai2(PAl)2. /air:自动重袭值0XFRT3. /psc:时忡侦分硕盘不分頻4. /见STM32中文手曲埸殍界整口樓丈5. void TIM2 Enc<xler Ini t (u!6 arr.ul6 psc)7.RCC->AI>B1ENR =i«0:/TIM2时钟便能6.18.20.RCC->APK2ENR =l«2;/使能PORTA叶抽GPl

13、Ch-XRU=0XFFFFFI-00;GPIOA->CRL =0X00000014:Tni2-/ARR=arr:TIM2->PSC=psc;/PAO. PAI清除之前谅贸/PAO. PAI浮空输入T1M2-XCMR1 二 1«0;T1M2-XOIR1 二 1«8:T1M2-XCER 1= 0«1:T1M2-XCER '= 0«5:T1M2->SMCR '= 3«0:/ffi分頻苏输入模式 IC1FPI映If到TH上綸入蟆戌】C2FP2玦射到TI2上/1C1不反向/IC2不反向斫圧綸入均在上升沿或下降沿宥效使能计

14、软器TIM2-XR1 = 1«0;22.24.void TIM2_Enc<xier_Irite(int data)26.TIM2-XNT = data;27.28.29.int TIM2 Encoder Read(void)30.TIM2 Encoder Irite(O);32.<le】約龄(10):/楡刃叶冃.可说节return (int><(sl6)(T1M2->CNT):/记录边沿安化次轰(一个总怡被记录4次)这里我们只显示边沿交化次飯.没有具体的奠出纯度。1.int aiain(void)2.3.nuuturSpeed、叫00:4.S16 nul

15、orSpeed = 100:5.Sut32 ClockJnit:系妊时钟说置6.delay_init(72):廷时初姑化?.uart.init (72.9600)!串口 1 初始化8.LEDJnitO:初始化卑LED连接的更伴接口9. M.lnltO:/初始化电机述行方向控制熔口10. 列昭 邪他"1(900.0:/不分頻.PAM =72000/9<J0=8Khz11. TJM2. Encoder Init(Oxffff. 0): 计衣券自动重玻值为最天12.12. *hile(l)14.13. LED =! LED:14. Motor Spt*&_Conii*ol (

16、giorSx©d)15. prlnlfCtfi 码累(fi: %dn *.TIM2 Ehcoder_Read0):16. 5估算验证回 S?这里我们只是大概的估算验证测量值是否正确,不具有完全正确性。 我们设置motorSpeed = 100 ,得到测量值如下图:SSCOM 3.3323232323232322111668686866666666666444444444444444444333343222231323222 cu -6 Gu 6- co 6- co Qu roAw cu cu Qu cu rDcu Qu cu 444444444444444444扁扁扁扁扁扁扁扁扁扁扁

17、扁翩扁翩扁扁扁 233233221223230212 CU -6 CD cu- CD cu Gu cu rDAv rDcu rocu Qu cu Qu cu 444444444444444444-扁扁扁屍扁扃扁扁-f f G: C2G: C2GJ幺“ &8686666686S6S6 444444444444444444扁扁扁扁扁扁扁扁扁扁扁扁扁扁扁扁扁扁668686866666666666444444444444444444勺fflnffldffllnffldffllnffidffl-nfflflffl-nffldffl-nffi0ffllffi0fflAfflaffi<lffl

18、帮助I保存裔口 I葺除窗口 I厂打开文件I阿茗_串口号伽2 M鱷打开串口 Ir定时发送100 m2次厂发篋新牟 宁符串输入框:|岌医|厂冋发送AT+VERSHM|36003pn2波特率 数墉立 傳止位coR;21140 S;0图 5 motorSpeed = 100段为俱差是不可爻免的.所以看到毎次楼测的值租込不一件的。我们取462S为一金光梯枝记禾了 4次斫以在10痕一共楼测到了462/4" 1S. 5那么得到11.55个/ms.毎ms程测到11.55个光檐。通过码表,记录电机输岀50圈,用时50. 2s,那么这时应该检测到的 光栅个数为50*34(电机转34圈,输出1圈)*334 (每圈有334个光

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论