Forum: Mikrocontroller und Digitale Elektronik Inkrementalgeber an CMOS Dekadenzähler CD4017


von Michael (Gast)


Lesenswert?

Hallo Leute,

ich möchte gerne eine Inkrementaldrehgeber an einen CD4017 Dekadenzähler 
anschließen.
Würde gerne euch nach der besten Methode fragen für meinen 
Anwendungsfall in einer Hobby-CNC Fräse.

Und zwar kann ich diesen Drehgeber mit 5V Spannungssignal oder als Open 
Collector kaufen.

Die maximale Drehzahl erzeugt ein Ausgangsignal von 1,8kHz. Kabellänge 
beträgt maximal 2 Meter.

Soll ich direkt mit den 5V Signal auf die Pins des CD4017 gehen? Hätte 
ein geschirmtes Kabel mit einem Ferritemagneten verwendet.

Oder müsste ich das Signal vielleicht durch einen Schmitt Trigger laufen 
lassen?

Wäre euch sehr dankbar für einige Hinweise.

von LDR (Gast)


Lesenswert?

Zeig mal das Datenblatt deines Drehgebers.

von Michael B. (laberkopp)


Lesenswert?

Der CD4017 zählt ja nur vorwärts, da ist ein Incrementaldrehgeber der 
auch rückwärts drehen kann natürlich merkwürdig.

Wenn man nur ein Incrementalgebersignal verwendet, prellt das Signal, 
d.h. der CD4017 zählt pro Raste eventuell mehrere Impulse und schaltet 
mehrere Ausgänge weiter. Zumal er ja nicht nach vorwärts und rückwärts 
differenziert.

Man muss erst mal eine Entprellung davor bauen. Man könnte deine 
niedrige maximale Impulsrate nutzen um per RC Glied zu entprellen, da 
der CD4017 aber keine Schmitt-Trigger Eingänge besitzt, kostet das ein 
weiteres IC.

Dann kann man es gleich richtig machen unter Ausnutzung beider 
Anschlüsse A und B, an ein flankengesteuertes D-FlipFlop wie CD4013 mit 
A an CLK und B an D und Q liefert den Takt für den CD4017.

Wenn du allerdings die 10 Ausgänge vor und rückwärts je nach 
Drehrichtung durchlaufen willst: nimm einen Mikrocontroller wie Arduino.

von Falk B. (falk)


Lesenswert?

Michael schrieb:
> ich möchte gerne eine Inkrementaldrehgeber an einen CD4017 Dekadenzähler
> anschließen.

Wozu soll das gut sein? Das ist ein Zähler mit 1 aus 10 Dekoder.

> Würde gerne euch nach der besten Methode fragen für meinen
> Anwendungsfall in einer Hobby-CNC Fräse.

Was macht der Zähler dort?

> Und zwar kann ich diesen Drehgeber mit 5V Spannungssignal oder als Open
> Collector kaufen.

Das ist das kleinste Problem. Siehe Drehgeber.

> Soll ich direkt mit den 5V Signal auf die Pins des CD4017 gehen? Hätte
> ein geschirmtes Kabel mit einem Ferritemagneten verwendet.

;-)

von m.n. (Gast)


Lesenswert?

Michael schrieb:
> Oder müsste ich das Signal vielleicht durch einen Schmitt Trigger laufen
> lassen?

Es ist eigentlich egal, ob und wie Du ihn anschließt. Solange Du den 
Wert nicht ablesen oder anderweitig verarbeiten willst, hast Du frei 
Wahl.
Ansonsten habe ich eine Möglichkeit für Dich: 
http://mino-elektronik.de/mt12_iic/mt12_iic.htm#qcnt_tiny25

von schaltplanlesa (Gast)


Lesenswert?

Michael schrieb:
> Hätte
> ein geschirmtes Kabel mit einem Ferritemagneten verwendet.

Frage mich die ganze Zeit was ein Ferritemagnet an einem
geschirmten Kabel tut bzw. was er dort zu suchen hat.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

