Forum: Mikrocontroller und Digitale Elektronik Vor-/Rückwärtszähler negativ


von Paul-Gerhard S. (paul-g)


Angehängte Dateien:

Lesenswert?

Hallo,

ich würde gerne eine Schaltung Aufbauen, die mir Impulse vor und 
rückwärts zählt und auf einer Siebensegmentanzeige ausgibt. Dazu habe 
ich mir die angehängte Schaltung überlegt. Wenn meine Zählrichtung jetzt 
rückwärts ist und ich entsprechend viele Impulse habe dann schnappt der 
Zähler ja rückwärts über. Wie bekomme ich es hin, dass ich negativ mit 
einem minus als Vorzeichen weiterzählen kann?
Ich habe mir überlegt, dass ich vielleicht bei einem negativen Überlauf 
alle Zähler zurücksetzten und die Zählrichtung invertiere und ein minus 
auf einer davor gesetzten 7-Segment-Anzeige darstelle. Allerdings muss 
ich mir diese Invertierung ja merken und dann wieder zurücksetzen wenn 
er wieder negativ überläuft.
Wie ich das realisieren kann fällt mir grade irgendwie nicht so richtig 
ein.
Ein Überlauf in positiver Richtung kann von der Bedienung her nicht 
vorkommen.

Wie bekomme ich das hin?

Vielen Dank für eure Hilfe!

: Verschoben durch Moderator
Beitrag #6605468 wurde von einem Moderator gelöscht.
Beitrag #6605510 wurde von einem Moderator gelöscht.
von Achim M. (minifloat)


Lesenswert?

Paul-Gerhard S. schrieb:
> . Wie bekomme ich es hin, dass ich negativ mit einem minus als
> Vorzeichen weiterzählen kann?

Wie wäre es, nicht BCD, sondern binär zu zählen? Dann kannst du das 
Zweierkomplement nutzen. Wenn das MSB gesetzt ist, alle Bits imvertieren 
und 1 addieren. Am MSB kann auch gleich das Minuszeichen hängen.

Wird aber mit diskreter Logik etwas ausartend. Vielleicht bekommst du 
das effizienter in ein kleines CPLD rein?

mfg mf

PS
Paul-Gerhard S. schrieb im Beitrag #6605510:
> Kann ich den Thread verschieben?
Mods können das.

: Bearbeitet durch User
von MaWin (Gast)


Lesenswert?

Paul-Gerhard S. schrieb:
> Wie bekomme ich es hin, dass ich negativ mit einem minus als Vorzeichen
> weiterzählen kann?

Du musst bei 0 mit dem nächsten Takt (CLK) immer AuFWÄRTS zählen und den 
Zustand von UP/DOWN in ein einfaches D-FF schreiben, das speichert das 
Vorzeichen UND der Ausgangvom D-FF wird XOR verknüpft mit UP/DOWN

U/D des Zählers ist also (RICHTUNG XOR Q(D-FF)) OR (Zähler==0).

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Hmm, schon 4 Beitraege, aber noch keiner empfiehlt µC? Dann mach' ich's 
halt. Also zumindest, wenn die Zaehlfrequenz eher so im max. ein paar 
kHz Bereich ist oder niedriger.
Dann sollte das mit einem µController primitivster Bauart gehen; der 
braucht halt ca. 10 GPOs,damit sollte man 2x7 Segmentanzeigen+Vorzeichen 
ansteuern koennen und ca. 2 GPIs fuer Richtung und Zaehlimpulse.
Dann kann man alle moeglichen, schon gewuenschten und in Zukunft 
wuenschbaren Gimmick schmerzarm reinbauen.
Dazu brauchts dann halt 1µC + Software, gegenueber >4 CMOS ICs.

Gruss
WK

von Paul-Gerhard S. (paul-g)


Angehängte Dateien:

Lesenswert?

Vielen Dank für die schnellen Antworten.

