OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
12
返回列表 发新帖

STM32编码器接口!

[复制链接]

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-8-10 20:12:38 | 显示全部楼层
回复【49楼】CUTE-BOY:
---------------------------------
请看30楼!
电子人生!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

19

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
166
金钱
166
注册时间
2015-1-14
在线时间
7 小时
发表于 2015-8-11 20:18:35 | 显示全部楼层
回复【51楼】翱翔云端的鸟:
---------------------------------
能不能弄一个完整版的,谢谢了
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
29
金钱
29
注册时间
2013-11-23
在线时间
0 小时
发表于 2015-8-18 10:53:33 | 显示全部楼层
楼主很不错。榜样。最近我也在搞增量式编码器的计数,你有没有搞过伺服电机的PWM控制呢?
回复

使用道具 举报

11

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2014-11-9
在线时间
5 小时
发表于 2015-8-19 15:46:56 | 显示全部楼层
回复【40楼】翱翔云端的鸟:
---------------------------------
感觉应该是滤波作用吧,确保读到的电平是高电平
加油,奋斗
回复

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2015-7-31
在线时间
1 小时
发表于 2015-10-15 20:03:19 | 显示全部楼层
回复【3楼】翱翔云端的鸟:
---------------------------------
多个编码器,如何检测并将编码器的值通过串口发出去呢?
回复

使用道具 举报

12

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
352
金钱
352
注册时间
2014-1-22
在线时间
43 小时
发表于 2015-10-21 09:54:04 | 显示全部楼层
回复【9楼】翱翔云端的鸟:
---------------------------------
你好,请问下,
    1.  我看你TIM3编码器设置的 是采用向上向下计数模式,但是 IC设置只配置了IC1 ,IC2通道不配置吗?
任何一件事情,只要心甘情愿,总是能够变得简单。
回复

使用道具 举报

12

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
352
金钱
352
注册时间
2014-1-22
在线时间
43 小时
发表于 2015-10-21 09:56:07 | 显示全部楼层
回复【9楼】翱翔云端的鸟:
---------------------------------
2. 你说的“因为我的编码器Vcc和A  B  Z相输出之间没有负载” 是不是说编码器和电路板之间要加上啦电阻啊?
任何一件事情,只要心甘情愿,总是能够变得简单。
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-10-22 09:28:37 | 显示全部楼层
回复【57楼】爱不孤单:
---------------------------------
OC门输出  要加上拉电阻!   跟地之间加个滤波电容更好!
电子人生!
回复

使用道具 举报

12

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
352
金钱
352
注册时间
2014-1-22
在线时间
43 小时
发表于 2015-10-22 15:38:21 | 显示全部楼层
回复【58楼】翱翔云端的鸟:
---------------------------------
  我现在遇到的问题是 编码器在正常时测 A、B相都能输出完美的方波。
  但是如果把A、B相得线接在板子上后 在测试A、B相 ,得不到波形。
  我试了在I/O 上接上拉电阻,但是没效果 。
  还请大神指导下。
任何一件事情,只要心甘情愿,总是能够变得简单。
回复

使用道具 举报

12

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
352
金钱
352
注册时间
2014-1-22
在线时间
43 小时
发表于 2015-10-23 18:05:26 | 显示全部楼层
大神,能不能帮帮忙给解析下,谢谢了,已经困扰3天了,怎么都得不到波形。
任何一件事情,只要心甘情愿,总是能够变得简单。
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-10-26 15:07:46 | 显示全部楼层
你只有AB相吗?
电子人生!
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-10-26 15:08:22 | 显示全部楼层
回复【60楼】爱不孤单:
---------------------------------
可能是硬件的原因,你的代码检测过没有  确认代码没错的话不应该的!
电子人生!
回复

使用道具 举报

12

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
352
金钱
352
注册时间
2014-1-22
在线时间
43 小时
发表于 2015-10-26 16:40:07 | 显示全部楼层
是的,我的只有AB两相。
我得电路板是F4 的,下图1 是我得IO口代码配置


