找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

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

查看数: 2444 | 评论数: 13 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-10-29 09:04

正文摘要:

#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;      &n ...

回复

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

大佬  能详细地指导下吗? 你这有点多我有点懵
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量,自己根据负载大小实践一下就可以得到了。

运行离开不了物理概念,主要是牛顿的加速度定律,
记住:先做方案,再画出流程图,走通流程图、再写程序。
ID:1048790 发表于 2022-10-30 17:02
gongnn 发表于 2022-10-29 12:22
void main()
{
     kongzhi_Init();

大佬  这个程序不行 跟我的差不多 想让它来回转动的话  这样貌似不太行
ID:1048790 发表于 2022-10-29 22:16
Hephaestus 发表于 2022-10-29 21:02
测一下驱动器DIR+、DIR-两者之间的电压,很可能是接错了。

用的是共阳极接法DIR+接的是正5V, DIR-接的才是I/O口 应该接线没问题吧
ID:883242 发表于 2022-10-29 21:02

测一下驱动器DIR+、DIR-两者之间的电压,很可能是接错了。
ID:1048790 发表于 2022-10-29 20:10
gongnn 发表于 2022-10-29 19:57
单片机有没有供电,接线对不对。单片机定时器有没有。

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

试过了 还是不太行
ID:220661 发表于 2022-10-29 19:57
单片机有没有供电,接线对不对。单片机定时器有没有。

程序再简化点,切换dir方向后直接用delay函数延时试试。
ID:1048790 发表于 2022-10-29 19:19
Hephaestus 发表于 2022-10-29 12:07
改DIR就来回动了,为什么你不改?

改了 还是不行
ID:1048790 发表于 2022-10-29 19:10
gongnn 发表于 2022-10-29 12:22
void main()
{
     kongzhi_Init();

大佬 你这个跟我的是一样的把  都是只会往一个方向转到底,并不能使其来回转动啊
ID:1048790 发表于 2022-10-29 18:53
Hephaestus 发表于 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 回帖助人的奖励!

查看全部评分

ID:883242 发表于 2022-10-29 12:07
改DIR就来回动了,为什么你不改?
ID:1048790 发表于 2022-10-29 10:36
不知道该如何调试 使其来回转动

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

Powered by 单片机教程网

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