在线教学网站开发,启航做网站怎么样,旅游门户网站模板,设计图纸网站在机器人的旋转关节中、或者底盘的驱动轮中#xff0c;编码器是一个很常用的部件#xff0c;它用于检测输出轴的位置、转速。下面我们先从它的分类开始#xff0c;后面还有一个简单的用法示例代码。磁编码器1.编码器分类#xff1a; 按工作原理#xff1a;光电式、磁电式和…在机器人的旋转关节中、或者底盘的驱动轮中编码器是一个很常用的部件它用于检测输出轴的位置、转速。下面我们先从它的分类开始后面还有一个简单的用法示例代码。磁编码器1.编码器分类 按工作原理光电式、磁电式和触点电刷式。按码盘的刻孔方式增量式和绝对式两类。 笔者到目前为止就用过这些种类的编码器。像光电的差分编码器一般由8根线连接。信号线分别为 A A- B B- Z Z- 以及VCC和GND。这里有一种不需要Z信号的6线差分A A- B B- VCC 和GND。正交编码器一般是5根线连接信号线分别为A B Z VCC和GND。 编码器线数: 就是旋转一圈你的A(B)会输出多少个脉冲 ,这里的A、B就是上面的输出脉冲信号线它们转一圈发出的脉冲数一样的,不过存在90°的相位差。线数越高代表编码器能够反应的位置精度越高。 2.下面以基于stm32的直流电机驱动为例里面有编码器的读取。代码及注释如下:#include delay.h#include stm32f10x.h#include sys.h#include timer.h#include usart.h#include encoder.h#include oled.h#include pwm.h#include control.h#include led.h#include key.hextern int Target_velocity;extern u16 Encoder; //左右编码器的脉冲计数extern u16 Moto1; //电机PWM变量u8 t0; float speed;int main(void){ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2 delay_init(); //延时函数初始化 KEY_Init(); //初始化与按键连接的硬件接口 OLED_Init(); uart_init(9600); //串口初始化 Encoder_Init_TIM2(); //编码器接口 TIM3_Int_Init(99,7199); //10ms IN21; IN10; LED_Init(); //初始化与LED连接的硬件接口 TIM1_PWM_Init(7199,0);//不分频。PWM频率72000/(8991)80Khz while(1) { speed Encoder*100/4/13/30; printf(speed:%0.2f rad/s