单片机/MCU论坛
直播中

没事冒个泡

8年用户 3经验值
擅长:可编程逻辑 嵌入式技术
私信 关注

我做的循迹小车的PMW芯片老是发烫。。。求大神教解决方法

源代码       
#include
       
       
                ***it PWM1=P0^0;
                ***it PWM2=P0^1;
                ***it IN1=P0^2;
                ***it IN2=P0^3;
                ***it IN3=P0^4;
                ***it IN4=P0^5;
                ***it RP1=P2^0;//左边寻迹
                ***it RP3=P2^1;        //右边
                int count1,count2;//用于中断函数计数
                void delay(int z)
                {                       
                int x,y;
                for(x=z;x>0;x--)
                for(y=124;y>0;y--);
                }
                void forward1()//电机1前进
                {
                IN1=0;
                IN2=1;
                }
                void forward2()
                {                                                                                                                                                                  
                IN3=0;
                IN4=1;
                }
                void back1()//电机1后退
                {
                IN1=1;
                IN2=0;
                }
                void back2()
                {
                IN3=1;
                IN4=0;
                }
                void speed(int cnt1,int sd1,int cnt2,int sd2)
                {
                if(cnt1
                PWM1=1;
                else
                PWM1=0;
                if(cnt2                 PWM2=1;
                else
                PWM2=0;
                }
                void turn(int cnt1,int sd1,int cnt2,int sd2)
                {
                forward1();
                forward2();
                speed(cnt1,sd1,cnt2,sd2);
                }
                void back(int cnt1,int sd1,int cnt2,int sd2)
                {
                back1();
                back2();
                speed(cnt1,sd1,cnt2,sd2);
                }
                void main()
                {
                TMOD=0X01;
                EA=1;
                TH0=(65536-10000)/256;
                TL0=(65536-10000)%256;
                ET0=1;
                TR0=1;

               
       
                turn(count1,30,count2,35);        //2 有 1左
                delay(350);
                while(1)
                  {
                   if(RP1==0&&RP3==1)
                   turn(count1,60,count2,0);

                   if(RP1==1&&RP3==1)
                   back(count1,20,count2,25);

                   if(RP1==1&&RP3==0)
                   turn(count1,0,count2,10);
                   if(RP1==0&&RP3==0)
                   turn(count1,30,count2,35);
                  
                  }
                }
                void time()interrupt 1
                {
                TH0=(65536-1000)/256;
                TL0=(65536-1000)%256;
                count1++;
                count2++;
                if(count1>=100)
                count1=0;
                if(count2>=100)
                count2=0;
                }

回帖(5)

a1156284

2016-11-6 12:59:05
电机驱动ic肯定会发烫了
举报

a1156284

2016-11-6 13:03:43
你可以用pwm控制,减少通断时间降低发热
举报

lee_st

2016-11-6 15:29:22
是否可以用dma形式发送,,,
举报

王栋春

2016-11-6 20:00:19
这个不懂 学习了解一下  不知硬件是否有问题
举报

贾明

2016-11-6 23:42:04
发烫属于正常现象,工作频率太高就容易发烫。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分