微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 我做的循迹小车的PMW芯片老是发烫。。。求大神教解决方法

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

时间:10-02 整理:3721RD 点击:
源代码       
#include<reg52.h>
       
       
                sbit PWM1=P0^0;
                sbit PWM2=P0^1;
                sbit IN1=P0^2;
                sbit IN2=P0^3;
                sbit IN3=P0^4;
                sbit IN4=P0^5;
                sbit RP1=P2^0;//左边寻迹
                sbit 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<sd1) //电机1pwm调速
                PWM1=1;
                else
                PWM1=0;
                if(cnt2<sd2)
                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;
                }

电机驱动ic肯定会发烫了

你可以用pwm控制,减少通断时间降低发热

是否可以用dma形式发送,,,

这个不懂 学习了解一下  不知硬件是否有问题

发烫属于正常现象,工作频率太高就容易发烫。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top