Achim M. schrieb:
> Vielleicht bekommst du das effizienter in ein kleines CPLD rein?

Ich habe leider keinerlei Erfahrung mit CPLD. Kann man sich denn da 
einfach einarbeiten? Und braucht man da keine extra 
Programmiergeräte/-adapter?

MaWin schrieb:
> U/D des Zählers ist also (RICHTUNG XOR Q(D-FF)) OR (Zähler==0)

Habe das nicht ganz verstanden. Ist es wie im Bild richtig? Was kommt an 
den Eingang vom D-FF? Und den Takt kann ich dann einfach mit einem 
beliebigen Systemtakt verbinden?
Vor allem musss ich ja den Zustand "Null" erkennen und da muss ich ja 
alle BCD-Ausgänge NAND verknüpfen oder? Der Zähler soll nämlich 
6-7stellig werden.

Dergute W. schrieb:
> Hmm, schon 4 Beitraege, aber noch keiner empfiehlt µC?

Es sollen Takte eines Glasmaßstabes gezählt werden. Ich habe im Artikel 
hier auf der Seite gelesen dass wenn schon denn schon mit 
Interruptroutinen (am besten in Assembler) machen muss. Und da ich in 
uC-Programmierung noch nicht so viel Erfahrung habe (habe zwar mit 
Arduino schon manches gemacht aber das heißt ja nichts wenn es um 
Assembler-Interrupts geht) wollte ich das "einfach" digital aufbauen. 
Ich hätte dazu auch einige Logic-IC´s in Kauf genommen.

Vielen Dank nochmal für euere Bemühungen.

von Paul-Gerhard S. (paul-g)


Lesenswert?

Hat den noch irgendjemand eine Idee?

MaWin schrieb:
> U/D des Zählers ist also (RICHTUNG XOR Q(D-FF)) OR (Zähler==0).

Hab ich das richtig verstanden? Kannst du noch die fragen aus meinem 
letzten Post beantworten?

von MaWin (Gast)


Lesenswert?

Paul-Gerhard S. schrieb:
> Ist es wie im Bild richtig?

Ja.

> Was kommt an den Eingang vom D-FF?

Die originale Richtung

> Und den Takt kann ich dann einfach
> mit einem beliebigen Systemtakt verbinden?

Das D-FF bekommt nur einen Takt wenn Zahler=0.

Man kann aber auch den TAKT immer an CLK des D-FF legen, und D ist 
RICHTUNG wenn Zahler=0 und sonst Q des D-FF.

Oder man nimmt ein JK-FF, mit TAKT in CLK, und J=(Zähler=0) UND RICHTUNG 
und K=(Zähler=0) UND /RICHTUNG, da gibt es das praktische 7470 oder 
CD4093.

> Vor allem musss ich ja den Zustand "Null" erkennen und da muss ich ja
> alle BCD-Ausgänge NAND verknüpfen oder? Der Zähler soll nämlich
> 6-7stellig werden.

Uff, ein Zähler mit 0 Ausgang wäre praktisch.
Es müsste mit einem synchronen Zähler gehen, der einen RCO ripple carry 
output hat. Der sollte bei DOWN und 0 gesetzt sein und zum nächsten 
Zahler in RCI gehen und wenn auch der 0 ist sein RCO gesetzt sein und 
der letzte RCO in der Kette nur high sein wenn bei Zählrichtung DOWN 
alle Stellen 0 sind. Leider muss dazu UP/DOWN immer auf DOWN stehen, nur 
wenn der CLK kommt muss richtig UP oder DOWN vorgelegt sein, dann ist 
aber bei UP der RCO Ausgang weg. Man kommt da wohl um eine 
Zeitverzögerung nicht drumrum.

von Franz M. (elmo64)


Lesenswert?

Paul-Gerhard S. schrieb im Beitrag #6605633> am besten in Assembler

