FriconiX
Des milliers de pictogrammes gratuits dessinés avec amour !

Mesure de distance précise avec une Arduino et un capteur Sharp GP2Y0A02YK

Le but de cet article est d’expliquer comment convertir la tension des capteurs d'un distance Sharp GP2Y0A02YK en une mesure de distance précise. Ce capteur utilise la technique de la triangulation pour estimer une distance comprise entre 20 et 150cm.

Campagne de mesures

Un relevé des mesures a été réalisé avec un pas de 10 mm. Le graphique suivant montre la sortie du capteur GP2Y0A02YK en fonction de la distance. Comme cela est stipulé dans la documentation, le capteur ne peut pas effectuer de mesure en dessous de 20 cm. Cette plage de distance est difficilement utilisable car il est impossible de lever les ambiguïtés.

Valeur du convertisseur ADC en fonction de la distance avec le capteur de distance Sharp GP2Y0A02YK

Approximation polynômiale

Grâce à la fonction polyfit de Matlab, la courbe a été approximée avec un polynôme d’ordre 4. L’approximation couvrant la plage de 14cm à 150cm est illustrée ci-dessous :

Approximation polynômiale de la distance pour le capteur Sharp GP2Y0A02YK

Résultats

L’approximation pour le capteur GP2Y0A02YK est donné par l’équation ci-dessous. ADC est la valeur brute retournée par la fonction analogRead() disponible dans les bibliothèques Arduino.

$$ Distance = 2583.711122992086 \\\\ - 20.197897855471.ADC \\\\ + 0.071746539329.ADC^2 \\\\ - 0.000115854182.ADC^3 \\\\ + 0.000000068590.ADC^4 $$

En s’appuyant sur ces résultats, une fonction C++ peut facilement être écrite afin de retourner la distance :

/*!
    \brief  make a distance measurement with a Sharp GP2Y0A02YK sensor
    \return the measured distance in mm

*/
float get_Sharp_GP2Y0A02YK_Distance(int PinID)
{
    // Read analog to digital converter value
    float ADCValue = (float)analogRead(PinID);

    // Convert in millimeters and return distance
    return  2583.711122992086
            - 20.197897855471 * ADCValue
            + 0.071746539329 * ADCValue * ADCValue
            - 0.000115854182 * ADCValue * ADCValue * ADCValue
            + 0.000000068590 * ADCValue * ADCValue * ADCValue * ADCValue;
}

Téléchargements

Fichiers Excel, images, données brutes et script Matlab peuvent être téléchargés ici:

SHARP_Distance_Sensors.zip

Voir aussi


Dernière mise à jour : 01/12/2019