PILOTARE UN MODULO AD ULTRASUONI CON UN PIC16F877
Il modulo SRF04 è un dispositivo ad ultrasuoni che consente di rilevare la vicinanza di oggetti fino a 3 metri. Il sensore invia un segnale ad ultrasuoni e capta l’eco generato dagli oggetti vicini. Per determinare la distanza di un oggetto dal sensore è dunque necessario misurare il ritardo che intercorre tra l’invio del segnale e la ricezione dell’eco. Tale tempo, moltiplicato per la velocità del suono (che può essere considerata costante e pari a 347m/s) consente di ricavare la distanza dell’oggetto. Nel listato 1 la funzione che calcola la distanza dal sensore.
Void monitor_distance_sensor(void) { /* First, toggle the ULTRASONIC_TX pin to generate echo signal. */ /* Pull ultrasonic TX pin high */ output_high(ULTRASONIC_TX); /* Get the sensor the chance to see this */ delay_us(INPUT_TRIGGER_DELAY); output_low(ULTRASONIC_TX); /* Wait for pulse on ULTRASONIC_RX pin. Distance is measured by using time it takes for ultrasound to echo, which is calculated according to length of echo pulse on ULTRASONIC_RX pin. */ /* Wait for low to high transition on ULTRASONIC_RX pin. */ for ( ; !input(ULTRASONIC_RX); ) ; /* Detected a low to high transition */ /* Reset timer. */ set_timer1(0); /* Wait for high to low transition on ULTRASONIC_RX pin. */ for ( ; input(ULTRASONIC_RX); ) ; /* Detected a high to low transition */ echo_delay = get_timer1(); #ifdef 20_MHZ_CLOCK if (echo_delay >= 44000) { #else if (echo_delay >= 35000) { #endif distance = DISTANCE_INFINITE; } else { distance = GET_DISTANCE(echo_delay); } /* Make sure there is an appropriate delay between end of echo and trigger pulse. If the delay between calls to monitor_distance_sensor is greater than 10 ms, then this delay can be removed. */ delay_ms(DELAY_BETWEEN_ECHO_PULSE); } /* monitor_distance_sensor */
Listato 1 |

Interessante. Facendo particolari ipotesi come ad esempio, propagazione tramite onde piane nel percorso di andata, attenuazione trascurabile, riflessione uniforme dell”energia delle onde, etc.. è possibile calcolare lo spostamento in frequenza nel caso di oggetti in movimento, e quindi risalire alla velocità. P.S. c’è già un articolo sul blog? Nel caso contrario, si potrebbe approfondire…
Ci saranno articoli di approfondimento delle relative tecnologie con esempi di soluzioni circuitali. Stay tuned 🙂
Molto interessante!
“… la velocità del suono (che può essere considerata costante e pari a 347m/s) … “nel senso che chiunque può inserire quella più opportuna (rilavata o no)? Diversamente, ricordo che la velocità del suono varia con la densità dell’aria che a sua volta è fortemente dipendente dalla temperatura.
Si, diciamo in una prima approssimazione e’ pari a quel valore. C’e una legge (lineare credo) della velocita’ con la temperatura. Nel permalink sopra trovi piu’ info sia come applicazione che teoria.