Ach was, das macht man schon lange in c oder c++. Assembler benötigt man 
heute nurnoch in Ausnahmefällen, wenn es tatsächlich auf jeden Einzelnen 
Takt ankommt, zwingend eine bestimmte Befehlsreihenfolge eingehalten 
werden muss, oder man eine Herausforderung sucht (also selten). Das 
Alles trifft eher nicht auf dein Projekt zu.

Paul-Gerhard S. schrieb:
> die mir Impulse vor und
> rückwärts zählt und auf einer Siebensegmentanzeige ausgibt.

Was ist die Quelle deiner Impulse? Möglicherweise musst du deine Signale 
vorher entprellen. Unabhängig davon, ob du einen µC, CPLD, FPGA oder 
Diskrete Logik benutzt.

Paul-Gerhard S. schrieb:
> Ich habe leider keinerlei Erfahrung mit CPLD. Kann man sich denn da
> einfach einarbeiten?
Paul-Gerhard S. schrieb:
> habe zwar mit Arduino schon manches gemacht

Da kommst du mit einem µC oder diskreter Logik am schnellsten ans Ziel. 
AVR-GCC-Tutorial extra VHDL oder Verilg zu lernen macht mmn. Für ein 
solch einfaches Projekt ohne besondere Anforderungen keinen Sinn.

: Bearbeitet durch User
von Paul-Gerhard S. (paul-g)


Angehängte Dateien:

Lesenswert?

Zuerst mal vielen Dank!

MaWin schrieb:
> Uff, ein Zähler mit 0 Ausgang wäre praktisch.

Ist es deiner Meinung nach auch sinnvoller auf uC umzusteigen?

Wie gesagt ich dachte halt, dass ich mir da ein haufen Softwareaufwand 
spare wenn ich das digital mache. Aber mit der Zeit scheint das doch 
relativ kompliziert zu werden.

A. M. schrieb:
> Was ist die Quelle deiner Impulse?

Es ist ein Glasmaßstab mit Stromausgängen. 11uAss. Für einen Test am 
Oszi hab ich die angehängte Schaltung auf einem Steckbrett aufgebaut 
(Stromspannungswandler) und einen Komparator dahinter gesetzt. Das hat 
gut funktioniert und kann meines Wissens nicht prellen. Aber ich kann 
natürlich auch falsch liegen.

Wegen der Frequenz: Ich konnte kein Datenblatt von meinem Glasmaßstab 
finden, sehr wahrscheinlich hat er aber 40um pro Sinus. Wenn ich dann 
beide Flanken und beide Sinussignale auswerte müssten das 1 Impulse pro 
10um sein. Wenn ich dann mit 0,5m/s verfahre macht das 50kHz oder liege 
ich da falsch?

Was haltet ihr davon einen STM32 zu nehmen, der schon Quadratur-Eingänge 
hat?

Weis jemand in wieweit solche Funktionen in die ArduinoIDE eingebunden 
sind? Oder ist es dann gleich gescheiter wenn man mit etwas anderem 
programmiert? Aber mit was?

von m.n. (Gast)


Lesenswert?

Wenn Du schon den Schaltplan hast, kannst Du ja auch noch das Programm 
für ATtiny25 oder ATtiny202 verwenden. Zusätzlich gibt es ein 
Arduino-Programm zu Auslesen: 
http://www.mino-elektronik.de/progs/avr/qcnt25/qcnt_lesen.ino

von m.n. (Gast)


Lesenswert?


von Georg (Gast)


Lesenswert?

Paul-Gerhard S. schrieb:
> Es ist ein Glasmaßstab mit Stromausgängen. 11uAss

Alter Heidenhain - dafür habe ich schon vor Jahrzehnten dafür geeignete 
Vor-Rückwärtszähler (74LS2000, HCTL2000) und einen Z80 verwendet. Das 
Zählen ist das eine, die Anzeige ist davon weitgehend unabhängig, das 
wird in der Software kalibriert und verrechnet und nach Wunsch 
angezeigt, bei meinen Geräten z.B. mit am Massstab erfasstem Nullpunkt, 
beliebigem Versatz und in mm oder inch oder meinetwegen auch Ellen.

