2 Rechtecksignale mit ATmega8 umwandeln

Gast #596814
Lesenswert?
• ▲
▼
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 #596846
Lesenswert?
• ▲
▼
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.
#596847
Lesenswert?
• ▲
▼
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 #596870
Lesenswert?
• ▲
▼
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?
#596938
Lesenswert?
• ▲
▼
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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.