Lagesensor/ Gyroskope - Hilfe
hallo zusammen,
ich habe mich heute zum ersten mal einem lagesensor beschäftigt und wie mans erwartet tauchen auch sehr schnell einige probleme auf.
das ziel ist es, mit einem lagesensor (in diesem fall der l3g4200d) und einem arduino uno sowie später dann mit 4 ausfahrbaren füßen, eine schaltung zu bauen, die sich in eine waagerechte position bringen bzw halten kann.
ich habe bereits den sensor mit dem arduino verbunden und einen passenden quellcode zur erfassung der x,y,z daten geschrieben.
das problem ist, dass diese erfassten werte ständig schwanken und ich dafür keine erklärung habe und bisher auch keinen post dazu gefunden habe.
ich bedanke mich schon einmal im voraus für eure hilfe
ps: hier mein bisheriger quellcode
ich habe mich heute zum ersten mal einem lagesensor beschäftigt und wie mans erwartet tauchen auch sehr schnell einige probleme auf.
das ziel ist es, mit einem lagesensor (in diesem fall der l3g4200d) und einem arduino uno sowie später dann mit 4 ausfahrbaren füßen, eine schaltung zu bauen, die sich in eine waagerechte position bringen bzw halten kann.
ich habe bereits den sensor mit dem arduino verbunden und einen passenden quellcode zur erfassung der x,y,z daten geschrieben.
das problem ist, dass diese erfassten werte ständig schwanken und ich dafür keine erklärung habe und bisher auch keinen post dazu gefunden habe.
ich bedanke mich schon einmal im voraus für eure hilfe
ps: hier mein bisheriger quellcode
code: [select]
#include <wire.h>
#define gyro (0x0f)
#define x1 (0x28)
#define x2 (0x29)
#define y1 (0x2a)
#define y2 (0x2b)
#define z1 (0x2c)
#define z2 (0x2d)
int x1 = 0;
int x2 = 0;
int y1 = 0;
int y2 = 0;
int z1 = 0;
int z2 = 0;
char output[512];
void setup() {
wire.begin();
serial.begin(9600);
wire.begintransmission(gyro);
wire.write(0x20);
wire.write(0x0f);
wire.endtransmission();
wire.begintransmission(gyro);
wire.write(0x23);
wire.write(0x80);
wire.endtransmission();
delay(300);
}
void loop() {
datenerfassen();
}
void datenerfassen(){
unsigned int data[6];
for (int = 0; < 6; i++){
wire.begintransmission(gyro);
wire.write((40+i));
wire.endtransmission();
wire.requestfrom(gyro, 1);
if(wire.available() == 1){
data[i] = wire.read();
}
}
x1 = data[0];
x2 = data[1];
y1 = data[2];
y2 = data[3];
z1 = data[4];
z2 = data[5];
int xgyro = data[1]/100 - data[0]/100;
int ygyro = data[3]/100 - data[2]/100;
int zgyro = data[5]/100 - data[4]/100;
sprintf(output, "%d %d %d", xgyro, ygyro, zgyro);
serial.print(output);
serial.write(10);
delay(1000);
}
es ist natürlich, dass die werte schwanken. jeder sensor schwankt, ob adc oder imu.
im bereich der imu's sind komplementär- und der kalmanfilter sehr populär.
google diese begriffe mal, da gibts bereits genug. das ist schon seit ewigkeiten ein endloses thema.
gruss
felix
im bereich der imu's sind komplementär- und der kalmanfilter sehr populär.
google diese begriffe mal, da gibts bereits genug. das ist schon seit ewigkeiten ein endloses thema.
gruss
felix
Arduino Forum > International > Deutsch (Moderator: uwefed) > Lagesensor/ Gyroskope - Hilfe
arduino
Comments
Post a Comment