Hallo Forum, ich suche einen geeigneten Controller für ein CNC-Projekt. Dieser Controller soll für 3-4 Achsen Takt/Richtungs-Signale erzeugen. Die Maschinen-Konfiguration liegt in einem EEPROM oder auf einer SD-Karte, die zu Beginn geladen werden soll. Über RS232 ist ein Handbedienteil angeschlossen, das die Anweisungen übermittelt. Der Chip muss dann die Achsen entsprechend fahren und Endschalter auswerten. Meine Anforderungen wären also: - >= 1 USART - > 25 IO - 5V Betriebsspannung - mindestens zwei Timer - viel "Dampf", also großer Flash und RAM, schneller Takt Nochmal grob die Funktionen, die das Gerät später bieten soll: - SD/MMC-Interface - RS232-Interface zum Bedienteil - Erzeugung von Takt/Richtungs-Signalen inkl. Anfahrrampen - Verwertung von Maschinenparamtern, d.h. "Fahre 10mm" soll auch wirklich 10mm an der Maschine ergeben - Mehrere Achsen soll gleichzeitig fahren können Im Handbedienteil sitzt ein weiterer Controller, der über einen Drehgeber und LCD die Kommandos annimmt. An den Haupt-Controller schickt dieses Bedienteil nur Kommandos wie "Fahre 100mm in Y+ mit 1m/s". Diese Befehle müssen dann umgesetzt werden. Dabei sollte es möglich sein, während ein Befehl läuft, einen neuen zu starten, z.B. "Fahre 5mm in Z- mit 5m/s", während die Achse Y noch fährt. Ich habe schon viel mit Atmegas gemacht und würde eigentlich auch behaupten, das man dieses Projekt mit 2-3 Atmegas bewältigt bekommt. Die Ausgabe-Frequenz wird sich dabei im schlimmsten Fall bei rund 50kHz bewegen. Allerdings befürchte ich, das es dabei viele Berechnungen geben wird. Getriebe-Übersetzungen oder Spinelsteigungen müssen ja mit eingerechnet werden, wenn der Maschinentisch später wirklich genau fahren soll. Welche Controller eignen sich dafür? Am liebsten wären mir Atmegas, weil ich dafür alle Geräte habe. Andere Controller schaue ich mir aber auch gerne an.
Hi, Wenn man mal fragen darf: Was fuer Motoren, Treiber und Getriebe setzt du fuer deine CNC Maschine ein? Ich habe bisher die Erfahrung gemacht, dass alles was sich zu "normalen" Preisen beschaffen laesst entweder per Definition ungenau ist oder jede Menge Backlash hat. Ansonsten ist 50 kHz auch schon recht heftig wenn du Microstepping machen willst und halbwegs ordentliches Drehmoment mit nem kleinen Motor haben willst. Mein erster Gedanke waere nen 20 MHz AVR mit orderntlich Speicher wie der 644P fuer RS232 / SD Interface und das Verarbeiten von Anweisungen und dann nen beliebiger Slave, der sich um den Output kuemmert. Da kommts halt drauf an, ob du nen Treiberbaustein hast, der einfach nur Flanken braucht oder ne H-Bruecke, die noch extra PWM Signale braucht. Waere wirklich interessant wie du die Genauigkeit bekommst... Felix
Meine Maschine wird die Genauigkeit nie erreichen, das ist totaler Low-Tech. Es gibt ja auch zig andere Fräsen, die so einfach aufgebaut sind. Schrittmotoren aus nem alten Drucker, L297/L298-Kombi als Treiber und eine PC-Software. Die Software sendet ja nur die Befehle an die Steuerkarte, "mache 200 Schritte nach links". Das Programm geht dann einfach davon aus, dass sich die Mechanik auch einen Umdrehung weiter gedreht hat. Natürlich gibt es da Korrekturmöglichkeiten, z.B. indem man das Umkehrspiel misst und eingibt. Das passiert aber alles nur in der Software. Maschinen, die über Messleisten oder ähnliches wirklich die aktuelle Position an den PC melden, sind garnicht mal mein Zielgebiet. Mich stört es einfach, immer den PC hochfahren zu müssen, wenn ich nur mal schnell den Kreuztisch verfahren will oder eine kleine Nut brauche. Genau da möchte ich ansetzen. Meine Hardware soll also per Parameter-Datei "wissen", wenn sie 200 Steps sendet, bewegt sich der Tisch 1mm. Maximalgeschwindigkeit = xyz, Rampe = abc. Als Gimmick zeigt mir das Gerät dann eben noch an, das es der Meinung ist, 10mm gefahren zu sein. Ob und wie genau das in echt passiert ist, kann ich ohne weiteres eh nicht erfassen bzw. muss das manuell kontrollieren. Als Gegenstück zu meinem Gerät wird nur Hardware in Frage kommen, was Takt/Richtungs-Signale verarbeitet. D.h. mit Stromregelung usw. habe ich garnichts zu tun. Mein Gerät ist quasi soetwas wie der Steuer-PC, der ja auch nur Taktsignale rausschiebt. Die hohen Anforderungen habe ich mir ausgedacht, weil ich vermute, dass das Projekt vielleicht auch für andere interessant sein könnte. Deswegen wollte ich versuchen, über z.B. verschiedene Konfig-Dateien flexibel zu bleiben. Für den Test-Betrieb auf dem Basteltisch kann man z.B. die hohe Schrittfrequenz nutzen, wenn man einen Motor mal ans Limit fahren will. Oder in Kurzform: Ich möchte ein System bauen, dass wie der manuelle Jog-Betrieb der CNC-Steuersoftware arbeitet. Das System soll dabei sofort nach dem Einschalten bereit sein und ohne Umwege (Software-Notaus brücken, ...) einfach nur Takt-Richtungs-Signale ausgeben können. Dabei sollte sich die Hardware möglichst flexibel an die Wünsche der User anpassen lassen.
Ich wuerde darauf achten das du fuer jede Achse einen eigenen Timer verwenden kannst. Es mag auch anders gehen, ist aber mit Stress verbunden. Des weiteren wuerde ich darauf achten das dein Controller veraenderbare Interruptprioritaeten kann. Ich wuerde privat sowieso nichts verwenden was weniger als 8kb Ram hat. Fuer die 1-2Euro die das kostet muss man sich keinen Stress antun. Und du hast ja schon erkannt das Ram nicht schaden kann wenn man eine MMC/SD Karte benutzen will. Empfehlen wuerde ich dir einen M16C weil ich sowieso mit den Teilen arbeite, aber natuerlich wird es auch andere Prozessoren geben die das alles bieten. Da du sicherlich oft mit Zahlen >8Bit arbeiten wirst, macht es auch Sinn keinen 8Bit Prozessor zu verwenden. .-) Olaf
nimm emc2 - linuxcnc.org und dampf das auf ein PC-kompatibles Board ein
Nimm für jede Achse einen ATMega, und verbinde die mit dem "Haupt-µC" über SPI, RS232 (hier dürfte es auch ohne Pegelwandler gehen) Die "Achsen-ATMegas" erledigen die Fahrerei, melden Position erreicht usw. Der Haupt-µC erledigt das Lesen der Speicherkarte, Steuerung von der Anzeige (so vorhanden) und Tastenabfrage...... Obige Lösung hatte ich bei einem ähnlichen Projekt eingesetzt, funktioniert prima. Gruß James
Hallo Gast, die Aufgabe, den schrittmotorangetriebenen Tisch meiner Maschinen ohne PC zu bewegen, hatte ich ich mir auch gestellt. Evtl. kannt du aus meiner nichtvollendeten Lösung etwas gebrauchen. Zu finden ist es hier: http://www.hajo-te.homepage.t-online.de/PCDREH_Taktgeber.htm MfG. Jochen
Hi! Genau so wie es James schreibt, Achscontroller und ein Master. Wenn nicht zu viele Ein/Ausgänge pro Achse notwendig sind reicht ein Tiny2313. Meine waren so zu 63% ausgelastet. Beim Master hatte ich mich auch total verschätzt, ein Mega32 ist mit knapp 7KB belegt, beschäftigt 2 Achsen, verarbeitet 6 Eingänge + 5 Ausgänge, kann 100 Zeilen Programm abarbeiten(aus EEPROM), hat einen Editor, Jog, Inc, Autom. und als Anzeige ein 4 x 20 LCD. Ist allerdings in ASM geschrieben. Also nicht irre machen lassen, mit einem guten Konzept kommt man schon mit kleineren µCs recht weit. Viel Erfolg, Uwe
Hi, sowas habe ich vor ein paar Jahren auch mal gemacht, relativ primitiv, Mega128, die Schritte für die 3 Motoren werden in einem gemeinsamen TimerInt erzeugt. LCD und ein paar Tasten zur Konfiguration (auch Spielausgleich bei Richtungswechel). Hatte ich primär zum Bohren von Platinen gemacht, mit egle excellon Datei erzeugen und einfach per cat x.txt >/dev/ttySO zum Kontroller kopieren. Ist alles andere als optimal funktioniert aber sein Jahren prima zum bohren von Platinen und auch zum Fräsen von Frontplatten. Bei Interesse stelle ich das mal ins Netz. Armin
Hi, vielleicht kannst du es so ähnlich machen. Eine Handsteuerung, die Takt und Richtungssignale erzeugt. http://burger-web.com/ProductDescription/AKKON_HandWheel/de_AKKON_HandWheel.htm.de Geri
Das hört sich alles sehr vielversprechend an. Der kleine Tiny kostet ja auch nur rund 1€, d.h. ich wäre dann mit <5€ pro Achse dabei. Perfekt. Dann würde ich eine Platine entwerfen, auf die man Master-Module aufstecken kann. So kann man die Steuerung bei Bedarf noch um 1-2 Achsen erweitern, ohne gleich die Controller kaufen zu müssen. Als Master würde ich gleich etwas "großes" einsetzen, z.B. Mega128. Dann kann man die Steuerung auch einmal erweitern, z.B. Programme von SD-Karte fahren lassen, ohne an die Grenzen zu geraten. Jetzt kommt eine weitere Frage auf: Ich möchte mit 2 Achsen gleichzeitig fahren, z.B. für Kreise oder Schrägen. Wenn ich jetzt jedes Achsen-Modul mit einem eigenen Quarz takte, habe ich die Befürchtung, dass mir die Steuerung irgendwann auseinander läuft. Gibt es ICs, die den Takt von einem Quarz-Oszi auf z.B. 5 Atmegas verteilen können? Alle an einen Oszillator hängen wird diesen wohl überfordern, oder? Sollte das nicht gehen, was haltet ihr von dieser Idee: Die Achsen-Controller werden alle am INT0-Pin verbunden, dieser kommt an einen IO-Pin vom Master. Der Master taktet dann alle Module mit der maximalen Schrittfrequenz, z.B. 50 kHz durch. Diese bekommen alle Synchron den Interrupt und können dann, wenn z.B. alle Achsen auf 100% Geschwindigkeit stehen, synchron einen Schritt auslösen. Außer dem Interrupt und dem Datenempfang vom Master müssten die Slaves dann ja nur die Anfahr-Rampe berechnen. Könnte ich im Interrupt dann eigentlich auch die Berechnung von den Rampen machen? Dann müsste ich in der Main-Loop nicht irgendwelche Zähler o.ä. abfangen, sondern lege einfach die Aktion für den nächsten Interrupt irgendwo ab. Wie schätzt ihr das ein, sind die nötigen Berechnungen schnell genug, oder blockiert mir dann der Controller? Die Daten-Verteilung würde ich mit I2C oder SPI machen, über die Controller-Hardware. (Gleich noch eine Frage, IMHO sollte doch I2C von der Geschwindigkeit reichen? Da hab ich nämlich schon eine schöne Lib mit CRC-Prüfung etc.) Danke schonmal bis hier hin, das hilft mir viel. Ich hatte anfangs befürchtet, gleich einen FPGA nehmen zu müssen. Jetzt weiß ich schon mal, das es sich lohnt, das auszuprobieren. Beim Thema FPGA, mini-PC o.ä. wäre ich nämlich raus, das ist mir zu hoch und zu teuer.
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.