void Encoder_Init(void)
{
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
TIM_ICInitTypeDef TIM_ICInitStructure;
unsigned short PrescalerValue =100*4-1;
/* Encoder unit connected to TIM4, 4X mode */    
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;

/* TIM3 clock source enable */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
/* Enable GPIOB, clock */
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOA, ENABLE);

/* Configure PB.06,07 as encoder input */


// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
// //GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
// GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
// GPIO_Init(GPIOB, &GPIO_InitStructure);

//GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
//GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
//GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
//GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
//GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
//GPIO_Init(GPIOB, &GPIO_InitStructure);

// GPIO_PinAFConfig(GPIOB,GPIO_Pin_6,GPIO_AF_TIM4);
// GPIO_PinAFConfig(GPIOB,GPIO_Pin_7,GPIO_AF_TIM4);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 ;
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 ;
GPIO_Init(GPIOB, &GPIO_InitStructure);

GPIO_PinAFConfig(GPIOA,GPIO_Pin_6,GPIO_AF_TIM3);
GPIO_PinAFConfig(GPIOB,GPIO_Pin_5,GPIO_AF_TIM3);

/* Enable the TIM3 Update Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = TIMX_PRE_EMPTION_PRIORITY;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = TIMX_SUB_PRIORITY;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

/* Compute the prescaler value 1MHz*/
//????=1000000 /10 /2 =50kHz   10us ????????

 #if 0
/* Time base configuration */
TIM_DeInit(TIM3);
//TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
TIM_TimeBaseStructure.TIM_Period = 10;
TIM_TimeBaseStructure.TIM_Prescaler = 0;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
/* Prescaler configuration */
TIM_PrescalerConfig(TIM4, PrescalerValue, TIM_PSCReloadMode_Immediate);
/* TIM Interrupts enable */
  #else 
TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
  TIM_TimeBaseStructure.TIM_Prescaler = 0x0; // No prescaling 
  TIM_TimeBaseStructure.TIM_Period = 1333; 
  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;   
  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
#endif

//?¨??????
TIM_EncoderInterfaceConfig(ENCODER_TIMER, TIM_EncoderMode_TI1, 
TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);
//??·???????
//??????TIM4???????????? TIM_ICStructInit(&TIM_ICInitStructure)
TIM_ICStructInit(&TIM_ICInitStructure);
TIM_ICInitStructure.TIM_ICFilter = ICX_FILTER;
TIM_ICInit(ENCODER_TIMER, &TIM_ICInitStructure);

TIM_ClearFlag(ENCODER_TIMER, TIM_FLAG_Update);
TIM_ITConfig(TIM3,TIM_IT_Update, ENABLE);

//Reset counter
TIM3->CNT = COUNTER_RESET;

TIM_Cmd(TIM3, ENABLE);
Count=TIM3->CNT;
}


QQ图片20151026164004.png
任何一件事情,只要心甘情愿,总是能够变得简单。
回复

使用道具 举报

12

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
352
金钱
352
注册时间
2014-1-22
在线时间
43 小时
发表于 2015-10-26 16:56:34 | 显示全部楼层
如果编码器 工作(A相悬空,未接入IO口),波形是正确的,如下图



AB相接入IO口,测出就没波形了(感觉被强制拉低了),图如下



我已近换了一块新的电路板,效果一样不行。
然后又换了一个定时器接口,效果还是一样不行。
请大神指教啊
任何一件事情,只要心甘情愿,总是能够变得简单。
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-10-26 17:04:47 | 显示全部楼层
回复【64楼】爱不孤单:
---------------------------------
你是用的TIM3还是TIM4?
你用示波器测得时候有上拉吗?
 如果用示波器测的时候没有上拉也有波形  可能是编码器不一样,就不用上拉了
电子人生!
回复

使用道具 举报

12

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
352
金钱
352
注册时间
2014-1-22
在线时间
43 小时
发表于 2015-10-26 17:53:09 | 显示全部楼层
回复【65楼】翱翔云端的鸟:
---------------------------------
开始用的TIM4,测试了不行,然后改成了用的TIM3,但是还是不行;
我测的时候没接上拉。因为是这个问题,然后接了1/6 w 的1K上拉电阻,波形没变化,示波器输出也是正弦波。

