2 Rechtecksignale mit ATmega8 umwandeln

Gast #596814
Hallo!

Für ein Projekt möchte ich zwei Signale (Ansteuerung für einen 
Schrittmotor) mit dem Atmega8 umwandeln.

Leider fehlt mir irgendwie die zündende Idee, wie ich das realisieren 
kann. Es handelt sich um folgende Signale:

Signal 1: 0 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0
Signal 2: 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0 1

Also eigentlich zwei Rechtecksignale, die phasenversetzt sind.

Für die Richtungsänderung sehen die Signale so aus:

Signal 1: 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0 1
Signal 2: 0 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0

Das Problem für mich ist, ich brauche nur ein Rechtecksignal für den 
Schritmotor und eines für die Bewegungsrichtung.

Schrittmotor: 0 0 1 1 0 0 1 1 0 0 1 1 0 0
Dieses Signal zu erzeugen ist ja kein Problem, da ich einfach Signal 1 
und 2 verUNDen oder verODERn kann.

Das Problem ist aber das Signal für die Bewegungsrichtung. Also für 
Richtung 1 ein L und für Richtung 2 ein H.

Lässt sich doch bestimmt in ASM programmieren, doch leider habe ich 
keinen Ansatz. Außerdem würde mich interesserieren, ob es auch möglich 
wäre das Signal ohne Programmierung, also nur mit Schaltungstechnik, zu 
erzeugen.

Danke für Eure Hilfe!
Gast
Ja, das würde auch ohne Programm gehen:
Signal1:    0 0 1 1 1 0 0 1 1 1 ..
              ^^^^^^^^^^
              Periode hier
Das sollte auch mit nem 5stufigen Schieberegister gehen, welches mit 
dieser Signalfolge paralell vorgeladen wird.
EIn Schieben nach rechts oder links wäre dann der drehrichtung 
gleichzusetzten
Ein Ausgangs des SRG kann dann als SIgnal eins, der davor bzw 
dahinterliegende als Signal2 verwendet.
Michael wrote:
...
> Leider fehlt mir irgendwie die zündende Idee, wie ich das realisieren
> kann. Es handelt sich um folgende Signale:
>
> Signal 1: 0 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0
> Signal 2: 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0 1
>
> Signal 1: 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0 1
> Signal 2: 0 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0
>
...
> keinen Ansatz.

Schau dir mal den Pegel am Signal 2 an, wenn im Signal 1 ein
Übergang 0 -> 1 erfolgt. Ditto für den Übergang 1 -> 0.
un ditto für Signal 1, wenn im Signal 2 besagte Übergänge
stattfinden.

Gast
Also kann ich das dann folgendermaßen machen?

- Abfrage der 2 Eingänge

- Wenn Signal 1 von L auf H wechselt
  UND
  Signal 2 gleich H ist
  DANN
  Richtung1

- Wenn Signal 1 von L auf H wechselt
  UND
  Signal 2 gleich L ist
  DANN
  Richtung2

---------------------------------------------------------------------
@Matthias: mit welchem Schieberegister könnte man so etwas aufbauen?
Michael wrote:
> Hallo!
>
> Für ein Projekt möchte ich zwei Signale (Ansteuerung für einen
> Schrittmotor) mit dem Atmega8 umwandeln.
>
> Leider fehlt mir irgendwie die zündende Idee, wie ich das realisieren
> kann. Es handelt sich um folgende Signale:
>
> Signal 1: 0 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0
> Signal 2: 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0 1
>
> Also eigentlich zwei Rechtecksignale, die phasenversetzt sind.
>
> Für die Richtungsänderung sehen die Signale so aus:
>
> Signal 1: 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0 1
> Signal 2: 0 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0
>
> Das Problem für mich ist, ich brauche nur ein Rechtecksignal für den
> Schritmotor und eines für die Bewegungsrichtung.


Beitrag "Drehgeber auslesen"


Peter

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.