在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 航模遙控器改裝---PPM波形產(chǎn)生

            航模遙控器改裝---PPM波形產(chǎn)生

            作者: 時間:2016-11-18 來源:網(wǎng)絡(luò) 收藏
            最近接觸航模,很有興趣,拆了一個航模遙控器,準(zhǔn)備改裝下。對航模不太了解,首先從遙控入手,需要了解輸出信號,可以用遙控器結(jié)合電腦的模擬軟件來練習(xí)調(diào)試。首先用好的遙控器來測試輸出的PPM波形,連續(xù)的發(fā)射波形和部分波形如下圖所示:


            于是用單片機編寫了一個同樣的波形,6通道的PPM波形,一個周期的總時間20ms,6個PPM波形,高電平每個波形最大1.4ms,最小0.6ms,低電平固定0.4ms。

            臨時焊接了一個電路,比較丑,哈哈,但是效果還是可以的。

            根據(jù)遙控器內(nèi)部空間結(jié)構(gòu),昨天剛畫完整的PCB板子,主控單片機換成了PIC16F917,無線遙控模塊先用NRF2401測試,等OK了再換成距離遠(yuǎn)一點的無線模塊;最多8通道,PCB還在打樣中。部分原理圖和PCB如下圖所示:




            手頭上隨便找了一個單片機板子,是STC12C5410AD的,編寫了一個航模遙控器AD采集和PPM發(fā)射的最簡單程序,具體程序如下:
            /************ STC12C5410AD學(xué)習(xí)板 ******************/
            /*功能描述:STC12C5410AD內(nèi)部AD使用 */
            /*作者: ClimberWin */
            /*外部晶振22.1184 MHZ */
            /*L7805穩(wěn)壓在4.88-4.98V之間,根據(jù)實際測量確定電壓 */
            /**************************************************/
            /*修改時間: */
            /*修改內(nèi)容: */
            //2011.7.28
            //AD采集產(chǎn)生PPM波形
            //實際調(diào)試OK
            #include
            #include
            #include
            #include
            #define uchar unsigned char
            #define uint unsigned int
            #define ulong unsigned long
            sbit PPM_OUT = P2^5; //溫度測量,測量熱敏電阻的參數(shù)?
            uint ad_temp; //AD數(shù)據(jù)保存的地址
            uint ad0_data; //AD數(shù)據(jù)保存的地址
            uint ad1_data; //AD數(shù)據(jù)保存的地址
            uint ad2_data; //AD數(shù)據(jù)保存的地址
            uint ad3_data; //AD數(shù)據(jù)保存的地址
            uint ad4_data; //AD數(shù)據(jù)保存的地址
            uint ad5_data; //AD數(shù)據(jù)保存的地址
            void Delay1ms(unsigned int count);
            void STC12C5410AD_int(void); //AD初始化
            void Delay1ms(unsigned int count);
            void Delay1ms(unsigned int count)
            {
            unsigned int i,j;
            for(i=0;i
            for(j=0;j<120;j++);
            }
            void delay(unsigned int count)
            {
            unsigned int i;
            for(i=0;i
            }
            /*STC12C5410AD的AD初始化程序*/
            // ADC_CONTR=[ADC_POWER] [SPEED1] [SPEED0] [ADC_FLAG] [ADC_START] [CHS2] [CHS1] [CHS0]
            // ADC_DATA 高8位 ADC_LOW2 //低2位
            void STC12C5410AD_int(void)
            {
            ADC_CONTR=0x80 ; //開轉(zhuǎn)換電源 設(shè)置轉(zhuǎn)換速度為1080個時鐘周期轉(zhuǎn)換一次,選擇AD0通道
            Delay1ms(20); //稍做延時,大于1ms就可以
            /*I/O口作為AD使用,設(shè)置漏極開路模式*/
            P1M0=1;
            P1M1=1;
            }
            /*******************************************/
            //一個波形20ms,6個PPM波形,高電平每個波形最大1.4ms,最小0.6ms,低電平固定0.4ms
            /*
            */
            void PPW_Sent(uchar Channel1,Channel2,Channel3,Channel4,Channel5,Channel6) // PPM波形產(chǎn)生
            {
            uint cc;
            cc=1000;
            PPM_OUT=1;
            //delay(5000); //20ms
            delay(cc-ad0_data);//
            delay(cc-ad1_data);//
            delay(cc-ad2_data);//
            delay(cc-ad3_data);//
            delay(cc-ad4_data);//
            delay(cc-ad5_data);//
            PPM_OUT=0;
            delay(220);//0.4ms
            //通道1
            PPM_OUT=1;
            delay(330);//0.6ms
            delay(ad0_data);//1ms
            PPM_OUT=0;
            delay(220);//0.4ms
            //通道2
            PPM_OUT=1;
            delay(330);//0.6ms
            delay(ad1_data);//1ms
            PPM_OUT=0;
            delay(220);//0.4ms
            //通道3
            PPM_OUT=1;
            delay(330);//0.6ms
            delay(ad2_data);//1ms
            // delay(770);//1.4ms
            PPM_OUT=0;
            delay(220);//0.4ms
            //通道4
            PPM_OUT=1;
            delay(330);//0.6ms
            delay(ad3_data);//1ms
            PPM_OUT=0;
            delay(220);//0.4ms
            //通道5
            PPM_OUT=1;
            delay(330);//0.6ms
            delay(ad4_data);//1ms
            PPM_OUT=0;
            delay(220);//0.4ms
            //通道6
            PPM_OUT=1;
            delay(330);//0.6ms
            delay(ad5_data);//1ms
            PPM_OUT=0;
            delay(220);//0.4ms
            PPM_OUT=1;
            }
            /*****************主程序************************/
            main()
            { //main start
            uint aa;
            ad0_data=220;
            ad1_data=220;
            ad2_data=220;
            ad3_data=220;
            ad4_data=220;
            ad5_data=220;
            aa=220;
            STC12C5410AD_int(); //AD初始化
            while(1)
            {
            ADC_CONTR=0xe0 ; //開轉(zhuǎn)換電源 設(shè)置轉(zhuǎn)換速度
            delay(aa);//
            ///////AD0轉(zhuǎn)換
            ADC_CONTR|=0x08; //開始AD轉(zhuǎn)換(ADC_START=1)
            ADC_CONTR|=0x00; //選擇AD0通道
            while(!(ADC_CONTR & 0x10)); //判斷AD是否轉(zhuǎn)換結(jié)束
            ADC_CONTR&=0xef;//轉(zhuǎn)換結(jié)束后標(biāo)志位ADC_FLAG清零
            ad_temp=ADC_LOW2;
            ad_temp=(ad_temp+ ((uint)ADC_DATA)<<2); //最大0.8ms delay(440)
            ad0_data=ad_temp/2.3;
            ///////AD1轉(zhuǎn)換
            ADC_CONTR=0xe0 ; //開轉(zhuǎn)換電源 設(shè)置轉(zhuǎn)換速度
            delay(aa);//
            ADC_CONTR|=0x08; //開始AD轉(zhuǎn)換(ADC_START=1)
            ADC_CONTR|=0x01; //選擇AD1通道
            while(!(ADC_CONTR & 0x10)); //判斷AD是否轉(zhuǎn)換結(jié)束
            ADC_CONTR&=0xef;//轉(zhuǎn)換結(jié)束后標(biāo)志位ADC_FLAG清零
            ad_temp=ADC_LOW2;
            ad_temp=(ad_temp+ ((uint)ADC_DATA)<<2); //最大0.8ms delay(440)
            ad1_data=ad_temp/2.3;
            ///////AD2轉(zhuǎn)換
            ADC_CONTR=0xe0 ; //開轉(zhuǎn)換電源 設(shè)置轉(zhuǎn)換速度
            delay(aa);//
            ADC_CONTR|=0x08; //開始AD轉(zhuǎn)換(ADC_START=1)
            ADC_CONTR|=0x02; //選擇AD2通道
            while(!(ADC_CONTR & 0x10)); //判斷AD是否轉(zhuǎn)換結(jié)束
            ADC_CONTR&=0xef;//轉(zhuǎn)換結(jié)束后標(biāo)志位ADC_FLAG清零
            ad_temp=ADC_LOW2;
            ad_temp=(ad_temp+ ((uint)ADC_DATA)<<2); //最大0.8ms delay(440)
            ad2_data=ad_temp/2.3;
            ///////AD3轉(zhuǎn)換
            ADC_CONTR=0xe0 ; //開轉(zhuǎn)換電源 設(shè)置轉(zhuǎn)換速度
            delay(aa);//
            ADC_CONTR|=0x08; //開始AD轉(zhuǎn)換(ADC_START=1)
            ADC_CONTR|=0x03; //選擇AD3通道
            while(!(ADC_CONTR & 0x10)); //判斷AD是否轉(zhuǎn)換結(jié)束
            ADC_CONTR&=0xef;//轉(zhuǎn)換結(jié)束后標(biāo)志位ADC_FLAG清零
            ad_temp=ADC_LOW2;
            ad_temp=(ad_temp+ ((uint)ADC_DATA)<<2); //最大0.8ms delay(440)
            ad3_data=ad_temp/2.3;
            /*
            ///////AD4轉(zhuǎn)換
            ADC_CONTR=0x83 ;
            delay(aa);//
            ADC_CONTR|=0x08; //開始AD轉(zhuǎn)換(ADC_START=1)
            ADC_CONTR|=0x04; //選擇AD4通道
            while(!(ADC_CONTR & 0x10)); //判斷AD是否轉(zhuǎn)換結(jié)束
            ADC_CONTR&=0xef;//轉(zhuǎn)換結(jié)束后標(biāo)志位ADC_FLAG清零
            ad_temp=ADC_LOW2;
            ad_temp=(ad_temp+ ((uint)ADC_DATA)<<2); //最大0.8ms delay(440)
            ad4_data=ad_temp/2.3;
            ///////AD5轉(zhuǎn)換
            ADC_CONTR=0x83 ;
            delay(aa);//
            ADC_CONTR|=0x08; //開始AD轉(zhuǎn)換(ADC_START=1)
            ADC_CONTR|=0x05; //選擇AD5通道
            while(!(ADC_CONTR & 0x10)); //判斷AD是否轉(zhuǎn)換結(jié)束
            ADC_CONTR&=0xef;//轉(zhuǎn)換結(jié)束后標(biāo)志位ADC_FLAG清零
            ad_temp=ADC_LOW2;
            ad_temp=(ad_temp+ ((uint)ADC_DATA)<<2); //最大0.8ms delay(440)
            ad5_data=ad_temp/2.3;
            */
            PPW_Sent();
            }
            }


            關(guān)鍵詞: 航模遙控器PPM波

            評論


            技術(shù)專區(qū)

            關(guān)閉