|
发表于 2014-11-21 12:23:31
|
显示全部楼层
看来你没有完全看懂:)
LZ的电动机是用2个线控制,被非门扩展成4线。
A,B 线直接控制
C,D 线是 A,B 线的反向。
“didadida”的分析结果是
A B C D 只有4中组合
1100
0110
0011
1001
你看到的拿一串是表示如何运动。引用楼主的数据表
unsigned int wTableUnl2803DriveValue[] =
{
0x0000, 0x0080, 0x0820, 0x1110, 0x2244, 0x2492, 0x4a52, 0x5554,
0xaaaa, 0xabaa, 0xbaae, 0xbbba, 0xeeee, 0xeefe, 0xf7f7, 0x7fff,
};
也就是说
0x0000, 表示停在 0/16 的位置
0x0080, 表示停在 1/16 的位置
0x0820, 表示停在 2/16 的位置
......
举例来说,假定我们需要停到 5/16的位置,那么对应的数是 0x2492 -> b 0010 0100 1001 0010
这里的 0 表示电动机的当前位置。也就是 ABCD 组合(4种组合之一),假定当前的 ABCD 输出是 0110。
这里的 1 表示电动机的下一个位置。也是 ABCD 组合(4种组合之一),假定当前是正转 ABCD 输出应该是 0011(如果是反转 ABCD 应该是 1100)。
LZ 的 0x2492 -> b 0010 0100 1001 0010 是从右向左使用。
将 b 0010 0100 1001 0010 倒转 为 0100 1001 0010 0100
对应的 ABCD 输出是
0 -> 0110
1 -> 0011
0 -> 0110
0 -> 0110
1 -> 0011
0 -> 0110
0 -> 0110
1 -> 0011
0 -> 0110
0 -> 0110
1 -> 0110
0 -> 0110
0 -> 0110
1 -> 0011
0 -> 0110
0 -> 0110
按照这个序列循环输出,电动机就停到了 5/16 的位置。 |
|