Näheres hier:
https://www.rk-elektronik.de/wegmessung

Georg

von Praktiker (Gast)


Lesenswert?

Hallo

Dergute W. schrieb:
> Hmm, schon 4 Beitraege, aber noch keiner empfiehlt µC? Dann mach' ich's
> halt. Also zumindest, wenn die Zaehlfrequenz eher so im max. ein paar
> kHz Bereich ist oder niedriger.

Tja da haben halt die Verfasser der ersten vier Beiträge die Frage von 
Paul G. gelesen und haarscharf gefolgert das es wohl seinen Grund hat 
warum er es mit Logikgattern machen will.
Gut so !
Es gibt zum Glück doch noch so einige in Forum die das können und nicht 
nur ihre Präferenzen zählen lassen und "Umerziehen" wollen
Das habe ich jetzt extra etwas übertrieben und auch leicht aggressiv 
dargestellt - aber genau dieses Verhalten, ignorieren der genauen Frage 
des jeweiligen TO, ist ein andauerndes Ärgernis insbesondere bei den 
besonders interessanten oder ungewöhnlichen Fragen bzw. Vorgaben durch 
den  jeweiligen TO - aber nur der bestimmt eigentlich das Thema und 
seine gewünschte Herangehensweise  ....

Meine Vermutung:
Entweder kann Paul G. nicht programmieren - und programmieren zu lernen 
ist nun mal extrem aufwendig und auch schnell mal richtig frustrierend 
- vor allem weil eine Programmlösung für seine "Problem" selbst  mit den 
Arduino (als Gesamtsystem) gar nicht so einfach ist und nebenbei auch 
erweiterte Grundkenntnisse in der Digitaltechnik notwendig sind.

Oder er will es halt vorsätzlich mit Logikgatter ("Analog" ...) machen - 
eben weil man da fast nur (etwas entkoppeln und eine passende 
Spannungsversorgung geht auch ohne tieferes Wissen) -  fertige 
"Funktionsmodule" also die ICs nimmt-
Hat ja über viele Jahre im Profibereich auch sehr gut funktioniert...


Es ist eigentlich generell gar nicht so schwer die Gedanken hinter den 
meisten Anfragen mit hoher Wahrscheinlichkeit zu erkennen, da muss nicht 
immer erst die Halbe Lebensgeschichte des jeweiligen TO und eine 
"Entschuldigung im Voraus" kommen.
Bei Fehleinschätzungen wird der jeweilige TO falsche Vermutungen schon 
klarstellen und halt weitere Infos geben.
Wird dann gerne als Salamitaktik abgetan - was es aber in den seltensten 
Fällen wirklich ist, sondern ein ganz normale Entwicklung, so laufen 
halt Gespräche ab...

von Werner H. (werner45)


Lesenswert?

Schaltungen für Vor-Rückzähler auf Chipebene findet man im Tietze-Schenk 
(um die 8.Auflage) gut erklärt.

von MaWin (Gast)


Lesenswert?

Paul-Gerhard S. schrieb:
> Ist es deiner Meinung nach auch sinnvoller auf uC umzusteigen?

Sicher.

Eine 7-stellige 7--Segment LED Anzeige mit Vorzeichen aus einem 
Inkrementalencoder bekommt man mit einem einzigen IC (Sinowealth 
SH79F3212 ist stark genug LEDs direkt zu treiben oder Arduino, ATmega8 
mit stromverstärkenden Transistoren oder einem MAX7218) hin, während du 
bei festverdrahteter Standardlogik schon mal 7 Zähler und 7-Segment 
Decoder brauchst (CD40110).
Aber wer nicht programmieren will, muss halt eine Platine voller ICs 
verdrahten.
Man könnte 2 ICM7217 nutzen, die liefern ZERO.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Praktiker schrieb:
> aber genau dieses Verhalten, ignorieren der genauen Frage
> des jeweiligen TO, ist ein andauerndes Ärgernis insbesondere bei den
> besonders interessanten oder ungewöhnlichen Fragen bzw. Vorgaben durch
> den  jeweiligen TO - aber nur der bestimmt eigentlich das Thema und
> seine gewünschte Herangehensweise  ....

