Bonjour;
J'utilise un détecteur ultra son HC-SR04. mesure max de 5m.
Je l'exploite via la bibliothèque <newPing.h> commenté chez arduino.cc.
Je rencontre un problème de fiabilité de mesures.
A partir d'environs 1.2m le retour de mesure est faussé avec des écarts de plus de 10 cm voir 50cm parfois.
Si la distance a mesurer atteint plus de 1.4m le retour mesuré est incohérent alors que aucun objet se trouve a cette distance.
il reste très stable et précis sous 1m de détection sauf que Je fait mes tests avec un carton. Quant j'oriente la face du carton vers la droite ou la gauche je perd la mesure réel et j'obtiens un retour faussé. (même sous 1m). Le signale retourne seulement à 90°??
Le capteur est dit précis au millimètres mais fait des bon de 1cm a la lecture.
Malgré une tentative d’amortissement de mesure et de filtre rien ne change.
J'ai même essayé le filtre medium de la bibliothèque = négatif.
Après de long jours de recherche et contrôle je souhaiterais avoir des retours d’expérience de personnes ayant utilisé ce capteur. Car je commence à douter de la fiabilité du module.
Pour ceux qui voudrais essayer!
/*But du programme.
Version 01) Afficher => Via <NewPing.h> la distance mesuré par le capteur ultra-son sur le moniteur serie .
=> Problemede stabilité mesures;
02) Mettre en place la fonction MESURE_US_Ping.
=> Problemede stabilité mesures;
03) Mettre en place la fonction d'amortissement DAMPING.+> filtrage des rebonds aléatoir ou incohérants.
=> Problemede stabilité mesures;
Materiels: Capteur ultra-son HC-SR04.
Carte arduino UNO.
Note utiles: Câblages des broches.
| Arduino | HC-SR04 |
| --------- | -----------
| Pin (12) => Echo. Retour de la valeur mesuré.
| Pin (11) => Trig. Lancement des puls de mesures.
Pour plus de details -HC-SR04- https://www.google.fr/search?q=hc-sr04+datasheet&ie=utf-8&oe=utf-8&gws_rd=cr&ei=UbthVZPSIIz_UK-egJAI
*/
//-------------------HC-RS04----------------------
#include <NewPing.h> // Biblioteque d'exploitation du ping de brochages.
#define echo 12 // Definition de la broches Echo.
#define trig 11 // Definition de la broche Trig.
NewPing US (11,12,500);//NewPing Nom_Variable (broche_trig, broche_echo, distance du ping a defaut 500cm)
//------------------Tableaux utiles---------------
int mes [5] = {};//Tableau de releve de mesures.
int flt [5] = {};////Tableau de comparaisons.
void setup() {
Serial.begin (115200);//Ouverture d'une liaison serie pour affichage de la mesure.
}//Fin de setup;
void loop() {
mesure_US_00();//Traitement de la mesure.
damping_02();//Filtre des retours de mesures.
//Serial.println(" ");
//delay(1000);
//while(1);
}//Fin de LOOP
/*Fonction mesure_US version 00. ==> mesure_US_00()
Notes utiles: -Ouvrire la bibliotheque <<NewPing.h> dans le programme principale.
-Déclarer les broches pour l'utilisation de <NewPing.h>dans le programme principale.
Probleme rencontré => lecture aleatoire a partire de 1 metre +> revoir le mode d'acquisition mesure.
*/
void mesure_US_00(){
int i = 0;
//----Réalise une premiere mesure qui sert de référence de comparaison avec les cinq prochaines.
//Serial.print ("Mesures: ");
int Dist = US.ping();//Demande de lecture.
//delayMicroseconds();
int mesures = Dist/58;//mise a l'echelle.
mes[0] = mesures;//Remplissage de la valeur de reference.
//Serial.print(mes[0]); Serial.print (" ");//Visu de la mesure ref.
//Serial.println (" ");
//----Réalise les cinq mesures utiles a la comparaison.
for(i=1; i<=4; i++){ //Boucle d'integration des cinq mesures utiles au filtre
int Dist = US.ping();//Demande de lecture.
delayMicroseconds(60);
int mesures = Dist/58;//mise a l'echelle.
mes[i] = mesures;//Remplissage du tableau "mes" des relevés de mesures.
//Serial.print(mes[i]); Serial.print (" ");//Visu des cinq mesures.
}//fin de for.
//Serial.println (" ");
//delay(100);
}//Fin de fonction
Merci de votre intérêt.