感觉能试的都试了。。
任何一件事情,只要心甘情愿,总是能够变得简单。
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-10-27 08:48:52 | 显示全部楼层
回复【66楼】爱不孤单:
---------------------------------
那估计是你的代码有问题了。。
电子人生!
回复

使用道具 举报

12

主题

126

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
281
金钱
281
注册时间
2013-1-5
在线时间
22 小时
发表于 2016-4-21 11:00:28 | 显示全部楼层
楼主在硬件电路的设计上有什么心得没?现在设计的硬件在AB通道上分别加了一阶滤波,但是偶尔还会出现检测不准的现象,就是旋转一格一次加或是减不是一。
天道酬勤
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2016-4-21 18:59:15 | 显示全部楼层
落月枫情 发表于 2016-4-21 11:00
楼主在硬件电路的设计上有什么心得没?现在设计的硬件在AB通道上分别加了一阶滤波,但是偶尔还会出现检测不 ...

额,我加了光耦并且有个加了个电容到地,效果不错的!没有出现你说的那种情况额   硬件我也不是很精通,
电子人生!
回复

使用道具 举报

12

主题

126

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
281
金钱
281
注册时间
2013-1-5
在线时间
22 小时
发表于 2016-5-2 09:15:24 | 显示全部楼层
翱翔云端的鸟 发表于 2016-4-21 18:59
额,我加了光耦并且有个加了个电容到地,效果不错的!没有出现你说的那种情况额   硬件我也不是很精通,

电容加的多大的
我加了一阶滤波效果不是很理想,加个光耦问题是我这没隔离,信号出来直接进MCU了
天道酬勤
回复

使用道具 举报

12

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2015-11-4
在线时间
51 小时
发表于 2016-5-16 15:13:21 | 显示全部楼层
我发现我每次做的都是楼主做完的,上次modbus也是,这次我又来了。。。,参考大神代码。
回复

使用道具 举报

12

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2015-11-4
在线时间
51 小时
发表于 2016-5-16 15:27:03 | 显示全部楼层
翱翔云端的鸟 发表于 2015-8-10 20:11
回复【48楼】Gold_Br:
---------------------------------
百度OC门输出!

顺便问下,我用的f407,tim5,初始化如下:
void TIM5_Configuration(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        TIM_ICInitTypeDef  TIM_ICInitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
       
        //RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA , ENABLE);
                                                                                              
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;        
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;          
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
        GPIO_Init(GPIOA, &GPIO_InitStructure);                                  
        //GPIO_WriteBit(GPIOA, GPIO_Pin_0,Bit_SET);
        //GPIO_WriteBit(GPIOA, GPIO_Pin_1,Bit_SET);
  GPIO_PinAFConfig(GPIOA,GPIO_PinSource0,GPIO_AF_TIM5);
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource1,GPIO_AF_TIM5);
       
        TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
  TIM_TimeBaseStructure.TIM_Period = PWMPeriod;
        TIM_TimeBaseStructure.TIM_Prescaler = 0;
        TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;     
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
        TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure);
       
        TIM_EncoderInterfaceConfig(TIM5, TIM_EncoderMode_TI12,TIM_ICPolarity_Rising,TIM_ICPolarity_Rising);
        TIM_ICStructInit(&TIM_ICInitStructure);
  TIM_ICInitStructure.TIM_ICFilter = 6;      
  TIM_ICInit(TIM5, &TIM_ICInitStructure);
  TIM_ClearFlag(TIM5, TIM_FLAG_Update);      
  TIM_ITConfig(TIM5, TIM_IT_Update, ENABLE);
  TIM5->CNT = 0;
        TIM_Cmd(TIM5, ENABLE);
       
        NVIC_InitStructure.NVIC_IRQChannel=TIM5_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
        NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
        NVIC_Init(&NVIC_InitStructure);



}
然后问题是a,b两项有输出,我用输入捕获是可以接收到的(示波器也看过,就是编码器输出是没有问题的),但是定时器设置为编码器模式如上时,(通道1,2)但是tim5->cnt一直不计数,一直是0,求解。。。(PA0,PA1)
回复