Ich weiss nicht, wie du auf diese schmale Brett kommst. Das ist 
vielleicht so, wenn ich mir irgendeinen Experten miete und dem dann 
explizit sage, er soll bloss nicht auf andere Ideen kommen (was auch 
nicht unbedingt besonders clever sein muss).
Aber ein Forum ist halt kein bezahlter Experte. Da kann jeder schreiben, 
wozu er Bock hat. Also bestimmt der TO nur am Anfang mal das Thema. Muss 
dir nicht gefallen, ist aber halt so.
Und wenn einer fragt, ob er den Nagel besser mit einem Faustkeil oder 
einem Amboss in ein Brett kloppen soll, dann nehm' ich mir die Frechheit 
heraus, zu empfehlen, dass man das auch mit einem Hammer machen kann.

Gruss
WK

von foobar (Gast)


Lesenswert?

> keiner empfiehlt µC? Dann mach' ich's halt.

> Meine Vermutung: Entweder kann Paul G. nicht programmieren [...]

Nun ja, Digitalelektronik kann er ja auch nicht ;-)

Zwei 7-stellige Anzeigen diskret braucht schon eine Menge Holz - mit nem 
µC wird das deutlich einfacher.  Insb dann, wenn er feststellt, dass er 
den zölligen Glassmaßstab auf Millimeter umrechnen möchte.

Da heutzutage auf eBay aber DROs (digital readout) mit allem Pipapo inkl 
Gehäuse, Tastatur, Montagematerial, Netzteil etc für unter 100€ zu 
bekommen sind, würde ich mir den Selbstbau wohl sparen (wenn es um das 
Ziel und nicht den Weg geht).

von agoli (Gast)


Angehängte Dateien:

Lesenswert?

MaWin schrieb:
> Man könnte 2 ICM7217 nutzen, die liefern ZERO.
Es geht auch ohne - nachdem der reguläre Überlauf nicht eintreten kann 
[1], ist es kein Problem CarryOut der letzten Stufe dafür zu verwenden. 
In einem JK-FF (U3) gespeichert und mit der externen Richtung per XOR 
(U4a) verknüpft, ergibt die interne Richtung. U4b und U4c sorgen als 
Inverter für die passende Ansteuerung des JK-FFs.
Die Aufbereitung der Clock- bzw. Up/Down-Signale müßte man noch prüfen - 
mit dem 4029 ohne Zusatzlogik [2] darf U/D sich nur ändern, während CLK 
auf H ist.

Allerdings halte auch ich einen µC für flexibler ;)

[1]
Paul-Gerhard S. schrieb:
> Ein Überlauf in positiver Richtung kann von der Bedienung her nicht
> vorkommen.
Und somit ist auch die negative Richtung mit abgedeckt - egal, wo man 
den Zähler nullt - wenn der absolute Anzeigeumfang >= der des Maßstabes 
ist.

[2] Fig. 17 "Ripple Clocking ..." in 
https://www.ti.com/lit/ds/symlink/cd4029b.pdf

von m.n. (Gast)


Lesenswert?

Paul-Gerhard S. schrieb:
> Was haltet ihr davon einen STM32 zu nehmen, der schon Quadratur-Eingänge
> hat?

Der TO hatte selber einen µC angesprochen. Folglich wird man ihn nicht 
bevormunden, wenn man ihm eine entsprechende Lösung zeigt.

