标题: 单片机如何模拟编码器ABZ脉冲? [打印本页]

作者: jingwei2174    时间: 2021-4-25 14:43
标题: 单片机如何模拟编码器ABZ脉冲?
我想用单片机模拟发送 正交编码器的ABZ脉冲,用于测试   哪位大神帮忙指导下啊,感谢

作者: gd2051    时间: 2021-4-25 16:29
你把需要的波形画出来看看,频率、振幅?
作者: jingwei2174    时间: 2021-4-25 17:06
振幅  5V    频率可调最大85kHz

波形图.jpg (13.99 KB, 下载次数: 53)

波形图.jpg

作者: jingwei2174    时间: 2021-4-25 17:10
gd2051 发表于 2021-4-25 16:29
你把需要的波形画出来看看,频率、振幅?

振幅   5V
频率   85kHz

波形图.jpg (13.99 KB, 下载次数: 47)

波形图.jpg

作者: wangyuejia2015    时间: 2021-4-25 18:03
stm32可以输出多路正弦信号, 只要确认好abz的相位关系就好
作者: jingwei2174    时间: 2021-4-25 18:05
wangyuejia2015 发表于 2021-4-25 18:03
stm32可以输出多路正弦信号, 只要确认好abz的相位关系就好

我用的是STC15W4单片机,我就是项位不知道该怎么写,麻烦指点了
作者: jingwei2174    时间: 2021-4-26 09:44
波形的相位,用单片机的哪个功能能调试出来呢
作者: 名字不是重点    时间: 2021-4-26 16:24
只要用2个定时器。一个寄存器(二次计数),一个标志位,
2个定时器(A/B),设为自动装载。
比如:
如果需求频率是1Hz,可设定时器的中断为100Hz或更高,多加一个寄存器做二次计数10,寄存器计数到5时触发时器B计数(触发一次即可),同时置IO口Z为高,寄存器计数计数到10时置IO口Z为低,反转IO口A,同时复位寄存器。定时器B中断时,反转IO口B。

不知这样符合不符合?


作者: jingwei2174    时间: 2021-4-27 14:16
名字不是重点 发表于 2021-4-26 16:24
只要用2个定时器。一个寄存器(二次计数),一个标志位,
2个定时器(A/B),设为自动装载。
比如:

我是用定时器测试过,但是用定时器中断时,我要发出88KHz的频率,这样就有个问题出现了,占用了太多的CPU资源,数码管显示程序就出了问题了。
作者: jingwei2174    时间: 2021-4-27 22:25
哪位大神能帮忙指导下啊,这个程序哪里错了呢,不工作呀

#include <STC15F2K60S2.H>

void PWM_init(void)
{
        P_SW2 |= 0x80;   //扩展RAM选择
        PWMC = 163;
        PWMCFG = 0x01;  //PWM2初始化高电平-1,PWM3初始化低电平-0
        PWMCR |= 0x03;  //关闭PWM波形发生器,使能PWM2-P3.7、PWM3-P2.1
        PWMCKS |= 0x01;  //PWM时钟源选择分频器分频之后的时钟   2分频系统时钟,当SELT=0时,PWM时钟为系统时钟/(PS[3:0]+1)
        //PWMCH = 0;
        //PWMCL = 163;
        //PWM2T1H = 0;
        //PWM2T1L = 1;
        PWM2T1 = 33;
        PWM2T2 = 98;
        PWM2CR = 0x00;
        P37 = 1;
        PWM3T1 = 65;
        PWM3T2 = 130;
        PWM3CR = 0x00;
        P21 = 0;
        PWMCR |= 0x80;
        P_SW2 &= ~0x80;
}

void main(void)
{
        PWM_init();
        while(1);
}



作者: 名字不是重点    时间: 2021-4-28 09:38
jingwei2174 发表于 2021-4-27 14:16
我是用定时器测试过,但是用定时器中断时,我要发出88KHz的频率,这样就有个问题出现了,占用了太多的CPU ...

不知你用的晶振频多大?用什么IC?LED有驱动IC,还是直接MCU驱动?




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1