作者darkstorm (暗黑狂风)
看板ASM
标题Re: [问题] 8051控制步进马达程式
时间Wed Oct 31 02:53:22 2007
※ 引述《typecommand (:))》之铭言:
: 我先承认这是学校程式,但不是请大家帮我写,而是我题目看不太懂
: ,题意懂了,我就会写了 (我是用Keil C去模拟port的讯号)
: 一)P1 pin 0-3 are input, pin 4-7 are output and are used to drive motor.
: (P1有可能同时做为input port和output port吗? 我是把P2设为output port)
当然可以 如果你高兴的话 也是可以1 3 5 7做output 2 4 6 8做input
只是没人会这麽闲这样做就是....XD
一般来说 以作业来讲 都是以自己好理解好控制为主
如果有考虑到使用者层面的问题 就得注意一下怎样的pin脚设计才会让使用者好用
: (1)if key pressed(port P1 pin 0) , the motor loop forward 2 step per second
: (是不是说在P1的pin 0打勾,就要让马达每秒钟正转2个半步)
打勾? 应该就是说按键吧
如果按下pin0的按键 就让它以每秒2步进行正转(也就是说每步延迟是0.5s)
: (2)if key pressed(port P1 pin 1) , the motor loop backward 2 step per second.
: (同上)
同上 不过这变反转
: (3)if switch on (port P1 pin 2==1) , using Full step control, else half step
: (是不是pin2 和 pin0同时打勾,就正转全步)
: ( pin2 和 pin1 反 )
这边的设定是让它选择是用一相激磁(full step)或一~二相激磁(half step)
如果pin2按下的话 就用一相激磁(full step) 没按就是一~二相激磁(half step)
: Step motor control:
: Full step
: step[0] = 1; { binary 0001 }
: step[1] = 4; { binary 0100 }
: step[2] = 2; { binary 0010 }
: step[3] = 8; { binary 1000 }
: (1 4 2 8 什麽意思,完全看不太懂)
这边就是设定它激磁顺序 1 4 2 8用二进位(binary)来看会比较好理解
依照上面的资料来看 它的激磁针脚应该是如下
pin7 pin6 pin5 pin4
B' B A' A
↓激 0 0 0 1 = 1
磁 0 1 0 0 = 4
方 0 0 1 0 = 2
向 1 0 0 0 = 8
所以激磁顺序是 A→ B→ A'→ B'→A 循环
每次只激磁一个针脚是一相激磁的特色
: half-step control:
: step[0] = 1; { binary 0001 }
: step[1] = 5; { binary 0101 }
: step[2] = 4; { binary 0100 }
: step[3] = 6; { binary 0110 }
: step[4] = 2; { binary 0010 }
: step[5] = 10; { binary 1010 }
: step[6] = 8; { binary 1000 }
: step[7] = 9; { binary 1001 }
: (1 5 4 6 2 10 8 9 也完全看不懂)
所以这边解释如上 但不同的地方在於它是一~二相激磁
它的激磁顺序是A→ AB→ B→ BA'→ A'→ A'B'→ B'→ B'A→ A
而这种激磁方式可以提高它转动的解析度
(也就是一步的度数 在此为提高一倍 为原本一相激磁的半步)
至於原理..请自己查书 XD
: procedure onestep( direction );
: begin
: step := step + direction;
: if step > maxstep then step := 0
: else if step < 0 then step := maxstep;
: write( motor, steptab[step] );
: end;
: (上述的虚拟码是不是在说,步进马达不能一次转动太多,不能超
: 过maxstep。另外direction有可能是负的吗?否则干嘛判断step<0
: 的时候,step = maxstep,还是说direction负的表示反转)
: 又臭又长,感谢大家努力的看完它,谢谢。
这边大概就是说你要负责处理步数的问题
0步再反转也不会是-1步 所以要变成maxstep
maxstep再正转也不会是maxstep+1步 会归0
至於maxstep步数是多少 就看你用的激磁方式了
以上
--
好像太晚回 囧rz
--
其 A︻A A︵A
A︻A 在
処 (
‧ _
‧)
(
‧__
‧)
(
‧_
‧)
る
に ≡¥≡︽。 ≡。≡ 。︽≡¥≡ の
ロ ╱◢▆◣ ︾▌ ︽ ▌︾ ◢▆◣╲ だ
マ ﹨﹨ ◢▌∥∥▌◣ ∕∕ ろ
ンは… Sound Horizon 5th Story CD—Roman
うか?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.223.165.40
※ 编辑: darkstorm 来自: 61.223.165.40 (10/31 02:53)
※ 编辑: darkstorm 来自: 61.223.165.40 (10/31 02:56)