Forum: Mikrocontroller und Digitale Elektronik Probleme mit Frequenzteiler 74HC390


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Peter S. (sp_peter)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe Probleme mit dieser FQ-Teiler Schaltung. Sie soll die 
Ausgangsfrequenz eines Motorencoders reduzieren.

Ich nutze zur Zeit nur den zweiten Counter (Teiler durch 5), daher habe 
ich die nicht bestückten Bauteile durchgestrichen.

Das Problem liegt in dem Counter "2" (Pin 12, Pin 9). Hier bekomme ich 
keine saubere Teilung. Mal wird durch zehn geteilt, dann durch zwei.. 
ziemlich zufällig.

Der Counter "1" läuft genau wie er soll.

Ich habe schon das IC getauscht > gleicher Effekt.

Spannung am IC ist 4,95V

Spannung an PIN 12 ist etwa 4,6V bei HL

Da ich die ICs bei der letzten Bestellung vergessen hatte, habe ich sie 
über Ebay bezogen, hier macht mich der Phillips Aufdruck etwas stutzig 
:-|


PS: Der Motor läuft noch langsam, in "la_1.jpg" sind etwa 40ms 
abgebildet
Hat noch jemand eine Idee was ich noch probieren könnte?

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
1 lesenswert
nicht lesenswert
Deine Schaltung beschaltet beide Zählerstufe exakt gleich (ich nehme an, 
daß die dicken blauen Schrägstriche "nicht vorhanden" bedeuten).

Das Taktsignal liegt in beiden Fällen an B, der Eingang A ist offen(!) 
und als Ausgang nutzt Du in beiden Fällen QD.

Leg' mal den Eingang A (Pin 1/15) auf definierten Pegel.

