Lecture de l'ADXRS453 OK
This commit is contained in:
parent
f68175ce05
commit
ff9ad4682d
99975
acq_ADXRS453_5ms_filtre_0_001_enr02.csv
Normal file
99975
acq_ADXRS453_5ms_filtre_0_001_enr02.csv
Normal file
File diff suppressed because it is too large
Load Diff
23346
acq_ADXRS453_5ms_no_filter_enr01.csv
Normal file
23346
acq_ADXRS453_5ms_no_filter_enr01.csv
Normal file
File diff suppressed because it is too large
Load Diff
24933
acq_ADXRS453_5ms_no_filter_enr02.csv
Normal file
24933
acq_ADXRS453_5ms_no_filter_enr02.csv
Normal file
File diff suppressed because it is too large
Load Diff
BIN
graph/ADXRS453_Filtre_10s.png
Normal file
BIN
graph/ADXRS453_Filtre_10s.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 58 KiB |
11
graph_ADXRS453_enr01.gp
Normal file
11
graph_ADXRS453_enr01.gp
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
set title "ADXRS453 - Axe Z\nT_{acq} : 5 ms - sans filtre"
|
||||||
|
|
||||||
|
set xlabel "Temps (s)"
|
||||||
|
set ylabel "Vitesse (°/s)"
|
||||||
|
set grid ytics
|
||||||
|
|
||||||
|
#set term png size 1200,600
|
||||||
|
|
||||||
|
plot "./acq_ADXRS453_5ms_no_filter_enr01.csv" using 1:4 w l title "Vitesse Z"
|
||||||
|
|
||||||
|
pause -1
|
11
graph_ADXRS453_enr02.gp
Normal file
11
graph_ADXRS453_enr02.gp
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
set title "ADXRS453 - Axe Z\nT_{acq} : 5 ms - filtre 10 s"
|
||||||
|
|
||||||
|
set xlabel "Temps (s)"
|
||||||
|
set ylabel "Vitesse (°/s)"
|
||||||
|
set grid ytics
|
||||||
|
|
||||||
|
#set term png size 1200,600
|
||||||
|
|
||||||
|
plot "./acq_ADXRS453_5ms_filtre_0_001_enr02.csv" using 1:4 w l title "Vitesse Z"
|
||||||
|
|
||||||
|
pause -1
|
11
graph_enr03.gp
Normal file
11
graph_enr03.gp
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
set title "Observation des 3 axes\nT_{acq} : 5 ms - filtre 100 ms"
|
||||||
|
|
||||||
|
set xlabel "Temps (s)"
|
||||||
|
set ylabel "Vitesse (°/s)"
|
||||||
|
set grid ytics
|
||||||
|
|
||||||
|
#set term png size 1200,600
|
||||||
|
|
||||||
|
plot "./acq_5ms_env_50ms_enr_03.csv" using 1:2 w l title "Vitesse X", "./acq_5ms_env_50ms_enr_03.csv" using 1:3 w l title "Vitesse Y", "./acq_5ms_env_50ms_enr_03.csv" using 1:4 w l title "Vitesse Z"
|
||||||
|
|
||||||
|
pause -1
|
11
graph_enr04.gp
Normal file
11
graph_enr04.gp
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
set title "Observation des 3 axes\nT_{acq} : 5 ms - filtre 1 seconde"
|
||||||
|
|
||||||
|
set xlabel "Temps (s)"
|
||||||
|
set ylabel "Vitesse (°/s)"
|
||||||
|
set grid ytics
|
||||||
|
|
||||||
|
#set term png size 1200,600
|
||||||
|
|
||||||
|
plot "./acq_5ms_env_50ms_enr_04.csv" using 1:2 w l title "Vitesse X", "./acq_5ms_env_50ms_enr_04.csv" using 1:3 w l title "Vitesse Y", "./acq_5ms_env_50ms_enr_04.csv" using 1:4 w l title "Vitesse Z"
|
||||||
|
|
||||||
|
pause -1
|
4
gyro.c
4
gyro.c
@ -93,7 +93,7 @@ void Gyro_Read(uint16_t step_ms){
|
|||||||
gyro_get_vitesse_brute(_vitesse_angulaire_brute, vitesse_calibration);
|
gyro_get_vitesse_brute(_vitesse_angulaire_brute, vitesse_calibration);
|
||||||
//gyro_get_angles(&vitesse_angulaire, NULL);
|
//gyro_get_angles(&vitesse_angulaire, NULL);
|
||||||
|
|
||||||
/*
|
|
||||||
// conversion de la vitesse angulaire en degré/seconde
|
// conversion de la vitesse angulaire en degré/seconde
|
||||||
gyro_get_vitesse_normalisee(_vitesse_angulaire_brute, vitesse_angulaire);
|
gyro_get_vitesse_normalisee(_vitesse_angulaire_brute, vitesse_angulaire);
|
||||||
|
|
||||||
@ -103,7 +103,7 @@ void Gyro_Read(uint16_t step_ms){
|
|||||||
angle_gyro.rot_x = angle_gyro.rot_x + vitesse_angulaire->rot_x * step_ms * 0.001;
|
angle_gyro.rot_x = angle_gyro.rot_x + vitesse_angulaire->rot_x * step_ms * 0.001;
|
||||||
angle_gyro.rot_y = angle_gyro.rot_y + vitesse_angulaire->rot_y * step_ms * 0.001;
|
angle_gyro.rot_y = angle_gyro.rot_y + vitesse_angulaire->rot_y * step_ms * 0.001;
|
||||||
angle_gyro.rot_z = angle_gyro.rot_z + vitesse_angulaire->rot_z * step_ms * 0.001;
|
angle_gyro.rot_z = angle_gyro.rot_z + vitesse_angulaire->rot_z * step_ms * 0.001;
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int16_t gyro_get_temp(void){
|
int16_t gyro_get_temp(void){
|
||||||
|
@ -24,7 +24,7 @@ struct {
|
|||||||
void Gyro_traitementDonnees(unsigned char * tamponRecu);
|
void Gyro_traitementDonnees(unsigned char * tamponRecu);
|
||||||
unsigned char pariteOctet(unsigned char octet);
|
unsigned char pariteOctet(unsigned char octet);
|
||||||
|
|
||||||
int gyro_spi_wr_32bits(uint8_t *transmit_buffer, uint8_t *recieve_buffer){
|
int gyro_spi_wr_32bits(uint16_t *transmit_buffer, uint8_t *recieve_buffer){
|
||||||
int nb_recu;
|
int nb_recu;
|
||||||
|
|
||||||
cs_select();
|
cs_select();
|
||||||
@ -48,7 +48,7 @@ void affiche_tampon_32bits(uint8_t *tampon){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int gyro_get_sensor_data(uint8_t tampon_envoi[], uint8_t tampon_reception[]){
|
int gyro_get_sensor_data(uint16_t tampon_envoi[], uint8_t tampon_reception[]){
|
||||||
tampon_envoi[0] = 0x30;
|
tampon_envoi[0] = 0x30;
|
||||||
tampon_envoi[1] = 0x00;
|
tampon_envoi[1] = 0x00;
|
||||||
tampon_envoi[2] = 0x00;
|
tampon_envoi[2] = 0x00;
|
||||||
@ -65,86 +65,74 @@ int gyro_get_sensor_data(uint8_t tampon_envoi[], uint8_t tampon_reception[]){
|
|||||||
affiche_tampon_32bits(tampon_reception);
|
affiche_tampon_32bits(tampon_reception);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
affiche_tampon_32bits(tampon_reception);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int gyro_init_check(){
|
int gyro_init_check(){
|
||||||
// Renvoi 0 si l'initialisation s'est bien passée
|
// Renvoi 0 si l'initialisation s'est bien passée
|
||||||
// Renvoi 1 si le gyroscope n'a pas répondu
|
// Renvoi 1 si le gyroscope n'a pas répondu
|
||||||
uint8_t tampon_envoi[5]="\0\0\0\0\0";
|
uint16_t tampon_envoi[5]={0, 0, 0, 0, 0};
|
||||||
uint8_t tampon_reception[5]="\0\0\0\0\0";
|
uint8_t tampon_reception[5]="\0\0\0\0\0";
|
||||||
|
|
||||||
// On suit les instructions de la page 20 de la fiche technique
|
// On suit les instructions de la page 20 de la fiche technique
|
||||||
sleep_ms(100); // init du gyro
|
sleep_ms(100); // init du gyro - On ignore la réponse
|
||||||
printf("T=100ms\n");
|
printf("T=100ms\n");
|
||||||
tampon_envoi[0] = 0x30;
|
tampon_envoi[0] = 0x30;
|
||||||
tampon_envoi[1] = 0x00;
|
tampon_envoi[1] = 0x00;
|
||||||
tampon_envoi[2] = 0x00;
|
tampon_envoi[2] = 0x00;
|
||||||
tampon_envoi[3] = 0x02;
|
tampon_envoi[3] = 0x02;
|
||||||
|
|
||||||
printf("envoi : ");
|
|
||||||
affiche_tampon_32bits(tampon_envoi);
|
|
||||||
gyro_spi_wr_32bits(tampon_envoi, tampon_reception);
|
gyro_spi_wr_32bits(tampon_envoi, tampon_reception);
|
||||||
Gyro_traitementDonnees(tampon_reception);
|
Gyro_traitementDonnees(tampon_reception);
|
||||||
printf("recoi : ");
|
|
||||||
affiche_tampon_32bits(tampon_reception);
|
affiche_tampon_32bits(tampon_reception);
|
||||||
|
|
||||||
|
|
||||||
sleep_ms(50); // t=150ms
|
sleep_ms(50); // t=150ms - On ignore, les données ne sont pas actualisées
|
||||||
printf("T=150ms\n");
|
printf("T=150ms\n");
|
||||||
tampon_envoi[0] = 0x30;
|
tampon_envoi[0] = 0x30;
|
||||||
tampon_envoi[1] = 0x00;
|
tampon_envoi[1] = 0x00;
|
||||||
tampon_envoi[2] = 0x00;
|
tampon_envoi[2] = 0x00;
|
||||||
tampon_envoi[3] = 0x01;
|
tampon_envoi[3] = 0x01;
|
||||||
|
|
||||||
printf("envoi : ");
|
|
||||||
affiche_tampon_32bits(tampon_envoi);
|
|
||||||
gyro_spi_wr_32bits(tampon_envoi, tampon_reception);
|
gyro_spi_wr_32bits(tampon_envoi, tampon_reception);
|
||||||
Gyro_traitementDonnees(tampon_reception);
|
Gyro_traitementDonnees(tampon_reception);
|
||||||
affiche_tampon_32bits(tampon_reception);
|
|
||||||
Gyro_traitementDonnees(tampon_reception);
|
|
||||||
if(Gyro_SensorData.SQ != 0b100){
|
if(Gyro_SensorData.SQ != 0b100){
|
||||||
printf("Gyro_Init - SQ bits (%#01x)!= 0x4", Gyro_SensorData.SQ);
|
printf("Gyro_Init - SQ bits (%#01x)!= 0x4", Gyro_SensorData.SQ);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
affiche_tampon_32bits(tampon_reception);
|
||||||
|
|
||||||
sleep_ms(50); // t=200ms
|
sleep_ms(50); // t=200ms - En cours d'autotest
|
||||||
printf("T=200ms\n");
|
printf("T=200ms\n");
|
||||||
tampon_envoi[0] = 0x30;
|
tampon_envoi[0] = 0x30;
|
||||||
tampon_envoi[1] = 0x00;
|
tampon_envoi[1] = 0x00;
|
||||||
tampon_envoi[2] = 0x00;
|
tampon_envoi[2] = 0x00;
|
||||||
tampon_envoi[3] = 0x01;
|
tampon_envoi[3] = 0x01;
|
||||||
|
|
||||||
printf("envoi : ");
|
|
||||||
affiche_tampon_32bits(tampon_envoi);
|
|
||||||
gyro_spi_wr_32bits(tampon_envoi, tampon_reception);
|
gyro_spi_wr_32bits(tampon_envoi, tampon_reception);
|
||||||
Gyro_traitementDonnees(tampon_reception);
|
Gyro_traitementDonnees(tampon_reception);
|
||||||
|
if(Gyro_SensorData.SQ != 0b100){
|
||||||
printf("recoi : ");
|
printf("Gyro_Init - SQ bits (%#01x)!= 0x4", Gyro_SensorData.SQ);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
affiche_tampon_32bits(tampon_reception);
|
affiche_tampon_32bits(tampon_reception);
|
||||||
|
|
||||||
sleep_us(1); // t=200ms + TD
|
sleep_us(1); // t=200ms + TD - résultats de 200ms + TD, en cours d'autotest.
|
||||||
printf("T=200ms+TD\n");
|
printf("T=200ms+TD\n");
|
||||||
tampon_envoi[0] = 0x30;
|
tampon_envoi[0] = 0x30;
|
||||||
tampon_envoi[1] = 0x00;
|
tampon_envoi[1] = 0x00;
|
||||||
tampon_envoi[2] = 0x00;
|
tampon_envoi[2] = 0x00;
|
||||||
tampon_envoi[3] = 0x01;
|
tampon_envoi[3] = 0x01;
|
||||||
|
|
||||||
gyro_spi_wr_32bits(tampon_envoi, tampon_reception);
|
gyro_spi_wr_32bits(tampon_envoi, tampon_reception);
|
||||||
Gyro_traitementDonnees(tampon_reception);
|
Gyro_traitementDonnees(tampon_reception);
|
||||||
if(Gyro_SensorData.SQ != 0x4){
|
if(Gyro_SensorData.SQ != 0b100){
|
||||||
printf("Gyro_Init - SQ bits (%#01x)!= 0x4\n", Gyro_SensorData.SQ);
|
printf("Gyro_Init - SQ bits (%#01x)!= 0x4", Gyro_SensorData.SQ);
|
||||||
affiche_tampon_32bits(tampon_reception);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
if(Gyro_SensorData.ST != 0x1){
|
|
||||||
printf("Gyro_Init - Status (%#01x)!= 0x1\n", Gyro_SensorData.ST);
|
|
||||||
affiche_tampon_32bits(tampon_reception);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
affiche_tampon_32bits(tampon_reception);
|
affiche_tampon_32bits(tampon_reception);
|
||||||
|
|
||||||
sleep_us(1); // t=200ms + 2TD
|
sleep_us(1); // t=200ms + 2TD - doit être nominal
|
||||||
printf("T=200ms+2TD\n");
|
printf("T=200ms+2TD\n");
|
||||||
tampon_envoi[0] = 0x00;
|
tampon_envoi[0] = 0x00;
|
||||||
tampon_envoi[1] = 0x00;
|
tampon_envoi[1] = 0x00;
|
||||||
@ -153,32 +141,6 @@ int gyro_init_check(){
|
|||||||
if(gyro_get_sensor_data(tampon_envoi, tampon_reception)){
|
if(gyro_get_sensor_data(tampon_envoi, tampon_reception)){
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
for(int i=3; i<10; i++){
|
|
||||||
sleep_us(1); // t=200ms + 3TD
|
|
||||||
printf("T=200ms+%dTD\n", i);
|
|
||||||
if(gyro_get_sensor_data(tampon_envoi, tampon_reception)){
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for(int i=10; i<20; i++){
|
|
||||||
gyro_get_vitesse_brute(NULL, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
for(int i=20; i<30; i++){
|
|
||||||
sleep_us(1); // t=200ms + 3TD
|
|
||||||
printf("T=200ms+%dTD\n", i);
|
|
||||||
if(gyro_get_sensor_data(tampon_envoi, tampon_reception)){
|
|
||||||
//return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//DEBUG
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -191,16 +153,15 @@ int gyro_config(){
|
|||||||
|
|
||||||
|
|
||||||
void gyro_get_vitesse_brute(struct t_angle_gyro* angle_gyro, struct t_angle_gyro* angle_gyro_moy){
|
void gyro_get_vitesse_brute(struct t_angle_gyro* angle_gyro, struct t_angle_gyro* angle_gyro_moy){
|
||||||
uint8_t tampon_envoi[5]="\0\0\0\0\0";
|
uint16_t tampon_envoi[5]={0, 0, 0, 0, 0};
|
||||||
uint8_t tampon_reception[5]="\0\0\0\0\0";
|
uint8_t tampon_reception[5]="\0\0\0\0\0";
|
||||||
int16_t rot_z;
|
int16_t rot_z;
|
||||||
|
|
||||||
sleep_us(1); // A supprimer plus tard
|
sleep_us(1); // A supprimer plus tard
|
||||||
printf("T=READ\n");
|
|
||||||
if(gyro_get_sensor_data(tampon_envoi, tampon_reception)){
|
if(gyro_get_sensor_data(tampon_envoi, tampon_reception)){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
rot_z = Gyro_SensorData.rateData;
|
rot_z = Gyro_SensorData.rateData;
|
||||||
|
|
||||||
if(angle_gyro_moy == NULL){
|
if(angle_gyro_moy == NULL){
|
||||||
@ -211,7 +172,7 @@ void gyro_get_vitesse_brute(struct t_angle_gyro* angle_gyro, struct t_angle_gyro
|
|||||||
angle_gyro->rot_x = 0;
|
angle_gyro->rot_x = 0;
|
||||||
angle_gyro->rot_y = 0;
|
angle_gyro->rot_y = 0;
|
||||||
angle_gyro->rot_z = (int32_t) rot_z * 32 - angle_gyro_moy->rot_z;
|
angle_gyro->rot_z = (int32_t) rot_z * 32 - angle_gyro_moy->rot_z;
|
||||||
}*/
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void gyro_get_vitesse_normalisee(struct t_angle_gyro* _vitesse_angulaire,
|
void gyro_get_vitesse_normalisee(struct t_angle_gyro* _vitesse_angulaire,
|
||||||
|
6
test.c
6
test.c
@ -38,7 +38,7 @@ int main() {
|
|||||||
temps_ms_old = temps_ms;
|
temps_ms_old = temps_ms;
|
||||||
while (1) {
|
while (1) {
|
||||||
u_int16_t step_ms = 5;
|
u_int16_t step_ms = 5;
|
||||||
float coef_filtre = 0.977;
|
float coef_filtre = 1-0.977;
|
||||||
|
|
||||||
while(temps_ms_old == Temps_get_temps_ms());
|
while(temps_ms_old == Temps_get_temps_ms());
|
||||||
temps_ms_old = Temps_get_temps_ms();
|
temps_ms_old = Temps_get_temps_ms();
|
||||||
@ -46,7 +46,7 @@ int main() {
|
|||||||
// Tous les pas de step_ms
|
// Tous les pas de step_ms
|
||||||
if(Temps_get_temps_ms() % step_ms){
|
if(Temps_get_temps_ms() % step_ms){
|
||||||
Gyro_Read(step_ms);
|
Gyro_Read(step_ms);
|
||||||
/*
|
|
||||||
//gyro_affiche(gyro_get_vitesse(), "Angle :");
|
//gyro_affiche(gyro_get_vitesse(), "Angle :");
|
||||||
// Filtre
|
// Filtre
|
||||||
angle_gyro = gyro_get_vitesse();
|
angle_gyro = gyro_get_vitesse();
|
||||||
@ -62,7 +62,7 @@ int main() {
|
|||||||
|
|
||||||
printf("%f, %f, %f, %f\n", (double)temps_ms_old / 1000, vitesse_filtre_x, vitesse_filtre_y, vitesse_filtre_z);
|
printf("%f, %f, %f, %f\n", (double)temps_ms_old / 1000, vitesse_filtre_x, vitesse_filtre_y, vitesse_filtre_z);
|
||||||
//gyro_affiche(angle_gyro, "Vitesse (°/s),");
|
//gyro_affiche(angle_gyro, "Vitesse (°/s),");
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Toutes les 50 ms
|
// Toutes les 50 ms
|
||||||
|
Loading…
Reference in New Issue
Block a user