欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

logisim优先编码器怎么用_编码器简介、应用的stm32代码及注释

发布时间:2025/3/8 编程问答 39 豆豆
生活随笔 收集整理的这篇文章主要介绍了 logisim优先编码器怎么用_编码器简介、应用的stm32代码及注释 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

在机器人的旋转关节中、或者底盘的驱动轮中,编码器是一个很常用的部件,它用于检测输出轴的位置、转速。下面我们先从它的分类开始,后面还有一个简单的用法示例代码。

磁编码器

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.h"

extern int Target_velocity;

extern u16 Encoder; //左右编码器的脉冲计数

extern u16 Moto1; //电机PWM变量

u8 t=0;

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

IN2=1;

IN1=0;

LED_Init(); //初始化与LED连接的硬件接口

TIM1_PWM_Init(7199,0);//不分频。PWM频率=72000/(899+1)=80Khz

while(1)

{

speed = Encoder*100/4/13/30;

printf("speed:%0.2f rad/s

总结

以上是生活随笔为你收集整理的logisim优先编码器怎么用_编码器简介、应用的stm32代码及注释的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。