打印
[应用相关]

PWM电机驱动软件封装问题

[复制链接]
1801|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
爱炫小王子|  楼主 | 2014-5-13 21:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我要设计电机驱动的库,要求能够完成基本单个电机的正转与反转,能够控制速度。下面是软件包的一些思路:
1 驱动与上层的接口是结构体数据和一些函数,函数能够根据结构体的内容进行相应的电机PWM控制。
2 接口不要出现数字,例如 0, 20,但是上层调用调节速度函数的时候,需要传递速度信息给函数,在
这里就是PWM占空比信息,我怎么传递呢,尽量不直接出现数字,对于程序可读性不好。

我的问题就是第2点的所提出的问题,希望大家能够和我讨论下你们的观点,谢谢!
沙发
mmuuss586| | 2014-5-13 22:10 | 只看该作者
void  MoveMotor(unsigned char  MotorDir,unsigned int MotorPwm,unsigned int MotorSpeed )
{

}
仅供参考,程序你自己发挥就好了

使用特权

评论回复
板凳
icecut| | 2014-5-14 09:33 | 只看该作者
除非你想模糊控制...数字永远是最精确的.或者传递百分比

使用特权

评论回复
地板
爱炫小王子|  楼主 | 2014-5-16 10:11 | 只看该作者
icecut 发表于 2014-5-14 09:33
除非你想模糊控制...数字永远是最精确的.或者传递百分比

我的初步想法是用宏或枚举传递参数,但是为0~100都定义宏,感觉不是好的解决方案。问题的关键点在于使用写的源文件的人,不需要了解实际数字的含义,直接看参数就可知道干了什么。

使用特权

评论回复
5
爱炫小王子|  楼主 | 2014-5-16 10:15 | 只看该作者
mmuuss586 发表于 2014-5-13 22:10
void  MoveMotor(unsigned char  MotorDir,unsigned int MotorPwm,unsigned int MotorSpeed )
{


我的意思是给MotorPwm负值时,怎么传输,不要直接出现10这样的数字,我明白这可能是代表占空比10%

使用特权

评论回复
6
huzi2099| | 2014-5-16 10:46 | 只看该作者
这个问题是和你的程序有关系的,最好是调用一个函数进行设置其它由单片机计算和设定.
void Setting_Step(int32 step)  step是符号数,基准点在复位时确定
void Setting_Speed(int32 speed) speed是速度,+表示正转,负值表示反转。
其它参数都是不需要的,因为其它参数都是系统的已知量,应该对用户是不可见的,用函数屏蔽起来。

使用特权

评论回复
7
爱炫小王子|  楼主 | 2014-5-16 23:23 | 只看该作者
huzi2099 发表于 2014-5-16 10:46
这个问题是和你的程序有关系的,最好是调用一个函数进行设置其它由单片机计算和设定.
void Setting_Step(int ...

第一个函数不是很理解,能否解释详细点呢。

使用特权

评论回复
8
huzi2099| | 2014-5-17 20:31 | 只看该作者
爱炫小王子 发表于 2014-5-16 23:23
第一个函数不是很理解,能否解释详细点呢。

步进电机移动到步,你可能不是步进电机那就没有了

使用特权

评论回复
9
爱炫小王子|  楼主 | 2014-5-20 16:39 | 只看该作者
huzi2099 发表于 2014-5-17 20:31
步进电机移动到步,你可能不是步进电机那就没有了

恩恩,是的诶,不是步进电机,就是普通的直流电机,感谢你的回答。

使用特权

评论回复
10
a20060341039| | 2014-9-5 09:27 | 只看该作者
学习学习

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

110

帖子

0

粉丝