Ich würde gerne helfen, aber es gibt ein paar Dinge, die ich nicht verstehe:
1) Was zeigt das Darstellung.pdf? Es sind jedenfalls nicht deine ADC-Messwerte, die sehen (mit Offset) so aus:
2) Wozu brauchst du die echo1 Variable? Es reicht doch, zu Überprüfen, ob Echo immer noch null ist.
3) Willst du nur eine Flanke finden oder warum hörst du sofort nach dem ersten Erfolg auf?
3) Wozu brauchst du den kompletten Formelknoten? Würde nicht eine einfach gestrickte Ableitung helfen:
Also, um es zusammenzufassen: Keine Ahnung, was genau in deinem Code schiefläuft, aber ich würde den ganzen Ansatz nochmal überprüfen.