Wenn die Amplitude mit geringer werdendem Abstand nicht mehr zunimmt ist vermutlich ein Stufe in die Sättigung gegangen. Das kann bei relativ langsamen LM358 auch die Grenze durch die Slew-rate sein.
Bei der Programmierung sollte man nach dem Puls noch etwas warten, denn es kann leicht auch ein direkte Einkopplung geben, so dass man dann zu früh ansprechen würde. Wie lange hängt vom Aufbau ab, das müsste man probieren oder nachmessen. Zum Empfangen nimmt man am besten einen interruptfähigen Eingang, und löst damit einen Interrupt aus. Das erspart einem das ständige abfragen und den 2. Timerinterrupt. Im Interrupt kann man dann die Zeit aus dem 1. Timer auslesen, oder man nutzt dazu gleich die ICP Hardware, die das schon erledigt. Wenn man mag könnte man auch gleich den AVR internen Komparator nutzen statt dem halben LM293. Als zusätzlichen Schutz gegen Störungen könnte man nicht nur die Zeit für die erste Flanke messen, sondern z.B. etwa 10 Flanken abwarten, und dann kontrollieren ob nach der ersten Flanke auch noch mindestens 2-8 weitere mit dem etwa passen Abstand von 25 µs folgen. Nach einer gewissen Zeit, z.B. dem Überlauf von Timer 1 wird die Messung dann ggf. abgebrochen weil kein Puls mehr kommt.
Eine ggf. sinnvolle Erweiterung wäre ein mit der Zeit zunehmende Verstärkung, denn das Signal von weiter entfernten Objekten ist in der Regel schwächer. Damit ließe sich die Wartezeit am Anfang reduzieren und die volle Empfindlichkeit (und damit auch Störempfindlichkeit) hätte man nur bei größeren Entfernungen.
Lesezeichen