久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 小車跑不了直線?是怎么回事 [打印本頁]

作者: hymtnzc    時間: 2017-6-10 12:37
標題: 小車跑不了直線?是怎么回事
#include<reg52.h>  
#define uchar unsigned char  
#define V_TH  0XFF  
#define V_TL  0XF6  
#define V_TMOD 0X01  

void init_sys(void);            /*系統初始化函數*/  
void f_left();  //前進左轉  
void f_right(); //前進右轉  
void b_left();  //后退左轉  
void b_right(); //后退右轉  
void forward(); //前進  
void back();    //后退  
void stop();    //停止  

//控制小車正反轉  
sbit IN1 = P0 ^ 0;  
sbit IN2 = P0 ^ 1;  
sbit IN3 = P0 ^ 2;  
sbit IN4 = P0 ^ 3;  
//控制小車轉速  
sbit ENA = P2 ^ 0;  
sbit ENB = P2 ^ 1;  

uchar ZKB1 = 80, ZKB2 = 80; //控制輪子轉速  
uchar tmp;  //存放串口數據  
void main (void)  
{  
    init_sys();  
    ENA = 0;  
    ENB = 0;  
    ZKB1 = 90;  
    ZKB2 = 90;  
    IN1 = 0;  
    IN2 = 0;  
    IN3 = 0;  
    IN4 = 0;  
    TMOD |= 0x20;           // 定時器1工作于8位自動重載模式, 用于產生波特率  
    TH1 = 0xFD;             // 波特率9600  
    TL1 = 0xFD;  
    SCON = 0x50;            // 設定串行口工作方式  
    PCON &= 0xef;           // 波特率不倍增  
    TR1 = 1;                // 啟動定時器1  
    while(1)  
    {  

        if(RI)                      // 是否有數據到來  
        {  
            RI = 0;  
            tmp = SBUF;             // 暫存接收到的數據  
            switch(tmp)  
            {  
            case 'a':  
                forward();  
                break;  
            case 'b':  
                back();  
                break;  
            case 'c':  
                f_left();  
                break;  
            case 'd':  
                f_right();  
                break;  
            case 'e':  
                b_left();  
                break;  
            case 'f':  
                b_right();  
                break;  
            case 'g':  
                stop();  
                break;  
            }  
        }  
    }  
}  
/******************************************************
*函數功能:對系統進行初始化,包括定時器初始化和變量初始化*/  
void init_sys(void)            /*系統初始化函數*/  
{  
    /*定時器初始化*/  
    TMOD = V_TMOD;  
    TH0 = V_TH;  
    TL0 = V_TL;  
    TR0 = 1;  
    ET0 = 1;  
    EA = 1;  
}  
/*********************************************
*函數功能:控制方向*/  

void forward()  
{  
    IN1 = 1;  
    IN2 = 0;  
    IN3 = 1;  
    IN4 = 0;  
}  
void back()  
{  
    IN1 = 0;  
    IN2 = 1;  
    IN3 = 0;  
    IN4 = 1;  
}  
void f_left()  
{  
    ZKB1 = 90;  
    ZKB2 = 45;  
    IN1 = 1;  
    IN2 = 0;  
    IN3 = 1;  
    IN4 = 0;  
}  
void f_right()  
{  
    ZKB1 = 45;  
    ZKB2 = 90;  
    IN1 = 1;  
    IN2 = 0;  
    IN3 = 1;  
    IN4 = 0;  
}  
void b_left()  
{  
    ZKB1 = 90;  
    ZKB2 = 45;  
    IN1 = 0;  
    IN2 = 1;  
    IN3 = 0;  
    IN4 = 1;  
}  
void b_right()  
{  
    ZKB1 = 45;  
    ZKB2 = 90;  
    IN1 = 0;  
    IN2 = 1;  
    IN3 = 0;  
    IN4 = 1;  
}  
void stop()  
{  
    IN1 = 1;  
    IN2 = 1;  
    IN3 = 1;  
    IN4 = 1;  
}  
/********************************************************
/*中斷函數*/  
void timer0(void) interrupt 1 using 2  
{  
    static uchar click = 0;                /*中斷次數計數器變量*/  
    TH0 = V_TH;                                  /*恢復定時器初始值*/  
    TL0 = V_TL;  
    ++click;  

    if (click >= 100) click = 0;  

    if (click <= ZKB1)     /*當小于占空比值時輸出高電平,高于時是低電平,從而實現占空比的調整*/  
    {  
        ENA = 1;  
    }  

    if (click > ZKB1)  
    {  
        ENA = 0;  
    }  

    if (click <= ZKB2)     /*當小于占空比值時輸出高電平,高于時是低電平,從而實現占空比的調整*/  
    {  
        ENB = 1;  
    }  

    if (click > ZKB2)  
    {  
        ENB = 0;  
    }  

}  

1497069302039.jpg (3.75 MB, 下載次數: 121)