>maximale Drehzahl .. 1,8kHz
Wenn es ein handbetriebener Encoder wäre, hätte der keine genau 
angegebene maximale Drehzahl. Ich vermute, der hängt an einem Motor der 
CNC-Fräse, der immer nur in einer Richtung läuft, dann gibt es auch 
keine zwei Ausgänge, sondern nur einen, der immer aufwärts gezählt 
werden soll.
Wieso muss es ausgerechnet ein Johnson-Zähler mit zehn Ausgängen sein ?

von Michael B. (laberkopp)


Lesenswert?

schaltplanlesa schrieb:
> Frage mich die ganze Zeit was ein Ferritemagnet an einem
> geschirmten Kabel tut bzw. was er dort zu suchen hat.

Spart Benzin.

https://www.tuningblog.eu/kategorien/tuning-wiki/neodym-magnete-232262/

Denk dran, Magnetfelder durchdringen Schirmung nahezu ungehemmt. 
Elektrische Felder hingegen kommen nicht durch.

von Dr Watson (Gast)


Lesenswert?

Es fällt mir schwer zu glauben dass heute Freitag ist. Aber
die Skurrilität des Eröffnungsbeitrag bringt mich immer mehr
zu dieser Überzeugung.

Stichwort Hobby-CNC Fräse. Klingt so also ob man mit einem
Drehgeber alleine alles erschlagen kann. Wie soll jemand wie
der (naive) TO jemals zu einem funktionsfähigen Gerät kommen
wenn er bei solch vergleichsweise "einfachen" Fragen bereits
fragen muss. Na, vielleicht in 20 Jahren oder so ...

Michael schrieb:
> Inkrementaldrehgeber an einen CD4017 Dekadenzähler
> anschließen.

Schon sehr hemdsärmelig und naiv wie da vorgegangen werden
soll. Frage mich schon wie man auf die Idee kommt - praktisch
ohne Grundlagen oder Bezug zu irgendeinem Lösungsvorschlag
(den es wohl auch in der Form nicht gibt).

Dann noch das schon erwähnte "geschirmte Kabel mit einem
Ferritemagneten", alles sehr verdächtig.

Dann noch der übliche Laberkopp der dank seiner Scheuklappen
(die ihn praktisch nichts merken lassen) seine "Perlen" vor
die Säue wirft.

SCNR es ist heute Freitag, die Methoden werden immer subtiler
um die Leserschaft zu blenden.

von LDR (Gast)


Lesenswert?

Michael B. schrieb:
> schaltplanlesa schrieb:
>> Frage mich die ganze Zeit was ein Ferritemagnet an einem
>> geschirmten Kabel tut bzw. was er dort zu suchen hat.
>
> Spart Benzin.

Und schützt vor Verkalkung!

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

So allmählich habe ich den Eindruck, dass hier seit längerem irgendeine 
gekünstelte Intelligenz uns zum Narren hält und Troll spielt.
Postings mit wirren Angaben, und dann hört man nie wieder etwas vom TO.

Von allen anderen nur Mutmaßungen, was gemeint sein könnte.

Gibt es dazu schon eine App für ChatGPT?

von m.n. (Gast)


Lesenswert?

Christoph db1uq K. schrieb:
> Postings mit wirren Angaben, und dann hört man nie wieder etwas vom TO.

Aber die müssen gemacht werden, damit Folgendes funktioniert:
> Von allen anderen nur Mutmaßungen, was gemeint sein könnte.

Daß jemand merkt, eine völlig blöde Frage gestellt zu haben und sich nie 
wieder meldet, ist doch in Ordnung.
Die Schuhe zieht es mir immer aus, wenn von wissensbefreiten Nutzern 
hier völlig bekloppte Antworten gegeben werden. Das finde ich im Grunde 
viel schlimmer.

