Hallo Heinz,
oben hatte ich vereinfachend für die pos. Peaks eine 1 verwendet und für die neg. eine 0. Wie man die Signal bezeichnet ist eigentlich egal für die Phasenerkennung. Wenn man z.B. beim Vorverstärker den Ausgangskondensator "aktiviert", bekommt man z.B. für die pos. Peaks etwas positives und für die neg. Peaks etwas negatives. Dieses Signal z.B. am
Arduino Digital-Pin angeschlossen würde nur die pos. Peaks erkennen (da die
Arduino-Pins für neg. Spannung "blind" sind).
Nochmal zum Ausgangsproblem zurück: allein das Überfahren der Schleife zu detektieren wird nicht besonders robust sein (man könnte diesen Moment zufällig übersehen). Daher wird man detektieren müssen, wie stark zeitversetzt jeder 8 Khz Puls kommt. Allein das wäre z.B. mit einem PLL möglich. Erschwerend kommt aber hinzu, dass der Robomow RL500 nach genau 128 Pulsen nochmal 128 Pulse um eine halbe Pulsbreite zeitversetzt sendet. Genau das passiert aber auch wenn innen zu außen wird (bzw. umgekehrt): alle Pulse verschieben sich um eine halbe Pulsbreite.
Was man m.E. braucht ist ein sehr genaues Taktsignal. Mit diesem Taktsignal vergleicht man die Startzeiten der Pulse. Allerdings wird der Takt von selber driften (nicht synchron sein mit dem Taktsignal des Senders). Daher muss man den Takt ständig mit dem Sender synchronisieren. Aber mit was synchronisiert man jetzt? Mal sind es die ersten 128 Pulse, mal die letzten 128 Pulse des Signals. Je nachdem wo man gerade ist (innen/außen).
Mir leuchtet einfach nicht ein warum Robomow das Signal in diese drei Teile aufteilt:
innen:
128 Pulse Stille
128 Pulse
128 Pulse versetzt um eine halbe Pulsbreite
außen:
128 Pulse Stille
128 Pulse versetzt um eine halbe Pulsbreite
128 Pulse
zum synchronisieren des Taktes sind sie eigentlich kontraproduktiv. Mir fällt leider keine richtige Lösung ein.
Vielleicht gibt es Experten der Digital-Technik (PLL etc.) die uns hier weiterhelfen könnten?
Gruss,
Alexander