尊敬的先生、我正在使用三相交流感应电机、其中我耦合了 QEP 编码器。 我只需使用两行编码器、因为在实际电机中、只有两行用于测量速度。
编码器具有1024条线路。 我已经获取了现有的示例代码、并根据我的要求更改了一些变量、如下所示:基本 RPM = 3000、QEP 线路= 1024。
我将这两个信号馈送到控制卡并运行代码、但我观察到 RPM 速度的变化 超过了50 rpm。 我完全没有获得稳定的速度。
请告诉我、对于我来说、eQEP 模块的最佳配置是什么。
这是硬件问题还是我的采样 错误。 我还发送了我所执行的配置。
//.9999-4096转换为 IQ26定点格式
#define mech_scaler 16383
//在本示例中为2极对
#define POLE_PAIRS 3.
//编码器与相位 A 之间的角度偏移
#define CAL_ANGLE 0
//请参阅 eQEP_ex2_calculation.c (4096*3000)中的公式5
#define SPEED_SCALER (((((uint64_t) 32 * DEVICE_SYSCLK_FREQ / 64)* 60)/(12288000))
//基本/最大转速为6000rpm
#define base_RPM 3000
空 initEQEP (空)
{
//
//将解码器配置为正交计数模式
//
eQEP_setDecoderConfig (EQEP1_base、(eQEP_CONFIG_1X_RESULATION |eQEP_CONFIG_Quad交|eQEP_CONFIG_NO_SWaP));
eQEP_setEmulationMode (EQEP1_base、eQEP_EMULATIONMODE_RUNFREE);
//
//将位置计数器配置为在索引事件发生时重置
//
eQEP_setPositionCounterConfig (EQEP1_base、eQEP_POSITION 重置_IDX、0xFFFFFFFF);
//
//启用单位计时器,将频率设置为50Hz
//
eQEP_enableUnitTimer (EQEP1_base、(DEVICE_SYSCLK_FREQ / 50));
//
//将位置计数器配置为在单位超时时时锁定
//
eQEP_setLatchMode (EQEP1_base、eQEP_LATCH_UNIT_TIME_OUT);
//
//启用 eQEP1模块
//
eQEP_enableModule (EQEP1_base);
//
//配置和启用边沿捕捉单元。 捕获时钟分频器
// SYSCLKOUT/64。 单元位置事件分频器为 QCLK/32。
//
eQEP_setCaptureConfig (EQEP1_base、eQEP_CAPTURE_CLK_DIV_64、eQEP_UNIT_POS_EVNT_DIV_32);
eQEP_enableCapture (EQEP1_base);
}