von Michael (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
danke für eure Antworten, ich gebe mir Mühe die Materie zu verstehen. 
Deswegen dauert es etwas länger.

Ich möchte mein Problem vielleicht etwas genauer erklären. Ich möchte 
auf meiner Fräsmaschine Zahnräder mit einem Abwälzfräser herstellen. 
Dazu muss ich eine 4. Achse mit einer Übersetzung antreiben.
Mein Ansatz wäre gewesen, mit dem CD4017 das Drehzahlsignal von der 
Spindel über einen Drehgeber zu teilen, um ein Übersetzungsverhältnis 
für die Schrittmotorkarte zu bekommen.

Es muss nicht eine Lösung mit dem Dekadenzähler sein, aber mir schien 
mir als einfachster Lösungsansatz.


@m.n.
Danke für die interessante Schaltung und den verständlichen 
Programmcode. Ich werde mit einem AVR etwas versuchen.

Es muss ja wirklich schlimm sein, was der Freitags-Troll mit manchen 
hier angerichtet hat.

von Manfred (Gast)


Lesenswert?

Christoph db1uq K. schrieb:
> Gibt es dazu schon eine App für ChatGPT?

Es wird dringend Zeit, dass im Forum "ChatGPT" in die Liste 
spamverdächtiger Worte aufgenommen wird.

Mit gehen diese Blödkommentare schon seit Tagen heftig auf den Sack!

von Harald W. (wilhelms)


Lesenswert?

LDR schrieb:

> Und schützt vor Verkalkung!

Auch bei Menschen?

von LDR (Gast)


Lesenswert?

Harald W. schrieb:
> LDR schrieb:
>
>> Und schützt vor Verkalkung!
>
> Auch bei Menschen?

Da braucht man schon Alufolie!

von LDR (Gast)


Lesenswert?

Manfred schrieb:
> Christoph db1uq K. schrieb:
>> Gibt es dazu schon eine App für ChatGPT?
>
> Es wird dringend Zeit, dass im Forum "ChatGPT" in die Liste
> spamverdächtiger Worte aufgenommen wird.
>
> Mit gehen diese Blödkommentare schon seit Tagen heftig auf den Sack!

Genau das hätte ChatGPT auch gesagt!

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Na endlich ein Lebenszeichen, kein Turing-Test.

Das ist ein typisches Datenblatt für Drehencoder, z.B. von Heidenhain 
und anderen. Das 8-adrige Kabel ist fest angeschlossen und endet hier 
mit offenen Enden, oft ist schon ein Steckverbinder dran oder dessen Typ 
und Belegung wird vorgeschlagen.
Mit max. 1,8 kHz kann man jeden Ausgang benutzen, erst wenn es mal in 
Richtung 100 kHz geht wird es mit open collector knapp, dann ist 
push-pull sicherer.
Da muss man allerdings auf die Betriebsspannung achten, z.B. wenn die 
nachfolgende Schaltung nur 3,3V verträgt. Mit 24V sollte man die 
Leistungsaufnahme des Pull-up Widerstands beachten, damit der nicht zu 
heiß wird.
Solange kein langes Kabel dazwischen sitzt, sollte das Signal des 
Drehgebers schon sauber und steilflankig genug sein und ohne Entprellung 
funktionieren. Auch da ist ein push-pull besser. Der wird hier aber mit 
minimal 8V Versorgung angegeben, viel zuviel für 3,3V-Logik, auch 5V 
bekommt noch Probleme. Vielleicht wäre der rechts gezeigte am besten, 
26C31
https://www.ti.com/lit/ds/symlink/am26c31.pdf
ist ein 5V-Treiber mit gegenphasigen Ausgängen, der kann unmittelbar 
TTL-Eingänge bedienen.

von Christoph db1uq K. (christoph_kessler)


Angehängte Dateien:

Lesenswert?

Ach ja wieso der 4017 mit seinem asynchronen Reset? Es gibt z.B. den 
74HC40103, der teilt einstellbar durch 3 bis 257, man muss nur noch zwei 
Hex-Codierschalter und ein Widerstandsnetzwerk mit 8 
pull-up-Widerständen anschließen, und den synchronen Reseteingang "/PE" 
mit dem Ausgang "/TC" verbinden, wie es das Datenblatt zeigt. Läuft mit 
3 bis 5V. Das Ausgangssignal ist allerdings kein symmetrisches Rechteck, 
aber das wäre es beim 4017 auch nur wenn er durch 10 teilt.

https://assets.nexperia.com/documents/data-sheet/74HC40103.pdf
https://www.ti.com/lit/ds/symlink/cd74hc40103.pdf
bei Reichelt 1,60€
https://www.reichelt.de/counter-8-stage-2--6-v-dil-16-74hc-40103-p3215.html?&trstct=pol_2&nbc=1

: Bearbeitet durch User
von Michael B. (laberkopp)


Lesenswert?

Michael schrieb:
> Ich möchte auf meiner Fräsmaschine Zahnräder mit einem Abwälzfräser
> herstellen. Dazu muss ich eine 4. Achse mit einer Übersetzung antreiben.

Dazu muss man erst mal eine 4. Achse haben, hast du scheinbar, gut, auch 
schon die nötige CNC Ansteuerung ?

Bei meiner Wabeco F1200 ist die Motordrehzahlregelung dermassen 
instabil, dass man Schwierigkeiten hat, danach etwas nachzuregeln.

> Mein Ansatz wäre gewesen, mit dem CD4017 das Drehzahlsignal von der
> Spindel über einen Drehgeber zu teilen, um ein Übersetzungsverhältnis
> für die Schrittmotorkarte zu bekommen.
> Es muss nicht eine Lösung mit dem Dekadenzähler sein, aber mir schien
> mir als einfachster Lösungsansatz.

Vergiss CD4017. Das macht ein Mikrocontroller, die 
Übersetzungsverhältnisse sind ja durchaus schräg, und man muss sie nicht 
nur einstellen (345:1234) sondern auch ausrechnen (Modul 0.5, 25 Zähne, 
welches Übersetzungsverhältnis).


Wenn deine Fräse schon eine CNC hat, wie Mach3, kann das auch diese 
schon übernehmen.

Ansonsten ist das Problem ähnlich der ELS electronic lead screw von 
Drehmaschinen, von dort könnte man den nötigen sinnvollen Aufbau 
übernehmen, es bleibt dann 'nur' eine Anpassung der Software.

https://forum.zerspanungsbude.net/viewtopic.php?t=27531

inzwischen wohl weiterentwickelt

https://www.rocketronics.de/shop/de/elektronische-leitspindel-els4basic.html

Das Ding ist dann so teuer,  dass man den Hersteller vielleicht 
überreden kann, die Softwareanpassung für Abwälzfräser vorzunehmen.

Oder eben an open source selber vornehmen

https://github.com/kachurovskiy/nanoels

https://projecthub.arduino.cc/nsr5058/7115c7c1-67bd-4e84-8650-4b0013b63bab

von Veit D. (devil-elec)


Lesenswert?

m.n. schrieb:

> Ansonsten habe ich eine Möglichkeit für Dich:
> http://mino-elektronik.de/mt12_iic/mt12_iic.htm#qcnt_tiny25

Hallo,

ist ja schön und gut, aber testest du deinen Code auch?
Habe mir einmal das Arduino Programm angeschaut.
Die verschiedenen I2C / Register Adressenübergaben sind mindestens 
merkwürdig.
Die Veroderung der Wire.read Daten an temp erzeugt Unsinn.
Die IDE meckert dabei schon mit left shift overflows.
Hierbei muss ein cast auf uint32_t erfolgen.
1
uint32_t temp = 0;
2
temp  = Wire.read();            // und zum 32 Bit Wert formen
3
temp |= (uint32_t)Wire.read() <<  8;
4
temp |= (uint32_t)Wire.read() << 16;
5
temp |= (uint32_t)Wire.read() << 24;

Und das while in der loop kann auch weg.

Setze einmal in der IDE die Einstellung der Warnungen auf "ALLE".

von Andreas M. (elektronenbremser)


Lesenswert?

Michael B. schrieb:
> Mikrocontroller wie Arduino

Der Arduino ist kein Mikrocontroller, das ist ein Board, das unter 
anderem einen Mikrocontroller enthält!

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

>Übersetzungsverhältnisse .. schräg
auch für ein einzelnes Zahnrad ?
Die CNC-Fräse dreht das noch ungefräste Rad einmal um seine Achse, und 
dabei wird eine ganzzahlige Anzahl Zähne reingefräst.

(345:1234)= 0,279578606158833063209076175041

von Michael (Gast)


Lesenswert?

Ich möchte mich bei euch allen für eure Erklärungen bedanken.

Die Sache mit dem Entprellen scheint wirklich die komplizierteste zu 
sein.
Aber bei unter 2kHz müssten da noch RC-Glieder funktionieren? Bei einer 
Entprellung mit RC ist hier Open collector Ausgang zu verwenden?


Ich habe mir den Link zum AM2631 angeschaut. Da gibt es den AM26C32 
Differential Line Receiver.
Der könnte Differentialsignale auswerten und hat einen Schmitt Trigger. 
Diesen könnte dann ich mit einem Push-Pull Signal ansteuern.


Mit den Signalen entweder an den 74HC40103 Zähler IC oder an einen 
ATMEGA328. Da könnte ich mit Interrupts die Pulse zählen, vielleicht 
auch mal etwas eleganter mit einem Timer.
Da wäre jetzt die Frage ob ich hierfür den internen Oszillator nehmen 
könnte.

Die Electronic Lead Screw ist interessant aber sprengt das Budget, wenn 
man nur mal daheim ein paar Zahnräder fräsen will.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

RC Entprellung kannste für Taster machen aber nicht wenn es für einen 
Zähler ist, der soll ja schließlich immer präzise zählen und selbst 
einen Taster entprellt man in Software. µC hat den Vorteil das Programm 
ist jederzeit änderbar. Die Platine ändern ist schwerfällig.

Grundlagen: https://www.mikrocontroller.net/articles/Drehgeber
verbesserte Version: 
Beitrag "Re: Drehgeber/Encoder 1-, 2- oder 4-schrittig"

: Bearbeitet durch User
von LDR (Gast)


Lesenswert?

Michael schrieb:
> Die Sache mit dem Entprellen scheint wirklich die komplizierteste zu
> sein.

Hat möglicherweise der Hersteller des Encoders schon erledigt. Hättest 
eben das Datenblatt posten sollen.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Der Begriff Übersetzungsverhältnis ist zwar unpassend, aber tatsächlich 
können mit einem ganzzahligen Teiler nur bestimmte Zähnezahlen gefräst 
werden.
Ich nehme an, der Inkrementalgeber sitzt auf der Achse des 
Zahnrad-Rohlings. Wenn er beispielsweise 360 Impulse pro Umdrehung 
abgibt, hat man einen Impuls pro Grad, genauer kann man den Winkel nicht 
treffen. Das ist ein gängiger Wert, neben glatten Dezimalzahlen. Mit 
Auswertung aller vier Flanken wird das noch zu 1/4 Grad.
Damit kann man auf alle Zähnezahlen einstellen, die 360/n Grad haben, 
also 360, 180, 120, 90, 72 ... Zähne. Alles dazwischen ist so nicht 
exakt machbar, das muss man auch mit einem Mikrocontroller runden.

Das Problem ist, dass man den Kehrwert bräuchte, also eigentlich einen 
Frequenzvervielfacher, um den Winkel einzustellen.

Es gab mal "Bit rate multiplier", in Standard-TTL-Technik den 7497. Der 
lässt von n Eingangsimpulsen n/64 durch und unterdrückt den Rest. Das 
ergibt zwar ein Gezappel, aber im Mittel wäre das eine Möglichkeit.

: Bearbeitet durch User
von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Wir haben immer noch keinen Herstellernamen. Die Datenblätter von 
Heidenhain sehen etwas anders aus:

https://www.heidenhain.de/fileadmin/pdf/de/01_Produkte/Prospekte/PR_Lieferuebersicht_ID350457_de.pdf
PDF-Seiten 18 bis 22 sind deren Drehgeber, Impulse pro Umdrehung 100 bis 
5000, es gibt einen der macht elektronisch noch eine Vervielfachung auf 
25000.
Wie schon gesagt glatte dezimale Werte oder Potenzen von zwei.

Das gleich Problem stellt sich mit einem Mikrocontroller ebenfalls, der 
muss auch interpolieren, damit er nach 360 Grad wieder an derselben 
Stelle ankommt.
Wie macht das die Regelung, dass sie die Positionen der einzelnen Zähne 
genau trifft? Ein Überschwingen würde die Sache verkomplizieren, dann 
muss man vor- und zurück zählen können. Oder ist das mit Schrittmotor 
gelöst, dann bräuchte man theoretisch keinen Geber mehr.

: Bearbeitet durch User
von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Der gute alte SN7497 ist noch lieferbar, obwohl er nur in Standard-TTL 
produziert wurde:
https://www.ti.com/lit/ds/symlink/sn7497.pdf

f_out=M*f_in/64
Damit hätte man wenigstens 64 verschiedene Teiler, die nicht mit 1/x 
gestuft sind. Die 1,8 kHz am Eingang ergeben gleichmäßige Vielfache von 
28,125 Hz, auf Kosten der sauberen Schwingung. Das sind dann nur 
gleichmäßige 1,8 kHz-Impulse mit Lücken.

von c-hater (Gast)


Lesenswert?

Michael schrieb:

> Die Sache mit dem Entprellen scheint wirklich die komplizierteste zu
> sein.

Jain.

"Entprellen" im Sinne z.B. eines mechanischen Tasters braucht man bei 
Encodern eigentlich nicht, dafür sorgen die systemimmanenten 
Eigenschaften so eines Encoders.

Leider braucht man einen relativ aufwendige Schaltung, um diese 
Eigenschaften tatsächlich nutzen zu können. Aufgebaut aus einzelnen 
Standard-Logik-ICs wäre der Aufwand relativ hoch.

Ich empfehle da einen µC. Der kann das entweder in Software handeln oder 
besitzt sogar schon fertige Hardwareeinheit(en) für diesen Zweck, die 
man einfach nur noch benutzen muss.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Mir ist noch eine recht einfache Lösung eingefallen: einen DDS als 
"Frequenzteiler" zu benutzen. Im Gegensatz zum 4017 oder 40103 hat der 
nicht nur 10 oder 256 Stufen, sondern 4 Milliarden, die über eine 
32-Bit-Zahl seriell eingestellt werden. Man bekommt also nur einen 
winzigen Fehler nach einer Zahnradumdrehung. Ein AD9833 oder AD9835 
passt, die gibt es auch als fertiges Modul aus China. Anstelle der 
Quarzfrequenz wird das Inkrementalgebersignal eingespeist.
Dazu ist allerdings ein Mikrocontroller nicht zu vermeiden. Einen 
SPI-Bus steuert man nicht mit TTL-Logikgattern an.

Hier im Forum gibt es auch eine Softwarelösung, die einen AVR benutzt.
https://www.mikrocontroller.net/articles/Digitaler_Funktionsgenerator

: Bearbeitet durch User
von Michael (Gast)


Angehängte Dateien:

Lesenswert?

Vielen Dank für die Vorschläge und interessante Einblicke.

Am Ende dürfte ein Mikrocontroller wohl das sinnvollste sein, wegen der 
Flexibilität mit der Teilung und dem Interpolieren. Bauteile sparen 
werde ich mit einem Logik-IC wohl nicht.

Die 4. Achse soll von einem Closed-Loop Schrittmotor angetrieben werden.

Die offene Frage derzeit ist über die Art des Signals. Soll ich den 
Drehgeber als Ausführung mit RS422 Differentialsignal verwenden? Und 
dann über den AM26C32 Line Receiver and den GPIO-Pin vom 
Mikrocontroller.

von m.n. (Gast)


Lesenswert?

Michael schrieb:
> Die offene Frage derzeit ist über die Art des Signals. Soll ich den
> Drehgeber als Ausführung mit RS422 Differentialsignal verwenden?

Das ist doch alles völlig wurscht! Lass Dir hier keinen vom Pferd 
erzählen.
Nimm das Teil, was gängig, lieferbar und kostengünstig ist. Selbst mit 
einem OC-Ausgang ist es kein Problem 100 m zu überbrücken.
Bei 1,8 kHz brauchst Du auch keinen speziellen DDS-Baustein. Ein kleiner 
AVR erledigt das während seiner ausgedehten Schlafphasen.

Veit D. schrieb:
> Und das while in der loop kann auch weg.

Selber Hallo.
Geschenke verpacke ich immer gerne mit Schleife.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Endlich ein Datenblatt
Auf Seite 2 stehen die verschiedenen Ausführungen. Um eine zusätzliche 
Spannungsversorgung zu sparen würde ich jedenfalls einen der 5V-Typen 
nehmen. 0-300kHz steht da noch, die Drehung bis 1,8 kHz überfordert den 
jedenfalls nicht.

Wenigstens ist mein Vorschlag "DDS-Prinzip" akzeptiert. Das ist die 
einfachste Möglichkeit einer Feinabstufung je nach Zähnezahl. Vermutlich 
hat auch schon jemand mal einen DDS auf dem Arduino programmiert.

von m.n. (Gast)


Lesenswert?

Christoph db1uq K. schrieb:
> Vermutlich
> hat auch schon jemand mal einen DDS auf dem Arduino programmiert.

Auf einem ATmega48 hatte ich mal 64 PWM-Kanäle per DDS moduliert und 
über Schieberegister ausgegeben ;-)

