搜索
bottom↓
回复: 7

做过步进电机驱动器的麻烦看一下,看别人的方案都是CPLD,难道一定要CPLD吗?

[复制链接]

出0入0汤圆

发表于 2009-12-9 20:45:50 | 显示全部楼层 |阅读模式
我用的方案是单片机,因为还有其他液晶等控制,打算一个芯片搞定,而且对步进精度要求不高,就是转速要求比较高,要达到10转/秒,电机是75的三相反应式步进电机(15/7.5),现在正在调试,遇到一些问题,问一下各位了,我用的是7.5的步距角,一开始没有经验,没有接电压比较器LM339,就直接用PWM控制电流了,速度差不多6转最高了,今天刚接了一个电路,图片大致如下

(原文件名:QQ截图未命名.jpg)
就是4148和VR3组成的致回没接,电源是24V的,其他都一样,单片机用STC最新的1T的,用了32M晶振,内部定时器中断使用10US中断一次,主要就是这个问题,程序基本和原来一样,就是基准改成了10US一次,但是速度还是6转上不来,LM339一检测到电流过大,最多就10US内肯定关断这一相电流了,等到电流小于3A了重新打开,最想不通的就是,我每次换拍是0.9MS,就是进入中断90次,按照理论算下来应该有23转/秒,实际只有6转,还转的很好,也不像有失步,下面是程序,

还有一个奇怪的问题BJ_SPEED_NOW和BJ_SPEED_MAX是起始速度和最大速度,我都设置成了90没有问题,感觉这个速度下电机不用加速时间

基准时间请放心,STC是1T的而且我用的是32M晶振,算下来应该没有错的

//*****************************************中断1,定时器0中断*****************************//
/*
功能:10US中断一次,为系统提供时间基准
全局变量:变量看列表
输入变量:无
输出变量:无
局部变量:无
*/

void Funtime (void) interrupt 1 using 0
{
        TF0=0;
        TH0=0xfe;
        TL0=0xc0;                //使用定时器0,周期10US;

        BJ_CYCLE++;                                        //基准时间,每次增加100US,给加速递增稳定周期使用
        BJ_ADDCYCLE++;                                //基准时间,给加速递减周期使用

        if(BJ_CYCLE>=BJ_ZCYCLE)                        //加速过程使用,目的每BJ_ZCYCLE个周期速度递减,保证每次递减均匀
        {
                  BJ_CYCLE=0;
                BJ_SPEED_NOW--;
                if(BJ_SPEED_NOW<=BJ_SPEED_MAX){BJ_SPEED_NOW=BJ_SPEED_MAX;}
        }
        if(BJ_ADDCYCLE>=BJ_SPEED_NOW)                //根据匀速递减后的速度,确定每次换拍的时间       
        {
                BJ_ADDCYCLE=0;
                BJ_BEAT++;if(BJ_BEAT>6){BJ_BEAT=0;}

        }

        switch(BJ_BEAT)//改变时序
        {
        case 0:                {OUT_STEPA=IN_STEPA;        OUT_STEPB=1;        OUT_STEPC=1;}                break;
        case 1:                {OUT_STEPA=IN_STEPA;        OUT_STEPB=IN_STEPB;        OUT_STEPC=1;}                break;
        case 2:                {OUT_STEPA=1;        OUT_STEPB=IN_STEPB;        OUT_STEPC=1;}                break;
        case 3:                {OUT_STEPA=1;        OUT_STEPB=IN_STEPB;        OUT_STEPC=IN_STEPC;}break;
        case 4:                {OUT_STEPA=1;        OUT_STEPB=1;        OUT_STEPC=IN_STEPC;}break;
        case 5:                {OUT_STEPA=IN_STEPA;        OUT_STEPB=1;        OUT_STEPC=IN_STEPC;}break;
        }
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2009-12-9 22:16:51 | 显示全部楼层
推荐楼主一个3相步进驱动芯片TMC332

(原文件名:TMC332.gif)

点击此处下载 ourdev_512538.pdf(文件大小:614K) (原文件名:tmc332_datasheet.pdf)

出0入0汤圆

发表于 2009-12-10 00:21:54 | 显示全部楼层
我这有十几个步进电机,之前有一个驱动器,被我给费了,

谁有驱动器资料,发一个上来,最简单的,(5V 1A)

出0入0汤圆

发表于 2009-12-10 06:16:56 | 显示全部楼层
L297.L298的.简单驱动电流也大

出0入0汤圆

 楼主| 发表于 2009-12-10 08:17:12 | 显示全部楼层
谢谢楼上的,大致看了一下,L297,L298是两相四相的控制芯片,我的电机是三相的,用不了

出0入0汤圆

发表于 2009-12-10 08:19:13 | 显示全部楼层
1楼的东西好像价格可观。

出0入0汤圆

 楼主| 发表于 2009-12-10 08:25:13 | 显示全部楼层
是的,估计不太买的到得

出0入0汤圆

发表于 2009-12-10 08:26:42 | 显示全部楼层
没看到CPLD相关的问题啊!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-17 01:05

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表