Bonjour,
Je suis actuellement en train de fabriquer un Sonar avec un Atmega 88 programmable avec Bascom, et je n'arrive pas a mesurer le temps entre l'envoi et la réception de l'echo.
L'ordinateur me renvoie effectivement des valeures courtes quand l'objet est proche, et des valeurs plus grandes quand l'objet est lointain, mais il n'y a absolument aucun précision : je peut faire 4 mesures sur un objet fixe, j'obtiendrais 4 valeurs différentes avec quelques dixaines de milliseconde de décalage (c'est énorme quand j'essaie de mesurer a 100 uSeconde près....) .
Je joins ici mon code source, il n'y a pas d'erreur de syntaxe. Si quelqu'un peut m'aider je l'en remercie fortement. Je met en gras ce qui me semble important.
$regfile = "m88def.dat"
$crystal = 8000000
Ici je définit les ports d'OutPut et les variables.Cliquez pour afficher
Le port B0 sert a activer l'envoi des ultrasons.
Entre le Port B4 et B7 il y a un optocoupleur 4N26 lié au circuitde reception des ultrasons (dont le temps de déclenchement aux alentours de 200 uS) .
Définition du Timer - élément le plus important il y a la fonction Timer0Serv qui vas avec en bas.Cliquez pour afficher
Le coeur du programme !Cliquez pour afficher
la fonction Timer0Serv. (des éléments ont été amputés des fonctions annexes du code, mais ca ne change rien.)Cliquez pour afficher
Voilà !
Et au niveau de l'Emulateur Terminal, ca me met par exemple :
Cliquez pour afficher
Voilà tout !
Si quelqu'un peutm'expliquer pourquoi ce tel manque de précision dans les mesures je le remercie d'avance chaleureusement !
-----