Die Sache ist supersimpel. Beispiel:
Ein Wert von 33 wird mit jedem Eingangsimpuls zu einem Akkuwert 
adddiert, der beim Wert von 100 überläuft. Ausgehend von einem Akkustand 
= 0 springt bei der 4. Addition der Akkuwert von 99 auf 32 + Überlauf. 
Der Überlauf entspricht etwa einer Teilung von 3.
Verwendet man einen 32 Bit Akku, erhält man eine ganz feine Auflösung 
mit wenig Jitter. Es muß dann 'nur' ein Wert von 1431655765 (2^32 / 3) 
addiert werden ;-)

von c-hater (Gast)


Lesenswert?

m.n. schrieb:

> Verwendet man einen 32 Bit Akku, erhält man eine ganz feine Auflösung
> mit wenig Jitter.

Das geht meist besser, vor allem ohne kumulierende Verluste. Siehe 
Bresenham-Algorithmus. Der Nachteil: Je nach kgV kann es deutlich 
langsamer sein als eine Lösung mit fraktionalem Akku.

von Michael (Gast)


Lesenswert?

Ich habe mir überlegt das Projekt mit einer STM32 Bluepill umzusetzen, 
die ich noch hier habe.

Für den Anfang könnte ich die Eingangspulse per Interrupt zählen, oder 
eleganter über den Encoder Mode.

Dann deb Wert aus der Division einem Timer übergeben, der ein 
Rechtecksignal erzeugt.

von m.n. (Gast)


Lesenswert?

Michael schrieb:
> Für den Anfang könnte ich die Eingangspulse per Interrupt zählen, oder
> eleganter über den Encoder Mode.
>
> Dann deb Wert aus der Division einem Timer übergeben, der ein
> Rechtecksignal erzeugt.

So, wie ich Dich verstanden habe, brauchst Du die Richtungsinformation 
garnicht. Somit brauchst Du auch keinen "Encoder Mode".
Wenn Du die Impulse eh schon per Interrupt erfasst, dann kannst Du in 
der ISR auch die Ausgangsimpulse mit feiner Auflösung erzeugen. Ein 
16-bit Timer ist dafür ungeeignet.
Auf einem STM32 dauert die ISR für die Verarbeitung von uint32_t Werten 
< 1 µs.

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.