version 0.0
06 Mars 2014
rev 12/03/2014
PIC 18F26K22
, Mesure de distance par ultrasons
Afficheur Nokia et Module HC-SR04 ultrasonic sensor
usage d'un PIC18F26K22 en DIP28 et du Pickit2 Microchip
pour charger l'executable
Environnemen t: MPLAB IDE V8.92 et C18
v3.45.00
Testé avec oscillateur interne
Fosc=16Mhz
datasheet
HCSR04
Liaisons PIC <-> Module HC-SR04
Un premier test avec Echo sur RB0 et mode pooling , sans interruption donne déja de bon resultats
mais la solution USAGE du mode capture CCP1 est bien adaptée à ce cas de figure.
Sur ce PIC18F26K22, l'entrée CCP1 est RC2
Timer1 est associé au mode capture
Initilalisé à 0, juste apres l'envoi de la pulse trigger ,qui doit durer 10µS
suivit d'un envoi de 8 pulses à 40Khz par le transducteur Emetteur
sitot apres, le signal Echo passe de suite à 1 ..
le module se met en ecoute via le transducteur recepteur ...
des reception de l'Echo par le recepteur, le signal de sortie Echo retombe à 0.
Il faut donc armer la capture sur le front Descendant
Ce qui donne le timming decrit ci dessus..
Avec FOSC interne de 16MHZ le cycle de base est 4:/16 = 1/4 de µS (0,25µS)
Timer1 16 bits utilisé en direct ( Prescaler=1) compte le nombre de cycles entre la fin de l'envoi des 8 pulses à 40Khz
et le front descendant du signal ECHO, en effet il ne faudrait pas ecouter les pulses d'envoi!!
Il est prevu de compter les eventuels debordement du timer1!
On a alors la relation suivante : 5.88 µS / mm parcouru à 20°C (340M/sec)
Rajout d'une mesure de temperature air ambiant , via un LM35DZ
Entre ADC RA0 du PIC18F avec +Vref interne de 1,024V pour avoir 1mV=1point=0,1°C
Mesure directe ADC/10 en degres celcius soit 1024 points pour 102,4°C
La mesure est filtree exponentiellement avec un facteur de 0,1.(assez energique !)
Car on utilise cette mesure pour modifier la valeur Vitesse du son dans l'air f(temperature)
Excel me donne l'equation de parametrage à appliquer: y = 0,5803x + 328,39,
et permet de reactualiser le coefficient de mise à l'echelle en fonction de la temperature.
Rajout d'un filtrage arithmetique glissant sur les 8 dernieres mesures de distance.
pour ameliorer la stabilité de mesure
Delta maximal de 0,35% sur 1,7M (observé sur 1 minute de mesure ) 60 mesures
fichier xls
RB7 et RB6 reste libres pour l' ICSP
Usage du Pickit2 (mon Pickit3 utilisé par ailleurs!)
RC6 utilisé comme sortie Tx UART 19200,8,N,1-> module MAX3222 , alimenté en 3,3V!!-> PC COM2
Resultat sur terminal RS232 :
Running ...
prototype de test HC-SR504 affchage sur nokia 5110 (et UART !) Le programme:
Initialisations :
Hardware,UART,Nokia,Timer3,Timer1,mode Capture CCP1, ADC RA0
Mesure initiale Temp Ambiante = init filtrage exponentiel
Boucle:
Mesure Temperature ambiante LM35DZ et ADC0
Remplissage de la pile de mesure Distance FILO (First In,Last Out) = Init Filtrage Arithmetique
Calcul vitesse du Son à cette temperature
Armement trigger du HC-SR04
Le Lancement de la salve de 8 pulses 40Khz se fiat en interne au module !
Armement capture CCP1 sur front descendant Echo
Empilage mesure brute dans la FILO
Recuperation moyenne de la pile
Tant que la Pile n'est pas pleine on n'affiche pas la mesure ..
il faut attendre e 8 x150 mS = soit 1,2s au debut seulement du programme
Recupere la moyenne des 8 dernieres mesures ( exprimees en Cycles)
Calcule la duree en µS soit /8 (car 8 mesures) et /4 (car 1µS=4cycles) soit division par 32 ou 5 decalages à droite
Distance= Duree x Vitesse reactualisée
On divise par 2 car ALLER + RETOUR
On divise encore par 1.000.000 car duree en en µS et non en Seconde, pour obtenir des Metres.
Affichage sur le LCD de la Temp.Amb,de la vitesse son reactualisee et de la distance avec resolution de 1mm.
De meme via l'UART RS232 !!!
goto boucle
Amelioration possible:
Faire intervenir la pression atmospherique : delta maximum observale 980 à 1040hPa soit environ 6%
L'ideal serait une position d'etalonnage : ex mesure à une distance de 1,000M et faire une mesure ratiometrique
se qui eliminerait le besoin de corrections en fonction de la temperature et de la pression
Projet complet en MPLAB IDE V8.92 et C18 v 3.45
Liste des fichiers : 18F26K22_HC-SR04_Ultrasons.htm
Zip du projet :_18F26K22_HC-SR04_Ultrasons_140307.zip
Avec source documenté !
modif du 12/03/2014
Diminution du delai entre trigger et debut de comptage , passé de 195 à 100µS
Mesure OK de 30mm à plus de 3900mm!!!
Place aux jeunes avec cette tres interessante demo