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.
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.
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. ;-)
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
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.
>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 ?
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.
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.
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!
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?
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.
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.
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!
Harald W. schrieb: > LDR schrieb: > >> Und schützt vor Verkalkung! > > Auch bei Menschen? Da braucht man schon Alufolie!
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!
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.
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
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
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".
Michael B. schrieb: > Mikrocontroller wie Arduino Der Arduino ist kein Mikrocontroller, das ist ein Board, das unter anderem einen Mikrocontroller enthält!
>Ü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
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.
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
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.
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
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
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.
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.
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
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.
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.
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.
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 ;-)
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.