hi mal wieder, es geht um eine Schrittmotor-Steueraufgabe, für die die üblichen Takt und Richtungs-Signale zur Verfügung stehen. Die Endstufe sowie passender Schrittmotor sind vorhanden, allerdings benötigt die Endstufe andere Signale, diese Karte hat keinen Eingang für Step und Dir Signal, sondern 3 Inputs. Um 6 aufeinander folgende Steps vorwärts zu fahren, werden die Inputs wie folgt beschaltet: 001 011 010 111 100 101 Danach gehts von vorne los. Rückwärts eben die Liste von unten nach oben. Ich denke, mit einem kleinen AVR ist das kein Thema, lieber wäre mir aber eine Hardwarelösung, sofern die mit irgendeinem Logik-Ic zu machen ist. Hat jemand 'ne gute Idee dazu? Grüssens & Dank, harry
Ist ein einfacher Zähler, wenn gleich in einer "komischen" Zählfolge. Ein Mehrfach FlipFlop ala 74HC273 und ein paar NAND, NOR, INverter, fertig ist die Laube. Hier ist der prinzipielle Ablauf. Beitrag "Re: pulse direction signal zu encoder a b?"
bist du sicher, dass der 4. wert nicht 110 heissen muss?
bin fast sicher es gibt fuer sowas 1-chip loesungen. ansonsten: - up/down counter - 3x 8:1 mux
Ein EPROM. Ein Zähler. Ein Monostabiler Multivibrator. Der Zähler gi´bt seine Signale auf den Adressbus. Das Eprom ist so programmiert, dass es die entsprechenden Schritte ausgibt. Eine Datenleitung des EPROMS triggert den Monostabilen MV, dessen Ausgang auf den Zählerclock geführt wird. Fertig.
ohps, sorry, doch, hast recht, der 4. Wert ist 110. und klar, die Zählfolge mutet bissl eigenartig an, hab keine Idee, wie man auf sowas kommt. @ Falk: Danke für den Link, ich befürchte nur, das gibt dann das weiter oben erwähnte TTL Grab, hm, mal 3 Achsen, wird wohl 'ne Kiste :) Egal, Platz ist da mehr als genug, nur leider ist der ganze TTL und CMOS Kram an mir vorüber gezogen, als das hipp war. 1 chip Lösung wäre natürlich klasse, aber wie ich da 'ne 8:1 mux verbraten kann, da steh ich gerade auf der Leitung... Grüssens, harry
Harry Up schrieb: > Ich denke, mit einem kleinen AVR ist das kein Thema, lieber > wäre mir aber eine Hardwarelösung, Lösung ist immer gut. Für welches Problem eigentlich? Kombinatorische Kode-Umsetzung? Fünfachs-Fräsmaschine?
Harry Up schrieb: > und klar, die Zählfolge mutet bissl eigenartig an, hab > keine Idee, wie man auf sowas kommt. Nun ja, das ist im Prinzip ein Schieberegister. Am verblüffendsten finde ich, dass es sich offenbar um einen 3-Strang-Schrittmotor handelt.
Harry Up schrieb: > hab keine Idee, wie > man auf sowas kommt. Könnte es sowas sein? http://de.wikipedia.org/wiki/Gray-Code
Die Lösung mit den den MUXen: Einen für jeden Ausgang, an die Dateneingänge werden der gewünschten Sequenz nach entsprechend Hi/Lo-Signale angelegt, die Adresseingänge der MUXe aller Kanäle liegen am Ausgang eines Up/Down-Zählers. Der Reset dieses Zählers muss dann natürlich auch noch integriert werden.
Harry Up schrieb: > lieber wäre mir aber eine Hardwarelösung, > sofern die mit irgendeinem Logik-Ic zu machen Anstatt Digitalschaltung würde es natürlich auch ein kleines CPLD tun: XC9572 5V 44 pins 2 EUR XC2C64 3.3V 44 pins 2 EUR Aber immer noch teurer als ein kleiner uC ...
jepp, klar, mux geht ja auch 'anders rum'. Gray-Code kommt fast hin, nur haben wir da die ungeliebte 111 zwischendrinne, passt also nicht ganz. Und ja, ist wohl ein 3-Strang Schrittmotor, dicker Brummer (im wahrsten Sinne des Wortes) wird mit 32V getrieben bei munteren 15A, gechoppert natürlich. Die Treiberkarten strotzen vor dicken Transen und Kühlern, 4x 74LS04 im Eingangsbereich und nur bedrahtete Teile, also schön für die Ewigkeit gebaut, sind intakt, deswegen wollte ich die gerne erhalten. Hätten wir dann 3 Zähler und 9 muxens, hmmm Ich denke, ich nehm dann doch erstmal 'nen AVR auf die schnelle, der wird dann wohl noch die nächsten 10 Jahre da drinne rumticken... Danke & gute Nacht, harry
ah, noch einer: geht nicht um's Geld dabei, soll morgen (heute) laufen :)
Ich hab mal die Übergangsfunktionen minimiert. Ich hoffe ich habe keinen Fehler eingebaut. Das Ganze könnte man dann mit drei D-Flipflops und ein paar Gattern umsetzten.
:
Bearbeitet durch User
Wenn du wirklich nicht auf ein fertiges Bauteil zurückgreifen willst, würde ich es nach etwas Nachdenken so lösen: Die drei Bits repräsentieren jeweils die Ansteuerung der um 120° versetzten Spulen. Es ist jeweils immer eine Spule an, oder 2 benachbarte (Zwischenstufe), dadurch ergeben sich 6 Schritte. "Steuerzentrale" ist ein Decade up/down counter mit preset (evtl. musst du 2 4-Bit counter kaskadieren). Ausgang 0+1+5 an ein 3-fach OR -> Signal für 1. Spule (A) Ausgang 1+2+3 an ein 3-fach OR -> Signal für 2. Spule (B) Ausgang 3+4+5 an ein 3-fach OR -> Signal für 3. Spule (C) Ausgang 6 -> Reset Signal für den/die Counter Ausgang 7 -> Preset Load Signal für den/die Counter Wenn der Counter also auf 6 springt (beim hochzählen) springt er direkt auf 0. Umgekehrt beim runterzählen von 0 auf 7 -> Load Preset Preset muss demzufolge "5" sein. Counter Value A B C 0 0 0 1 1 0 1 1 2 0 1 0 3 1 1 0 4 1 0 0 5 1 0 1 6 -> Reset -> 0 7 -> Preset -> 5
Harry Up schrieb: > ah, noch einer: geht nicht um's Geld dabei, soll morgen (heute) laufen > :) Na, dann beauftrage doch einfach jemanden, der dir das in einen CPLD programmiert. 10 Zeilen Verilog und fertig.
Harry Up schrieb: > Um 6 aufeinander folgende Steps vorwärts zu fahren, werden die Inputs > wie folgt beschaltet: > > 001 > 011 > 010 > 111 > 100 > 101 Bist du sicher, daß du das richtig abgetippt hast? Meiner Meinung nach müßte das so aussehen: 001 011 010 110 100 101 Dann wird auch klar, was hier tatsächlich passiert: es werden drei, um 120° gegeneinander verschobene Phasen generiert. Und angesteuert wird damit vermutlich kein klassischer Stepper, sondern ein brushless Motor. Es wäre auch möglich, daß das eine von mir geänderte Bit tatsächlich richtig war und von dem Controller ausgefiltert und für irgendwelche Synchronisationsaufgaben verwendet wird. > > Danach gehts von vorne los. Rückwärts eben die Liste von unten nach > oben. > > Ich denke, mit einem kleinen AVR ist das kein Thema, lieber wäre mir > aber eine Hardwarelösung, sofern die mit irgendeinem Logik-Ic zu machen > ist. > Hat jemand 'ne gute Idee dazu? > Grüssens & Dank, harry
Man kann das auch mit einem Schieberegister mit parallelem Ausgang hinbekommen:
1 | +-----------------------------+ |
2 | | | |
3 | +=>[ 1 | 1 | 1 | 0 | 0 | 0 ]--+ |
4 | | | | |
5 | V V V |
6 | (A) (B) (C) |
In der Lehre nannten wir sowas Zählersynthese. Da baust Du Dir aus D oder JK-Flipflops Deinen eigenen Zähler, der genauso zähjlt wiwe Du brauchst.
Um eine Tabelle mit 8 3-Bitwerten auszugeben, sollte man sich am besten einen Full Custom Chip bauen lassen. Intern am besten eine Quad-Core CPU, damits richtig metert MfG Klaus
Harry Up schrieb: > 001 > 011 > 010 > 111 > 100 > 101 Ziemlich dämlich, weil hier 010 111 2 Leitungen gleichzeitig ihren Zustand ändern. Das wird NIE gleichzeitig sein. Und wenn der linke zuerst kommt 010 011 111 entspricht das einem Schritt zurück und 2 nach vorn. Es müsste also wenn überhaupt dann so 010 110 111 passieren, wobei 110 und 111 dieselbe Position bedeuten damit nicht ein Schritt mehr erfolgt. Durch Zufall ? Oder hast du den vergessen ? Ansonsten entpsricht das Problem der Umwandlung in Gary Code, das hat man früher tatsächlich mit Logikbausteinen gemacht, dann mit GALs. Hier für 2 Kanäle http://www.mikrocontroller.net/attachment/86864/Gray_Encoder.png
...in der Lehre... ...Quad Core CPU... ...ziemlich dämlich... ah, sind dir Trolle erwacht, moinsens Jungs, ausgeschlafen oder abgebrochen? Dachte noch, ist das Forum vernünftig geworden, bislang nur konstruktive Ansätze, aber klar, dieses Forum bleibt dieses Forum, mit all seinen Mitmachern :) MaWin, wenn du die vorgehenden Beiträge auch liest, stellst du fest, dass die 111 niemals auftaucht, war nur ein Eingabefehler, bis dahinb nix schlimmes. Aber du könntest Tektiv wie Herlock Sholmes werden, dir entgeht nicht die kleinste Kleinigkeit. ('Gary Code', so passiert's eben) Bissigmode Ende & schönen Tach auch, harry
Anbei die Idee mit Counter. Symbol des 74xx237 ist nicht ganz richtig, ich habe auf die Schnelle einfach das Symbol der invertierenden Variante 74xx137 genommen. Das 3-fach OR könnte man auch einfach mit je 3 Schottky-Dioden lösen denke ich.
ES gibt immer Idioten die einem die Arbeit scheinbar abnehmen.....
Hi, Du meinst wohl einen Gray-Zähler, nicht 'Gary'. Bei jedem Schritt darf immer nur ein Bit umkippen.Ich würde ein CPLD nehmen, das ist leicht zu ändern falls doch nicht gleich richtig sein sollte. Diskrete Logik ICs dazu scheints nicht zu geben, Design zu Fuss mit KV DIagram und Gatter- Bausteinen ist Steinzeit. Nimm ein CoolRunner 2 oder so, billig und funktioniert gut. LG
Easylife, wow, danke, sieht toll und einfach aus, 'ne small but good solution eben. Ich denke, die sollte ich mal hinstricken. Eine diskrete Lösung ist für diesen Fall nicht verkehrt, im Moment tickt die Fräse mit einem kleinen µC Interface, auch auf die Schnelle hingetunt aus einer viel zu großen Steuerplatine. ...ES gibt immer Idioten die einem die Arbeit scheinbar abnehmen..... UFFBASS: die Logik-ICs sind nicht meine Stärke, bin halt ein Analoger, der's eher mit Opamps und so'm Kram hat, das Prinzip ist schon klar mit all den Gatter und Inverters und Zähler und was es sonst alles gibt. Aber so eine Schaltung auszuarbeiten erfordert zum einen viel Zeit - wenn man nicht im Thema zuhause ist, zum anderen muss ein gewisser Überblick der Materie bestehen, sonst sucht man sich zu Tode. Jemand, der in diesem Thema zuhause ist, schiesst sowas aus der Hüfte, das passt dann auch, weil eigentlich kein großes Thema. Und genau hierfür gibt es Foren, neben Blödlaberei - das ist der unerwünschte Nebeneffekt - dient es eigentlich dem Austausch von Infos und Wissen, nicht jeder Anwender muss das Rad neu erfinden, das macht einfach keinen Sinn. Völlig sinnlos dagegen ist dein Kommentar, aber wie gesagt, Nebeneffekt... Danke an alle
Kein_Idiot schrieb: > ES gibt immer Idioten die einem die Arbeit scheinbar abnehmen..... Sehr geehrter "Kein_Idiot", vielleicht denkst du nochmal kurz über deine Einstellung nach. Meine Arbeit war es in 15 Min. eine Idee zusammenklickern. Die eigentliche Arbeit hat Gary, der eine ordentliche (und mit Abblockkondensatoren versehene...) Schaltung aufbauen muss, sie testet und optimiert. Das Forum ist aus meiner Sicht genau dazu da, solche Ideen gemeinsam zu Entwickeln. Evtl. habe ich ja einen Denkfehler in der Schaltung, und jemand erkennt das und verbessert es. Und irgendwann kommt dann nochmal jemand, der für genau das gleiche Problem eine Lösung sucht, und kann sich eine Menge Arbeit sparen. Cheers.
Noch schöner wird's dann doch mit 3-fach ORs statt der Dioden, die den Pegel unschön werden lassen. Ist vermutlich auch weniger Lötarbeit.
Harry Up schrieb: > Lösung ist für diesen Fall nicht verkehrt, im Moment tickt die Fräse mit > einem kleinen µC Interface, ? Und diesem µC kann man diese eine Tabelle im Programm nicht mehr unterbringen, so dass er anstelle von 2 Ausgängen deren 3 gleich richtig ansteuert? > und kann sich eine Menge Arbeit sparen. Exakt. Indem er sich überlegt, ob es in Stein gemeisselt ist, dass die Vorstufe Schritt und Richtungs-signale generiert, anstatt gleich auf 3 (anstelle von 2 Pins) die korrekten Spulen-Signale rauszugeben. Jetzt treibt der µC Aufwand um aus der Schrittnummer (die er sicher intern irgendwo im Programm hat), Schritt und Richtungsinformation abzuleiten, die dann von einer externen Hardware, erst mal wieder auf eine laufende Schrittnummer zurückgeführt wird. Also ich wüsste schon, wo ich da erst mal ansetze. Und das ist sicher nicht bei der Hardware, solange der µC genug Pins hat. Edit: Die Richtungsinformation ist in der Hardware auch noch nicht ausgewertet. Schritt und Richtung ist nicht dasselbe wie StepUp und StepDown. OK, ist trivial zu realisieren, aber dennoch. Wieder 1 IC mehr. Oder war > im Moment tickt die Fräse mit einem kleinen µC Interface, so gemeint, dass im Moment der µC die Umsetzung von Schritt und Richtung auf die Spulensignale macht und du einen Ersatz dafür suchst? Wozu eigentlich? Kleiner und einfacher als mit einem µC wirds nicht.
:
Bearbeitet durch User
hi, naja, der kleine µC (644P) macht seinen Job ganz patent, ist aber bissl oversized. Ging ja auch nur darum, die Kiste erstmal in's Laufen zu bekommen. Das tut sie, die Takt und Richtungssignale liefert die Software EMC2 unter Linux. Die Leistungs-Karten für die Stepper waren schon in der Fräse verbaut, sind aber ordentlich und satt dimensioniert, deswegen will ich so viel es geht erhalten davon. Die alte Steuerung fällt so langsam dank Folientastatur auseinander, ausserdem hat sie eine Macke. Deswegen der Umstieg auf EMC2, aber auch, weil es endlos nervig ist, eine etwas komplexe Form in G-Code via einer 'kastrierten Tastatur' von Hand einzutippen. So, zurück zum Signal. Ich hatte ein wenig Bedenken, die Sache mit einem µC aufzuziehen, wenn 3 Taktsignale gleichzeitig angeflogen kommen, könnte es zu Schrittverlusten kommen, weil die Taktimpulse nur 5µsec lang sind. Klar, sollte reichen um einen ISR auszulösen (das macht ja das Taktsignal), Richtungssignale auszuwerten, Bestromungsmuster zu generieren und auszugeben um dann gleich wieder startklar für den nächsten Takt zu sein. Verlängere ich die Takte, sinkt meine max. Frequenz und damit die mögl. Verfahrgeschwindigkeit, will ich nicht. Im Moment hat der µC brav bis 6m/min mitgespielt, das reicht allemal, der bediente aber auch nur die x-Achse. Wenn nun noch Y,Z und ggfs A mit dazukommt, könnte es eng werden. Eine Hardware macht das getrennt und absolut synchron zum Steuerrechner, ein µC vielleicht auch, aber so'n Risiko-Crack bin ich dann eben auch nicht. Es müssen nebenbei auch noch Signale für Spindel, Kühlung, Stromabsenkung bei Motorstillstand und Endschalter mit verarbeitet werden, mal sehen, was dabei rauskommt. Eine Überlegung war, alles auf Tiny26 zu verteilen, davon habe ich hier noch viele im Lager, nicht vornehm, aber eben auch zeitsynchron. Vielen Dank mal bis hierhin & schönen Abend, harry
Harry Up schrieb: > weil die Taktimpulse nur 5µsec > lang sind. Klar, sollte reichen um einen ISR auszulösen Wenn die Signale bekannt und zeitkritisch sind ist ein Polling Loop sinnvoller als über Interrupts. Dann ist die Latenz nämlich definiert und konstant. Der Polling Loop kann natürlich über einen Timer-Interrupt gesteuert werden. Und klar hat ein CPLD deutlich weniger Latenz als jeder uC, im Bereich von ns
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.