Eine Anzeige mit zwei Stellen + Vorzeichen nützen bei einem Glasmaßstab 
nicht viel. Damit wird gerade ein Weg von +/- 1 mm ohne Überlauf 
angezeigt.
Ab 100 mm (und das ist kein langer Weg) sind es schon 5 Stellen, die 
angezeigt werden müssen. Das alles mit separaten Zähler ICs aufzubauen 
ist ja ganz nett, aber auch ineffizient.

Paul-Gerhard S. schrieb:
> Wegen der Frequenz: Ich konnte kein Datenblatt von meinem Glasmaßstab
> finden, sehr wahrscheinlich hat er aber 40um pro Sinus. Wenn ich dann
> beide Flanken und beide Sinussignale auswerte müssten das 1 Impulse pro
> 10um sein. Wenn ich dann mit 0,5m/s verfahre macht das 50kHz oder liege
> ich da falsch?

50 kHz ist die max. Frequenz einer Phase. Bei zwei Phasen und zwei 
Flanken/Phase ist die zu verabeitende Impulsfrequenz dann 200 kHz. Der 
Sinus wird dabei noch nicht ausgewertet.
Für höhere Verfahrgeschwindigkeiten sind die Maßstäbe in der Regel nicht 
zugelassen bzw. geeignet.

von Paul-Gerhard S. (paul-g)


Lesenswert?

Also vielen Dank an alle die jetzt geantwortet haben.

Ich habe jetzt verstanden, dass es zwar digital möglich wäre aber der 
Schaltungsaufwand dementsprechend hoch und auch mehr oder weniger 
kompliziert.
Besser wäre eurer Meinung nach die Wahl eines uC.

m.n. schrieb:
> Wenn Du schon den Schaltplan hast, kannst Du ja auch noch das Programm
> für ATtiny25 oder ATtiny202 verwenden. Zusätzlich gibt es ein
> Arduino-Programm zu Auslesen:
> http://www.mino-elektronik.de/progs/avr/qcnt25/qcnt_lesen.ino

Das hab ich schon versucht. Ich hab es dann auch geschafft über die 
Kommandozeile das Hex-File zu flashen. Allerdings ist irgendwie schon 
nach ein paar Zentimetern der Zähler übergelaufen. Und das muss ich ja 
auf ein Inkrement genau in den Master übernehmen und den dann 
zurücksetzten bevor er vollends überläuft. Weil ich auch nicht so recht 
weiß wie ich das machen soll bzw. ich mir dann überlegt habe das ganze 
digital(analog) aufzubauen hab ich mich entschlossen den Thread hier 
aufzumachen.
Die Möglichkeit ist aber noch nicht ausgeschlossen.
Ich dachte halt nur das wäre einfacher wenn man es mit Logikbausteine 
aufbaut. (Der Beitrag von agoli hat mir da auch wieder richtig Mut 
gemacht.)

foobar schrieb:
> Da heutzutage auf eBay aber DROs (digital readout) mit allem Pipapo inkl
> Gehäuse, Tastatur, Montagematerial, Netzteil etc für unter 100€ zu
> bekommen sind, würde ich mir den Selbstbau wohl sparen (wenn es um das
> Ziel und nicht den Weg geht).

Das war mir neu. Danke für den Hinweis!
Ich habe jetzt aber noch kein Angebot gefunden bei dem man Anzeige und 
Glasmaßstäbe für unter 100€ bekommt.
Aber sind die Anzeigen denn für Stromgetriebene Maßstäbe geeignet? Die 
Maßstäbe sind nämlich schon teilweise vorhanden und die würde ich auch 
gerne nutzen. Man könnte allerdings auch einen Adapterstecker machen wo 
eine Stromspannungswandlung drin ist. Da hab ich bis jetzt auch noch 
nicht drangedacht. Hat den jemand schonmal Praxis Erfahrungen gemacht 
mit so einem Ding?


