版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 年产xx信函封装机项目建议书
- 年产xx强化复合地板项目可行性研究报告(项目说明)
- 干变式变压器项目立项申请报告
- 新建AKD原粉项目立项申请报告
- 活动过程怎么做
- 汽车实训室管理制度及安全
- 2023年果蔬自动清选、分级设备投资申请报告
- 用友U9基础培训
- 精神科治疗图解
- 小班数学公开课教案及教学反思《感知5以内的数量》
- 炼铁厂维修作业标准
- 人教版八年级上学期期末考试数学试卷及答案解析(共六套)
- 大数据建模与应用课程设计
- 腔隙性脑梗个案查房课件
- 2024年人口老龄化挑战与应对
- 联系一具体方案谈谈公共政策环境对公共政策的影响
- 《大数据时代下的数据挖掘》试题和答案与解析
- 制度与流程管理制度
- 教育系统校园风险告知卡
- 大学物理实验电子书(三)
- 求比一个数多(或少)百分之几的数是多少
评论
0/150
提交评论