1497069302039.jpg

作者: qjyjack612510    時間: 2017-6-10 14:01
湊個熱鬧。
作者: yzwzfyz    時間: 2017-6-10 18:09
先不考慮程序,你的車子能跑直線嗎?
作者: FGH12_PCC    時間: 2017-6-10 19:36
可以考慮使用PID算法

作者: xlbtlmy    時間: 2017-6-10 22:20
2輪的因為左右兩邊電機轉速不一致,基本上走不了直線,采用增量PID控制電機轉速可以是走的曲線平滑一點
作者: 2587012141    時間: 2017-6-10 23:09
占樓 湊個熱鬧
作者: HC6800-ES-V2.0    時間: 2017-6-11 09:26
一般在小車,在沒有限制條件時(如尋跡等),是跑不了直線的!!!
因為:(這就是技術與科學的區別了!)
第一:你以為給電機的電壓是“絕對”——就是絕對一樣嗎?
第二:你的電機絕對一樣嗎?
第三:你啟動電機的時間絕對一樣嗎?
第四:電車的輪子與地面的抓地力絕對一樣嗎?這個涉及小車重心在絕對中心嗎?輪子受到壓力絕對一樣嗎?等等
第五:地面絕對一樣平整嗎?
.................
不說了,你要生氣了。
在課本中說的科學,都是理想化的,你做技術,就是具體化的,以前書上的題,不能拿到這里來用。而且,我們用的模塊,本身便宜,精度就不是很高。
所以,正常情況下,小車自己走不了直線。
像樓上說的,你要讓小車走直線,得加好多傳感器才行。如:測個速,但千萬不要以為測出、調節到一樣的速度,小車就走直線了(平整路面差不多了),輪子打不打滑呢等等。
之所以我能說這么多,也是有經歷的。原來我也想搞這個,咨詢了專業人士,這些都是專業人士說的,還說這本身就是一個大大的研究課題。我放棄了。沒辦法,我沒那個能力。呵呵

作者: 羊5553    時間: 2017-6-11 12:59
看個熱鬧
作者: hymtnzc    時間: 2017-6-11 17:15
謝謝大家了,我用四輪的會好點下次搞個試試。
作者: hymtnzc    時間: 2017-6-19 09:22
大家好,我用另外一個程序小車可以走直,這個走不了。我說的走直線不是直線是正常的前進后退。
作者: 2222222222223    時間: 2017-6-19 09:58
加油~湊個熱鬧,
作者: 2222222222223    時間: 2017-6-19 09:59
用增益式PID算法試試
作者: 18379751330    時間: 2017-6-19 10:42
要實現什么功能呢

作者: timmy1227    時間: 2017-6-19 18:48
學習學習
作者: 南柯風靜    時間: 2017-6-19 20:23
湊個熱鬧
作者: 饑餓的丶蟲子    時間: 2017-6-20 11:32
排除程序問題的話,很有可能是兩個輪子或電機不平行,有一定誤差,會導致小車越跑越偏。
作者: xjjwws    時間: 2017-6-20 16:43
1.小車的輪子是否直徑絕對相一致?2.程序的運行時間你看看有沒有問題?
作者: hymtnzc    時間: 2017-6-23 13:06
三輪小車,視頻上不了。

IMG_20170617_154844.jpg (110.5 KB, 下載次數: 80)

IMG_20170617_154844.jpg

作者: zxy51    時間: 2017-6-23 18:00
HC6800-ES-V2.0 發表于 2017-6-11 09:26
一般在小車,在沒有限制條件時(如尋跡等),是跑不了直線的!!!
因為:(這就是技術與科學的區別了!) ...

好厲害的樣子,長見識了,原來還有這么多的問題




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产精品视频免费看 | 日韩欧美自拍 | 天天艹夜夜艹 | 久草手机在线 | 国产视频在线观看视频 | 毛片一区 | 国产农村妇女aaaaa视频 | 麻豆av免费| 欧美视频久久 | 五月天久久久 | 美女久久久久 | 午夜无遮挡 | 午夜视频免费 | 午夜小视频在线观看 | 欧美日韩精品 | 欧美成人精品一区二区 | 久久久久久久久国产 | 两性免费视频 | 青青久操 | 日韩黄色影院 | 日本毛片在线观看 | 一区二区三区视频 | 久久精品二区 | 国产日韩免费 | 一级黄色免费视频 | 伦一理一级一a一片 | 欧美大白屁股 | 啊v在线观看 | 日韩在线观看一区 | 欧美性猛交xxxx乱大交退制版 | 国产成人99久久亚洲综合精品 | 国产欧美日韩在线观看 | 亚洲高清视频在线 | 在线成人小视频 | 日韩国产一区二区 | 久在线视频 | 国产成人精 | 日本中文字幕在线播放 | 黄色影视大全 | 青青草国产成人av片免费 | 欧美性猛交乱大交 |