作者FancyWing (TDiCS)
看板ASM
标题Re: [问题] 8051控制步进马达程式
时间Sat Oct 20 16:40:29 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)
所有 port 都可以当 IO port
datasheet 有说明
: (1)if key pressed(port P1 pin 0) , the motor loop forward 2 step per second
: (是不是说在P1的pin 0打勾,就要让马达每秒钟正转2个半步)
我猜 打勾 这个应该是 keil C 里面的IO模拟功能吧
如是,那你的解释就没错
不过,我不晓得你的 半步 是多少
题意来说,是指 每秒 2个 full step (每秒两步)
另,题目是说 key press 这个应该是指 按一下
不过 keil C 里,打勾表逻辑讯号 HI(永远) (勾 - HI ; 不勾 - Low)
这个算是 key down 表 按住
: (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 反 )
你的解释没错,不过简单来说,pin2只是用来控制
Full step 还是 half step 两者间的切换
跟 pin0, pin1 没有关系
: 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 什麽意思,完全看不太懂)
: 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 也完全看不懂)
我不晓得你的马达有几条线,简单一点的
就是 四条线(四线二相),上述 binary 四个bit 刚好对应四条电线的电讯号
这样不晓得, 1428..... ,了解否
不过,如果使用题目给定的 p4~7 当output
此值就不是1 4 2 8 or 1 5 4 .....
至於 啥是 full step 啥是 half step
简单来说,马达转一圈如果需要 24 step 的话(每步18度)
full step - 每圈24步
half step - 每圈48个半步
(恩~很白痴的解释)
另外 full step 有两个模式 单相激磁
双相激磁
题目所给的 为单相激磁
更详细的,google一下 step motor
步进马达
都有很多资料
: 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负的表示反转)
: 又臭又长,感谢大家努力的看完它,谢谢。
不完全是 你会错意了
对照 题目给的 table (控制讯号)
以 full step 来说 有四个不同的控制讯号
也就是 上上的 step[i] i = 0~3
那个 你如果要马达转动的话
i 的顺序为(正向) 0 1 2 3 0 1 2 3 0 1 2 3
对照下 上上述 i 则为 begin end 里面的 step
step ~ steptab
maxstep 则为 3
direction 则是方向 +1 表 正向(正转)
0 表 停止
-1 表 反向(反转)
------
我最讨厌这种前後变数名称不一的题目了 XD
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.115.220.183
※ 编辑: FancyWing 来自: 140.115.220.183 (10/20 16:46)
1F:推 typecommand:感谢你,正在努力的看你的解决 :) 10/20 18:19