von Wolfgang (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Wie kommst du auf einen 74AC390?
Tut's kein HC-Typ?

Takteingänge (A alias /CP0) in der Luft hängen zu lassen, ist keine gute 
Idee. Oder welche Bewandnis hat es in deinem Schaltplan mit den blau 
durchgestrichenen Widerständen?

In deinem Schaltsymbol fehlt IMHO die Invertierung für die Takte. 
Zumindest ein 74HC390 zählt mit den fallenden Taktflanken.

von Peter S. (sp_peter)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Rufus, Wolfgang

Ich habe den Input 1A/2A (Pin 1,15) jetzt mit dem Taktsignal beschaltet 
(R3 R5 mit 0Ohm bestückt). Leider immer noch das selbe mysteriöse Bild 
an 2QD.

Ich hatte mir die Möglichkeit bei der Erstellung der Platine offen 
gehalten durch 5 oder 10 zu teilen. Die blau durchgestrichenen Bauteile 
sind nicht bestückt. Wobei JETZT auch R3 und R5 bestückt sind. Nur die 
Verbindung QA->B (1Q0/2Q0 > 1CP1/2CP1) ist NICHT vorhanden.

Es ist ein 74HC390 eingesetzt, da habe ich mit dem Schaltplan etwas 
geschludert pfeift leise vor sich hin

Ich habe keine Invertierung eingesetzt. Ich sehe da so erstmal kein 
Vorteil ob ich jetzt auf die steigenden oder fallenden Flanken reagiere?

Die Anwendung ist eine Wegmessung. Ob mir da jetzt eine Flanke 
"verloren" ist nicht so wichtig.

Danke erstmal für eure Hilfe!

: Bearbeitet durch User
von Helmut L. (helmi1)


Bewertung
1 lesenswert
nicht lesenswert
Schliess mal deinen Abblockkondensator richtig an. Die anbindung an Pin 
8 hat ja eine halbe Weltreise hinter sich.

Und wie sehen die Signale am Clockeingang wirklich aus? Bitte kein 
Bildchen von einem Logiganalyser sondern von einem richtigen Oszi.

von Wolfgang (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Peter S. schrieb:
> Ich habe keine Invertierung eingesetzt.

Die Invertierung ist im 74HC390 vorhanden. Dein Schaltsymbol ist falsch.
http://www.netzmafia.de/skripten/digitaltechnik/flanke2.gif

von Thomas E. (picalic)


Bewertung
1 lesenswert
nicht lesenswert
Helmut L. schrieb:
> Die anbindung an Pin
> 8 hat ja eine halbe Weltreise hinter sich.

ACK!

So, wie das jetzt ist, kann man den Abblock-C auch genausogut weglassen.

Helmut L. schrieb:
> Und wie sehen die Signale am Clockeingang wirklich aus? Bitte kein
> Bildchen von einem Logiganalyser sondern von einem richtigen Oszi.

Interessant wäre in diesem Zusammenhang auch mal das Signal am GND-Pin 
vom IC...

: Bearbeitet durch User
von Axel S. (a-za-z0-9)


Bewertung
2 lesenswert
nicht lesenswert
Peter S. schrieb:
> Das Problem liegt in dem Counter "2" (Pin 12, Pin 9). Hier bekomme ich
> keine saubere Teilung. Mal wird durch zehn geteilt, dann durch zwei..
> ziemlich zufällig.

Das halte ich für eine Fehlanalyse.

Das IC teilt zwar die Frequenz des Signals an B durch 5, aber das 
Ausgangssignal ist asymmetrisch. Es geht für eine Periode des 
Eingangssignals auf H, dann für 4 auf L. Schau dir das Timingdiagramm im 
Datenblatt an.

Peter S. schrieb:
> Die Anwendung ist eine Wegmessung.

Ich habe da eine ganz schreckliche Ahnung. Da du das Ganze zweikanalig 
ausgelegt hast, ist dein Wegaufnehmer vielleicht ein Quadraturencoder? 
Dann kannst du das mit dem Teiler vergessen. Die Information steckt 
nämlich nicht (nur) in der Frequenz der Quadratursignale, sondern in der 
Phasenlage. Und die versaut dein Frequenzteiler.

von Peter S. (sp_peter)


Bewertung
0 lesenswert
nicht lesenswert
Zunächst erstmal Danke für die Hinweise und Tipps.

Ein ordentliches Oszi habe ich leider nicht hier, die alte analog Kiste 
mit schlechter Triggerung ist eher als Schätzeisen als ein Messgerät.

Ich habe noch eine Leitung direkt vom C zu Pin 8 geführt, dass hat keine 
Verbesserung gebracht.

Nach der Änderung war aber das Problem nun an Counter 1. Nach etwas 
probieren habe ich dann gemerkt das dieses Phänomen auftritt wenn ich 
einen bestimmten Kanal des LA nutze. Anderen Kanal benutzt -> alles OK.

Also jetzt steht neben einem guten Oszi noch ein anständiger LA auf dem 
Wunschzettel :)

@Axel

>Das IC teilt zwar die Frequenz des Signals an B durch 5, aber das
>Ausgangssignal ist asymmetrisch. Es geht für eine Periode des
>Eingangssignals auf H, dann für 4 auf L. Schau dir das Timingdiagramm im
>Datenblatt an.

Ok, aber genau dass passiert halt nicht? In la_2.jpg steht in der ersten 
Reihe das 2CP2 Signal und in der zweiten Reihe das 2Q3 Signal.

>Ich habe da eine ganz schreckliche Ahnung. Da du das Ganze zweikanalig
>ausgelegt hast, ist dein Wegaufnehmer vielleicht ein Quadraturencoder?
>Dann kannst du das mit dem Teiler vergessen. Die Information steckt
>nämlich nicht (nur) in der Frequenz der Quadratursignale, sondern in der
>Phasenlage. Und die versaut dein Frequenzteiler.

Im Idealfall würde die Verschiebung der Kanäle ja erstmal nicht 
verändert werden. Macht ein Kanal mehr Impulse (Drehrichtungswechsel) 
dann hätte ich zwar eine "versaute" Verschiebung, aber halt nur für 
diesen Moment. Sind die Zähler durchgelaufen würde auch die Verschiebung 
wieder passen. (Flanke am Eingang erzeugt Flanke am Ausgang). Die 
Verzögerung im Baustein ist bei Periodendauer von >2µs vernachlässigbar.

Das Problem ist vielmehr die Impulsdauer..

das ursprüngliche Problem ist natürlich, dass der µC zu langsam ist um 
die Signale zu verarbeiten. Nur durch den Teiler ist das Ausgangssignal 
ist halt nur für eine Periode lang eingeschaltet (und für vier Perioden 
ausgeschaltet) und damit habe ich nichts gewonnen.

Mein nächste Idee wäre es mit dem Ausgang des Zählers einen zusätzlichen 
2 stufigen Zähler anzusteuern? Oder was wäre eine bessere Lösung für 
mein Problem?

von Wolfgang (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Axel S. schrieb:
> Die Information steckt nämlich nicht (nur) in der Frequenz
> der Quadratursignale, sondern in der Phasenlage. Und die versaut
> dein Frequenzteiler.

Aber die Phasenlage ist aber nur von der Bewegungsrichtung abhängig und 
bezieht sich auf die Beziehung der beiden Zählkanäle zueinander.

Wenn in dem Bild in den ersten beiden Kanälen Zählerein- und -ausgang 
eines Zählers dargestellt ist, müsste das unabhängig von der Herkunft 
der Pulse und der Phasenlage zum anderen Zählkanal eine saubere 
5:1-Teilung sein.

Peter S. schrieb:
> la_2.jpg

von Wolfgang (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Peter S. schrieb:
> Mein nächste Idee wäre es mit dem Ausgang des Zählers einen zusätzlichen
> 2 stufigen Zähler anzusteuern? Oder was wäre eine bessere Lösung für
> mein Problem?

Was willst du überhaupt mit der Teilerei erreichen?

> das ursprüngliche Problem ist natürlich, dass der µC zu langsam ist um
> die Signale zu verarbeiten.

Wie schnell sind denn die dargestellten Signale - Bilder ganz ohne Skala 
und Kanalbezeichnungen sind Sch....

Falls es sich, wie von Axel vermutet, um Signale von einem schnelleren 
Inkrementalgeber handelt, bietet es sich doch an, einen µC zu nehmen, 
der die hardwareseitig unterstützt, z.B. einen Arduino Due für 11€. 
Bevor man da groß das Basteln anfängt, kann man lieber die paar Euro in 
ein passendes µC-Board investieren.

> Also jetzt steht neben einem guten Oszi noch ein anständiger LA auf dem
> Wunschzettel :)

Passende LA-Hardware gibts aus Shenzhen für 6€ und die tuts, solange man 
die Eingänge nicht misshandelt (eildieweil weitgehend ungeschützt). 
Bestell dir besser gleich zwei, wenn du da größeren Verschleiß hast ;-)

von Peter S. (sp_peter)


Bewertung
0 lesenswert
nicht lesenswert
>Was willst du überhaupt mit der Teilerei erreichen?

Wie schon geschrieben, der vorhandene µC ist zu langsam um alle Signale 
des Encoders mitzubekommen.

>Wie schnell sind denn die dargestellten Signale - Bilder ganz ohne Skala
>und Kanalbezeichnungen sind Sch....

Ja wäre besser gewesen.
Ich hatte bei ~3500U/min und 500imp/U etwa 10µs Periodendauer gemessen.
In dem Screenshot waren es aber eher 200U/min und 2ms Periodendauer

Für die Wegerfassung (Getriebe 1:180) würde ich mit gut 10% der 
Auslösung immer noch gut auskommen.

>Passende LA-Hardware gibts aus Shenzhen für 6€ und die tuts, solange man
>die Eingänge nicht misshandelt (eildieweil weitgehend ungeschützt).
>Bestell dir besser gleich zwei, wenn du da größeren Verschleiß hast ;-)

