Quadraturencodersignal erzeugen

OP #815526
Lesenswert?
• ▲
▼
Zu Testzwecken benötige ich ein Quadraturencodersignal (also das mit den 
2 um 90° verschobenen Rechtecksignalen) von 1 bis 10kHz. Bislang habe 
ich das recht aufwändig mit einem AVR und Timeroverflow bei 1/4 der 
Gesamtfrequenz gelöst, die Lösung lastet aber je nach Geschwindigkeit 
den AVR voll aus und die Auflösung ist auch nicht ganz das was ich mir 
wünschen würde...
Gibt es eigene ICs die sowas erzeugen?
OP #815603
Lesenswert?
• ▲
▼
PWM geht leider nicht da man damit nur 0° oder 180° Phasenverschobene 
Signale erzeugen kann.
An eine Lösung mit DDS habe ich auch mal gedacht, aber das erschien mir 
dann doch übertrieben da ich ja nur Rechtecksignale brauche.
Ich werds mal mit einfachem PWM + der Flipflopschaltung versuchen...
Gast #815656
Lesenswert?
• ▲
▼
Achso, ja richtig. Man kann ja den Nullpunkt nicht (BOTTOM) nicht 
verschieben. Aber mit 2 Timern im PWN Modus, die über den gleichen 
Prescaler gehen und synchron laufen? Dann sollte ein RS-Flipflop helfen.
Mit CMP-A setzen und mit CMP-B löschen.... Dann sollte eine fast 
IRQ-freie
Implementierung gehen.
Gast #816066
Lesenswert?
• ▲
▼
Andere AVR-Lösung (nicht getestet, deswegen keine Garantie):

Ein Timer/Counter im Non-PWM-Mode, zwei Compare-Matches auf diesem
Timer als Toggle-on-Match konfiguriert. Die Compare-Werte werden so
festgelegt, dass sie die Hälfte des Zählermaximums auseinanderliegen.
Ab da läuft alles ohne weiteren Softwareeingriff, auch mit Frequenzen
deutlich über 10 kHz.
Gast #816626
Lesenswert?
• ▲
▼
@Lukas Slz:

> Kann man denn 2 Compare-Matches auf einen Timer machen? War mir
> nicht bekannt, wäre aber natürlich ideal...

Jeder AVR mit mehr als 8 Beinchen hat einen 16-Bit-Timer mit zwei
Output-Compares (OC1A und OC1B).


@spess53:

> Man kann natürlich auch mit Kanonen nach Spatzen schießen. Auch wenn
> es manche hier nicht wahrhaben wollen: es gibt noch Elektronik
> jenseits von AVR, ARM, DSP....

Auch ich bin ein Freund einfacher Lösungen. So gefällt mir die
Schaltung von Helmut Lenzen mit einem 7474 sehr gut. Allerdings
braucht man hier noch den Takt. Dieser soll, wenn ich Lukas richtig
verstanden habe, auch noch variabel und vielleicht sogar über einen PC
o.ä. einstellbar sein. Möglicherweise soll auch die Drehrichtung des
simulierten Encoders im Betrieb geändert werden können. Da er sowieso
schon einen AVR einsetzt, ist es doch das einfachste, diesen
weiterzuverwenden und die Software etwas zu optimieren. Als Ergebnis
hat man alle o.g. Funktionen in einem einzigen IC vereinigt, das nicht
einmal arg viel kostet.
Gast #817242
Lesenswert?
• ▲
▼
> Also in der Zeit, die ihr hier braucht um das auszudiskutieren, hätte
> man das ganze mit einem Taktgenerator, einem 4017 und 4 Dioden
> mindestens 20x aufbauen können.

Schon, aber das hier ist ja auch ein "Mikrocontrollerforum" und keine
"Wie bau ich mir ein CMOS-Grab" oder so, Forum ;-)
Gast #817267
Lesenswert?
• ▲
▼
Dazu ein kleine Stück Software:
1
DDRA = 255;
2
DDRB = 127;
3

4

5
int main(void) { 
6
   while (1) {
7
      if ((PINA & (1<<PA0)) && (PINA & (1<<PA1))) 
8
         PORTB |= (1<<1);
9
      else
10
         PORTB &= ~(1<<1);
11

12
      if ((PINA & (1<<PA2)) && (PINA & (1<<PA3))) 
13
         PORTB |= (1<<2);
14
      else
15
         PORTB &= ~(1<<2);
16

17
      if ((PINA & (1<<PA4)) && (PINA & (1<<PA5))) 
18
         PORTB |= (1<<3);
19
      else
20
         PORTB &= ~(1<<3);
21

22
      if ((PINA & (1<<PA6)) && (PINA & (1<<PA7))) 
23
         PORTB |= (1<<4);
24
      else
25
         PORTB &= ~(1<<4);
26
   }
27
}

7400 war gestern :-))

Gruss
Andy

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.