m.n. schrieb:
> 50 kHz ist die max. Frequenz einer Phase. Bei zwei Phasen und zwei
> Flanken/Phase ist die zu verabeitende Impulsfrequenz dann 200 kHz. Der
> Sinus wird dabei noch nicht ausgewertet.
> Für höhere Verfahrgeschwindigkeiten sind die Maßstäbe in der Regel nicht
> zugelassen bzw. geeignet.

Ich bin mir nicht sicher aber ich denke ich habe mich da nicht 
verrechnet. Hab´s mir grade nochmal überlegt(angehängte Datei).
Der Sinus selber wird natürlich nicht ausgewertet. Entschuldigung dass 
hab ich falsch geschrieben. Aber die digitalisierten Flanken beider 
Spuren.

Wenn ich irgendeinen Vorschlag vergessen hab bitte nochmal kurz melden.
Vielen Dank an alle!

von Paul-Gerhard S. (paul-g)


Angehängte Dateien:

Lesenswert?

Mist. Hab vergessen die Datei anzuhängen.

von m.n. (Gast)


Lesenswert?

Paul-Gerhard S. schrieb:
> Das hab ich schon versucht. Ich hab es dann auch geschafft über die
> Kommandozeile das Hex-File zu flashen. Allerdings ist irgendwie schon
> nach ein paar Zentimetern der Zähler übergelaufen. Und das muss ich ja
> auf ein Inkrement genau in den Master übernehmen und den dann
> zurücksetzten bevor er vollends überläuft.

Ich weiß nicht, was Du da gemacht hast. Die ATtiny-Programme haben 
intern einen 32 Bit Zähler und der läuft mit den paar Impulsen nicht 
über.

> Ich habe jetzt aber noch kein Angebot gefunden bei dem man Anzeige und
> Glasmaßstäbe für unter 100€ bekommt.

Das bekommst Du auch nur, wenn es ein reiner Glasstab ist, auf den Du 
Dir die Striche selber aufzeichnest ;-)

von Paul-Gerhard S. (paul-g)


Lesenswert?

m.n. schrieb:
> Das bekommst Du auch nur, wenn es ein reiner Glasstab ist, auf den Du
> Dir die Striche selber aufzeichnest ;-)

Den Eindruck habe ich auch. Ein Adapterstecker von Strom auf TTL wäre 
aber wahrscheinlich auch keine allzu schlechte Variante.

Ich probiere die Attiny-Variante nachher nochmal.
Aber wie gesagt ich habe die zuerst Mal zurückgestellt, weil ich geahnt 
habe, dass da irgendwas faul ist.

von MaWin (Gast)


Lesenswert?

Paul-Gerhard S. schrieb:
> Mist. Hab vergessen die Datei anzuhängen.

Also eine Auswertung von 50000 Strichen/Sekunde ist mit einrm Attiny 
möglich, erfordert aber schon geschickte Programmierung

https://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.29

vor allem wenn der Attiny auch noch ein Display bedient. Arduino-style 
word da eher nichts, Assembler eher einfach.

Beitrag #6609265 wurde von einem Moderator gelöscht.
von Paul-Gerhard S. (paul-g)


Angehängte Dateien:

Lesenswert?

m.n. schrieb:
> Ich weiß nicht, was Du da gemacht hast. Die ATtiny-Programme haben
> intern einen 32 Bit Zähler und der läuft mit den paar Impulsen nicht
> über.

Habs gerade nochmal probiert sind zwischen 6 und 7mm bis der Zähler 
überläuft (siehe Bild).
Habe das ältere Programm verwendet weil ich einen tiny85 habe. 
Vielleicht ist auch das das Problem?
Geflasht habe ich über die Arduino IDE bzw. ich hab einen Blink sketch 
geladen und die entsprechende Zeile
1
 C:\Users\p-g-s\OneDrive\Dokumente\Elektronik_Projekte\Glasmasstab/avrdude -C"C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\hardware\tools\avr/etc/avrdude.conf" -v -pattiny85 -cstk500v1 -PCOM10 -b19200 -Uflash:w:C:\Users\p-g-s\OneDrive\Dokumente\Elektronik_Projekte\Glasmasstab\Quadratur_alt/Quadratur_alt.hex:i
