Paso 2: Código!
Con el fin de mejorar la precisión de la gama del sensor, el código calcula que la velocidad del sonido es de acuerdo a la temperatura ambiente. La fórmula de la velocidad del sonido en aire a una cierta temperatura es: Vair = (331,3 + 0.606 * Tc) m/s donde Vair es la velocidad del sonido y Tc es la temperatura en grados Celsius según http://en.wikipedia.org/wiki/Speed_of_sound. Una vez que se ha calculado la velocidad del sonido, se mide la distancia al igual que lo es en otros códigos de sensor de la gama ultrasónica. El tiempo se multiplica por la velocidad y entonces reducido a la mitad dejando con unidades de distancia al objeto.
Si usted planea usarlo en temperaturas extremas, asegúrese de comprobar la hoja de datos del sensor de temperatura ya que le dan un rango de temperatura recomendado. A veces los sensores de temperatura funciona bien en una amplia gama pero puede que tenga que cambiar el código un poco para compensar las variaciones de salida del sensor de temperatura.
Por último, como con todo mi código, estoy usando un truco de depuración simple mi amigo me enseñó. Usando un valor booleano y si declaraciones, usted puede fácilmente encender comunicación serial o apagado cambiando debug en true o false.
Os adjunto el archivo de código original, de lo contrario el código puede copiarse directamente desde aquí:
/*******************************************************************************************************
********************************************************************************************************
Mejora la gama ultrasónica de detección creado por Calvin Kielas-Jensen
Utilizando un Arduino UNO, conectarse un pin de datos de sensor de temperatura TMP36 A0 y un sensor de gama ultrasónica de 4 pin con pin trig de pin digital 8 y eco clavija pin digital 9.
Este script mejora la precisión de un sensor de la gama ultrasónica mediante la medición de la temperatura ambiente. Sonido se mueve a través del aire en un dependiente de la velocidad a la temperatura ambiente según la siguiente ecuación: Vair = (331,3 + 0.606 * Tc) m/s donde Vair es la velocidad del sonido y Tc es la temperatura en grados Celsius.
Cualquier persona es agradable de utilizar y modificar este código siempre y cuando me den crédito. Gracias por respetar el movimiento de código abierto!
******************************************************************************************************** *******************************************************************************************************/
La mayoría de este código es tomada y modificada desde el código de sensor de temperatura ARDX y el PING
código de sensor.
int temperaturePin = A0; Ajustar la temperatura de flotador de entrada de pin; Variable de temperatura
depuración booleano = true; Para la comunicación serial set debug en true, para más rápido código set debug en false
larga duración, cm; Tiempo y cm de distancia de detección
int trig = 10, eco = 9; Ajustar pernos de trig y eco
void setup() {si (depuración) {Serial.begin(9600);}}
void loop() {temperatura = (getVoltage(temperaturePin) - 0.5) * 100;
Si (depuración) {Serial.println(temperature);}
Dar un breve impulso de baja previamente para asegurar un pulso limpio alto: pinMode (trig, salida); digitalWrite (trig, LOW); delayMicroseconds(2); digitalWrite (trig, HIGH); delayMicroseconds(5); digitalWrite (trig, LOW); duración = pulseIn (eco, alta);
cm = microsecondsToCentimeters (duración, temperatura); Si (depuración) {Serial.println(cm); Serial.println("cm"); } }
Float getVoltage (int pin) {vuelta (analogRead(pin) *. 004882814); //Converting de 0 a 1024 0 a 5v}
largo microsecondsToCentimeters (largo microsegundos, tiempo temporales) {vuelta (microsegundos * (331,3 + 0.606 * temp)) / 2; //Multiplying la velocidad del sonido a través de una cierta temperatura del aire por la //length tiempo tarda en alcanzar el objeto y hacia atrás, dividido por dos}