Page 1 of 1

PID back emf feedback

PostPosted: Mon Dec 07, 2015 2:06 pm
by aswad
i have problem to tune. can anyone check if i have problem in progress

i have done, stepped down the voltage from motor using volt divider which 5v, the feed the volt bemf to analog port, then make program. I want to motor 190 speed.

backemf1 = (int)(bacaan(4)*0.249266862); //scaling 1023 to 255
backemf2 = (int)(bacaan(5)*0.249266862);
backemf3 = (int)(bacaan(6)*0.249266862);
backemf4 = (int)(bacaan(7)*0.249266862);

error0 = 190 - left_emf();
p=(signed int)(kpl*error0);
d=(error0-error5);
pid=(signed int)(p+(kdl*d));
out=(signed int)(pid);
if(pid>255)pid=255;
if(pid<-255)pid=-255;
error5=error0;

CCP1=out;
CCP2=0;
backward();
lcdbaris(0x40);
send_string("");
lcd_bcd(1,3,out);

signed int left_emf(void)
{
return (backemf2 - backemf1);
}