Ja da kommt der auch her und er hat auch soweit funktioniert.. grml...

von Wolfgang (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Peter S. schrieb:
> Für die Wegerfassung (Getriebe 1:180) würde ich mit gut 10% der
> Auslösung immer noch gut auskommen.

Bleibt du Frage, war du nicht einen µC nimmst, der einen fertigen 
Quadrature Decoder enthält und damit direkt auf einen Hardware-Zähler 
geht. Dann hättest du den µC frei und kannst fertige 
Positionen/Drehwinkel/Umdrehungsanzahlen direkt aus den Zählerregistern 
ablesen.

von m.n. (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Wolfgang schrieb:
> Falls es sich, wie von Axel vermutet, um Signale von einem schnelleren
> Inkrementalgeber handelt, bietet es sich doch an, einen µC zu nehmen,
> der die hardwareseitig unterstützt, z.B. einen Arduino Due für 11€.

Viel zu teuer! ;-)
Hier eine € 1,-- Lösung: 
Beitrag "mini Quadraturdekoder + 32 Bit Zähler + TWI, Attiny25"

von Thomas E. (picalic)


Bewertung
1 lesenswert
nicht lesenswert
Peter S. schrieb:
> Im Idealfall würde die Verschiebung der Kanäle ja erstmal nicht
> verändert werden. Macht ein Kanal mehr Impulse (Drehrichtungswechsel)
> dann hätte ich zwar eine "versaute" Verschiebung, aber halt nur für
> diesen Moment. Sind die Zähler durchgelaufen würde auch die Verschiebung
> wieder passen. (Flanke am Eingang erzeugt Flanke am Ausgang). Die
> Verzögerung im Baustein ist bei Periodendauer von >2µs vernachlässigbar.

Ich verstehe aber nicht, wie Du eine Auswertung der Drehrichtung NACH 
den Teilern bewerkstelligen willst? Oder brauchst Du das nicht - dann 
würde ja ein Kanal nur zum Zählen der Impulse ausreichen.

Was auch noch interessant wäre: ob die Signale vom Encoder überhaupt 
ordentlich steile Signalflanken haben oder ob das eher was analoges ist. 
Dann wird das ohne Schmitt-Trigger zur Signalformung nichts.

von zyxw (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Mehrfachzählen einer Flanke durch Rauschen oder durch Ringing wegen 
Fehlanpasung. Abhilfe: Serien-R in die Taktleitung.

von Wolfgang (Gast)


Bewertung
1 lesenswert
nicht lesenswert
m.n. schrieb:
> Viel zu teuer! ;-)
> Hier eine € 1,-- Lösung:
> Beitrag "mini Quadraturdekoder + 32 Bit Zähler + TWI, Attiny25"

Bei der genannten Periodendauer von 10µs hätte man etwa alle 2.5µs eine 
Flanke, also 400kHz.
Würde der ATtiny das schaffen - angegeben sind "Flankenänderungen bis 
ca. 350 kHz" (Worauf auch immer sich die 350kHz genau beziehen). Wenn er 
es dann auch noch schafft, die Zählerstände zusätzlich an den Master zu 
übermitteln, ohne sich bei der Zählerei gestört zu fühlen, wäre das in 
der Tat einen Versuch wert.

von Thomas E. (picalic)


Bewertung
1 lesenswert
nicht lesenswert
Wolfgang schrieb:
> Bei der genannten Periodendauer von 10µs hätte man etwa alle 2.5µs eine
> Flanke, also 400kHz.

Naja, an der gemessenen Periodendauer (10µs) oben kann aber etwas nicht 
stimmen:

Peter S. schrieb:
> Ich hatte bei ~3500U/min und 500imp/U etwa 10µs Periodendauer gemessen.

3600 Upm sind 60/s, *500 Impulse pro Umdrehung = 30000, also eine 
Periodendauer von 33,3 µs. Klingt jetzt nicht so, als ob man dazu einen 
besonders schnellen µC bräuchte...

von m.n. (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Wolfgang schrieb:
> (Worauf auch immer sich die 350kHz genau beziehen)

Auf die max. Frequenz der Ereignisse.
Das bezieht sich auf die 4-fach aufgelöste Messung der beiden Phasen mit 
je 87,5 kHz, was einem Abstand der Flanken von 2,86 µs entspricht.

Ausgehend von 3500 Upm und 500 Impulsen/U komme ich auf 29,17 kHz der 
Phasen, was bequem auszuwerten ist. Da die Erfassung per Interrupt 
abläuft und TWI per USI ohne Interrupt, ist das Auslesen nicht 
sonderlich gebremst.

Einfach probieren!

von Peter S. (sp_peter)


Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

kurzes Update nachdem ich mich da heute noch einmal darangesetzt habe.

>Bleibt du Frage, war du nicht einen µC nimmst, der einen fertigen
>Quadrature Decoder enthält und damit direkt auf einen Hardware-Zähler
>geht. Dann hättest du den µC frei und kannst fertige
>Positionen/Drehwinkel/Umdrehungsanzahlen direkt aus den Zählerregistern
>ablesen.

Weil jemand bei der Erstellung des Boards für die Positionierung viel zu 
schnell war und bestimmte Dinge nicht durchdacht hat ;) Jetzt liegen die 
Dinger hier fertig.

>Ich verstehe aber nicht, wie Du eine Auswertung der Drehrichtung NACH
>den Teilern bewerkstelligen willst? Oder brauchst Du das nicht - dann
>würde ja ein Kanal nur zum Zählen der Impulse ausreichen.

Ja hat etwas gedauert aber es geht natürlich so nicht mit dem Zählern. 
Oder halt nur mit viel mehr Aufwand um die Spuren zu synchronisieren.

>Naja, an der gemessenen Periodendauer (10µs) oben kann aber etwas nicht
>stimmen:
>3600 Upm sind 60/s, *500 Impulse pro Umdrehung = 30000, also eine
>Periodendauer von 33,3 µs. Klingt jetzt nicht so, als ob man dazu einen
>besonders schnellen µC bräuchte...

Auch hier lag ich daneben, ein Motor macht T=40µs, der andere Motor 
macht T=20µs. Allerdings kommen die Werte vom dem LA welcher bislang 
keine gute Figur gemacht hat.


So ich habe meine selbstgemachten Probleme jetzt gelöst: Ein Tiny ließt 
mir den Encoder aus und gibt über zwei Pins das "verlangsamte" Signal an 
die Positionierung aus. Ich habe den Code von Peter Dannegger genutzt, 
rufe aber die Auswertung der Eingänge zyklisch auf und nutze den IRQ für 
die Generierung des Ausgangssignals.

Danke an alle die Tipps und Ideen beigetragen haben!

Wünsche noch frohe Ostern und so..

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.