
从专业角度来讲,你说的这种编码器又被称为potential meter。
你可以直接用它控制直流电机的速度,不需要单片机。
原理与办法如下。
1 直流电机的转速正比于加到它上面的电压值。
2 Potential meter一般有四个端子。在它的输入端子加入一个直流电压,
然后旋转旋杆,它的输出端子就会输出一个线性电压值。
若x轴为旋转角度,Y轴位电压,那输出电压一般为一条45度的直线,
即旋转角度越大,输出电压也就越大(最大值为电源电压)
到这里,你已经明白,只要旋转 Potential meter的旋杆,你就可以
控制电机的转速了。
由一个中心有轴的光电码盘,其上有环形通、暗的刻线,有光电发射和接收器件读取,获得四组正弦波信号组合成A、B、C、D,每个正弦波相差90度相位差(相对于一个周波为360度),将C、D信号反向,叠加在A、B两相上,可增强稳定信号;另每转输出一个Z相脉冲以代表零位参考位。
由于A、B两相相差90度,可通过比较A相在前还是B相在前,以判别编码器的正转与反转,通过零位脉冲,可获得编码器的零位参考位。
编码器码盘的材料有玻璃、金属、塑料,玻璃码盘是在玻璃上沉积很薄的刻线,其热稳定性好,精度高,金属码盘直接以通和不通刻线,不易碎,但由于金属有一定的厚度,精度就有限制,其热稳定性就要比玻璃的差一个数量级,塑料码盘是经济型的,其成本低,但精度、热稳定性、寿命均要差一些。
扩展资料
信号输出有正弦波(电流或电压),方波(TTL、HTL),集电极开路(PNP、NPN),推拉式多种形式,其中TTL为长线差分驱动(对称A,A-;B,B-;Z,Z-),HTL也称推拉式、推挽式输出,编码器的信号接收设备接口应与编码器对应。
信号连接—编码器的脉冲信号一般连接计数器、PLC、计算机,PLC和计算机连接的模块有低速模块与高速模块之分,开关频率有低有高。
如单相联接,用于单方向计数,单方向测速。AB两相联接,用于正反向计数、判断正反向和测速。A、B、Z三相联接,用于带参考位修正的位置测量。
A、A-,B、B-,Z、Z-连接,由于带有对称负信号的连接,在后续的差分输入电路中,将共模噪声抑制,只取有用的差模信号,因此其抗干扰能力强,可传输较远的距离。对于TTL的带有对称负信号输出的编码器,信号传输距离可达150米。
参考资料来源:百度百科-旋转编码器
参考资料来源:百度百科-光电编码器
旋转编码器和计数器的用法:\x0d\一:在测量生产线上的移动距离、角度、数量等,都可以用旋转编码器配合计数器等使用。相对于接近开关,光电开关等方法,主要优点在于它精确,因为编码器可以再转动一圈中产生几十、几百、几千,甚至几万个脉冲信号,比接近开关等检测物要多的多,其能实现的精度也就高的多。 \x0d\二:在使用时,要注意两者之间的配合问题: \x0d\A:选用时,在允许范围内,尽量选择编码器脉冲数较高的型号,可以使每个脉冲所代表的数值更小,能实现的精度也就越高。当然也不能一味的高,还要考虑到计数器可以接收的最大应答速度。这个要考虑使用时的速度等参数。 \x0d\如:使用时要求精度为1mm,则经过换算,编码器的每个脉冲所代表的长度尽量选择在01mm左右,可以保证不出意外时,精度足够。当计数器的最大应答速度为10000PPS时,而编码器为1000PPR,则编码器的最高转速就不能超过10RPS,若要提高速度,则只能增加计数器的最大应答速度,或牺牲编码器的脉冲数即精度。在这里所说的是最高转速,而不是平均转速。设计时要考虑到实际是有加减速时间的,则在最高转速时是高于平均速度的。 \x0d\B:两者连接时,尽量使用相位差输入方式,该方式可以避免许多问题: \x0d\如:当使用单相输入时,若编码器有震动(设备是没法避免震动的,只是相对来讲所影响的大小区别而已),则由于编码器的来回转动,将导致计数器误计数,而使用相位差时则可以完全避免震动带来的误差(正转和反转:一个加一个减,到最后还是没变)。 \x0d\另外,若有干扰时,在单相信号上有波动,计数器不会作为计数信号处理,除非两相信号正好都受到干扰且两个干扰配合的天衣无缝。 \x0d\C:一般使用场合都会要求速度,但是在需要计数器输出时,则要考虑到设备的执行机构是否可以跟得上速度。如编码器以每秒5000个脉冲输出,每个脉冲代表01mm,而计数器用的是继电器输出,输出控制设备停止行走,然后再进行裁断等动作,此时要考虑到你的输出执行机构能否跟得上速度了。每个脉冲01mm,精度一般在1mm或更小。而计数器的继电器动作时间呢?好点的可以为二、三十毫秒,大点的需要100mm。在100ms时间里,还可以行动多长?差不多500个脉冲,代表的是50个毫米,误差远远大于需要的精度,若不是停止后再裁断,而是直接裁断(不停止)的话,裁断机构执行时间则更长。
可以include stdioh头文件,然后用sprint函数格式化输出,,, 比如你要打印TestValue=10;的值,可以如下: #include “stdioh” void LCD_Show(void) { char tmp[5]; sprintf(tmp,"%d",TestValue); //在此调用打印tmp数组的LCD底层显示函数即可
以上就是关于请问如何用旋转编码器(rotary encoder不是光学的那种,那个太贵)控制直流电机的速度全部的内容,包括:请问如何用旋转编码器(rotary encoder不是光学的那种,那个太贵)控制直流电机的速度、旋转光电编码器的工作原理、旋转编码器和计数器的用法有哪些等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)