找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2780|回復(fù): 14
收起左側(cè)

紅外遙控程序調(diào)試問題,usb供電可以,獨(dú)立電源不行

[復(fù)制鏈接]
ID:652430 發(fā)表于 2019-12-2 10:04 來自手機(jī) | 顯示全部樓層 |閱讀模式
我用紅外遙控寫了一個簡單程序,連接usb時(shí)調(diào)試用遙控器可以控制小車啟動停止,用電源供電時(shí),按遙控器沒反應(yīng),是什么原因造成的,怎么解決
回復(fù)

使用道具 舉報(bào)

ID:96682 發(fā)表于 2019-12-2 15:09 來自手機(jī) | 顯示全部樓層
USB 一般為 5V,電源供電電壓為幾伏
回復(fù)

使用道具 舉報(bào)

ID:25310 發(fā)表于 2019-12-2 16:18 | 顯示全部樓層
電源部分沒處理好,
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2019-12-2 16:57 | 顯示全部樓層
查這個電源供電是否能滿足電路需求。
回復(fù)

使用道具 舉報(bào)

ID:650297 發(fā)表于 2019-12-2 21:03 | 顯示全部樓層
用兩個電源,電機(jī)部分單供電與單片機(jī)共地。
回復(fù)

使用道具 舉報(bào)

ID:652430 發(fā)表于 2019-12-3 09:27 來自手機(jī) | 顯示全部樓層
電源用6/9伏都試過,都不行,而且還有個問題就是另一個程序用傳感器檢測啟動小車運(yùn)行,用usb連接可以正常運(yùn)行,但是按下電源開關(guān),傳感器檢測到后,小車不動,且發(fā)出滴滴的聲音,當(dāng)用手撥動一下車輪,就會自己轉(zhuǎn)動,按程序走。綜上所述不知道什么原因,用電源開關(guān)不能按程序檢測行走。
回復(fù)

使用道具 舉報(bào)

ID:652430 發(fā)表于 2019-12-3 09:59 來自手機(jī) | 顯示全部樓層
yanguang123 發(fā)表于 2019-12-2 21:03
用兩個電源,電機(jī)部分單供電與單片機(jī)共地。

兩個5v電源,要很多空間
回復(fù)

使用道具 舉報(bào)

ID:524818 發(fā)表于 2019-12-3 10:39 | 顯示全部樓層
上圖看看
回復(fù)

使用道具 舉報(bào)

ID:367934 發(fā)表于 2019-12-3 12:04 | 顯示全部樓層
應(yīng)該是硬件設(shè)計(jì)沒處理好。按正常情況,USB電源和主電源是連通的,主電源只是經(jīng)過降壓芯片,可能是電源芯片部分有問題。電機(jī)都有一個啟動電流電壓,用手撥動一下車輪。才能啟動應(yīng)該是電源轉(zhuǎn)換后不夠力。
回復(fù)

使用道具 舉報(bào)

ID:652430 發(fā)表于 2019-12-5 16:53 來自手機(jī) | 顯示全部樓層
適得府君書 發(fā)表于 2019-12-3 12:04
應(yīng)該是硬件設(shè)計(jì)沒處理好。按正常情況,USB電源和主電源是連通的,主電源只是經(jīng)過降壓芯片,可能是電源芯片 ...

這兩天學(xué)用pwm控制就沒事了
回復(fù)

使用道具 舉報(bào)

ID:491875 發(fā)表于 2019-12-7 08:06 | 顯示全部樓層
獨(dú)立電源的電流輸出能力是否足夠?有沒有并聯(lián)大電容?如果可能,在獨(dú)立電源上并聯(lián)一只1000UF左右的電容試一試。USB通常電流輸出能力大于1A。
回復(fù)

使用道具 舉報(bào)

ID:465554 發(fā)表于 2019-12-7 12:26 | 顯示全部樓層
電壓不夠,供電不足,加一個升壓模塊就行
回復(fù)

使用道具 舉報(bào)

ID:491875 發(fā)表于 2019-12-7 16:39 | 顯示全部樓層
兩笙山世 發(fā)表于 2019-12-7 12:26
電壓不夠,供電不足,加一個升壓模塊就行

電壓不夠加一個升壓模塊可以解決問題。供電不知有沒有升壓模塊可解決不了問題!況且樓主已經(jīng)說了,6V,9V電壓試過,顯然,電壓不夠的原因可以排除,應(yīng)該是供電電流不夠的可能性比較大,特別是瞬時(shí)供電電流不夠的可能性比較大,因?yàn)橛檬謸軇榆囕喓罂梢宰约恨D(zhuǎn)動接頭!顯然,是因?yàn)殡姍C(jī)的啟動電流比較大,而供電電流相對不足。增加電源并聯(lián)電容可以提高電源瞬時(shí)電流,也就是降低電源內(nèi)阻。
回復(fù)

使用道具 舉報(bào)

