REGULACIJA PID-a POMOCU WEB KAMERE
Arduino & processing
Bašić Nedim - Bakalović Jasmin
kako je potekla ideja...
KAKO JE POTEKLA IDEJA...
ARDUINO
sta je to arduino?
- mikrokontroler
- ATmega 328 (Atmel)
- 14 I/O
- 16 MHz
- konektori
ARDUINO IDE
- open source
- C, C++, Java...
PROCESSING
STA JE TO PROCESSING?
- programski jezik
- razvojno okruženje
- učenje, izrada prototipova, proizvodnja...
MACHINE VISION
PID REGULACIJA
- Proporcionalno integracijska regulacija koja se temelji na trikomponentnim PID regulatorima.
- PID-regualtori se dobivaju kad se paralelno spoje proporcionalni, integracijski i derivacijski regulator, te se ustvari dobiva regula cijsko djelovanje temeljeno na proporcionalnom, integracijskom i derivacijskom djelovanju.
PID REGULACIJA
- Arduino kod za PID regulaciju:
PID myPID(&Input, &Output, &Setpoint,4.9,1.81,0.24, REVERSE);
- Kako bih mogli koristiti PID algoritam, koji je potreban za naš projekat radi balansiranja, odnosno pozicioniranja loptice, moramo uključiti biblioteku
#include <PID_v1.h>
PID REGULACIJA
PID REGULACIJA
PID REGULACIJA
PID REGULACIJA
BALL AND BEAM
ARDUINO KOD
if (Serial.available()>0)
{
int data = Serial.parseInt();
if (newSetpoint==true&&data!=888)
{
Setpoint=data;
Setpoint = map(data, 0, 640, 0, 255);//test
Serial.print("Setpoint:");
Serial.println(Setpoint);
Serial.print("Pixel position");
newSetpoint=false;
}
if (data==888)
{
Serial.println(data);
newSetpoint=true;
}
if (data==0)
{myservoX.write(85);}
else{
// map the X pixel data (0-640) to 0 - 255
Input = map(data, 0, 640, 0, 255);
myPID.Compute();//podesi izlaz PID kontrolera
int OutputX = map(Output, 0, 255, 85, 110);
//Write servo position
myservoX.write(OutputX);
}
}
else if((Serial.available()==0))
{
myservoX.write(85);
}
PROCESSING KOD
void setup(){
MySerialport = new Serial(this,"COM11",57600);//serial port setup
size(640,480);//screnn size in pixels
MyWebCam = new JMyron();//call JM
MyWebCam.start(640,480);//
MyWebCam.findGlobs(1); // 1 is on, 0 is off
PFont font; //create font
font = loadFont("Arial-BoldMT-16.vlw");
textFont(font);
}
//=============================================================//
void mousePressed()
{
//Set new Setpoint
Xtarget = mouseX;
MySerialport.write(888+"\n\r");//send command int for arduino
MySerialport.write(Xtarget+"\n\r");//send new setpoint value
//MyWebCam.settings();
}
NASTAVIT CE SE...
deck
By asterix01
deck
- 276