inlezen en verwerken van een positive puls en een negative puls

Hallo allemaal,

ik heb een analoge moederklok en wil daar een digitale slave klok op aansluiten.

de moederklok levert een blokpuls met een positieve spanning van 24 volt en een negatieve spanning van 24 volt.
de pulslengte is pakweg 0,5 - 1 Sec. met een pauze ertussen.
Elke positieve puls wordt gevolgd door een pauze en dan een negatieve puls in normale toestand.
Als de klok snel vooruit gezet moet worden volgen de de pulsen elkaar direct op zonder pauze.
zie afbeelding klokpuls.png ( links snel vooruit zetten, rechts normaal bedrijf )

Elke positieve puls is 1 minuut vooruit en elke negatieve puls is 1 minuut vooruit.

Nu heb ik een comparator schakeling ingezet om de beide pulsen te kunnen detecteren. (zie afbeelding comparator.png )
het enige wat mij nu nog ontbreekt is hoe ik de pulsen in de arduino kan verwerken op een goed manier zodat er goed wordt gevolgd. ( het doortellen naar uiteindelijk het display is natuurlijk een eitje)
de 2 uitgang van de comparator zijn op 2 ingangen van de arduino aangesloten.

De pulsen moeten dus gedebounced worden en hebben een volgorde van + - + - + - enz.

ik ben benieuwd naar de oplossing.

met viendelijke groeten

Adriaan

Hoi.

Waarom moet er ge-debounced worden ?

Je inverteert het negatieve signaal, dus nu komen er 2 positieve 5 volt pulsen uit je schakeling, correct ?

In je code kun je kijken naar de beide signalen, en dan zien of die veranderd zijn te opzichte van de vorige keer dat je keek.
Dan maak je een vlag aan die zegt dat de verandering gezien is, en op welk moment en pin dat was.
Dit moet je redelijk vaak doen, dus je moet je bewust zijn van hoe snel je door de code gaat (dat is behoorlijk snel over het algemeen).
Wanneer er gezien is dat er weer een verandering was, registreer je dat ook inclusief de tijd.
Door die tijden te vergelijken, kun je zien hoe lang die verandering heeft geduurd.
Dat kun je niet alleen gebruiken om te de-bouncen, maar ook om te zien of er al een minuut opgeschoven moet worden.
Je vertelde over een pauze tussen de pulsen, maar die zie ik in het linker plaatje niet.
Daar duurt elke puls ongeveer 1.2 divisie van je scope plaatje en dat is ook zo in het rechtse plaatje, maar de puls lengte is wel anders.
Maar dit zijn wel allemaal meetbare toestanden.
Dus moet dit gewoon te doen zijn.

Omdat je weet dat na puls A, puls B moet komen, kun je puls A overslaan zolang puls B nog niet geweest is en daarna andersom.
Alleen aan het begin weet je dan niet welke puls er het eerste zal gaan komen (kun je ook vast rekening mee houden in de code)

je comparator is prima behalve dan die zener aan het begin. als er -24Volt dan gaat het fout.
je kunt in je programma dus afvragen of de situatie nog gelijk is, als er een ingang is veranderd moet je kijken of dat een puls vooruit is.
kijk maar eens hoe een encoder werkt, (jij hebt maar 1 richting.)