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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 120|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

基于arduino系統(tǒng)的pid循跡小車(chē)開(kāi)發(fā)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
該小車(chē)采用Arduino UNO主控制核心,通過(guò)傳感器傳來(lái)的信號(hào),對(duì)當(dāng)前環(huán)境作出判斷,最后對(duì)電機(jī)做出相應(yīng)的動(dòng)作。單片機(jī)通過(guò)紅外傳感器檢測(cè)場(chǎng)地黑線(xiàn),從而控制電機(jī)驅(qū)動(dòng)模塊,改變電機(jī)轉(zhuǎn)速來(lái)控制小車(chē)方向,從而達(dá)到循跡的目的
整個(gè)系統(tǒng)包括Arduino UNO主控板、電機(jī)驅(qū)動(dòng)模塊L298n、循跡傳感器TCR5000L、鋰電池(建議是可充放電的)和車(chē)體。

循跡代碼:
float Kp , Ki = 0, Kd ;                         //pid彎道參數(shù)參數(shù)
float error = 0, P = 0, I = 0, D = 0, PID_value = 0;      //pid直道參數(shù)
float previous_error = 0, previous_I = 0;               //誤差值
static int initial_motor_speed = 70;      //此處值為0-255的值,受電池電壓影響,需要自己調(diào)試
int A[5] = {19, 18, 17, 16, 15};
double L, R;
float a, b, c, d, p, m;
int ena = 5;
int enb = 10;
void setup()
{
  Serial.begin(9600);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);

  pinMode(ena, OUTPUT);
  pinMode(enb, OUTPUT);

  pinMode(A1, INPUT);
  pinMode(A2, INPUT);
  pinMode(A3, INPUT);
  pinMode(A4, INPUT);
  pinMode(A5, INPUT);
}

void loop()
{
Kp =3.25;
    Kd =30;               //此處的Kp和Kd也需使用者根據(jù)車(chē)的結(jié)構(gòu)和既定軌跡調(diào)試進(jìn)行調(diào)試,
  m = 0;
  a = 3, b = 6, c = 11, d = 18, p = 1;
  trac_run();
}
void trac()
{
  unsigned char temp = 0b00000;       //臨時(shí)變量用于新一輪采集
  for (int i = 0; i < 5; i++)
    temp |= digitalRead(A[ i]) << i;       //輪詢(xún)5個(gè)傳感器輸出,并將查詢(xún)結(jié)果轉(zhuǎn)換為編碼形式
  switch (temp)
  {
    case 0b01111: error = -d; break;
    case 0b00111: error = -c; break;
    case 0b10111: error = -b; break;
    case 0b10011: error = -a, m = 10; break;
    case 0b11011: error = 0, m = 20; break;
    case 0b11001: error = a, m = 10; break;
    case 0b11101: error = b; break;
    case 0b11100: error = c; break;
    case 0b11110: error = d; break;
    default: p = 1; break;
  }
}

void pid()
{
  P = error;
  I = I + error;
  D = error - previous_error;
  PID_value = (Kp * P) + (Ki * I) + (Kd * D);
  previous_error = error;
}

void trac_run()
{
  trac();
  pid();
  L = p * ( initial_motor_speed + PID_value + m);
  R = p * ( initial_motor_speed - PID_value + m);
  if (abs(L) > 255) L = L / abs(L) * 255;
  if (abs(R) > 255) R = R / abs(R) * 255;
  if (abs(L) == 0) L = 1;
  if (abs(R) == 0) R = 1;
  motor();
}

void motor()
{
  if (L > 0 && R > 0)
    analogWrite(enb, L),
                analogWrite(ena, R),
                motordir(0, 1, 1, 0);
  else if (- L > 0 && - R > 0)
    analogWrite(enb, -L),
                analogWrite(ena, -R),
                motordir(1, 0, 0, 1);
  else if (- L > 0 && R > 0)
    analogWrite(enb, -L),
                analogWrite(ena, R),
                motordir(0, 1, 0, 1);
  else if (L > 0 && -R > 0)
    analogWrite(enb, L),
                analogWrite(ena, -R),
                motordir(1, 0, 1, 0);
  else

    motordir(0, 0, 0, 0);
}

void motordir(int out1, int out2, int out3, int out4)   //輸入1 0,控制方向
{
  digitalWrite(6, out1);
  digitalWrite(7, out2);
  digitalWrite(8, out3);
  digitalWrite(9, out4);
}


圖片1.png (493.12 KB, 下載次數(shù): 0)

整體圖

整體圖

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产激情在线 | 黄色a视频 | 午夜视频在线看 | 日韩免费在线 | 九色在线视频 | 91视频免费在线观看 | 成人免费精品 | 久久人人视频 | av日韩精品 | 亚洲一级二级三级 | 毛片91 | 青青草国产成人av片免费 | 亚洲一区二区在线播放 | 国产视频一二三 | 午夜成人在线视频 | 成人午夜网 | 亚洲精品日韩精品 | 国产成人+综合亚洲+天堂 | 青青国产在线 | 国产一区二区在线观看视频 | 欧美在线播放 | a毛片视频 | 日本特黄特色aaa大片免费 | 久久久天堂 | 亚洲天堂久久久 | 特级黄色大片 | 国产精品视频免费 | 三上悠亚激情av一区二区三区 | 欧美自拍视频 | 少妇中文字幕 | 91视频亚洲 | 国产精品伦子伦免费视频 | 国产a精品 | 久久黄色影院 | 黄色大片在线免费观看 | 91av免费在线观看 | 日日爱视频 | 黄色三级大片 | 91操操操 | 师生出轨h灌满了1v1 | 亚洲iv一区二区三区 |