mit den geänderten Pfaden in die Komandozeile kopiert. Vielleicht liegt 
auch da das Problem?

von Georg (Gast)


Lesenswert?

Paul-Gerhard S. schrieb:
> Habs gerade nochmal probiert sind zwischen 6 und 7mm bis der Zähler
> überläuft (siehe Bild).

Das kann nicht sein. Ich habe bei meinen Messmaschinen bis zu 1 µ 
Auflösung verwendet, damit kann man mit 32bit-Variablen Wege bis über 4 
m erfassen. Ich glaube nicht dass du mit deinem Massstab nm auflöst. 
Falls doch musst du dir das patentieren lassen.

Georg

von Gerhard O. (gerhard_)


Lesenswert?

Falls von Interesse:

Die Firma LSI stellt interessante Encoder Zählerbausteine her. Z.B.:

https://lsicsi.com/pdfs/Data_Sheets/LS7166.pdf

Es gibt zahlreiche Varianten für Inkrementalencodererfassung. Allerdings 
brauchen die meisten Mikroprozessorunterstützung zur weiteren 
Auswertung.

Ich erwähne diese Typen also ausschließlich der Vollständigkeit halber. 
Bezug dürfte ggf. auch etwas schwierig sein. Wir verwendeten früher die 
LS7066 und 7166 mit guten Erfolg in Produkten der 80er Jahre in der 
Energietechnik.

Die STM32 haben im Timer Untersystem auch gut funktionierende Quadratur 
Auf/Ab Zähler mit flexiblen Einstellungen.

: Bearbeitet durch User
von m.n. (Gast)


Lesenswert?

Paul-Gerhard S. schrieb:
> Habs gerade nochmal probiert sind zwischen 6 und 7mm bis der Zähler
> überläuft (siehe Bild).

Eigentlich sieht man doch sofort, daß LSB und MSB vertauscht sein 
müssen.
In der Beschreibung zum ATtiny25 Programm steht:
1
'A' Ausgabe des Zählerstandes
2
'B' Ausgabe des Zählerstandes/2 für Geber mit Zwischenflanken
3
'Z' Löschen des Zählers
4
5
Bei der Ausgabe wird das untere Byte zuerst gesendet.

Und im .ino-Programm wird
1
  // Auslesen MSB zuerst
2
  long lese_iic_long_inverse(uint8_t iic_adr)
aufgerufen.
Das inverse Auslesen wird durch "AR" angefordert, wobei der Befehl "R" 
die Reihenfolge umdreht, was der Tiny25 nicht kennt.

Ändere loop():
1
void loop() 
2
{
3
long zaehler;
4
  while(1) {
5
    zaehler = lese_iic_long(IIC_ADRESSE); // Wert holen
6
    Serial.println(zaehler);          // und per UART ausgeben
7
    delay(100);                       // zum Testen nur 10 x / Sekunde
8
  }
9
}
Dann sollte es passen.

von Paul-Gerhard S. (paul-g)


Lesenswert?

Also zuerst nochmal vielen Dank an alle.

m.n. schrieb:
> Dann sollte es passen.

Vielen Dank! Jetzt funktioniert es tatsächlich.

Ich werde mir jetzt doch zuerst nochmal überlegen, ob ein diskreter 
Aufbau sich wirklich lohnt.

Wenn ich mich dafür entscheide muss ich mal gucken wie weit ich mit dem 
Beitrag von agoli komme.
Wenn ich nochmal ein konkretes Problem dazu habe mach ich vielleicht 
einen neuen Thread auf.

Vielen Dank nochmal!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.