使用道具 举报

6

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2016-3-25
在线时间
16 小时
发表于 2016-5-16 15:30:16 | 显示全部楼层
翱翔云端的鸟 发表于 2015-7-18 09:02
回复【39楼】tianmin:
---------------------------------
这个我也不懂,一般看别人的历程都是0x0,我看了 ...

楼主这是在做什么呢?之前看你问测PWM精确计数程序,现在又搞编码器?在做智能车么?
回复

使用道具 举报

12

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2015-11-4
在线时间
51 小时
发表于 2016-5-16 16:26:20 | 显示全部楼层
好吧,解决了,我发现我总是犯一些天知道什么鬼的错误
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2016-5-16 17:00:57 | 显示全部楼层
jsy15 发表于 2016-5-16 15:30
楼主这是在做什么呢?之前看你问测PWM精确计数程序,现在又搞编码器?在做智能车么?

额  工控上需要的额   伺服电机  
电子人生!
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2016-5-16 17:01:58 | 显示全部楼层
夜愿晨城 发表于 2016-5-16 15:13
我发现我每次做的都是楼主做完的,上次modbus也是,这次我又来了。。。,参考大神代码。

额,,,大神不敢当,,当初自己也是慢慢摸索的。。发个帖子这样大家就少走点弯路
电子人生!
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2016-5-16 17:03:46 | 显示全部楼层
夜愿晨城 发表于 2016-5-16 15:27
顺便问下,我用的f407,tim5,初始化如下:
void TIM5_Configuration(void)
{

你也肯定是做工控的吧?   触摸屏+编码器    肯定是人机界面HMI+电机     然后一些输入输出点等等的         木工机械、纺织机械、。。。。
电子人生!
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2016-5-16 17:08:36 | 显示全部楼层
夜愿晨城 发表于 2016-5-16 16:26
好吧,解决了,我发现我总是犯一些天知道什么鬼的错误

http://www.openedv.com/thread-67058-1-1.html
这个帖子是我之后补发的,写的很详细,而且还有例程代码
电子人生!
回复

使用道具 举报

12

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2015-11-4
在线时间
51 小时
发表于 2016-5-16 17:18:19 | 显示全部楼层
翱翔云端的鸟 发表于 2016-5-16 17:08
http://www.openedv.com/thread-67058-1-1.html
这个帖子是我之后补发的,写的很详细,而且还有例程代码

多谢,是在做工控,我去看看帖子,再次感谢
回复

使用道具 举报

62

主题

903

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3566
金钱
3566
注册时间
2016-1-8
在线时间
544 小时
发表于 2016-5-16 18:03:04 | 显示全部楼层
mark一下啊
回复

使用道具 举报

12

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2015-11-4
在线时间
51 小时
发表于 2016-5-17 16:13:36 | 显示全部楼层
我再问一下,定时的编码器模式是检测到跳变沿计数器再计数的吗(就是cnt是因为跳变沿而自增或者自减的吗),这样的话,定时器的频率就不影响了吧。
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2016-5-17 16:56:13 | 显示全部楼层
夜愿晨城 发表于 2016-5-17 16:13
我再问一下,定时的编码器模式是检测到跳变沿计数器再计数的吗(就是cnt是因为跳变沿而自增或者自减的吗) ...

CNT计数值是根据两个通道的先后以及是否有跳变来决定的,你看分频值为0,等于这里不存在定时器频率一说了   我是这么理解的
电子人生!
回复

使用道具 举报

12

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2015-11-4
在线时间
51 小时
发表于 2016-5-18 14:51:33 | 显示全部楼层
翱翔云端的鸟 发表于 2016-5-17 16:56
CNT计数值是根据两个通道的先后以及是否有跳变来决定的,你看分频值为0,等于这里不存在定时器频率一说了 ...

搜嘎,我也是这么想的,确认下
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2016-3-21
在线时间
8 小时
发表于 2016-5-27 20:37:40 | 显示全部楼层
楼主您好,请问下我的电机需要正转几圈,然后反转几圈,要计算正反转的速度有什么好的建议啊?
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2016-5-30 09:11:11 | 显示全部楼层
1282359018 发表于 2016-5-27 20:37
楼主您好,请问下我的电机需要正转几圈,然后反转几圈,要计算正反转的速度有什么好的建议啊?

我之前用了一个定时器来测速不是很准,软件方面实现得不好!
电子人生!
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2016-7-17
在线时间
2 小时
发表于 2016-7-17 14:31:03 | 显示全部楼层
楼主 600脉冲的编码器。定时器中设置arr=65536 不分频。怎么通过串口读取转过的角度        CNT和角度有公式么??
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2016-7-17
在线时间
2 小时
发表于 2016-7-17 14:45:30 | 显示全部楼层
13642025772 发表于 2016-7-17 14:31
楼主 600脉冲的编码器。定时器中设置arr=65536 不分频。怎么通过串口读取转过的角度        CNT和角度有公 ...

@翱翔云端的鸟
回复

使用道具 举报

8

主题

136

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
428
金钱
428
注册时间
2015-4-24
在线时间
85 小时
发表于 2016-7-18 10:51:31 | 显示全部楼层
爱不孤单 发表于 2015-10-26 16:56
如果编码器 工作(A相悬空,未接入IO口),波形是正确的,如下图

你好,问一下,如果我没有串口可以用,怎么用示波器看出我的编码器有没有正常工作啊,谢谢
回复

使用道具 举报

8

主题

136

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
428
金钱
428
注册时间
2015-4-24
在线时间
85 小时
发表于 2016-7-18 13:14:04 | 显示全部楼层
楼主你好,问一下我的编码器没有Z相,电路图如下面所示,是个旋转编码器,并具有开关功能。我是不是就不用Z相归零了啊,还有现在板子上没有串口啥的,只有个编码器,我程序下载进去后,怎么用示波器或软件的其他方法测试编码器有没有正常工作啊,谢谢
Image 1.jpg
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2016-7-18 13:36:36 | 显示全部楼层
bruellyyang 发表于 2016-7-18 13:14
楼主你好,问一下我的编码器没有Z相,电路图如下面所示,是个旋转编码器,并具有开关功能。我是不是就不用Z ...

可以接个串口或者其它能显示啊,应该很容易的,没有Z相的话  看你具体的应用啊,有的是要求到达一个限度后归零
电子人生!
回复

使用道具 举报

8

主题

136

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
428
金钱
428
注册时间
2015-4-24
在线时间
85 小时
发表于 2016-7-18 13:47:24 | 显示全部楼层
本帖最后由 bruellyyang 于 2016-7-18 13:49 编辑
翱翔云端的鸟 发表于 2016-7-18 13:36
可以接个串口或者其它能显示啊,应该很容易的,没有Z相的话  看你具体的应用啊,有的是要求到达一个限度 ...

谢谢,那我相办法接个串口试一下,原理就是上面的图,只有A和2路B接到了定时器3和8的ch3和ch4,再问下读取寄存器CR中的DIR位的库函数是哪个啊
回复

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
174
金钱
174
注册时间
2016-9-23
在线时间
52 小时
发表于 2016-10-9 14:02:46 | 显示全部楼层
落月枫情 发表于 2016-5-2 09:15
电容加的多大的
我加了一阶滤波效果不是很理想,加个光耦问题是我这没隔离,信号出来直接进MCU了

你好  这个问题解决了吗!我是用外部中断写的!!软件上加延时消抖了!!还是会有反跳的现象!硬件上再加电容?加多大电容能解决吗?
回复

使用道具 举报

3

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2016-3-11
在线时间
11 小时
发表于 2017-4-6 20:40:29 | 显示全部楼层
学习学习
回复

使用道具 举报

0

主题

0

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2020-10-13
在线时间
2 小时
发表于 2017-5-11 13:15:36 | 显示全部楼层
收藏一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-17 10:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表