刚刚开始玩两轮自平衡小车,还没有分数,不好意思。
打算先用ENC 03,把角速度用积分转换成角度,静态的时候角度基本是0,但是动态的时候输出角度不对,没有示波器。大家帮我看下吧
板子用的是arduino duemilanove 2009 - ATMega328P
大概思路就是把输出电压转换成角速度,然后计算时间,用积分换算成角度
float ang_speed=0;
float ref=0;
float angle=0;
float t1=0;
float t2=0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
t1=millis();
ang_speed=analogRead(A0)*5000.00/1024;//测得的电压
ref=analogRead(A1)*5000.00/1024;//参考电压
//Serial.print(" d=");
//Serial.print(ang_speed);
//Serial.print(" ref=");
//Serial.print(ref);
ang_speed=(ang_speed-ref);//测得的电压和参考电压的差值
Serial.print(" speed=");
Serial.print(ang_speed);
t2=millis();
ang_speed=ang_speed/0.67 //电压差->角速度,ENC 03的输出是0.67mV/度/秒
ang_speed=ang_speed*(t2-t1)/1000;//角速度->角度,t2-t1是时间差
Serial.print(" ang_speed:");
Serial.print(ang_speed);
angle=angle+ang_speed;//角度累加
Serial.print(" angle=");
Serial.println(angle);
}
} |