找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1625|回复: 13
打印 上一主题 下一主题
收起左侧

DM542驱动器控制电机如何使其来回转动,有无大佬指导下?

[复制链接]
跳转到指定楼层
楼主
#include <REGX52.H>

unsigned char timer0;
sbit ENA=P1^0;
sbit PWM=P1^1;
sbit DIR=P1^2;

void delay(unsigned int a)
{
     unsigned char b=0;

         while(a--)
         {
            for(b=0;b<200;b++)
                {
                }
        }
}

void kongzhi_Init()
{
    TMOD|=0X11;
    TH1=0XFE;
    TL1=0X33;
    TR1=1;
    IE=0X8A;
}
void Tlzd() interrupt 3
{
    TH1=0XFE;
    TL1=0X33;
    timer0++;
}
void main()
{
     kongzhi_Init();
           while(1)
                 {
     while(1)
     {
                        
                                  DIR=1;
        if(timer0>0.1)
        {
            timer0=0;
        }
        if(timer0<1)
        {
            PWM=0;
        }
        else
        {
            PWM=1;
        }
                                       
     }
                      DIR=1;
                 if(timer0>0.1)
        {
            timer0=0;
        }
        if(timer0<1)
        {
            PWM=0;
        }
        else
        {
            PWM=1;
        }  
                                
     }
         }

步进电机2.JPG (1.6 MB, 下载次数: 57)

步进电机2.JPG
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1048790 发表于 2022-10-29 10:36 | 只看该作者
不知道该如何调试 使其来回转动
回复

使用道具 举报

板凳
ID:883242 发表于 2022-10-29 12:07 | 只看该作者
改DIR就来回动了,为什么你不改?
回复

使用道具 举报

地板
ID:220661 发表于 2022-10-29 12:22 | 只看该作者
void main()
{
     kongzhi_Init();
           while(1)
                 {
     while(1)
     {
                        
                                  DIR=1;
        if(timer0>0.1)
        {
            timer0=0;
        }
        if(timer0<1)
        {
            PWM=0;
        }
        else
        {
            PWM=1;
        }
                                       
     }
                      DIR=0;
                 if(timer0>0.1)
        {
            timer0=0;
        }
        if(timer0<1)
        {
            PWM=0;
        }
        else
        {
            PWM=1;
        }  
                                
     }
         }

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

5#
ID:1048790 发表于 2022-10-29 18:53 | 只看该作者
Hephaestus 发表于 2022-10-29 12:07
改DIR就来回动了,为什么你不改?

我试了下  电机还是只会往一个方向运行
回复

使用道具 举报

6#
ID:1048790 发表于 2022-10-29 19:10 | 只看该作者
gongnn 发表于 2022-10-29 12:22
void main()
{
     kongzhi_Init();

大佬 你这个跟我的是一样的把  都是只会往一个方向转到底,并不能使其来回转动啊
回复

使用道具 举报

7#
ID:1048790 发表于 2022-10-29 19:19 | 只看该作者
Hephaestus 发表于 2022-10-29 12:07
改DIR就来回动了,为什么你不改?

改了 还是不行
回复

使用道具 举报

8#
ID:220661 发表于 2022-10-29 19:57 | 只看该作者
单片机有没有供电,接线对不对。单片机定时器有没有。

程序再简化点,切换dir方向后直接用delay函数延时试试。
回复

使用道具 举报

9#
ID:1048790 发表于 2022-10-29 20:10 | 只看该作者
gongnn 发表于 2022-10-29 19:57
单片机有没有供电,接线对不对。单片机定时器有没有。

程序再简化点,切换dir方向后直接用delay函数延时 ...

试过了 还是不太行
回复

使用道具 举报

10#
ID:883242 发表于 2022-10-29 21:02 | 只看该作者

测一下驱动器DIR+、DIR-两者之间的电压,很可能是接错了。
回复

使用道具 举报

11#
ID:1048790 发表于 2022-10-29 22:16 | 只看该作者
Hephaestus 发表于 2022-10-29 21:02
测一下驱动器DIR+、DIR-两者之间的电压,很可能是接错了。

用的是共阳极接法DIR+接的是正5V, DIR-接的才是I/O口 应该接线没问题吧
回复

使用道具 举报

12#
ID:1048790 发表于 2022-10-30 17:02 | 只看该作者
gongnn 发表于 2022-10-29 12:22
void main()
{
     kongzhi_Init();

大佬  这个程序不行 跟我的差不多 想让它来回转动的话  这样貌似不太行
回复

使用道具 举报

13#
ID:123289 发表于 2022-10-31 09:43 | 只看该作者
1、前进:DIR=1,给出一个脉冲,间隔一个时间TJ,再给出一个脉冲,再间隔一个时间TJ,再……。
2、后退:DIR=0,给出一个脉冲,间隔一个时间TJ,再给出一个脉冲,再间隔一个时间TJ,再……。
3、做个定时器,时常数就是TJ,这样每间隔一个TJ,给出一个脉冲就可以了,转向只要切换DIR。
4、关键点:把TJ做成变量,让每次的TJ都可以变化。
加速:每发一个脉冲就将TJ-N。例如:起步,将TJ调到最大,如:800ms,而后每次-5:800-5,800-5*2,800-5*3,800-5*4……,直到速最快:例如=10ms。
减速:每发一个脉冲就将TJ+N。例如:当前TJ=25,而后每次+10:25+10,25+10*2,25-10*3,25+10*4……,直到你满意的速率。
换向:不要立即改变DIR,而是先减速,停止时(你认为可以了),再改变DIR,再从起动开始加速。
5、TJ的最小值(最快速)、最大值(停止前)、加减速的N量,自己根据负载大小实践一下就可以得到了。

运行离开不了物理概念,主要是牛顿的加速度定律,
记住:先做方案,再画出流程图,走通流程图、再写程序。
回复

使用道具 举报

14#
ID:1048790 发表于 2022-10-31 15:23 | 只看该作者
yzwzfyz 发表于 2022-10-31 09:43
1、前进:DIR=1,给出一个脉冲,间隔一个时间TJ,再给出一个脉冲,再间隔一个时间TJ,再……。
2、后退:D ...

大佬  能详细地指导下吗? 你这有点多我有点懵
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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