Étape 2: Code d’elle !
Afin d’améliorer la précision du capteur de la gamme, le code va calculer ce que la vitesse du son est conforme à la température ambiante. La formule de la vitesse du son dans l’air à une certaine température est : Vair = (331.3 + 0,606 * Tc) m/s où Vair est la vitesse du son et Tc est la température en Celsius selon http://en.wikipedia.org/wiki/Speed_of_sound. Une fois la vitesse du son a été calculée, la distance est mesurée de la même manière, il existe dans les autres codes de capteur gamme ultrasonique. Le temps est multiplié par la vitesse et puis coupées en deux en vous laissant avec des unités de distance à l’objet.
Si vous envisagez d’utiliser ceci dans des températures extrêmes, veillez à vérifier la fiche technique de la sonde de température qu’ils donneront une plage de température recommandée. Parfois les capteurs de température fonctionnera très bien dans une large gamme, mais vous devrez peut-être modifier le code un peu plus pour compenser les variations de la production de la sonde de température.
Enfin, comme avec tout mon code, j’utilise un truc simple débogage mon ami m’a appris. À l’aide d’une valeur booléenne et si des déclarations, vous pouvez facilement allumer la communication série ou éteint en changeant de déboguer sur true ou false.
J’ai joint le fichier de code original, dans le cas contraire, le code peut être copié directement depuis ici :
/*******************************************************************************************************
********************************************************************************************************
Amélioré la détection de la gamme ultrasonique créé par Calvin Kielas-Jensen
En utilisant un Arduino UNO, reliez une broche de données de capteur de température TMP36 A0 et d’un capteur de gamme ultrasonique de 4 broches à la trig broche Broche numérique 8 et écho broche Broche numérique 9.
Ce script améliore la précision d’un capteur de gamme ultrasonique en mesurant la température ambiante. Son se déplace dans l’air à une personne à charge de la vitesse sur la température ambiante selon l’équation suivante : Vair = (331.3 + 0,606 * Tc) m/s où Vair est la vitesse du son et Tc est la température en degrés Celsius.
Tout le monde est bienvenu pour utiliser et modifier ce code aussi longtemps que je me donne le crédit. Merci de respecter le mouvement open source !
******************************************************************************************************** *******************************************************************************************************/
La majorité de ce code est prise et modifiée d’après le code de capteur de température ARDX et le PING
code de capteur.
int temperaturePin = A0 ; Régler la température d’entrée flotteur broche de température ; Variable de la température de consigne
booléenne debug = true ; Pour communication série set debug à true, pour un code plus rapide la valeur debug false
longue durée, cm ; Régler l’heure et cm pour la distance de détection
trig int = 10, écho = 9 ; Définir les épingles pour trig et echo
void setup() {si (débogage) {Serial.begin(9600);}}
void loop() {température = (getVoltage(temperaturePin) - 0.5) * 100 ;
Si (débogage) {Serial.println(temperature);}
Donner une brève impulsion faible au préalable pour s’assurer une impulsion propre élevée : pinMode (trig, sortie) ; digitalWrite (trig, faible) ; delayMicroseconds(2) ; digitalWrite (trig, HIGH) ; delayMicroseconds(5) ; digitalWrite (trig, faible) ; durée = pulseIn (echo, HIGH) ;
cm = microsecondsToCentimeters (durée, température) ; Si (débogage) {Serial.println(cm) ; Serial.println("cm") ; } }
float getVoltage (int NIP) {return (analogRead(pin) *. 004882814); //Converting de 0 à 1024 0 à 5v}
long microsecondsToCentimeters (microsecondes, longs, long temporaires) {return (microsecondes * (331.3 + 0,606 * temp)) / 2; //Multiplying la vitesse du son grâce à une certaine température de l’air par les //length du temps nécessaire pour atteindre l’objet puis retour, divisé par deux}