ID:652430 發(fā)表于 2019-12-10 16:04 | 顯示全部樓層
老愚童63 發(fā)表于 2019-12-7 16:39
電壓不夠加一個升壓模塊可以解決問題。供電不知有沒有升壓模塊可解決不了問題!況且樓主已經(jīng)說了,6V,9V ...

我用電腦連接調(diào)試就可以,用獨(dú)立電源調(diào)試就接收不了紅外信號,程序我用一個定時(shí)器把PWM和紅外接收寫一起,分開兩個定時(shí)器寫的話,只能一次接收一個按鍵信號,要重啟才可以接收另一個,有什么辦法解決。程序如下:
#include<reg52.h>
            sbit P36=P3^6 ;
         sbit P37=P3^7 ;
         sbit P24=P2^4;
         sbit ENA=P1^0;
         sbit P11=P1^1;
         sbit P12=P1^2;
          sbit ENB=P1^3         ;
          sbit P14=P1^4;
          sbit P15=P1^5;
           sbit IR=P3^2;
         
         void fonrt();
         void zuozuan();
            void tingzhi();

   unsigned char irtime;
   bit irpro_ok,irok;
   unsigned char IRcord[4];
   unsigned char irdata[33];
   void Ir_work (void);
   void Ircordpro(void);
       
         unsigned char pwm_val_left =0;
   unsigned char push_val_left =0;
   unsigned char pwm_val_right =0;
unsigned char push_val_right=0;  
   unsigned int time;
                 void         pwm_out_left_moto() ;
                 void pwm_out_right_moto() ;
                 bit Left_moto_stop =1; //右電機(jī)停轉(zhuǎn)
                 bit Right_moto_stop=1;
       
                 
#define Left_moto_Stop    {P1^1=0,P1^2=0;}  
#define Right_moto_Stop   {P1^4=0,P1^5=0;}
sbit Left_moto_pwm= P1^0;       
sbit Right_moto_pwm         = P1^3        ;

/******************************************************************
**                       左電機(jī)調(diào)速
******************************************************************/
void pwm_out_left_moto()
{  
       

            if(pwm_val_left<=push_val_left)
                        {
                        ENA=0;
       
                        }
                else
                    {
                              ENA=1;
                                                                 
                        }
                if(pwm_val_left>=20)
                           ENA=1;
        }



/******************************************************************
**                       右電機(jī)調(diào)速
******************************************************************/
void pwm_out_right_moto(void)
{

            if(pwm_val_right<=push_val_right)
            {
                    Right_moto_pwm=1;
                }
        else
            {
                        Right_moto_pwm=0;
                }
        if(pwm_val_right>=20)
               pwm_val_right=0;
   }


        void tim0_isr(void)interrupt 1 using 1
        {
        irtime++;
         pwm_val_left++;
         pwm_val_right++;
         pwm_out_left_moto();
         pwm_out_right_moto();                  
        }

        void EX0_ISR(void)interrupt 0
        {
        static unsigned char i;
        static bit startflag;
        if (startflag)
        {if(irtime<63&&irtime>=33)
        i=0;
        irdata=irtime;
        irtime=0;
        i++;
        if (i==33)
        {irok=1;
        i=0;
        }
        }
        else
        {irtime=0;
        startflag=1;}
        }

        void TIM0init(void)
        {TMOD=0x02;
                 TH0= 0x00;                  //1ms定時(shí)
        TL0= 0x00;
        ET0=1;
        TR0=1;
        TR1=0;}

        void EX0init(void)
        {IT0=1;
        EX0=1;
        EA=1;}

void Ircordpro (void)
{unsigned char i,j,k;
unsigned char cord,value;
k=1;
for (i=0;i<4;i++)
{for(j=1;j<=8;j++)
{cord=irdata[k];
if(cord>7)
value |=0x80;
if(j<8)
{value>>=1;
}
k++;
}IRcord=value;
value=0;}
irpro_ok=1;
}
  
           void Ir_work(void)
        {switch(IRcord[2])
        {case 0x18:fonrt();break;
         case 0x52:tingzhi( );break;
         case 0x08:zuozuan();break;
         default:break;}
         irpro_ok=0        ;
         }

   void delay (int xms)
   {unsigned int i,j;
   for (i=xms;i>0;i--)
   for (j=112;j>0;j--);}

void  fonrt ()
{ push_val_right=16;  
push_val_left =16;
  P11=1;
P12=0;
P14=1;
P15=0;
delay(200);
  }

   void zuozuan()
   {   
           delay(500);
   push_val_left=8;
         push_val_right=12;
P11=0;
P12=1;
        P14=1;
P15=0;            
}

void tingzhi()
   {P1=0x00;
   }
   
   void main()
   {  IP=0X02;
            EX0init();
   TIM0init();
             while(1)
  {
   if(irok)
   {Ircordpro();
   irok=0;}

  if(irpro_ok)         
   {   
        Ir_work();  
   }
   }
   }
回復(fù)

使用道具 舉報(bào)

ID:649963 發(fā)表于 2019-12-10 21:49 | 顯示全部樓層
查這個電源供電是否能滿足電路需求。 以及電源部分是否處理好
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表