PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : CNC mit Gleichstrommotoren



Osser
04.05.2009, 09:15
Hi,

so hier ist mein Projekt das ich komplett aufbaue mit Stahlführungen und mit Gleichstrommotoren. Für Gleichstrommotoren hab ich mich entschieden da ich ein gutes dynamisches Verhalten erreichen will, also hohe mögliche Verfahrgeschwindigkeit (ca Fmax1800 == 1800mm/min) mit gleichzeitig guten Eigenschaften was Präzision angeht. Vor allem will ich das gleiche Konzept umsetzen wie es in regulären Fräsmaschinen eingesetzt wird.

Die Regelung der Antriebe baue ich auf mit einem ATmega64 der mit einer modifizierten PID Regelung die Gleichstrommotoren via PWM steuert. Die Regelung ist/wird so implementiert das sie als Basis die PID Logik benutzt (also wirklich PID und nicht etwa PD) mit einem modifizierten Integralanteil, der erkennt das "er" sich dem Zielpunkt nähert und dann aktiv abbremst statt einfach nur die Steuerspannung zu reduzieren wie dass eine normale PID Regelung macht. Hierzu habe ich mir ein Modell überlegt das mittels Regelungs-Parametrisierung die Massenträgheit der Abtriebseinheit (incl Rotor des Motors) wiederspiegelt und für jede Achse entsprechend der mechanischen Eigenschaften Parametrisierbar ist.
Das Ganze ist in einer Simulation die ich hierfür schrieb schon ganz ordentlich gelaufen, die Graphen U-t, v-t, s-t und a-t sind schon einigermassen stetig und haben kaum "Hacker" im Verlauf, so dass der Antrieb nicht übermässig belastet werden dürfte.

Hier im Forum habe ich nur Projekte gefunden mit Schrittmotoren die mit käuflichen Controllerkarten gesteutert werden. Aber ich wollte alles selbst aufbauen und eben keine vorgefertigten Schaltungen benutzen.

Die mechanische Seite beruht auf Lineareinheiten die mit einer T-Führung ausgestattet sind und über Kreutz miteinander verschraubt werden. Die Linearführungen sollen so Stabil werden, dass ich auch Stahl damit fräsen kann, zumindest in kleinen Zustelltiefen.

Als Basis benutze ich eine gewöhnliche Säulenbohrmaschine die mir die Z-Achse gleich mitliefert.

Hier ein paar Konstruktionszeichnungen der geplanten Maschine im Solid-View noch ohne Antriebe:

35711
Detail: Kreutzschlitten

35710
Detail: Kreutzschlitten andere Ansicht

35709
Detail: Gesamtansicht


Wenn ich wieder ein Stück weiter gekommen bin werd ich das hier berichten.




Was denkt Ihr davon?


Gruss,

O.

hardware.bas
04.05.2009, 12:30
Interessantes Projekt. Wie werden die aktuellen Positionen in den
einzelnen Achsen ermittelt? Wie genau und mit welcher Wiederhol-
genauigkeit ist das bei diesem Konzept lösbar? VG Micha

Osser
04.05.2009, 13:52
Hi hardware.bas,


bei meinem jetzigen Versuchsaufbau benutze ich Drehgeber aus einer "geschlachteten" Maus die ca. 270 Impulse pro Umdrehung erzeugen.
Die Abtriebsspindel ist eine M6 Gewindestange => Steigung 1mm.
Meine PID Regelung ist noch nicht perfekt, schafft aber bereits bei langsamen/kurzen Positionierschritten eine Wiederholgenauigkeit von ~ 3 Schritten, hier sind aber noch einige Optimierungen möglich.
Das Umkehrspiel soll dann schliesslich per Parametervorgabe pro Achse im µC gespeichert werden und wird automatisch korrigiert werden.
Ergo:

270 Schritte / 3 = ~100 ==> ~0.01mm


Die Positionserfassung übernimmt der µC nach dem Starten und Referenzpunkt anfahren autark mittels der Drehgeber.

Ich will den "Kleinen" schliesslich mit ISO Code füttern den er dann in 3 Achsen simultan interpolieren soll. Jedenfalls ist das meine Vorstellung für das fertige System. ;-)
Auf der PC-Seite muss also nur ein Proggi laufen das die Koordinaten anzeigt und den µC mit Daten füttert und evtl. Grafisch darstellt was da auf der Fräsmaschine passiert.


O.

vohopri
04.05.2009, 14:03
Hallo O!

Eine Bohrmaschine ist keine Fräse, weil sie für die Beanspruchung des Bohrens konzipiert ist. Das wird so nichts, und es ist schade um die gute Arbeit, die du sonst in das Projekt steckst. Es ist nicht nur Murx, sondern auch gefährlich.

Nehme anstatt dessen eine Fräse oder baue eine Fräse nach.

grüsse,
Hannes

Osser
04.05.2009, 14:57
Hi Hannes,

vermutlich basierst Du deinen Einwand auf die Zeichnung, die jedoch noch in einem prematuren Stadium ist.
Mir ist durchaus bewust dass eine Bohrmaschine nich für Querkräfte geeignet ist wie sie beim "echten" Fräsen auftreten, auch besitzt sie keinerlei Sicherheitstechnik.
In der entgültigen Version wird auf jeden Fall eine Sicherheitskette (NOT-AUS) umgesetzt die jederzeit alles stillegen kann und eine Art Sicherheitskäfig werde ich auch drum herum bauen.

Von den Querkräften her vermute ich schon, dass das Maschinchen Zustellungen von 0,1 bis 0.2mm gewachsen sein wird, da ich schon vom Konzept her eher auf HSC als auf konventionelles Fräsen setze. Deshalb verbaue ich ja auch Gleichstrommotore die ein hohes Dynamikverhalten erlauben.

Im Übrigen wird natürlich auch die Z-Achse gesteuert, was hier noch nicht eingezeichnet ist.


Gruss,

O.

Thomas$
04.05.2009, 15:03
Hi Osser
ich finds toll das auch mal jemand keine stepper nutzt ich bau auch grad sowas ähnliches und bau erstmal ein modell aus lego. wollte und hab auch es erst mit der maus probiert bin aber an der Z-achse gescheitert. weil ich das mausrad nicht auswerten konnte. und in der genauigkeit seh ich kein problem. außer man hat nicht sauber programiert oder es werden bei der maus schritte übersprungen.

vohopri
04.05.2009, 15:16
Hi O,

mein Einwand beruht auf etwas ganz anderem: Auf meinem Fachwissen über Werkzeugmaschinen. Über dein Vorhaben werde ich nicht diskutieren, da solche Dinge nicht durch Diskussion gelöst werden, sondern durch Berechnungen.

Ich wollte dich nur gewarnt haben und verabschiede mich von dem Thema.

vohopri

Bammel
04.05.2009, 16:05
also die gleichstrommotor geschichte reizt mich ja auch. den du baust ja quasie servos nach. könnte man das ganze net so lösen das man auch ein standart fräs-programm nutzen kann. also eine steuerung bauen die auch mit dem takt richtungssignal läuft?

ansonsten werde ich die geschichte mit interesse weiter verfolgen.

hardware.bas
04.05.2009, 16:07
Gibt nix besseres als praktische Beweise und wir sind gespannt darauf!
Die zweifelos schnelle Verfahrgeschwindigkeit mit DC-Motoren wird
kombiniert mit 0,01mm Genauigkeit - wieviel Zeit braucht das Anschleichen
an Stopppunkte - mit Haltemomenten, absoluter Wiedeholgenauigkeit,
ausgefeilter Schaltungstechnik. Gutgemeinte grosse Neugier, wie das
Ziel funktioniert. VG Micha

Osser
04.05.2009, 21:17
Hi @all,


@Bammel:

...eine steuerung bauen die auch mit dem takt richtungssignal läuft?
Die Geschwindigkeit wird mittels PWM an einem Ausgang des µC gesteuert und die Richtung mit einem anderen Ausgang, zwei Signal-Leitungen also pro zu steuernder Achse. Das Ganze ist realisiert auf einer extra Leistungsplatine mit drei Kanälen, für jede Achse ein Kanal. Mit je einer TLE5205-2 H-Brücke und vorgeschalteter NAND Logik habe ich die Leistungstreiber der Achse(n) realisiert.
Die Vorschaltlogik ist nur dazu da, dass der Motor ohne angeschlossenen µC nicht läuft und damit PWM auch in beide Richtungen mit Freilauf geschaltet wird. Der TLE5205-2 ist in der Hinsicht ohne externe Logik etwas seltsam beschaltet. Das Ganze ist dann mit Opto-Kopplern isoliert, damit mir das "Bürstenfeuer" nicht irgentwie den µC nervt.

35712
...und so siehts aus. (Nur ein voll aufgebauter Kanal bis jetzt.)


@hardware.bas:
Muste grinsen als ich deinen Post gelesen habe. Klar sprech ich da Gross-Auf, aber ohne ein Ziel kein Weg..... richtig?
Das ganze Thema reitzt mich einfach schon ewig und deshalb wollte ich das hier öffentlich durchführen, dass falls ;) etwas total in die Hose geht mir der ein oder andere vom Schlauch helfen kann auf dem ich dann vielleicht gerade steh...

Die modifizierte PID Regelung ohne Lasteinkopplung der Abtriebe geht aber wie oben beschrieben bereits ganz ordentlich. Genauere Messungen kann ich erst durchführen wenn die erste Führung aufgebaut ist, bin gerade dabei den Flachstahl zu besorgen. Ohne reelle Belastung des Antriebs kann ich die Parameter der Regelung ja schliesslich nicht vernünftig bestimmen und das Umkehrspiel schon gar nicht.
Sobald das erledigt ist und die Achse bewegt sich werd ich hier mal einen Video einstellen, dann kannst Du sehen wie gut/schlecht das bis jetzt geht.

Ach ja die Einregelgeschwindigkeit:
Einregeln 020 Schritte der Encoder-Scheibe ==> ~1sec
Einregeln 050 Schritte der Encoder-Scheibe ==> dito
Einregeln 100 Schritte der Encoder-Scheibe ==> ~2sec

(100 Schritte entsprechen ca 1/3 Umlauf des Motors)
Zeiten hab ich mit Sekundenzeiger der Uhr abgelesen, also Pi mal Daumen.


Gruss,

O.

Bammel
04.05.2009, 21:29
also habe ich das richtig verstanden das du vom pc ein takt und richtungssignal bekommst und das auf den motor quasie sendest!? (doof ausgedrück)

ich stelle bzw. würde mir wünschen das das ganze genauso funktioniert wie bei ner schrittmotorsteuerung nur halt mit nem dc-motor (servo halt)

das umkehrspiel wird dort dann ja auch vom pc umgerechnet.

hardware.bas
05.05.2009, 08:50
War ehrlich gemeint! Drücke fest die Daumen! VG Micha

Osser
05.05.2009, 09:04
Hi Bammel,


die Steuerung funktioniert ganz anders als bei Schrittmotoren und ich verwende keinen PC sondern einen Micro Prozessor von Atmel. Prinzipiell geht das aber auch beinahe genauso mit einer PC Steuerung.

Beim Schrittmotor hast du eine Leitung für den Takt (n Steps/min) die Richtung (vor/rück) evtl. eine für Halbschritt und meist eine Enable/Disable Leitung (Steuerung ein/aus).

Bei der Gleichstrommotor Lösung kann man mit 2 oder 3 Leitungen Auskommen. Da ich mit meiner Schaltung auf die Bremsfunktion verzichtet habe reichen mir 2 Leitungen.
Leitung 1: Richtung (vor/rück)
Leitung 2: PWM (U/min)

PWM(Puls Weiten Modulation) ist einfach eine Schwingung mit gleicher Periode und einstellbarer Pulsweite. Meine PWM Grundfrequenz ist ca. 28KHz, so dass das Ganze nich hörbar ist.
35713
Legende: PWM (https://www.roboternetz.de/wissen/index.php/Pulsweitenmodulation)

Das Problem bei PWM ist dass wenn man z.B. PWM im Intervall ]0,255[ einstellen kann nicht etwa 1 die langsamste Geschwindiogkeit ist, 127 mittel schnell und 255 die schnellste. Meine empirischen Werte für den jetzigen Motor sind z.B. folgendermassen.

Das Losbrechmoment(bis er beginnt zu drehen) wird erreich bei folgenden PWM Einstellungen:
vorwärts: ~87
rückwärts: ~112

Hysterese von der Losbrechmoment PWM Einstellung bis wieder zum Stillstand ist bei mir ca. 6-8 Einheiten weniger.
Die Angaben beziehen sich hier auf eine Vorsteuerspannung von ~10V.

Ein Motor läuft halt noch nicht Los bei einer Effektiv Spannung von 0,5V wenn er eine Nennspannung von 8,0V hat sondern erst bei ca 4,5V, dann aber gleich mit 1000U/min.

Der Trick für die Lageregelung die ich baue ist jetzt der, die Steuer PWM Einstellung so geschickt zu wählen dass der Motor exact so weit Dreht wie das vom ISO Programm (G-Code/M-Code) vorgegeben wurde.
Soll der Motor z.B. eine Umdrehung durchführen (entspricht 1mm Verfahrweg) muss die Motor-Regelung dafür sorgen dass:
1) das Losbrechmoment überwunden wird
2) der Motor auf die Solldrehzahl beschleunigt
3) die Solldrehzahl einen bestimmten Weg lang hält
4) wieder rechzeitig abbremst um genau an der richtigen Position stehen zu bleiben


Dummerweise sind die Punkte 1-4 nicht wirklich trivial, da sich die Parameter für jede Achse unterscheiden und in der Praxis sogar von der Werkstückgrösse abhängen. In der Praxis kann eine Stahlplatte leicht mal 500Kg wiegen worauf die Antriebe natürlich dementsprechend reagieren müssen. Für meine Mini-Fräsmaschine ist das aber vermutlich unrelevant. O:)


Erst mal Stahl für die Lineareinheit besorgen beim freundlichen Stahlhändler und dann schaun wir mal weiter.


O.

Besserwessi
05.05.2009, 15:54
Das mit den Gleichstromotoren ist nicht so ungewöhnlich. Die Kombination Motor+ Dehgeber + Regler wird auch als Servomotor angeboten. Das ist durch die Steuerung etwas aufwengider als mit Schrittmotoren, aber man hat eine meist bessere Dynamik. Allerdings hat man praktisch kein (nutzbares) Rastmoment und muß auch im Stillstand immer aktiv nachregeln. Das kann im zusammenspiel mit Umkehrspiel etwas problematisch werden.

Für eine genaue Regelung der Position gibt es extra Motoren mit wenig Rastmoment und mit integriertem Incrementalgeber.

Bammel
05.05.2009, 17:08
jup alles klar. aber du verwendest also bei deinem vorhaben deine eigene "norm" und jezze nicht die das du universel andere fräsprogramme nutzen kannst. das wäre so mein ding einen dc-motor, sprich servo, mit den signalen zu "befeuern" die auch eine strittmotorsteuerung braucht bzw verwendet.

wenn du sowas bauen würdest wärest du glaub ich der held hier unter den fräsenbauern :-D sofern es dann auch nachbarbau ist

Yossarian
05.05.2009, 17:11
Hallo

"geschlachteten" Maus die ca. 270 Impulse pro Umdrehung erzeugen
Was ist das für eine Maus?
Es ist nicht jeder DC Motor als Servomotor geeignet.
Bei den billigen Motoren sind die Kollektoren z.B. nicht fein genug unterteilt, wodurch die Lageregelung zu wünschen übrig läßt.

Mit freundlichen Grüßen
Benno

Thomas$
05.05.2009, 17:20
mit was machst du die pc software?

Osser
05.05.2009, 18:17
Hi @all,

@Besserwessi:
Die Regelung, wie sie jetzt ist, beendet sich selbst nach erreichen der vorgegebenen Position. Später wird jeder der Achsregler via Sheduler endlos beaufschlagt, dazu benutze ich die Multitaskinglogik die ich bereits entwickelt habe (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=27463&highlight=multitasking).
Durch die Regelung erhalte ich ein gewisses Haltemoment, da bei Auslenkung vom Istwert aktiv gegengesteuert wird. Da M6 mit einer Steigung von 1mm aber selbsthaltend ist wird ein Haltemoment vom Motor denke ich nicht nötig werden.


@Bammel:
Dem µC wird über die serielle Schnittstelle dann ISO Code überspielt, also z.B.
G00 Z10.
G00 X10. Y20.
G00 Z5.
G01 Z1. F300
G01 Z-0.1 F50
G01 ...
...
jeweils Zeile für Zeile mit einem kleinen Zeilenpuffer im µC. Deshalb habe ich auch den ATmega64 gewählt da er 4K SRAM hat was zum Puffern des ISO-Codes gebraucht wird abzüglich der belegten Variablen etc.


@Yossarian :
Das war ne alte Logitec Maus von 1992. Den Getriebemotor hab ich bei Conrad erworben
Motor 4-15V/12V/DC 11:1 ArtNo:222363 - 62
mit einer 16er Kommutator Teilung und der Stator besteht aus 4 Magneten soweit ich das sehen kann.


@Thomas$:
Die Software zum seriellen übertragen der ISO-Daten muss ich noch schreiben. Werd am Anfang wohl AsuroFlash Script verwenden (https://www.roboternetz.de/phpBB2/viewtopic.php?t=25249&postdays=0&postorder=asc&start=0).


Gruss,

O.

Osser
05.05.2009, 18:37
Hi @all,

so den Flachstahl für die Lineareinheiten hab ich beim freundlichen Stahlhändler bestellt und die Specs. dort erklärt. Es müssen ja ein paar Fräsarbeiten erledigt werde die ich momentan noch nicht selbst ausführen kann. Nächste Woche ist das fertig, hat Er zumindest gesagt, dann kann ich die erste Einheit zusammenbauen. \:D/


..wie lange eine Woche doch sein kann ---schmacht---.


O.

ManuelB
05.05.2009, 18:56
Das Ganze muss aber noch auf beiden bzw. allen drei Achsen synchron funktionieren damit die Bahn exakt abgefahren wird.

MfG
Manu

Osser
07.05.2009, 12:03
Hi ManuelB,


das werde ich im nächste Schritt, nach dem alle drei Achsen aufgebaut sind, umsetzen. Erst mal sollen die einzelnen Achsen reproduzierbar bestimmte Positionen anfahren können. Sobald das dann mit festgelegtem Vorschub etc. funktioniert werde ich mich an die Syncronisation machen um nicht achsparallele Geraden und Bögen zu interpolieren.

Hast Du da schon Erfahrung gesammelt?

O.

ManuelB
07.05.2009, 19:32
Hallo,
leider habe ich mit Servosystemen noch keine Erfahrungen gemacht. Hab zwar schon mal etwas geschaut, z.B. wegen des Uhus ( http://www.uhu-servo.de/servo_de/index.htm ) , bin aber erstmal bei Steppern geblieben.

MfG
Manu

Peter1060
08.05.2009, 07:29
moin moin,

machbar ist so eine DC-Reglung, habe vor Jahren auch mal demit "rumgespielt". Per PWM wurde der Motor allerdings mit +/- Spannung geschaltet, dadurch konnten auch gaaanz geringe Drehzahlen bei volle Kraft eingestellt werden.
Um universeller zu bleiben sollte jede Achse einen eigenen MC bekommen, kostet nicht viel, eröffnet jedoch "ungeahnte" Möglichkeiten.
Die Positionsberechnung inklusive Radienkorrektur kann auch direkt im MC erfolgen. Die Anzeige (auch wieder mit MC) wertet die Motorsteuersignale aus und errechnet selber die Positionen.
Die Positionsberechnung ist für DC-Motor und Stepper identisch.
Aus der momentanen Position und der Zielposition wird der notwendige Weg berechnet. Bei DC-Motoren wird dieser Weg an die Achsen-MCs gesendet, diese setzen den Weg um. Bei Steppern habe ich bei mir dann die Aufbereitung im MainMC mit eingebaut, die StepperMCs bekommen per SPI die Schrittimpulse übermittelt.

MfG
Peter

Osser
08.05.2009, 08:41
Hi Peter1060,


im Moment hab ich leider die Bauteile für die Lineareinheit, die Mechanik also, noch nicht und teste ohne Wiederstandsmoment auf dem DC Antrieb. Die Regelung erfolgt mit einem abgewandelten PID Regelkreis der einen nachgeschalteten Jitter für Microsteps benutzt.

Wenn später alle drei Achsen angeschlossen sind soll ein ATmega64 autark regeln. Ich schicke also nur ein Positionstupel und den Grenzvorschub an den Prozessor und er soll dann die Achsen entsprechend einregeln.

Dummerweise verhält sich ein DC Motor abhängig davon wie der Kollektor gerade steht immer etwas anders, was ich noch in die Regelung einfliessen lassen will/muss damit sich alle Achsen später dann deterministisch verhalten. Damit "spiel" ich gerade rum. ;)
Vermutlich werden die Kollektoreffekte gedämpft wenn die Mechanik angeschlossen ist, mal schaun.



Per PWM wurde der Motor allerdings mit +/- Spannung geschaltet, ...
Meinst Du mit +/- vorwärts/rückwärts?
So ist meine Schaltung dann scheinbar auch aufgebaut:
Steuerleitung 1: vorwärts==high/rückwärts==low
Steuerleitung 2: fahren==high/freilauf==low (für PWM)
Die Reglung bremst aktiv mit Gegenstrom.

Ach ja -- wenns gleich perfekt funktionieren würde wär das ja langweilig.....


Hattest Du keine Syncronisationsprobleme mit mehreren Prozessoren?
Deshalb hab ich mich nämlich für nen etwas dickeren ATmega entschieden, damit der alle Achsen zusammen Ansteuern kann.


Gruss,

O.

Peter1060
08.05.2009, 10:36
moin moin,

mit +/- meinte ich, der Motor wird umgepolt, bei PWM50% ist die resultierende Spannung 0.
Zur Lagereglung wird dann noch ein Inkrementalgeber gebraucht. Dessen Impulse sind dann wie die Steuerimpulse eines Schrittmotors zu sehen. Der Lageregelkreis vergleicht also Vorgabefrequenz mit der Rückmeldung vom Drehgeber. Dann noch die Rückmeldeimpulse zählen und fertig ist der Positionsregler.
----
>>hab ich leider die Bauteile für die Lineareinheit, die Mechanik also, noch nicht ...

na, sowas hat man doch in der Bastelkiste liegen 8-)))
Für Versuche reicht doch eine Gewindestange und ein Brett...soll ja ruhig Reibung haben.
Wenn ichs schaffe gibts heute abend mal ein Foto von meinem Testaufbau.
-----
Bei mir sendet der MainMC ein Byte seriell an alle StepperMCs, da steht dann drin welcher Motor wie zu steppen hat. Gleichzeitig senden die StepperMCs den Zustand der Endlagen zurück.
Ale StepperMCs arbeiten dadurch synchron.
Die Geschwindigkeit steuert der MainMC per Zeit.
-----
>>hohe mögliche Verfahrgeschwindigkeit (ca Fmax1800 == 1800mm/min)

Mein Portal wiegt ca. 18Kg und wird durch zwei 5Phasen-Schrittmotore (je ca. 0.6Nm) angetrieben. Maximal fahre ich derzeit mit 1500mm/min, ohne Last schafft die Elektronik bis 3000mm/min.
Also, nur wegen hoher Geschwindigkeit ist DC nicht notwendig. Meine Meinung.
Der MainMC ist bei mir derzeit ein AT89C51ED2 (22,1184MHz) mit einem FPU-Coprozessor C8051F365 (der rechnet mit 98MHz Takt, Sinuswert dauert ca. 90µs).
Insgesamt sind in der Fräse 7 MCs verbaut.

MfG
Peter

Peter1060
09.05.2009, 23:50
moin moin,

sorry ging nicht früher, das Hundebaby ist da...

Im Anhang das Foto von meinem Testaufbau.
Schrittmotor(1,9Nm)-Kupplung-Kugelumlaufspindel (575mm Weg) mit Linearführung.
Die kleine Platine ist der Schrittmotortreiber.
So im Leerlauf kann der Stepper mit 10Khz getaktet werden, das sind dann 100mm/s = 6000mm/min. Mit Last allerdings weniger.


MfG
Peter

hardware.bas
10.05.2009, 07:21
Gings hier nicht um DC-Motoren? Wir sind alle gespannt! VG Micha

Peter1060
10.05.2009, 08:24
moin moin,

wenn ich im Testaufbau den Stepper durch einen DC-Motor ersetze, kann ich auch das testen. Dazu ist dieser Aufbau ja vorgesehen.
Die verwendeten Teile können alle durch Baumarktteile ersetz werden, geht also unheimlich schnell aufzubauen.
Bei meinen Versuchen vor Jahren hatte ich 5polige DC-Motore und das Problem von Poljittern.
In der Firma benutzen wir als DC-Motore 3Phasige Synchronmotore(BLCD). Ähnlich Microstepping wird da die Position über die Stromverteilung an die Phasen geregelt. Die einzelnen Antriebe arbeiten unabhängig von einander.
Bei sychroner Ansteuerung wird es schwierig den Gleichlauf hinzubekommen. Der Motor mit der längsten Fahrstrecke muß Master sein, aus seiner Steuerpannung sind die anderen Steuerspannungen abzuleiten. Hier ist dann wieder die Analogie zum Schrittmotor.
Die DC-Reglung wird wegen der notwendigen Rückführung aufwendiger.

MfG
Peter

Osser
10.05.2009, 10:42
Hi,

schöner Versuchsaufbau Peter!!!

Im Moment benutze ich lediglich simple M6 Gewindestangen und keine Kugelumlaufspindeln. Um das Ganze mit gewöhnlichen DC Motoren zu betereiben reitzt mich einfach schon lange, weshalb ich das jetzt eben in die Realität umzusetze.

Nächste Woche hab ich das Material für die Achsen und kann dann eine Achse aufbauen und optimieren, messen, etc. Bis dahin ist alles leider nur Theorie, die sich ja immer von der Praxix unterscheidet ;)


Olli

Peter1060
11.05.2009, 09:03
moin Olli,

>>Dem µC wird über die serielle Schnittstelle dann ISO Code überspielt, also z.B.
G00 Z10.
G00 X10. Y20.
G00 Z5.
G01 Z1. F300
G01 Z-0.1 F50
G01 ...

Frage: Wozu sind die Punkte notwendig?

...und wie weit ist den da das Prog und was willst Du alles im MC machen?

Bei mir wird der "pure" unbearbeitete G-Code an die Fräse gesendet, alle Rechnungen, einschliesslich Radienkorrektur, macht der MC in der Fräse.

MfG
Peter

Osser
12.05.2009, 12:40
Hi,


die Dezimalpunkte stehen da nur der Vollständigkeit halber.

Das Proggi des MC ist für eine Achse fertig und von aussen Parametrisierbar mit AF Script. AF Script läuft in AsuroFlash und kann serielle Protokolle für z.B. MC Steuerungen fahren (AsuroFlash (https://www.roboternetz.de/phpBB2/viewtopic.php?t=25249&start=330)).

Im Script UI sind die Eingabefelder für die Achsparameter aufgeführt (Kp, Ki, Kd, ...) die gelesen und geschrieben werden können. Die Grundfrequenz der PWM ist auch einstellbar, da ich z.B. bei niedriger Grundfrequenz hören kann ob die Regelung vernünftig läuft.
Um die Achse zu positionieren hab ich mehrere Buttons aufgenommen um Inkrementalschritte 1, 2, 5, 10, 20, 50, 100 in beide Achsrichtungen ausführen zu können.

Linieninterpolation und Kreisinterpolation bau ich ein sobald ich die X- und Y-Achse fertiggestellt habe. Ab dann wirds erst richtig interessant, da ich dann die Beschleunigungs und Bremsfunktionen aufeinander abstimmen muss --grin--

Leider hab ich heute von meinem "freundlichen Stahlhändler" erfahren dass die Teile noch nicht fertig sind, s***! Kann ich wohl erst am Wochenende weiterbauen, da ich den Rest der Woche nicht @home bin.


Gruss,

O.

Osser
10.06.2009, 12:46
Hi,

Gut Ding will Weile haben....

Hab jetzt die erste Achse aufgebaut und angepasst so dass alles flutscht.
Den ursprünglichen Maus-Rotationsencoder musste ich durch einen besseren ersetzen (GP1A038RBK), da die Grenzfrequenz bei nur ca. 2Khz lag und die Regelung über dieser Geschwindigkeit schlichtweg mit Vollgas zu laufen begann. Die neuen Encoder haben jetzt eine Grenzfrequenz von 20Khz was wohl bis Vmax reichen sollte.

Bei den ersten (Geh-)Versuchen hab ich den Rotencoder auch nur mit einem Gummi an den Motor gekoppelt was auch noch Schlupf in die Regelung eingebracht hat. Jetzt ist die Teilscheibe direkt an der Gewindestange angebracht.

Sobald die Firmware für die Regelung der 1. Achse fertig ist werd ich dann mal ein Vidscho einstellen das die Schose in Aktion zeigt, Bilder der Achse kann ich evtl. schon heute Abend einstellen.


@vohopri:

Eine Bohrmaschine ist keine Fräse, ....
Die Z-Achse werde ich auch noch selber bauen und an einen Ständer, der noch konstruiert werden muss, anflanschen. Die Bohrmaschine ist bei weit ausgefahrener Pinole doch ziemlich labil....


Das Ganze zieht sich doch länger als ich wollte und ich hab leider nicht immer Zeit an dem Gerät zu bauen, da ich auch den "W.A.F." berücksichtigen muss.... :)




Gruss,

O.


EDIT: (--Fotos--)
Während des Aufbauens der Achse ...
35714

... noch mit provisorischem Mouse-Encoder ...
35715

Zusammengebaut mit aufgesetzter Teilungsscheibe ...

35716

Peter1060
18.06.2009, 09:39
moin moin,

"3 Wochen war der Frosch krank, jetzt raucht er wieder, Gott sei Dank"
Wilhelm Busch

nun solls also losgehen...
Allerdings habe ich bei der "Führung" Bauchschmerzen.

Wo hast Du die Teilungsscheibe her?

Mit Gruß
Peter

Bammel
18.06.2009, 15:40
ich verstehe nie warum man M6 spindeln nimmt? erstens sind das keine gewinder für lineare bewegungen. dann haben diese eine echt miese steigung, weswegen man dnan recht hohe drehzahlen braucht. dut bei nem servo vllt net so wild. aber warum net gleich ne trapez-spindel? die kosten das gleich! nur die muttern sind halt ein wenig teuer.

BurningBen
18.06.2009, 21:55
Also Trapezgewindespindeln kosten nicht wirklich das gleiche wie ne M6-Gewindestange.

Selbst die billigsten gerollten TR-Spindeln liegen noch bei 6-7€/m
Ne M6 ~1,5€/m (Edelstahl).
Dazu dann die Preise der Muttern.

Warum ich mit M6 angefangen habe, lag schlicht und einfach daran, das ich für ein Kugellager mit 6mm Innendurchmesser noch ne Bohrung machen konnte.
Eins mit 12mm Innendurchmesser liegt bei ungefähr 40mm Aussendurchmesser, und das krieg ich beim besten Willen nicht in Alu rein.

Gleiches Problem auch bei den Muttern: 26mm Aussendurchmesser sind zuviel um ohne Drehbank damit arbeiten zu können.

TheDarkRose
19.06.2009, 19:06
Also ich hab bei meiner Fräse die Spindeln (TR 12x3) an den Enden auf 6mm abgedreht, um das Lager klein zu halten.

BurningBen
19.06.2009, 20:13
tja, so mach ich das auch jetzt, sobald die Spindeln da sind.
Beim letzten Bau fehlte mir dazu die nötige Drehbank, bzw. die Lust die Spindeln auch noch irgendwo abdrehen zu lassen, und die Spindelmutterngehäuse irgendwo in Auftrag zu geben.

hardware.bas
06.07.2009, 20:09
Frage zwischendurch: Sind die DC-Motoren kohlen- bzw. bürstenlos?
VG Micha

Thomas$
06.07.2009, 20:26
wie machst du die motoren reglung? wieviele unterschiedliche drehzahlen nutz du(durch PWM). wie sieht die rechnerei auf dem µC aus?

Osser
09.07.2009, 10:17
Hi @all,

erstmal sorry das ich so lange nichts geschrieben hab, hab leider nur sehr wenig Zeit für das Projekt.

@Peter1060:
1. Wilhelm Busch taugt! ;)
2. Den Drehgeber gibts hier Link (http://www.shop.robotikhardware.de/shop/catalog/product_info.php?cPath=71&products_id=135)
3. Ach ja, etwas Flachstahl zusammengeschraubt und läuft wie ne Eins... Warum hast Du Bauchschmerzen dabei?

@Bammel:
Hab der Einfachheit halber M6 Spindeln verwendet.

@BurningBen:
Right, you hit the point... ;)

@hardware.bas:
Es sind Gleichstrommotore mit Schleifer. BLDC's gibts denk ich nicht zu einem günstigen Preis oder täusch ich mich da?

@Thomas$:
Benutze eine zweilagige Reglung, d.h. Drehzahlreglung mit vorgeschalteter Positionsreglung. Die PID-Positionsreglung setzt den Soll-Wert der PI-Drehzahlreglung.
Da das Projekt noch nicht fertig ist kann ich noch nichts funktionierendes posten. Habe wie gesagt nur sehr wenig zeit fürs bauen und entwickeln. Evtl. gehts im Sommerurlaub wieder etwas vorran.


Stay tuned...

O.

hardware.bas
09.07.2009, 18:36
Weis auch nicht, obs Diese schleifer-, bürsten- oder kohlelos gibt - darum
kein Thema mehr für mich. Muss alles berührungslos funktionieren,
ansonsten NUR ÄRGER und VERSCHLEIS! Weis, wovon ich spreche.
VG Micha

Peter1060
09.07.2009, 22:02
moin moin,

jo, berührungslos...ist immer besser.
Als BLCD habe ich hier Servex FE6S10 liegen. Die haben allerdings 3Phasen und auch 3 Magnetsensoren für die Stellung drin. Mit dem SI9979 kann das Teil mit Takt/Richtung angesteuert werden.
Ansteuerung mit 3 analogen Strömen sollte aber auch gehen.

@Olli
später kann man (hoffendlich) sagen:
3 Wochen war der Olli krank,
jetzt fräßt er wieder,
Gott sei dank.

Mit Gruß
Peter

Osser
10.07.2009, 09:07
Hi Peter1060,

yep, so is das. :cheesy:

O.

Peter1060
10.07.2009, 19:00
moin Olli,

die Encoderscheibe ist mit 120 Impulsen angegeben, hat die 120 Striche drauf?
Bei 4fach Auswertung wären dann 480 Impule/Umdrehung möglich?

Bei der FlachStahlFührung, wie ist das mit Querkräften? Oder ist das erstmal nur für lastlose Tests?

Das Du mit DC Motoren experimentierst...na ja, in meiner Fräse laufen 5PhasenMotore, da haben auch schon welche gesagt: raus damit, 2Phasen ist einfacher. Jedoch hat meine Spindel eine Steigung vom 25,4mm und bei Halbschritt ist die Auflösung dann 25,4µm. Die Treiberplatine selber ist 60x67mm groß.

Mit Gruß
Peter

Osser
11.11.2009, 12:20
Hi,


mein letzter Post ist ja schon etwas her aber das Projekt ist schon einige Schritte weiter gekommen.
Mittlerweile bin ich fertig mit den Tests der Rotationsencoder und habe mich im Verlauf der Tests entschlossen jeder Achse einen autarken Achsencoder mit eigenem µC zu spendieren (ATtiny26).
Das ist nötig, weil mir die Performance des ATMEGA64 sonst für die UI(User Interface) Anzeige und den NC-Pfadintegrator nicht reicht.

Die Anbindung der einzelnen externen Encoder sieht so aus:


Schematics for three slave devices:
-----------------------------------

M /PA0 o--*
a D |PA1 o--|
s A |PA2 o--|
t T |PA3 o--*==========*=========o PA0..PA6 SLAVE1.Data
e A |PA4 o--| \========o PA0..PA6 SLAVE2.Data
r |PA5 o--| \=======o PA0..PA6 SLAVE3.Data
\PA6 o--*

W /PB0 o-----------------------o PA7 SLAVE1.WR
R |PB1 o-----------------------o PA7 SLAVE2.WR
\PB2 o-----------------------o PA7 SLAVE3.WR

R /PB3 o-----------------------o PB6 SLAVE1.RDY
D |PB4 o-----------------------o PB6 SLAVE2.RDY
Y \PB5 o-----------------------o PB6 SLAVE3.RDY


also ein 9 bit breiter Datenbus der mit einem Statetransition Protokoll Timingunabhängig die Daten auslesen kann.

Das Protokoll ist folgendermassen implementiert:


µC(Slave) DIR µC(Master)
-----------------------------------
RDY -> Q: Is slave ready?
<- DATA
<- WR
___
RDY ->
__
<- WR
DATA ->
RDY -> Q: Is slave ready?


DTE µC(Slave)
DCE µC(Slave)
RDY ready signal from DCE to DTE
WR write signal from DTE to DCE
DATA 7 bit data lines DTE <-> DCE



Ablauf zum auslesen der Position und Geschwindigkeit IST-Werte:
1) Erstellen eines Positions/Geschwindigkeit Snapshots im Multicastbetrieb (alle Achsen gleichzeitig)
2) Datenbus auf Tristate stellen (wiederum Multicast)
3) Geschwindigkeit/Speed Tupels aller Achsen nacheinander auslesen


Zur Anzeige benutze ich einen VT525 Terminal den ich als Softwareemulation gechrieben habe. Mit dem Terminal wird via UART kommuniziert und das UI aufgebaut. Im Terminal wird ein Menu (blauer Balken unten) eingeblendet um die verschiedenen Funktionen zu aktivieren.

Momentan bin ich damit beschäftigt den externen Encoder (ATtiny26) mit dem Master µC (ATMEGA64) zu verbinden und in Testcases die Stabilität der Datenkommunikation zu ermitteln und evtl. zu verbessern.

Hier mal ein paar Screenshots vom Terminal UI wie der ATMEGA ihn aufbaut.
http://www.img-share.com/image/6434.jpeg
http://www.img-share.com/image/6435.jpeg


Naja, jetzt bau ich gerade unter dem Menupunkt TESTS einen Versuch ein um die Daten des externen Encoders im 4ms Intervall auszulesen und dann auf dem UI anzuzeigen, so dass ich sehen kann ob das fehlerlos funktioniert.


Gruss,

O.

Osser
11.11.2009, 13:27
..ach ja

hier noch ein altes Filmchen vom Test der Servologik.

http://www.secius.com/AsuroFlash/wp-content/plugins/videobox/swf/flvplayer.swf?file=http://secius.com/AsuroFlash/flash/MOV06091.flv
[flash width=640 height=480 loop=false:ee7cf70539]http://www.secius.com/AsuroFlash/wp-content/plugins/videobox/swf/flvplayer.swf?file=http://secius.com/AsuroFlash/flash/MOV06091.flv[/flash:ee7cf70539]

Eine Umdrehung der Encoderscheibe bedeutet 1mm Bewegung auf der entsprechenden Achse.

O.

Peter1060
14.11.2009, 21:09
moin moin,

ich dachte schon der Osser will nicht mehr...

schön das Du noch nicht aufgegeben hast.
Ein paar Fragen dazu:
- nochmal, wieviele Impulse/Umdrehung,
-wie reagiert der Motor auf Last?
-wie reagiert der Motor auf Lageänderung im Stillstand?
-mal das Drehmoment gemwessen?
-Als Motor mal einen (Akku-)Schrauber getestet? Die Dinger kosten ja recht wenig und haben Drehmomente bis 20Nm/ 500U/min...
-wie ist die Ansteuerung bei Kreisbewegung realisiert?

Mein Versuchsaufbau ist schon fast die fertige Quertraverse für eine obenliegende Gantry. Allesdings mit Stepper und für jede Achse einen eigenen MC.

Mit Gruß
Peter

Osser
16.11.2009, 11:32
Hi Peter,

:) Olli(Alias Osser) ist noch immer am Ball...

Zu deinen Fragen:
1) Der Encoder liefert 120*4==480 Schritte wenn man Ihn voll auswertet.
2) Mit Lastdämpfung muss ich das noch testen, aber mit den richtigen Kv, Kp, Ki Parametern wohl ähnlich wie jetzt unbelastet. Im unbelasteten Zustand schwingt er noch etwas um den Zielpunkt herum (siehe altes Video hier unten).
3) Er steuert gegen, da die Regelung ja nie ausgeschaltet wird, ausser man zieht den Stecker raus ;)
4) Das Drehmoment ist ~1Nm am Abtrieb lt. Conrad 222363-62, gemessen hab ichs nicht.
5) Falls die Motoren wider Erwarten nicht geeignet sind werd ich wohl BLC's einsetzen. Akkuschraubermotoren sind aber evtl auch eine gute Idee.
6) Als Steuerung hab ich eine zweilagige Regelung. Die innere regelt die Geschwindigkeit, die äussere regelt die Position.
Der Wegintegrator gibt eine Position im Zeitbereich vor, also basierend auf der vorgegebenen Geschwindigkeit und dem momentanen Element das bearbeitet wird (Linie, Bogen). Ich hab hierzu ein kleines Testproggi geschrieben in C++ um die Integratorlogik im Simulator testen zu können.


http://secius.com/fileadmin/media/cnc_MOV06093.mp4
(Video Lageregelung die noch im Zielbereich schwingt)

Zum Download des Simulator für NC-Integrator (http://secius.com/AsuroFlash/download/SimNC.zip)
Im Tab "NC Tests":
- auf "Draw NC Path" clicken um den Pfadaufbau zu simulieren
- auf "Circle Test" clicken um den Pfadaufbau eines 1/4 Kreises zu sehen



Gruss,

Olli

[edit 091117]: video vergrössert

Osser
17.11.2009, 11:54
Hi Peter,


hast Du auch Bilder von deinem Aufbau?


Gruss,

O.

Peter1060
18.11.2009, 00:36
Hi Olli,

leider im Moment wenig Zeit fürs Hobby, Stress auf Arbeit und mit dem Energieversorger.

Melde mich wieder,
mit Gruß
Peter

Osser
18.11.2009, 07:13
Hi Peter,


ja ja, das kenn ich auch aus leidiger Erfahrung.

Ich hoffe für Dich, das bald alles wieder im Lot ist.


Gruss,

O.

Osser
01.12.2009, 08:45
Hi,

so, die erste Achse ist beinahe fertig und ich werde demnächst ein Vidscho vom Test hier einstellen. Aber erst muss ich einen Bug lösen der mir von den externen Encodern einen Positionswert liefert der 5 Mal so gross ist wie er eigentlich sein sollte. Da hat mir wohl der Compiler nen Streich gespielt, da die C Logik meines Erachtens nach stimmt.

Auszug aus dem ExtEncoder Kommandoselector (Slave):


.
.
.
/* POS READ */
case CMD_GETPOS1:
// return Bits 0..6
iResponse = (uint8_t)(snapshot_pos & 0x7F);
break;
case CMD_GETPOS2:
// return Bits 7..13
/* 091120 OM results in slow compiled asm code!
iResponse = (uint8_t)((snapshot_pos>>7) & 0x7F);
*/
// byte0 bit7 and byte1 bit0..5
iResponse = *((uint8_t*)(&snapshot_pos) + 0) >> 7;
iResponse |= (*((uint8_t*)(&snapshot_pos) + 1) & 0x3F) << 1;
break;
case CMD_GETPOS3:
// return Bits 14..20
/* 091120 OM results in slow compiled asm code!
iResponse = (uint8_t)((snapshot_pos>>14) & 0x7F);
*/
// byte1 bit6..7 and byte2 bit 0..4
iResponse = *((uint8_t*)(&snapshot_pos) + 1) >> 6;
iResponse |= (*((uint8_t*)(&snapshot_pos) + 2) & 0x1F) << 2;
break;
/* SPEED READ */
case CMD_GETSPEED1:
// return Bits 0..6
iResponse = (uint8_t)(snapshot_speed & 0x7F);
break;
case CMD_GETSPEED2:
// return Bits 7..13
iResponse = (uint8_t)((snapshot_speed>>7) & 0x7F);
break;
.
.
.


.. und der Master



// Read signed 14 bit value from encoder
uint8_t eenc_cmd_query14BIT(uint8_t aWR_Mask,uint8_t aRDY_Mask,uint8_t aCmdBase,int16_t* aVal) {

uint8_t iBuf;
int8_t i;

// Query bits 13..7, 6..0 from rotencoder slave of axe X
*aVal = 0UL;
for (i = 1; i >= 0; i--) {
if (P9WI_SlaveQuery(aWR_Mask, aRDY_Mask, aCmdBase + i, &iBuf, EENC_TIMEOUT) != P9WI_OK)
return S_FALSE;
// save data nibbles
*aVal |= (int16_t)(iBuf & 0x7F);
// shift left if not last data nibble
if (i > 0)
*aVal <<= 7;
}
// Check if it is a negative number, bit 13 is "1" in this case
if (*aVal & 0x2000)
*aVal |= 0xC000;

return S_OK;
}

/*
.
.
.
Read signed 21 bit value from encoder
*/
uint8_t eenc_cmd_query21BIT(uint8_t aWR_Mask,uint8_t aRDY_Mask,uint8_t aCmdBase,int32_t* aVal) {

uint8_t iBuf;
int8_t i;

// Query bits 20..14, 13..7, 6..0 from rotencoder slave of axe X
*aVal = 0ULL;
for (i = 2; i >= 0; i--) {
if (P9WI_SlaveQuery(aWR_Mask, aRDY_Mask, aCmdBase + i, &iBuf, EENC_TIMEOUT) != P9WI_OK)
return S_FALSE;
// save data nibbles
*aVal |= (int32_t)(iBuf & 0x7F);
// shift left if not last data nibble
if (i > 0)
*aVal <<= 7;
}
// Check if it is a negative number, bit 20 is "1" in this case
if (*aVal & 0x100000)
*aVal |= 0xFFF00000;
return S_OK;
}
.
.
.



Die Daten werden jeweils zu sieben bit über den Datenbus vom ExtEncoder gepollt und anschliesend im Master wieder zusammengesetzt.
Ich dachte das der Kode so stimmen sollte, aber vielleicht ist der Fehler auch in der Lagereglung.


Den NC integrator habe ich für Linien (G00, G01) fertig und bereits mit compiliert, beschränke mich im Moment aber auf Testcases um die Parameter der Achsverstärker richtig abzustimmen. Der Testcase 3 fährt z.B. mit einer Amplitude von 20mm von der heutigen Position in die positive Richtung und anschliessend wieder auf den Ausgangspunkt zurück.
Der Vorgang wird für zehn verschiedene Vorschubwerte wiederholt F={40, 75, 150, 300, 600, 1200, 2400, ...}


Wenn die Position dann richtig ausgewertet wird, also nicht mehr 5 Mal so gross ;), werd ich den NC Integrator via Kommandozeile mit ISO Kodes füttern und den Part austesten. Den NC-Integrator hatte ich ja bereits in einem Simulator auf dem PC ausgetestet, der sollte also funktionieren falls der WinAVR Compiler mir nicht wieder einen Streich spielt.

Ok, stay tuned!
Bis zum Vidscho vom Test.

Gruss,

O.

Osser
04.12.2009, 08:38
Hi,


hier das versprochene Video:

http://secius.com/fileadmin/media/cnc_MOV06112_overlay_lores_skip20.mp4
(Video des Lageregelungstests)


Der Test läuft mit einer Verfahramplitude von 20mm und verschiedenen Geschwindigkeiten ab. Damit kann ich dann die Regelparameter einstellen so dass alles flutscht. Hab allerdings momentan noch ein Problem mit dem Netzteil das ich verwende, da das nur 3A liefert und der Motot im Vollast betrieb lt. Datenblatt ca. 2.86A zieht. Verfährt die Achse in den Letzten 3 Testzyklen mit F>2000, schaltet das Netzteil sich manchmal aus und hat keine Lust mehr.
Momentan arbeite ich auch nur mit einer Achse und mit drei Achsen wird das dann natürlich dementsprechend mehr Strom werden, vor allem beim Anfahren der Achsen aus dem Stillstand.

Als vernünftige Stromversorgung hab ich mir ein Netzteil von MeanWell (S150-15) ausgesucht mit Sekundär 15V, 10A was für die drei Antriebe reichen sollte.



Gruss,

O.

lacky
05.12.2009, 08:35
https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=2155

Hallo zusammen
hier ein paar Daten von einer UHU gesteuerten kleinen CNCPlatinenfräse
500 Encoder 4 fach Auswertung also 2000 Schritte pro Motorumdrehung
Motore Escap 24V 3A untersetzt 5 zu 1 an einer 12x10 Kugelspindel
0,001mm Auflösung , gerade mal 1 A ziehen die Motore im Mittel
Haltestrom ca 80mA ,Netzteil MeanWell 24 V 6,4A auf 30V eingestellt.
Geschwindigkeit ausreichend hier bei einer 80mm Kreistasche
http://www.myvideo.de/watch/7047615/UHU_CNC
Verfahrwege 230x120x85mm


wie sieht den die Erwärmung von den Standartmotoren im Dauerbetrieb aus .

wie sollen später mal die Parameter abgeglichen werden
bei UHU wird über eine serielle die Einstellung vorgenommen
und auch eine Regelanalyse ausgegeben
http://www.uhu-servo.de/servo_de/UHU_Servo_300_short_de.pdf
http://www.uhu-servo.de/servo_de/bilder/term.jpg

hier mal mit 300V 100A Fets mit 50 A Motorstrom
https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=2428
Gruß Lacky

wisda.noobie
05.12.2009, 13:06
also ich wollt nur noch mal sagen, dass die Bohrmaschine das nicht lange mit machen wird. Die lager da drin sind nicht auf radiale belastungen ausgelegt, nur auf Radiale. leider treten beim fräsen aber eher radiale belastungen auf, was auf dauer zu lagerschäden führen kann. ansonsten: tolles projekt!

Osser
07.12.2009, 07:58
Hi wisda.noobie,


mein Ansatz ist der, alle Bauteile und Baugruppen selbst zu erstellen ausser Mototen udgl.
Die ursprüngliche Idee die Z-Achse aus der Pinole einer Ständerbohrmaschine zu bauen habe ich ursprünglich angedacht, um mir das Bauen einer Achse zu sparen. Davon bin ich aber abgegangen, wie ich bereits schrieb, da das Spiel der Pinole viel zu gross ist und der Umbau genauso viel Zeit kostet wie der Bau einer eigenen Achse.

Das eine Bohrpinole nur für Achsial und nicht für Radialbelastung ausgelegt ist ist mir bewust. Hier wollte ich urspünglich auch neue Lager einbauen um die Radialbelatung aufzufangen, aber das hat sich ja wie erwähnt erledigt.

Alle drei Achsen werden wie die im Video gezeigte ausgelegt.

Gruss,

O.

wisda.noobie
07.12.2009, 13:51
dann ist ja ok...ich hätte mir bei einem so durchdachten Konzept eigentlich auch nichts anderes gedacht...noch mal: respekt!

Peter1060
07.12.2009, 20:55
moin moin,

so, an die Fräse muß nun ein Schild ran " sponsored by Stadtwerke".

Anbei mal ein Foto vom Anfang der Z-Achse, hilf Dir eventuell etwas.
Das Video sieht gut aus.
Sorry wegen der kürze, will heute noch was schaffen...denn Urlaub für dieses Jahr ist gestrichen:-(

Mit Gruß
Peter

Osser
08.12.2009, 08:08
Ahhh der Peter, moin moin,

also so schön wie deine Achsen sehen meine nicht aus :-|
Eine direkte Kopplung der Motoren auf die Gewinde ist ja ne gute Idee, ..... für ein besseres Regelverhalten schätz ich.

Bin gerade dabei die zweite Achse zu bauen und danach werd ich den NC-Integrator mal ein bischen in der Gegend rum integrieren lassen.
Dazu muss dann noch ein Editor in die Firmware des ATmega64, damit ich ein ISO-Proggi eingeben und ändern kann.

Da hab ich noch ein gutes Stück arbeit vor mir...


Gruss,

O.


P.S. Ach ja, was generve von Stromlieferanten und Maloche betrifft: Einfach nicht ignorieren ;-)

Osser
08.12.2009, 08:19
Hi wisda.noobie,


Du hast ja nette Tests auf deiner Seite :--)



Gruss,

O.

wisda.noobie
08.12.2009, 17:50
hmm....das waren mal so ideen die mir so zwischendurch kamen ;-) aber die website ist nicht mehr absolut aktuell, wenn ich mal zeit habe muss die neu gemacht werden, so kann man das nicht webiste nennen...eher Zustand... ;-)

Peter1060
14.01.2010, 10:24
moin moin,

Olli, wie stehts? Du hast lange nichts berichtet.

Bevor bei uns was verschrottet wird, brauchst Du
http://medias.schaeffler.com/medias/en!hp.ec.br.zugprod/AXW*AXW10*HK*HK1010

Lachen tu ich bei
http://cgi.ebay.de/Nadellager-Nadelh%FClse-10-x-14-x-10mm-INA-%AE---HK1010_W0QQitemZ290386579157QQcmdZViewItemQQimsxZ2 0100101?IMSfp=TL100101226004r32624

Mit Gruß
Peter

Osser
15.01.2010, 11:36
Hi Peter,

die zweite Achse ist mittlerweile auch fertig und die Endschalter sind auch mit der Encoderplatine der Achse verbunden.
Die Sicherheitskette (NOT-AUS) ist durch jede Achse geschleift und wird durch die Achsendschalter ausgelöst. Werd mal ein bildchen machen und hier posten wie der Kreutzschlitten jetzt aussieht.

Jetzt gehts ans Proggen der Firmware damit die Zweite Achse auch geregelt wird und der NC-Integrator sie dann steuern kann.
Naja, is ja bald wochenende... wenn die Chose geht gibts wieder ein Vidscho, ok?

Ach ja, die Nadellager brauch ich nicht aber trotzdem Danke fürs Angebot.
Jetzt begreif ich auch, wieso Du so 1A Linearführungen benutzt, Du sitzt ja an der Quelle.. ;-)
Profiliga! :)

Gruss,

O.

Peter1060
16.01.2010, 10:56
Hi Olli,

in der Firma baue ich ein medezinisches Gerät (Kostenpunkt so 50T€), aber da ist nichts mit Linear...nur rotatorisches Zeugs.
Die Schienen und der Rest stammen alle aus der Bucht.

Mit Gruß
Peter

Osser
19.01.2010, 12:20
Hi Peter,

also meine Fräse komt nicht mal auf 1K€ und wird mit ner kleinen Ständerbohrmaschine und einem Satz Feilen erstellt ... ;-)

Der Weg ist das Ziel...



Gruss,

O.

Osser
05.02.2010, 12:42
Hi @all,

hab jetzt mein MEANWELL SP-500-12 Netzteil bekommen um die Mototen mit ausreichend Leistung versorgen zu können. Pro Motor sollte es wie schon gesagt lt. Datenblatt max 4A bei 15V werden und somit bei 13,2V etwas mehr ziehen. Mit 40A hab ich also noch Reserven für evtl. weitere Achsen, Drehachse o.ä.

Die Achsparameter der beiden Achsen X und Y sind mittlerweile so angeglichen dass die Regelung schön weich läuft. Dummerweise konnte ich bislang nicht den gesamten Testcase durchlaufen lassen da mein Netzteil ja irgentwie nicht damit einverstanden war und bei Vorschüben ab 300m/min ziemlich schnell im E-Nirvana(Überlastungsschutz) zu finden war.

Hatte noch einige Schwierigkeiten mit den Achsenkodern die via P9WI Protokoll angebunden sind. Die Leitungen hatten enorm starke Eigenschwingungen auf den Adern des Flachbandkabels die ich nicht ganz zuordnen konnte. Die Anschlusskabel sind ca 60cm lang und unabgeschirmt, übertragen bidirektional Daten und strobe Signale, verbinden die Sicherheitskette (NOT-AUS) und die Versorgungsspannung der Encoder(ATtiny26). Erst hab ich versucht mit AC-Terminierung und serien Terminierung die Signalqualität zu verbessern, was bei den Tests auf dem Testboard auch half, ein signal war aber immernoch miserabel und sah aus wie eine AM Welle. ???????
Nach einigem suchen und Haareraufen hab ich den eigentlichen Fehler entdeckt ...... beim 2. Encoder war genau die Leitung in der Nähe des RDY Strobe mit Kupferlackdraht verlegt, da ich eine recht flache Rückseite brauche hab ich das leicht flach gedrückt und dabei kam dieser Lackdraht zu nahe an RDY und es kam zu einer Überspielung des einen auf das andere Signal. Toll! Hat mich sicher zwei Wochen Lebenszeit gekostet, von den Nerven ganz zu schweigen! :-|

Schreibe jetzt den NC Editor im AVR fertig, der meinen VT525 Terminal ansteuert um darüber das Programm zu schreiben/editieren. Es ist jetzt langsam auch so wie ich dass will von der Bedienung her. Ich lehne das ganze Projekt ja an eine alte CNC Maschine an (die erste HSC Fräse der Welt!) und zu der Zeit wurde halt noch mit PDP11 und VT420 gearbeitet. Wird also keine WYSIWYG Version ala Windoof für Dummies..... ;-)

Die Datenrepositories erledige ich auch über den VT525 Emulator der dann mit Dateiselektor und lade/schreib Kommandos ausgestattet wird die im original DEC-VT Protokoll nicht enthalten waren. Auf die Art und Weise ist es dann möglich beliebige Dateien aus dem AVR heraus vom Terminal-Host-PC zu laden oder darauf zu speichern. Wenn ich viel Lust und Laune hab wird dem AVR noch ein MemoryStick spendiert auf dem ich dann auch daten speichern kann, aber das ist noch Zukunftsmusik.

Worums mir jetzt erstmal geht ist eine weitere Implementierung der ISO Syntax/Semantik z.B. Kreis(G02/G03), Absolut(G90), Inkremental(G91), Nullpunkt, ...
Im Moment geht nur Inkremental und Linearinterpolation.


Ok, heute abend Netzteil anschliessen und den Testcase drüberlaufen lassen.
Danach lass ich das ERSTE NC-Proggi laufen und mach da ein Vidscho davon, dann könnt ihr das auch mitverfolgen.

Stay tuned....

O.

Peter1060
05.02.2010, 14:14
moin Olli,

fleißig fleißig...hast Du sonst nichts zu tun;-)

kannst Du was in Delphi(5) machen/lesen? Da habe ich doch alles mögliche schon laufen... heute abend mehr.

Mit Gruß
Peter

Thomas$
05.02.2010, 15:22
ich hab mal einen zwischenteil nicht gelesen aber willst du wirklich alles selber neu erfinden?
emc² ist doch erstmal nicht schlecht
und dann muss man sich ein servo bauen der sich wie ein schrittmotor ansteurn lässt. gibts ja auch schon fertig kann man sich aber auch selberbauen
aber ein dickes lob dafür was schon läuft muss man geben hut ab

Peter1060
05.02.2010, 18:44
moin Thomas,

bin eigendlich (immernoch) AssemblerFan, arbeite aber auch in Delphi und einwenig C. Bei emc finde ich einfach nichts zur Fräsradienkorrektur. Ausserdem sollte der Interpreter auf einem MC laufen und nur die G-Code-Daten per COM/USB einmal geladen bekommen.

@Olli

Im CNCView ist derzeit realisiert:
G00 Eilgang fahren
G01 Grade fahren
G02 Kreis rechts
G03 Kreis links
G40 Radiuskorrektur aus
G41 Radiuskorrektur links
G42 Radiuskorrektur rechts
G54 Nullpunkt setzen
G70 Eingabesystem Zoll
G71 Eingabesystem Metrisch
G74 Referenzfahrt
G83 Fläche planen
G84 Bohrlochreihe
G85 Kreistasche
G86 Rechtecktasche
G90 Koordinaten absolut
G91 Koordinaten relativ

Fxxxx Vorschubgeschwindigkeit
Lxxxx Aufruf Unterprogramm ab Nxxxx
Nxxxx Zeilennummer
Wxxxx Wartezeit

M02 Programmende OHNE Rücksprung
M03 Spindel rechts ein
M05 Spindel aus
M06 Werkzeugwechsel
M30 Programmende MIT Rücksprung

M11 Test ForBegin
M12 Test ForNext

Der Unterschie ob Schrittmotor / Servo solte bei linearen Bewegungen erst nach der Positionsbestimmung eine Rolle spielen. Bei Schrittmotore ist der Bresenham gut. Bei Kreisbewegungen arbeite ich mit sin/cos, hier habe ich mit Bresenham keine guten Erfahrungen gemacht. Bei einem Servo könnte das wohl nur mit direkter Steuerung der Bahnkurve im MC der Achse funktionieren.

Bis danne
Peter

Osser
08.02.2010, 12:18
Hi Peter1060, Thomas$,

@Thomas$:
Mir gehts darum alles im mC zu verarbeiten, es ist also kein externer Rechner (=PC) nötig. Lediglich der VT525 Terminal-Emulator läuft auf dem externen Rechner, womit ich die Anzeige des mC gerendert wird.
Die Servologik ist im Hauptprozessor umgesetzt, extern hab ich dann für jede Achse noch einen ATtiny26 der Geschwindigkeit (v) und Position (s) der Achse aufnimmt und zusätzlich noch Referenzpunkt (REF), die Endschalter (MAX+/MAX-) ausliest. Der Referenzpunkt wird dann im externen ATtiny auch gleich abgenullt, ich erhalte also gleich korrigierte Koordinaten zurück. Das ist dann mit einem P9WI Bus an den Hauptprozessor angebunden und wird im polling Betrieb abgefragt. Das hab ich gemacht um im Haupt-mC genügend Resourcen, vor allen Dingen CPU-Zeit, frei zu halten.
Ach ja, danke fürs Lob das motiviert... :-)


Peter1060:

..kannst Du was in Delphi(5) machen/lesen? ..
...ich kann alles lesen was Rechner auch lesen können... ;-)
Wenn Du mir die Proggisource postest, könnte ich den Kode für Anregungen und Inspiration sicherlich gut brauchen. Das Thema Radiuskorrektur hab ich bis jetzt nämlich noch gar nicht angerissen.
Danke fürs Angebot =;
Du kannst ja eine PM an mich schicken.

Vidscho vom ersten CNC Proggi
http://secius.com/fileadmin/media/cnc_MOV06223_overlay_lowres.png

http://secius.com/fileadmin/media/cnc_MOV06223_overlay_lowres.mp4

Das Vidscho zeigt kurz den Source-Editor auf dem VT525 Terminal und danach den Start und das laufende NC Proggi mit Grafik Simulation. Die Grafik ist noch um Y gespiegelt da der VT525 Grafik im 4ten Quadranten zeichnet.

Der Positionierfehler (Abweichung vom Startpunkt) ist in diesem Fall 0.01mm in X
Startpunkt (488.96/942.17)
Endpunkt (488.95/942.17)

Gruss,

O.

[EDIT 09.02.2010] Mit "Positionierfehler" meinte ich oben die Regelabweichung, mechanisch wird die tatsähliche Position momentan sicherlich mehr als 0.01mm abweichen, da das Umkehrspiel noch nicht rausgerechnet wird.

Peter1060
08.02.2010, 13:30
Hi Olli,

wenn Du noch eine Bremse für die Z-Achse brauchst:
http://cgi.ebay.de/Schrittmotor-Nanotec-4H5618X1308-mit-Bremse-BFK457-03_W0QQitemZ130363037391QQcmdZViewItemQQptZMotoren _Getriebe?hash=item1e5a3e16cf
Habe ich auch, bremst gut.
Rest heute abend.
Mit Gruß
Peter

Osser
13.02.2010, 19:49
Hi @all,

so, hab mal wieder CAD angeworfen um die Z-Achs-Befestigung zu dimensionieren. Das folgende Bildchen enthält die Flansche zum befestigen der Z-Achse incl. Bodenplatte, worauf der Kreutzschlitten montiert wird.

35717
Designstudie zum Aufbau der Z-Achse

Ich muss jetzt noch die letzte Ache (Z) bauen und das Ganze an der Trägerkonstruktion befestigen. Dann heissts mal wieder meinen freundlichen Stahlhändler besuchen und warten bis der mir die Halbzeuge zur Verfügung stellt (was leider immer etwas dauert).

Hab leider immer noch probleme mit der Busterminierung der Achsen, vor allem die Y-Achse hat noch viele Spikes auf den Leitungen und mit einer weiteren Achse (Z) wirds wohl noch schlimmer. Da muss ich noch mal ran!
Der Editor im mC schreitet voran, langsam und gemächlich, mühsam ernährt sich das Eichhörnchen......
Das Dateistrom Interface im VT525 muss auch noch....
Pfuuhhhh, naja, aber zumindestens geht jetzt schon das Ein oder Andere.

Gruss,

O.

Peter1060
13.02.2010, 23:27
Hi Olli,

ob diese Construction richtig stabil wird? Der Fräsmotor kann ja in alle Richtungen schwingen...
Als Bus nutze ich SPI over CurrentLoop. Mit TLP113 werden die Signale an die jeweiligen AchsenMCs übergeben. Nach Netzverdrosselung läuft das stabil.
Habe die Woche Resturlaub und werde mein Untergestell für die "große" Fräse eventuell fertigstellen. Dann sollten wir mal über Software reden.
Was willst Du alles auf dem Display darstellen?
Mir reicht die aktuelle G-Codezeile und die Position XYZ.

Mit Gruß
Peter

Osser
16.02.2010, 20:22
Hi,

hier noch mal eben eine bessere (evtl. entgültige) Studie des Ständers:
35718

Gruss,

O.

Hessibaby
17.02.2010, 08:25
Der Ausleger (die Traverse) für den Spindelmotor ist zu lang und wird heftig schwingen.
Der Spindelmotor muss näher an die Z-Achsenführung. Am besten sogar anliegen. Die Knotenbleche der Führung ( also die beiden Dreiecke ) verschraubst Du besser von Außen.

Osser
17.02.2010, 10:07
Hi Hessibaby,

danke für Deine Tips!
Werde heute abend das Design dementsprechend ändern und gleich alle Versteifungswinkel aussen ansetzen.
Mit den Winkeln an der Aussenseite kann der Motor wohl dichter an den Z-Laufbock rücken, danke nochmal für den Tipp.


Gruss,

O.

Osser
17.02.2010, 23:08
Hi Peter,

uuups, hab ja ganz vergessen zu antworten....


Der Fräsmotor kann ja in alle Richtungen schwingen...
Hab den Aufbau des Ständers schon verbessert und auch der Fräsmotor kommt noch näher an den Laufbock ran.


Als Bus nutze ich SPI over CurrentLoop. Mit TLP113 werden...
Hab mir da nen eigenen Datenbus ausgedacht, um Zeitnahe ohne Interrupts udgl. Daten zu übertragen. Ich weiss ich weiss, dass ist Unsinn und bestehende Konzepte laufen stabiler aber ich kanns einfach nicht lassen was eigenes zu entwickeln. Is wohl ein Tick von mir... 8-[


..werde mein Untergestell für die "große" Fräse eventuell fertigstellen.
Stell mal ein paar Bilder ein. Wie gross ist Gross? Mehr als 200x200x200? O:)


Dann sollten wir mal über Software reden.
Yep.


Was willst Du alles auf dem Display darstellen?
1) Koordinaten (absolut, nullpunkt, raw; abhängig von Maschineneinstellung)
2) Grafik
3) ca. 3-4 Codezeilen falls das von der Performance her geht.
Hab den Terminal mittlerweile auch mit 38400 Baud angebunden statt mit 9600 Baud, damit alles flüssiger läuft und das Übertragungsfenster für Terminaldaten verkürzt wird. Vorallem im NC-Editor hat sich dass enorm ausgewirkt und das scrollen geht jetzt viel flüssiger.

Sorry nochmal für die verspätete Antwort.

Gruß

Olli

Peter1060
18.02.2010, 03:17
moin moin,

meine Fräse hat als Arbeitsbereich 550x550x240mm.
Habe gestern abend mal durchgezählt, bei 300 Schrauben habe ich aufgehört;-).
Als Übertragungsprotokoll habe ich mir ja auch was eigenes ausgedacht.
Die G-CodeDaten erstelle ich am PC un d sende sie dann per COM (später auch per USB) an die Fräse. Diese kann derzeit ca. 1,5KB speichern.

Der SPI-Bus geht vom Master über Display/Tastatur/Drehgeber an die MCs der Achsen. Die Motortreiber mit ihrem MC sitzen dabei direkt am Motor.
Für die Floatrechungen hat der Master (derzeit ein AT89C51ED2 mit 22MHz) noch eine FPU (1 TaktCore C8051F365 mit 100MHz) zu Seite.

Mit Gruß
Peter

Osser
19.02.2010, 12:26
Hi,

hier noch die entgültige Version des Ständers.
http://secius.com/fileadmin/AsuroFlash/flash/CNCStaenderV2b.png

In Punkto Stabilität mach ich mir eigentlich weniger sorgen, da die Gesamtausdehnung der Konstruktion auf ein A3 Blatt passt. Da jetzt der Spindelmotor sehr nahe am Laufbock der Z-Achse sitzt sollten auch recht wenige Schwingungen auftreten, bzw. diese gut gedämpft werden.

Werd das Material morgen bestellen und dann heissts warten...

@Peter
Ich hab nen Datenbus der 7Bit gleichzeitig duplex übermittelt und lt. meinen Tests 27000 7Bit Werte pro Sekunde (23,6KB/s) überträgt.
Wenn nur das "Spike-Problem" nicht wäre....
Liegt evtl. auch an der Fertigungsweise der Encoder und Master Platine (Fädeltechnik).


Gruss,

O.

Yossarian
19.02.2010, 12:59
Hallo

Spindelmotor sehr nahe am Laufbock der Z-Achse

Dafür ist der Ausleger sehr lang.
Für diese Länge ist meiner Meinung nach die Z-Säule zu schwach, so daß hier Durchbiegungen zu erwarten sind.

Mit freundlichen Grüßen
Benno

Hessibaby
19.02.2010, 16:30
Spendiere dem Ausleger der Z-Achse noch einen Deckel als "Knoten"

Peter1060
19.02.2010, 19:51
moin moin,

der Hunger kommt beim essen...
die Fräsmotoraufnahme sollte man auch von unten an die Z-Achse anschrauben können. Das eröffnet ungeahnte Möglichkeiten...

Bin z.Z. dabei mal alle Teile zusammenzuschrauben, mache dann Fotos.

Bis danne
Mit Gruß
Peter

Michael_238
19.02.2010, 19:53
@Osser
Die Maschiene sieht echt gut aus.=>Respekt
Nur mit der Z-Seule köntest du noch Probleme wegen Fibrationen bekommen.
Wird das Gestell (gelb) geschweißt oder geschraubt?

MfG Michael

Osser
20.02.2010, 08:31
Hi @all,

Danke für die vielen Kommentare...

@Yossarian
Irgentwie muss ich die 200mm überbrücken, da es aber um relativ kleine Auskraglängen geht hoffe ich dass es doch recht stabil wird.

@Hessibaby
Wenns nicht stabil genug wird wies jetzt gezeichnet ist kann ich das ja evtl. noch machen...

@Peter
Du meinst so wie eine Pinole. Hab ich auch schon drüber nachgedacht, dann wirds halt noch viel länger, leider ...

@Michael
Die komplette Maschine stelle ich her mit Feile, Säge und einer kleinen Ständerbohrmaschine, ergo, alles ist verschraubt und mit Passstiften versteift wenn nötig.
Wie gesagt, da die Maschine grösser aussieht als sie ist, hoffe ich schon das es mit der Steifheit keine so grossen Probleme gibt.

Gruss,

Olli

BurningBen
20.02.2010, 16:01
Du solltest die Säule am besten als 4-Kantrohr ausführen. Ist deutlich stabiler

Bammel
20.02.2010, 18:19
Hi,

sieht echt nett aus dein maschinchen!

ich hätte da noch einen vorschlag.
beim dem gelben auslagen für die z-achse kannst du ja von oben gesehen reinscheun. da würde ich noch eine platte mit reinmachen um die querkräfte besser aufnehmen zu können. oder ggf. eine diagonale mit einbauen.

Gruß,
Bammel

Peter1060
20.02.2010, 18:22
moin moin,

Rohr ist nicht stabiler! Ein massives Vierkantmaterial besteht doch aus vielen ineinander steckenden Rohren. Ein Rohr ist hier ein Kompromiss zwischen Steifigkeit und Masse. Masse wiederum dämpft Schwingungen.

@Olli
Du baust die Maschine so groß es geht. Und nach Murphy wird sie bei der 1. echten Aufgabe zu klein sein.

Mit Gruß
Peter

BurningBen
20.02.2010, 21:08
kommt drauf an was man vergleicht.
Ich meinte nicht, das die senkrechte Platte durch ein 4K-Rohr gleicher Aussenmaße ersetzt werden sollte.
Besser durch 4K-Rohr mit der gleichen Masse.

In der Zeichnung ist es ja schon als U-Profil ausgeführt. Die beiden Seitenteile deutlich länger, und hinten wieder zumachen. => 4-Kantrohr

Ich mal das mal ins Bild wie ichs meine.

EDIT:
Hier könnt ihr sehen was ich meine:
http://www.burning-world.de/fotos/CNCStaenderV2b.png

Rot ist das Vierkantrohr, Blau schraffiert eine Platte die ich oben noch zusätzlich draufschrauben würde.
(Wurde oben glaube ich schon erwähnt)

Peter1060
20.02.2010, 21:31
moin moin,

Olli sollte mal angeben, wie dick seine Stahlplatten sind...neuer Wettbewerb: wer baut die schwerste Fräse...ich biete, wie der Zustand auf dem Bild zusehen ist, schon mal ca 81Kg.

Mit Gruß
Peter

Osser
22.02.2010, 07:34
Hi @Repliers,

vielen Dank für die vielen Vorschläge!

Also, ich verwende fein gewalzten Flachstahl und die benutzten Stahlplatten könnt ihr ja im letzten Vidscho sehen. Die Basisplatten sind 100mm breit und 10mm dick, also ein Tragender Querschnitt von 1000mm2.
Wenn ich ganz ehrlich bin glaub ich doch schon dass der Korpus mit diesen Stahlplatten und den angebrachten Versteifungen stabil wird. Da kann ich mich sicherlich draufstellen und hab noch keine nennenswerte Durchbiegung. Was die Dämpfungseigenschaften angeht siehts dann schon wieder anders aus, aber dass werde ich dann im Praxistest schon sehen und evtl. verbessern wenn nötig.

Gruss,

O.

Hessibaby
22.02.2010, 09:06
@Peter - Respekt , für einen Selbstbau allererste Sahne.

Osser
11.03.2010, 07:23
Hi,

wenn alles gut geht, kann ich Samstag meine Halbzeuge abholen und den Ständer und die 3. Achse bauen. Dann noch den 3. Achsencoder löten und hier und da noch ein paar Kabel.....
Sobald die Fräse fertig aufgebaut ist werd ich hier ein paar Fotos einstellen dass Ihr auch mitfiebern könnt.
Bin momentan noch mit einem DNC Modus beschäftigt um unbegrenzt lange NC Programme ausführen zu können. Den selben Übertragungskanal will ich auch für das Laden und Speichern von Programmen benutzen, da das ja im Grunde das gleiche ist.


Gruss,

O.

Peter1060
11.03.2010, 10:41
moin Olli,

was verstehst Du unter DNC?
Bei mir habe ich derzeit ca. 1,5KB RAM als Programmspeicher frei, das reicht ne ganze Ecke.

Mit Gruß
Peter

Osser
12.03.2010, 07:45
Hi Peter,


das DNC Protokoll (Distributed Numerical Control) dient der Anbindung an ein Netzwerk um NC Daten zu streamen und hat als Nebeneffekt, dass unbegrenzt lange Programme abgearbeitet werden können. In so einem Fall wird das NC-Programm via DNC dynamisch abgearbeitet (darum wird das auch manchmal als Dynamisches NC betitelt) und einige Sätze nachgeladen, online geparst und ausgeführt.

Ich hab irgentwan so um 1985 eine reihe von Fräs- und Erodiermaschinen mit einem selbst entwickelten Protokoll an das Betriebsnetzwerk (damals 10MBit Coax) angebunden um Zugriff auf die CAM-Dateien zu erhalten, so dass man nicht mehr mit Disketten, Bändern udgl. die Daten übermitteln muss. Damit konnte man dann das Netzwerk von der NC-Maschine aus erreichen und z.B. Directorylistings abfragen und eben auch Programme aufrufen und abarbeiten.

Die Anbindung an das Netzwerk wird für meine "Kleine" durch das Terminalprotokoll getunnelt, da der Rückkanal der Terminalsession kaum belastet ist und sich dafür anbietet. Dann ist es in DNC-Manier möglich Dateien abzurufen, Directory listings anzuschauen, Dateien zu speichern, usw. Evtl. verwende ich dafür auch alternativ den XPORT, womit meine Steuerung dann nativ netzwerkfähig sein wird.

Da ich auch 3D Objekte fräsen will brauch ich schon etwas mehr als 1-2KB, wobei ich leider nicht ermitteln kann wie viel dynamisch alociierbarer Speicher frei ist, da die Funktion in den Bibliotheken fehlt bzw. ich die Funktion noch nicht gefunden habe. ;-)

Weisst Du wie mann das abfragt?

Ein normales 3D NC-Programm hat leicht 10.000-300.000 Sätze was 200KB-6.000KB entspricht!

Aber jetzt will ich erst mal die Stahlarbeiten abschliessen um mich dann komplett der Weichware zu widmen und wie immer gibts hier den Status in Form von textuellen Ergüssen, Bildern und Videos.... \:D/



Gruss,

O.

_CH-53_
21.03.2010, 00:00
Hallo leute ich bau auch gerade meine zweite cnc fräse und will servomotoren verwenden was hast du für eine steuerung verwendet oder hast du eiinen bauplan ??

Mfg.urs

Osser
22.03.2010, 10:22
Hi Urs,


ich habe die Elektronik selbst entworfen und gebaut. Die Leistungselektronik basiert auf einer TLE5205-2 für jede Achse mit einer NAND Vorbeschaltung um zwei Eingänge zu erhalten für PWM und die Richtung. Meine Schaltung hat hierdurch keinen Bremsmodus, was aber kein Problem ist.
Von der Elektronik hab ich bis jetzt nur handgezeichnete Skizzen.

Als Steuerung hab ich einen ATMega64 der als Servocontroller und NC-Integrator dient, und mit einem seriellen VT525 Terminal bedient wird. Die ganze Steuerung sitzt also autark in dem ATMega64 bei der Maschine und es wird kein externer Rechner benötigt. Jede Achse besitzt einen Inkrementellen Encoder (ATtiny26) der die aktuelle Position, Geschwindigkeit, Endschalter(+/-) und den Referenzschalter kontrolliert.
Elektronik, Schaltungslayout und Hardware habe ich komplett selbst entwickelt für die Fräse. Den VT525 Terminalemulator hab ich auch selbst entwickelt, da ich keine geeignete Emulation finden konnte die ReGis (http://en.wikipedia.org/wiki/ReGIS) unterstützt.


So, hier noch ein Foto von dem Maschinenständer den ich am Wochenende hergestellt habe. Sieht doch schon ganz Gut aus, oder?
35719


Gruss,

O.

021aet04
22.03.2010, 10:32
Die gefällt mir sehr gut und alles in µC integriert. Sehr gut. Stört der Motor der X Achse nicht? Oder kommt die Auflagefläche noch etwas höher?

MfG Hannes

Osser
22.03.2010, 10:45
Hi Hannes,


Du hast ADLERAUGEN! ;-)
Der Encoder muss noch versetzt werden da der etwas zu weit herausragt.

Oh -- warte -- Du meinst den Motor. Der hat genug Spiel, da ist noch ca 5mm Abstand drunter. Im Video des NC-Tests kannst Du sehen dass das funktioniert.

Betreffend Encoder bau ich entweder ein Distanzstück unter den Maschinentisch oder ich versetze den Encoder, mal schaun was einfacher geht.


Gruss,

O.

021aet04
22.03.2010, 10:52
Das ist auch ein gutes Bild, da sieht man das sehr gut.

MfG Hannes

Peter1060
22.03.2010, 12:24
moin moin,

Olli, stell mal das Motorrad direkt neben die Fräse, so als Größenvergleich.

Macht schon echt was her, so alles aus Eisen...

Warum sparst Du so mit Schrauben?

Mit Gruß
Peter

Osser
22.03.2010, 14:45
Hi Peter,

mir sind die Schrauben ausgegangen....
:-)


Gruss,

O.

Thomas$
22.03.2010, 15:26
Echt baff das teil ist echt massiv sieht echt gut aus.
zur software frage in wieweit soll das opensource werden. denn das "schrittmotorenmonopol" müsste doch mal aufgelößt werden können
die pc seite die µC seite ist je nach vorlieben des bauers ein verschiedener µC oder hast du schon mal daran gedacht die softwar für einen geringen preis zu verkaufen? um die fräße z.B. zu finanzieren?

Michael_238
22.03.2010, 16:10
Stimmt sieht echt gut aus==>Respekt

Gruß Michael

Peter1060
22.03.2010, 18:49
moin moin,

@Olli,

Schrauben hole ich immer bei:
http://stores.shop.ebay.de/Mueller-s-Schrauben-Shop__W0QQ_armrsZ1

@Thomas$
In meiner Fräse "wetteifern" 7 Stück 8051ziger. Wie bei Olli, einer je Schrittmotorachse, einer in der Anzeige und der MainMC hat noch einen FPU-Knecht.
Da läuft ein G-Codeinterpreter mit Fräsradienkorrektur. Das Prog ist in 8051-Macroassembler geschrieben. Die eigendlichen Rechnungen habe ich allerdings auch als Delphiprog getestet. C mag ich nicht unbedingt.

Ob Schrittmotor oder Servo ist bis zu einem bestimmten Punkt egal.
Linien oder Kreis selber ist auch trivial. Von der aktuellen Position den nächsten Punkt anfahren. Bei Steppern ausrechnen welche Achse wieviele Schritte tun muß und diese dann mit der eingestellten Fahrgeschwindigkeit ausgeben. Wenn ich Olli richtig vestanden habe, sendet er diese Infos an die AchsMC und diese steuern dann den Servo. Das ist z.B. wegen kreisfahren notwendig. Könnte man (ich) bei Steppern eventuell auch machen. Sehe allerdings noch Probleme bei Rampenanfahrt/Rampenstop oder auch beim Kreis.
Richtig interessant wird es erst bei Fräsradienkorrektur...die Schulmathematik ist dann gefragt.

Mit Gruß
Peter

_CH-53_
22.03.2010, 19:08
schaut suuuuuuuuuuuuuuuuuuuuuuper aus (neidisch) mache gerade ein pratikum da haben wir ne cnc fräse mit 3x3 metern fahrweg also 5 meter in jede richtung fom mittelpunkt aus gesehen das ist ein monster ding ich mach mal nen foto und poste das Osser wärst du bereit mir alles möglich an daten zu geben damit ich auch ne servosteuerung bauen kann (hanskizen reichen)
und könnte man die steuerung mit emc2 steuern also diese linux program ???

Mit Gruß
Urs

Thomas$
22.03.2010, 19:18
da war doch mal paar bilder von einem Programm auf dem pc dacht ich
g-code hattest du da nicht zufällig erstellt

bei emc2 musst du dir ein stepper simulator bauen das von osser ist ein g-code interpreter.
@_CH-53_
wenn bei dir emc2 läuft sag mir bitte per pn bescheid dann wäre ich auch bereit dir zu dem thema emc2 und gleichstrom helfen weil ichs auch selber bräuchte

Michael_238
22.03.2010, 19:44
ich habe auch vor eine kleine Fräse (als Versuchsaufbau) zu bauen.
Jetzt hab ich auch ein paar Fragen.
Kann man auch Drehgeber einer alten Kugekmaus verwenden?
Und wie könnte man das in einer Steuerung verwirklichen?

Gruß Michael

Osser
23.03.2010, 09:33
Hi,

heya hoa heya, danke für die vielen Posts.


@Peter:
...ok, nächstes Mal werd ich versuchen dran zu denken die Aciera, so heisst sie, näher ans Moped zu stellen. ;-)
Übrigens:
Bei mir werkeln 4 Prozessoren; 3 ATtiny26 für Achsencoder; 1 ATMega64 als zentraler Prozessor


Schematics
+-------------------------------------------+
v |
+----------------+ | +---------------+ +-------+
| X-Axe | | | X-Axe | | x-Axe |
+-------> | Extern Encoder | --------------+ +--------------------------------- | Encoder Wheel | --- | Motor |
| +----------------+ | +---------------+ +-------+
| | | ^
| | | Switches H
| | v H
| Command | ............. +-----------+ H
| | Position : : Speed | X-Axe | H
| +--------------------------> : : -----------> | power PCB | =================================#
| : Main mC : +-----------+
| : : Direction ^
+--------------------------------------- : : ---------------+
:...........:

Was die Start-/Stoprampe betrifft, ist das bereits implementiert mittels Vertärkungsfaktor Kv. Radiuskorrektur muss noch ;*)

@Thomas:
Die Soft wird keine Open Source Lösung werden, da ich bis jetzt ca. 10 Monate Hinrnschmalz investiert habe.
Wenn die Maschine komplett funktioniert kann ich aber einzelne elektronik Komponenten PCB's herstellen und zu einem angemessenen Preis verkaufen. Dann müssen nur noch die elektr. Komponenten auf die Platine bestückt/gelötet werden.
Gib mir hierfür noch etwas Zeit, da ich keine Halben Sachen machen will...

Das was du auf dem PC gesehen hast ist nur ein serieller Terminal, der das Display des Haupt-µC rendert. Der Editor für den NC-Code läuft also in Wirklichkeit im µC und nicht auf dem PC.

@Michael:
Thanks.
Habe selber mit den Drehgebern einer Maus experimentiert, war aber nicht so richtig erfolgreich, da die bei etwas höheren Drehfrequenzen schnell falsche Werte liefern und somit unbrauchbar sind.
Du must damit anfangen eine PID Regelung zu bauen um den Motor mit einer definierten Geschwindigkeit laufen zu lassen. Das kannst Du sicherlich mit dem Maussensor aufbauen und testen, wenn du den Motor dabei nicht zu schnell drehen lässt.
Mein Drehgeber robotikhardware link (http://www.shop.robotikhardware.de/shop/catalog/product_info.php?cPath=71&products_id=135)

@Urs:
Wie ich schon Thomas antwortete, will ich erst mal schaun das alles geht und dann kann ich PCB's herstellen und für einen angemessenen Betrag zur Verfügung stellen. Das dauert aber noch eben, da ich bereits einige Aufträge im Petto habe die ich zuerst ausführen werde/muss.


Gruss,

O.

Thomas$
23.03.2010, 15:14
den g-code willst du dann mit hand schreiben? oder was soll die datenquelle für die fräß sachen werden? das hab ich noch nicht ganz verstanden

Osser
25.03.2010, 06:59
Hi Thomas,

der G-Kode wird per Hand oder mit CAM erstellt.


Gruss,

O.

Osser
28.03.2010, 19:53
Hi Leser,

voller Stolz kann ich euch jetzt endlich die fertig aufgebaute Hardware präsentieren. Das einzige was jetzt noch fehlt ist ein Encoder für die X-Achse, da ich den bisherigen aus Kollisionstechnischen-Gründen nicht mehr verwenden kann. Der alte X-Encoder sitzt jetzt auf der Z-Achse.

@Peter: Sie steht vor'm Moped wie versprochen....
http://www.secius.com/fileadmin/AsuroFlash/flash/DSC06235_small.JPG
http://www.secius.com/AsuroFlash/flash/DSC06237_small.JPG

Ergo: Noch etwas Lötarbeit und ein paar Kleinigkeiten in der Firmware und dem ersten Fräsversuch steht nichts mehr im Wege.

Jetzt wirds Zeit noch ein paar Stunden vom Wochenende zu geniessen.


Gruss,

O.

Peter1060
29.03.2010, 05:04
moin Olli,

sieht echt geil aus.
Bin auf erste Fräsbilder gespannt.
Wie willst Du die Abdeckungen für X/Y machen?

Mit Gruß
Peter

Osser
29.03.2010, 09:34
Hi Peter,

hab noch keine Idee wie ich die Abdeckung ausführen soll.
Wie machst Du das?


Gruss,

O.

Bammel
29.03.2010, 10:13
Hi,
sieht echt schick aus deine fräse.
weist du was sie in etwa wiegt? sieht ja nciht gerade leicht aus auch wenn sie nicht sehr groß ist.

als abdeckungen könntest du dir mal, ich glaube die heißen, faltbaken ansehen.

Gruß,
Bammel

Osser
29.03.2010, 12:42
Hi Bammel,


Du meist Faltenbalge -- ja ja, kenn ich -- sind schweineteuer weil sie auf Mass angefertigt werden.
Das ist natürlich die beste Lösung nur ich suche eher nach einer günstigeren Alternative. Vielleicht ein imprägnierter ölbeständiger Stoff/Kunststoff oder sowas in der Art. In professionellen Faltenbälgen wird gewebeverstärktes Gummi verwandt, evtl. kann ich so etwas wie LKW-Planen verwenden, nur wo bekommt man das her?

Wenn ich den Schweissausbruch beim hochheben in Relation setze zum Gewicht wiegt sie wohl so um die 50Kg. ;-)

Gruss,

O.

Peter1060
29.03.2010, 13:04
Hi Olli,

spiel doch mal Waage...an eine Hand die Fräse und an die andere Hand das Moped (das Gewicht steht in der Zulassung) ;-)))))

Für den 1. Versuch wurde ich so etwas nehmen:
http://cgi.ebay.de/Japan-Jalousie-Faltjalousie-aus-Papier-160-cm-Flieder_W0QQitemZ190261610527QQcmdZViewItemQQptZDE _Haus_Garten_Inneneinrichtung_Rollos_Jalousien?has h=item2c4c79c81f

Gibts doch auch bei OBI.

Mit Gruß
Peter

BurningBen
29.03.2010, 18:04
Oder du faltest dir nen Faltenbalg selber. Aus Tonkarton und danach mit Klarlack imprägnieren.

Soll gehen, habs selber aber noch nicht versucht.

Michael_238
29.03.2010, 19:50
Sieht echt gut aus.==> Respekt
sind aber wenig Schrauben, oder?
Ich würde dir erstmal Lastwagenplane oder etwas vergleichbares empfehlen.

Gruß Michael

Osser
29.03.2010, 20:29
Hi,

hab gerade ein Testprogramm für die Servos auf der Z-Achse laufen lassen. Leider ist die noch zu schwergängig, da muss ich die Führung noch etwas besser anpassen damit sie leichter läuft. Im Moment läuft der Test nämlich ziemlich "ruckelig" drüber und das sollte eigentlich ohne nennenswertes "Gehüpfe" ablaufen.

@Peter:
Nur so interesse halber. Du hast doch gesagt, dass du mit Current-Loop (TLP113) die Daten überträgst, hast Du da ein Schaltbild für mich, da ich nämlich immer noch mit dem Datenbus kämpfe und evtl. auf ein standard Protokoll ausweichen will. Dann kann ich das Aufwandmässig besser abschätzen.


Gruss,

O.

magic33
29.03.2010, 21:54
massives teil damit kann man ja schon V4A bearbeiten !
hier ist meine
http://www.youtube.com/watch?v=PJIA3-U23Cs

Peter1060
29.03.2010, 22:38
Hi Olli,

anbei die EagleDateien. sieh Dir das mal an. Zur Sicherheit sind die CL-Leitungen, 24V und Fräsmotorspannung alle jeweils im geschirmten Kabel geführt.
MOSI und Clock sind in Reihe, MISO ist parallel geschaltet. Der MISO arbeitet als "verdrahtetes Oder". Die AchsenMCs geben da an richtiger Bitposition Endlagen und Referenz zurück. Der Referenzschalter liegt vor dem Endlagenschalter. Bei Nullanfahrt kann also bis zum Referenzschalter im Eilgang gefahren werden, dann langsam bis zum Endlagenschalter.

Mit Gruß
Peter

Osser
30.03.2010, 08:25
Hi,

@magic33:
Ob ich damit 1.4401 fräsen kann, also flächig, weiss ich nicht sicher. Gravieren sollte wohl gehen, hab da auch schon einen Auftrag von meiner besseren Hälfte erhalten ;-)
Wenns mal soweit ist gibts von mir auch ein Vidscho.

@Peter:
Thanks, das hilft mir weiter. Hab gestern noch ein bischen rumprobiert -- kanns halt nicht lassen -- und habe festgestellt dass die Verbindung mit einem Y-Achsencoder ohne Fehler abläuft aber sobalt ich den Z-Achsencoder anschliesse gibts massive Fehler. Jeder Encoder hat eine Fehler-LED die ungültige Kommandos signalisiert.
Dann hab ich mal zum Spass die Schaltung auf meinem Breadboard angeschlossen und siehe da -- NULL FEHLER!! Hab dann wieder den Z-Achsencoder angeschlossen mit dem selbem schlechten Resultat.
Ok -- also muss ja wohl was auf dem PCB falsch sein dacht ich so ... Eben mal mit einem Skalpell die Fädeldrähte etwas auseinandergezogen und kam dabei an den unbelegten Reset PIN der via internem pullup auf Vcc liegt. Siehe da, auf einmal geht alles ohne Fehler!!!!
Toll, scheinbar funktioniert der eine Prozessor nur mit externem Pullup am Resetpin, die anderen Schaltungen brauchen den Pullup nicht.
Ach ja..... der Teufel steckt im Detail..... :-|
ERGO: Pullups an alle Resetpins.

Wenn ich später mein Bedienpanel anschliesse kann ich evtl deine Schaltung adaptieren, da ich das Panel mit I2C anbinden will.

Stay tuned.

Gruss,

Olli

Peter1060
30.03.2010, 10:31
Hi Olli,

denk aber dran: SPI ist uni- und I2C ist bi-direktional...

Mit Gruß
Peter

Hessibaby
30.03.2010, 10:49
Faltenbälge kannst Du aus Kunstleder (Skai) machen. Falten und die Falten mit einem Tacker am Ende zumachen.
Das Zeug kostet beim Tedox 7 Euro je Meter und ist 1,4 m breit.

BurningBen
30.03.2010, 16:34
Wie meinst du das mit dem "am Ende zumachen" ?

Am Knick, an der Seite, oder wie?

Osser
06.04.2010, 11:05
Hi,

so, das Wochenende war wieder fruchtbar, nicht furchtbar %-)

Status Encoder:
Endlich funktioniert die Kommunikation mit den Achsencodern reibungslos. Um die Komminikationskanäle (Leitungen) zu entstören habe ich jetzt 1K Widerstände auf den bidirektionalen Datenleitungen des Datenbusses in Serie geschaltet und die unidirektionalen Signalleitungen WR und RDY auf der jeweiligen Empfängerseite mit 10K seriell terminiert (10K ergaben die beste Terminierung).
Auf den Datenleitungen hatte ich eine Störungskaskade auflaufend von LSB zu MSB (die MSB Datenleitung liegt neben WR/RDY auf dem Flachbandkabel). Beim Messen der einzelnen Datenleitungen mit dem Oszi ergab sich ein stets höherer Uss Wert um so näher ich Richtung MSB Leitung kam.
Also hab ich die MSB Leitung versuchsweise mit einem 560pF Kondensator terminiert und siehe da, das Signal-Rauschverhältnis geht so weit zurück, dass aller Datenverkehr ohne Fehler abläuft.

Pfuhhhhhh.. endlich!

Leider hab ich jetzt noch Probleme mit dem GP1A038RBK. Die Position von Aufnehmer zu Encoderscheibe ist enorm kritisch und nur sehr schwer einzustellen, weil eine Veränderung von 0.1mm über Gut oder Schlecht entscheiden kann.
Zur Information, ich benutze den hier robotikhardware GP1A038RBK (http://www.shop.robotikhardware.de/shop/catalog/product_info.php?cPath=71&products_id=135)
Die Artikel über das DING, die ich finden konnte sprechen alle die selbe Sprache -- sehr fehleranfällig!

Bei einer Achse (Z-Achse) hab ich die Position scheinbar exact gefunden und die Reglung läuft dementsprechend perfekt.


Status NC-Prozessor, Integrator, Editor, DNC:
Die ersten 3-Achs NC-Programme habe ich laufen lassen und abgesehen von den Fehlern in der Positionierung in X und Y läuft das schon ganz ordentlich. Die Z-Achse positioniert wie erwartet 1A, da der Bleistift auf der exact gleichen Stelle wieder aufsetzt wie zuvor, gemessen hab ich bis jetzt noch nicht -- nur Augenmass.

Die neu implementierten G-Funktionen:
G00 Schnellvorschub
G90 Absolutmass
G91 Inkrementalmass
G52 Absolute Nullpunktverschiebung 1

Laden und speichern via VT525 Link ist Terminalseitig komplett implementiert, es ist ein Kommando eingebaut um Dateien zu uploaden oder zu downloaden, Verzeichnisinhalte zu lesen etc.
Auf der mC Seite geht laden und speichern auch einigermassen, aber beim Laden sind die Daten ab Zeilenummer 15 nicht mehr i.O. was ich aber auf einen Fehler im dynamischen Speicherallokieren zurückführe. Da werd ich wohl auf statisch angelegte Arrays ausweichen um das erst mal ausschliessen zu können.
Der DNC Betrieb het einen eigenen Menupunkt bekommen im AUTOMATISCH-Menu und läd die Daten von der eingegebenen Datei via VT525 Link auch komplett nach, bei der Ausführung hapert es aber noch, da ich hier wohl noch einen Fehler drin hab.


Langer Rede, kurzer Sinn...
Wenn die Encoder sauber funktionieren oder vielleicht sogar 1A und DNC so arbeitet wie ich dass will, steht der ersten Fräsarbeit nichts mehr im Weg.


Gruss,

O.

Osser
07.04.2010, 07:18
Hi,

hab die Encoder gestern noch ein bischen besser ausrichten können, jetzt laufen die X- und Y-Achse schon besser.
Das Problem mit den Programmzeilen die nach dem einlesen Korrupt sind hab ich noch nicht im Griff. Scheinbar klappt bei höheren Programmzeilennummern irgent etwas nicht so wie ich das erwarte. Wenn ich das Programm per Hand eingebe hab ich gestern festgestellt dass der gleiche Fehler auftritt -- hat dann also wohl nichts mit dem Downloadvorgang zu tun.

Naja, ich bleib dran und werd das auch noch auf die Rehie bekommen!

Bis zum nächsten Post.

Gruss,

Olli

Peter1060
07.04.2010, 10:50
Hi Olli, habe Stress, mal auf die Schnelle, baue für die Dehgeberscheiben Abdeckungen damit die im Dunkeln arbeiten. Und variiere den LED-Strom, eventuell sind die LEDs zu hell.
Mit Gruß
Peter

Osser
09.04.2010, 14:40
Hi,

@Peter:
Werd mal testen ob die Encoder mit anderem Vorwiderstand besser functionieren.


Vidscho 1: Grafische Simulation mit Integrator-Testproggi

http://secius.com/fileadmin/AsuroFlash/flash/ErsterDNC-Sim.mp4

Vidscho 2: Grafische Simulation (DNC Modus!!) auf dem VT525 Terminal
Der erste Test der DNC-Logik!!!!

http://secius.com/fileadmin/AsuroFlash/flash/ErsterDNC-Testlauf.mp4

Die Fehler in der Grafik kommen nicht vom mC sondern vom Terminal selbst, da der Dispatcher noch nicht 100 Pro funktioniert.


Vidschos von der Maschine in Aktion folgen....


Die fertige Leistungsplatine:
35720

Gruss,

O.

Osser
10.04.2010, 14:54
Hi,


DNC funtioniert jetzt wie es soll.

..und hier das versprochene Video:

http://secius.com/fileadmin/AsuroFlash/flash/ErsterDNC-Trockenlauf.mp4

Die Erste Gravur:
http://www.secius.com/fileadmin/AsuroFlash/flash/DSC06260_small.JPG


Hab leider nicht mehr Zeit um ausführlicher zu schreiben.


Gruss,

O.

Osser
12.04.2010, 10:32
Hi,


für den ersten Versuch liefert die Maschine schon ganz zufriedenstellende Resultate. Das Proggi zum gravieren hat ca. 8000 Zeilen NC-Code der via DNC eingespielt wird.

Dabei ergaben sich ein paar Probleme/Herausforderungen:
Nach ca. 10 Zeilen Kode lief der Stack über.
Die Datenübertragung haperte nach etwa 100 Zeilen und lief nicht mehr weiter.
Die Achsen verfahren nicht exact syncron.
Nach der Abarbeitung eines kürzeren NC-Programms war das UI eingefroren.
Daraufhin hab ich die Logikpfade des Kodes noch einmal genauer unter die Lupe genommen um die Zeitlichen Abfolgen besser abschätzen zu können.
Dabei fiel mir auf dass zwei Strukturen, die aktuelle Zustände des NC-Dispatchers und der seriellen Nachladelogik halten, nicht "volatile" deklariert waren. Das muss natürlich so deklariert werden, da bei DNC Nachladebetrieb massiv parallel gearbeitet wird. Es werden gleichzeitig Daten in den seriellen Puffer geladen, die ASCII Daten werden dann Geparst und in interne strukturen überführt und danach abgearbeitet.
Um mehr SRAM frei zu bekommen habe ich dann noch eine Optimaliserungsrunde auf den Kode losgelassen und ca 250 Byte SRAM Speicher eingespart durch auslagern aller Textkonstanten ins FLASH.
Der NC-Dispatcher syncronisiert die Achsen noch nicht tollerierbar genau miteinender da noch keine Endlagenkontrolle vorgesehen war.

Der Erfolg der Oprtimalisierung ist jetzt:
Bis auf die Fehler beim Anzeigen auf dem Terminal geht die Chose jetzt ganz ordentlich, kein Hängen mehr, kein Stack überlauf mehr.

Bei der Gravur liefen alle 8000 Zeilen ohne weitere Probleme durch.


Gruss,

Olli

Osser
19.04.2010, 10:51
Hi,


hab am Wochenende wieder mal etwas Zeit in die Optimalisierung der Maschine gesteckt.
Ich habe der Steuerung noch eine Validator verpasst der die integrator Position prüft und auf Encoderfehler checkt. Mit drei neuen Parametern lege ich fest wie genau die syncronisation sein soll und wie viele Fehler auf den Encodern tollerierbar sind.
Die Positionskontrolle arbeitet mit zwei Parametern; PAR_SA und PAR_TS womit der Schleppabstand (PAR_SA) und der Regeltimeout (PAR_TS) festgelegt werden. Der eigentliche Grund war aber nicht um bei Positionierfehlern auf NOT-AUS zu schalten, sondern die Achsen miteinander sauber zu syncronisieren. Der Vorteil liegt jetzt aber auch in der Erkennung von Stalled Zuständen, d.H. wenn ich z.B. einen Motor fest halte schaltet die Steuerung auf NOT-AUS nach dem PAR_TS verlaufen ist.

@Peter:
Die Encoder machen leider immer noch Probleme. Hab einen Kallibrierpoti eingelötet und auf 330 Ohm eingestellt, aber leider nicht mit durchschlagendem Erfolg.
Nur mal interessehalber, hast Du Widerstände in den Leitungen vom Drehgeber zum mC?


Gruss,

O.

Peter1060
19.04.2010, 11:51
Hi Olli,

der 1. Satz in der Doku zum Sensor:

1. Linear encoder for reading linear scale.

sagt doch alles.

Habe mir aus der Bucht für 1€ einen Haidenheimgeber (1000cpr) geangelt, da sind die Fotodioden leicht im Kreisbogen angeordnet.

Bei einem DC-Servomotor steht auf dem Sensor kein Typ drauf, der macht aber schon mit 25mm Durchmesser 400 cpr.

Das ein Shop Scheibe+Sensor verkauft bedeutet ja noch lange nicht, daß das auch passt.
Meine Leitungen vom Geber zum MC sind doch nur 10cm lang, daher keine Widerstände.

Mit Gruß
Peter

Osser
20.04.2010, 08:40
Hi Peter,


ja ich weis, die sind eigentlich für Linearmasstäbe gedacht....
Die Heidenhain Geber für 1€ sind schon ein Glücksgriff, hab auch interessehalber gleich selber mal in der Bay geschaut aber keine drei gleichen Geber finden können.


Das ein Shop Scheibe+Sensor verkauft bedeutet ja noch lange nicht, daß das auch passt.
q.e.d. ;-)

Meine Aufnehmer funktionieren zwar alle, aber sind halt leider so positionskritisch in Bezug auf Encoderscheibe--Aufnehmer Position, dass es immer wieder mal Ausreiser gibt.
Ich werd wohl nicht drum rum kommen eine Positionierhilfe zu bauen die auf die Welle zentriert.
Sorry für das gejammer über meine Encoder. Manchmal muss der Frust halt raus um platz für neue Ideen zu schaffen... :?


cu

O.

Peter1060
24.04.2010, 10:14
moin Olli,

habe nochmal TIEF in die Tasche gegriffen und aus der Bucht einen Drehgeber mit 4096cpr geangelt, für 3,15€ :-))))
Bei der Auswertung geht nur noch im Timerinterrupt (alle20µs) richtig, bei pollen nur Mist.

>>Encoderscheibe--Aufnehmer Position
der Fehler ist doch immer derselbe, daher würde ich auf die Auswertung als Fehlerquelle tippen. Die Signalübertragung sollte als RS485 erfolgen.

Gleiche Drehgeber sind zwar schön, müssen doch aber nicht sein.

Mit Gruß
Peter

hellobello
27.04.2010, 15:20
Hallo,
ich habe schon mal vor Jahren eine funktionierende CNC Fräse mit Steppern gebaut. Allerdings waren hochwertige Motoren sowie eine gescheite Stepperkarte damals für mich unerschwinglich (ich benutzte die Stepperkarte vom großen C mit 800mA Leistung) darum musste ich die Stepper untersetzen, und alle Verfahrwege waren quälend langsam. Deshalb verschwand das Projekt für nunmehr 7 Jahre im Keller. Damals hatte ich auch noch keine Ahnung von µC, PWM, Servomotoren...

Nun habe ich praktischerweise diesen Fred gefunden, und möchte mich gleich mal beteiligen.

Vor einiger Zeit dachte ich nämlich daran die Fräse zu reaktivieren, und auf Servos umzubauen, was in meinem Kopf bereits fertig ist :-)

Allerdings macht mir die Syncronisation der Achsen noch Kopfschmerzen.
Ich dachte an folgende Vorgehensweise:
z.B. Möchte ich eine 45° Diagonale fräsen.
Also sagt der µC dem Servo X: "Fahre du mit 100% PWM soundsoviel Einheiten vor, stoppe dann." zum Servo Y: "Fahre du gleichzeitig mit 100% PWM gleichviel Einheiten vor, stoppe dann."

Also fahren beide los, aber aus welchen Gründen auch immer ist einer der Motore etwas langsamer. Das Ergebnis würde dann irgendwie so aussehen:

http://www.hellobello.de/Bilder/roboternetz/1ster-Fall.jpg

Rot= gewünschte Gerade
Grün= tatsächlich gefahrene Strecke

Meine Lösung wäre es wenn alle Motore in regelmäßigen Abständen auf deren Position abgefragt werden, und entsprechende Korrekturwerte an sie gesendet würden.
Also: "Motor X ist etwas langsamer als Motor Y, deshalb sollte Motor Y bis zur nächsten Abfrage mit 10% weniger Leistung fahren, also Motor Y = 90% PWM, Motor X 100% PWM". Diese Werte werden dann immer wieder Aktualisiert, und Korrigiert. Dann würde das Ergebnis in etwa so aussehen:

http://www.hellobello.de/Bilder/roboternetz/2ter-Fall.jpg

Wenn man nun dies sehr fein einstellen Würde könnte man eine ausreichend genaue Gerade erzeugen.
Eine weitere Achse kann man ja auf das gleiche Prinzip einflechten.

Hast du eine Lösung für dieses Problem?

MfG, Michael

Yossarian
27.04.2010, 19:59
Hallo
Bresenham

Mit freundlichen Grüßen
Benno

Osser
03.05.2010, 07:07
Hi,

@hellobello:
mach dich bitte erst mit den Grundlagen der Regelungstechnik vertraut:
siehe PID-Regler (http://www.rn-wissen.de/index.php/PID-Regler)
siehe Regelungstechnik (http://www.rn-wissen.de/index.php/Regelungstechnik)

Früher im Thread (nicht Fred! obwohl es ja tatsächlich so ähnlich klingt :) ) hab ich den Aufbau meiner Servosteuerung angerissen. Lies da bitte erst mal nach, vorher machen weitere Erläuterungen keinen Sinn.


@Yossarian:
Für ein "Roboter Genie" finde ich deine Antwort etwas seltsam!


Gruss,

O.

hellobello
03.05.2010, 11:57
Ich musste bei Yossarians Antwort auch ein paar Sekunden überlegen was damit gemeint ist. Den Algorithmus kannte ich zwar, aber der Name war mir kein Begriff. Wiki half.

Damit kann ich schonmal ein paar Experimente fahren. Die dritte Achse einbinden ist ja kein problem gewesen.

Danke schonmal (beiden ;-) )

Osser
11.05.2010, 11:46
Hi,


endlich hab ich den Fehler auf den Encodern eliminiert. Es war ein Zusammenspiel verschiedener Fehler die zu den Aussetzern geführt haben.

1) Der Trimpotti zum einstellen der LED-Vorwiderstände war zu hoch eingestellt.
2) Der mC hat mit einer zu niedrigen Tastfrequenz gearbeitet (45KHz) weshalb manchmal einige Flanken verloren gegangen sind.

Die neue Version der Firmware benutzt jetzt den Pin-Change-Interrupt und "übersieht" seitdem keine Flanken mehr und die Reduktion des Vorwiderstands der Diode auf weniger als 330 Ohm hat zur Folge das auch der Sensor keine Flanken mehr "übersieht".
Der Grund für die ursprünglich angedachte Tastfrequenz von 45KHz war meine Annahme, dass der Sensor 480 Flankenwechsel pro Umdrehung ausgibt. Es sind aber in Wirklichkeit 2400 was eine 5-fach höhere Tastfrequenz bedingt. Deshalb habe ich die Firmware auf die Benutzung des Pin-Change-Interrupt umgebaut, die Schaltung prellt ja nicht weshalb das auch problemlos geht.

Warum 2400 Impulse kommen ist mir immernoch unklar, aber es ist auf allen Encodern so und kommt letztendlich nur der Regelgüte zugute.


Projekt Bedienpanel
Mein neues/nächstes Projekt ist ein Bedienpanel für die manuelle Bedienung der Maschine.
Dazu wollte ich erst einen Apem 3D-Joystick benutzen, habe mich aber anders entschieden weil mir der Anschaffungswiderstand von 150E zu hoch war. Das Panel steuert bei manuellen Bewegungen die X/Y-Achsen mittels Joystick (ein alter Potentiometer Joystick der bei mir rumgelegen hat) und hat einen Modus um von X-/Y-Achse auf Z-Achse umzuschalten. Zusätzlich kann von Geschwindigkeitsvorsteuerung auf Wegvorsteuerung umgeschaltet werden um nicht die Verfahrgeschwindigkeit mit dem Joystick festzulegen sondern den Weg der Achsen. Das ist dann der Handradmodus, da sich die Achsen verhalten als ob ein Handrad gedreht wird.
Auf dem Panel ist ein 16x2 Zeichen Display das in der ersten Zeile Infos wie Speedoverride und Feedoverride anzeigt womit die programmierten Werte mit zwei Tasten in 10% Schritten erhöht und verringert werden können.
In der zweiten Displayzeile will ich Werkzeugwechsel Texte anzeigen lassen oder sonstige Kommentare aus dem NC-Programm.
Zwei weitere Tasten sind für NC-Start/NC-Pause und NC-Stop vorgesehen mit einer LED im NC-Start/Pause schalter die Leuchtet wenn ein Proggi läuft, blinkt bei Pause und ist aus wenn kein Programm aktiv ist.
Auf das Panel kommt auch noch der NOT-AUS Schalter damit ich da schnell draufhaun kann wenns mal schief geht ;)
Die Anbindung an den Hauptprozessor erfolgt mit 6 Leitungen, 2x Spannungsversorgung, 2x I2C und die Sicherheitskette (NOT-AUS). Das ganze läuft auf einem ATtiny26 der jetzt gerade mal noch 20 Byte Flash frei hat.


Auf dem Breadboard ist die Schaltung bereits funktionstüchtig.


Werd demnächst mal Bilder oder ein Vidscho davon einstellen.


Gruss,

O.

Osser
21.05.2010, 08:02
Hi,


hier mal eben das Layout des Bedienpanel PCB's in der Draufsicht.
Das wird dann auf eine doppelseitige Karte gefräst wovon die eine Seite seit gestern fertig ist. Hierbei hat sich herausgestellt, dass die Genauigkeit der Regelung in Ordnung ist, die Führungen aber nicht ausreichend genau eingestellt sind. Die Folge ist ein Versatz, bzw. kleine Fehler in den gefrästen Konturen.

35721
Abb 1: Layout


Sobald das doppelseitige PCB fertig ist gibts wieder Fotos.


Gruss,

O.

021aet04
23.05.2010, 12:22
Ich hätte einen Verbesserungsvorschlag für deine PCB. Ist C1 der Entstörkondensator für den µC? Wenn ja ist er falsch. Der müsste so nah als möglich an den µC. Wenn du SMD verarbeiten kannst würde ich einen SMD Kondensator nehmen. SMD ist aber nicht unbedingt nötig.
Im Anhang ist die PCB von dir. Im gelb eingezeichneten Bereich würde ich die Leiterbahnen so ändern wie die hellblauen Leitungen sind. Die restliche Kupferfläche würde ich als GND Fläche nehmen (weniger abzutragen und gelichzeitig etwas für EMV getan).

Bei JP1-JP3 würde ich die Leiterbahnen nur auf einem Layer hingeben. Ist leichter zu löten. Kenne ich aus eigener Erfahrung. Oder du verwendest Kupfernieten (z.B. Bungard) Hier ist die Presse http://www.bungard.de/index2.php?option=com_content&do_pdf=1&id=48
Bei Reichelt gibt es die Nieten. Die Presse benötigst du nicht unbedingt.

MfG Hannes

Michael_238
23.05.2010, 18:36
WOW ich sehe nur Banhof :-s

Hat von euch einer einen guten link wo man sich ein wenig wissen über das ganze zeugs (Platinen, mC, usw.) aneignen kann?
Mich würde die ganze Elektroniksachen schon lange mal interresieren wie das hinhaut, den als Industeriemechanicker lernt man darüber nicht besonders viel.
Im voraus schon mal danke 8-[

Gruß Michael

Hessibaby
25.05.2010, 16:07
@Michael_238

http://www.rn-wissen.de/index.php/Hauptseite

Osser
01.06.2010, 21:42
Hi @all,

@021aet04
Danke, war aber leider schon fertig gefräst. Der Kondensator sollte immer so nah wie möglich an den mC, irgentwas muss man halt immer falsch machen. #-o Geht aber zum Glück trotzdem.

@Peter

Bin auf erste Fräsbilder gespannt... (29.03.2010, 06:04)
=;

Die Fräsmaschine beim Fräsen der unteren Platinenseite für das obige Bedienpanel.


3x Zeitraffer

https://secius.com/fileadmin/media/cnc_MOV06298.mp4

So siehts zusammengebaut aus...
https://secius.com/fileadmin/img/DSC06300.png

Noch auf dem Breadboard...
https://secius.com/fileadmin/img/DSC06297.png


Gruss,

Olli

Osser
01.07.2010, 22:48
Hi,

habe mal wieder was zu Melden ;)


Das Bedienpanel ist schon einige Zeit fertig. Habe aber ganz vergessen mal wieder was zu dokumentieren, so dass ihr das auch sehen/lesesen könnt.

Also hier das Bedienpanel noch ohne Abschlussplatten vorne und hinten.
http://www.secius.com/fileadmin/AsuroFlash/flash/DSC06335_small.JPG
http://www.secius.com/fileadmin/AsuroFlash/flash/DSC06336_small.JPG

Hoffe es gefällt.

Ach ja....
Die Fräsfehler bei den Tastern sind nur unschwer zu übersehen und rühren von dem Y-Encoder der etwas verstellt war nach einer unsanfte Handbewegung meinerseits. Hätte ich das vor dem fräsen korrigiert, wäre das Resultat fehlerfrei gewesen.
Der Fehler beim Display kam zu Stande durch einen Konstruktionsfehler. Eagle hatte falsche Geometriedaten für mein Display gespeichert und da Computer alles machen was man Ihnen sagt, auch ist das unsinnig, sie machen das halt trotzdem ohne zu überlegen.
In der Hinsicht sind Menschen halt noch weit voraus....lediglich nachdenken müssen sie dann schon noch...

Genau das hatte ich vergessen zu tun -- nachdenken.

Shit happens :Haue


Gruss,

Olli

021aet04
01.07.2010, 22:53
Gefällt mir . Sieht wirklich gut aus. Fräsfehler sind normal. Habe auch schon genug Fehler gemacht (speziell beim Platinen fräsen)

MfG Hannes

Osser
01.07.2010, 23:01
Hey Hannes,

bist ja noch spät auf.


Gruss nach Österreich,

Olli

ActiveRobo
09.03.2012, 15:36
Ich weiß das Thema war vor 2 jahren aktiv aber bin zufällig darauf gestoßen und wollte wissen was das eigentlich für ein Projekt war und was dabei zu programmieren war, denn ich bin auf dem Gebiet der Programmierun ein "Newbie" :)

021aet04
10.03.2012, 08:32
...wollte wissen was das eigentlich für ein Projekt war...
Steht im Threadnamen


...und was dabei zu programmieren war, denn ich bin auf dem Gebiet der Programmierun ein "Newbie"
Thread durchlesen

MfG Hannes

Langkieler
20.03.2013, 10:02
Moin.
Der neue in diesem Forum, aber nicht so ganz neu in der Materie... Darüber später mal mehr. Hierher bin ich über die Suche nach Selbstbau-Konzepten mit dem Suchbegriff Gleichstrom-Servomotor gekommen. Auf jeden Fall, das kann ich aus langer Erfahrung sagen, das Richtige, wenn es um Laufruhe, Vermeidung von Schrittfehlern etc. geht - im Gegenteil, man muß aufpassen, daß man sich mit den kraftvolleren Servomotoren nicht die Maschine verbeult.

Nun aber zum Aufhänger, warum ich mich an diesem Beitrag einklinke: Ich bau mir gerade privat eine neue 3-achsige, mit Optionen zu mehr als 4, 5, ... - schließlich heißt das hier Roboternetz.

Bei den Recherchen zur Bauelementebeschaffung fiel mir auf, daß es von den wenigsten Anbietern Angaben zur Linearität und vor allem zur absoluten Genauigkeit von Antriebsspindeln gibt. Besonders bei Kugelumlaufspindeln gibt es den Unterschied zwischn gerollt und geschliffen, und den merkt man dann natürlich im Preis. Wobei auch der noch nichts über die tatsächliche Genauigkeit aussagt. Ein ausgewiesener Experte aus meinem Bekanntenkreis (er ist wirklich einer) stellte bei Kugelumlaufspindeln, deren Mutter nach Steigung und Drehwinkel um exakt 500mm bewegt worden sein sollte, Fehler von bis zu 0.75 mm fest. Dafür gibt es bei Azubis schon im ersten Lehrjahr mahnende Worte... Gewindestangen sind hinsichtlich der Genauigkeit noch einmal ne Nummer vergnügungssteuerpflichtiger - dafür werden sie ja weder hergestellt noch spezifiziert.

Daher hab ich mal weitergesucht und bin auf lineare Weggeber gekommen. Da gibt es nicht nur die linearen Glasmeßstäbe, sondern auch elektromagnetisch arbeitende - ähnlich einem Tonband, auf das kalibriert S/N-Wechsel geschrieben sind, die dann mit zwei um einige Bogenminuten versetzten Sensoren mit großer Präzision ausgelesen werden können. Das ganze wird antriebsnah an / in den Linearantrieben eingebaut, sodaß man nicht den angenommenen, sondern den tatsächlichen Ist-Wert der Achse messen kann.

Hast Du mal die absolute Genauigkeit Deines Aufbaus gemessen? Und wie bringst Du ggf. die mechanische Kennlinie Deines Antriebs, soweit bekannt, in die Positionierung ein?

Gruß,
U.

Osser
23.04.2013, 20:09
Hi Langkieler,
kaum ist ein Monat vergangen schon kommt die Antwort. Irgentwie hab ich keine Benachrichtigung erhalten das eine neue Antwort im Thread eingegangen ist....


...wie bringst Du ggf. die mechanische Kennlinie Deines Antriebs, soweit bekannt, in die Positionierung ein?

Ich habe einfach Quadrate gefräst mit bekannten Abmaßen und mit einer Schieblehre nachgemessen. Die Maße waren so weit ich mich erinnere nahe am SOLL, aber natürlich nicht völlig Exakt.
Die Kenngrößen werden über Parameter der Steuerung im UI (User Interface) via VT525 Terminal eingegeben. Das UI was Du hier siehst läuft auf dem PC und emuliert einen VT525 Terminal.
Die Steuerung sendet dann die Escape-Sequenzen via RS232 im Digital Equipment VT525 Dialekt an das Terminal und rendert so das UI.
Das Terminal ist natürlich auch selbst geschrieben wie alles in/an der CNC-Maschine.


Eingabe von Achsparametern via VT525 Terminal (Threadbeitrag)
https://www.roboternetz.de/community/threads/42354-CNC-mit-Gleichstrommotoren?p=437161&viewfull=1#post437161

Für jede Achse gibt es ein Parameterset:
25210
Kp, Ki, Kd, Kv das ist denke ich klar
PWM MIN F minimale PWM Frequenz "forward"; 0=ignorieren
PWM MIN B minimal PWM Frequenz "backward"; 0=ignorieren
AXE DIR Positive Richtung der Achse (vorwärts +1/rückwärts -1)
UKS Umkehrspiel der Achse (Spiel im Spindel/Mutter Verbund)

und in den globalen Parametern wird das Folgende eingestellt:
25211
SA Schleppabstand; Vorlaufwert der programmierten NC-Programm Position zur wirklichen Verfahrposition
TS Timeout Schleppabstand; Legt den Schwellenwert fest bis ein Fehler erkannt wird
EF Error Flag; Counter der angibt wann die Steuerung mit einem Regelfehler aussteigen soll.
PWM_MAX Der obere Grenzfrequenz für PWM; War wegen den Optokopplern nötig, da die bei einer bestimmten Frequenz aussteigen.
SPI WRD SPI write delay; Der zweite Atmega kontrolliert die Achspositionenen und braucht halt etwas bis er fertig ist.
SPI SPEED Damit wird die Übertragungsfrequenz zum zweiten ATMega eingestellt (0=Max Speed)
EENC SNAPD External Encoder Snapshot Delay; Finetuning beim lesen der einzelnen Koordinatendaten (X,Y,Z)

Die µC sind mit meiner selbstgeschriebenen IDE programmiert und geflasht(Mein Blog):
http://www.secius.com/AsuroFlash/archives/28
(https://www.secius.com/index.php?id=22)

Der Blog zur IDE
https://www.roboternetz.de/community/threads/22627-Alternative-zu-Flashnnn-exe


Gruss,
Osser

Langkieler
24.04.2013, 07:24
Hallo, Osser,
danke für die Antwort - sie zeigt, daß Du die aus nicht ganz perfekter Mechanik herrührenden Fehler berücksichtigst und korrigierst. Das läßt sich ja leider nicht von jeder Steuerung behaupten.

Gruß,
- der Langkieler -

Osser
11.01.2022, 09:57
Es ist schon ein Weilchern her

das ich meine CNC Fräsmaschine gebaut habe. Ursprünglich war mein Ziel eine Machine zu bauen die von mit komplett selbst hergestellt ist, das bedeutet also alle mechanische Bauteile aus Standardwerkstoffen (in meinem Fall Stahl) selbst herstellen mit den mir zur Verfügung stehenden Maschinen. Dann sollten die Antriebe aus gewöhnlichen DC Motoren mit angekoppelter Positionsgebern erstellt werden wodurch ein selbst aufgebauter Servo entsteht. Schliesslich war mein Ziel die Steuerung der Servos, des Interpolators und des Positionsintegrators in einem kleinen! ATMega mit gerade einmal 4096 Byte Arbeitspeicher zu implementieren.

Das habe ich 2014 fertiggestellt und das Resultat ist auf der Seite "Meine CNC Fräsmaschine (https://www.secius.com/index.php?id=8)" zu sehen.




Vor Kurzem war ich dann mal wieder im Keller und sah die Maschine dort stehen. Sie war leider schon leicht angerostet in der Zwischenzeit -- ojeh.
Da ich am liebsten mit neuen Entwicklungen beschäftige und mein interesse am fertigen Proidukt ziemlich schnell schwindet, stand die Maschine leider aus diesem Grund in einem etwas traurigen Zustand auf ihrem Tisch.

Ich dachte mir im vorbeigehen das ich doch das Projekt in die jetzige Zeit transformieren könnte und die Steuerung die bislang in einem ATMega64 werkelte auf eine neuere Plattform migrieren könnte.
Die alte ATMega Platform hat zwar einigermaßen funktioniert, aber das Entwickeln der Software als Monolith ist schon ziemlich aufwändig.
Das Arbeiten auf dem µC war einigermaßen performant, aber es gibt schon noch einiges an Potential nach oben.

Ihr könnt euch ja vielleicht schon denken wofür ich mich entschieden habe :)

Ich werde also in der nächsten Zeit hier Berichten welche Fortschritte ich gemacht habe.

Stay Tuned

Langkieler
11.01.2022, 11:13
Es ist schon ein Weilchern her
...
Stay Tuned

Schlappe noch nicht mal neun Jahre.... :) Das Leben saust so wuuuusch durch. Bin gespannt.

Osser
11.01.2022, 14:37
Ja manchmal geht das Schneller als man denkt.

:cool:

Osser
11.01.2022, 19:11
Hi,

ich habe die Maschine schon in ihre Bestandteile zerlegt und mir drei neue Drehgeber besorgt.
Da ich zuvor einen ziemlich bunten Mix an Drehgebern hatte
X-Achse; ROQ425; 2048 Schritte; EnDat; 5V
Y-Achse; ROQ425; 2048 Schtitte; EnDat; 5V
Z-Achse; ROQ424; 512 Schritte; SSI; 10-30V
will ich bei der neuen Steuerung mal Hardwareseitig mit einheitlichen Bedingungen starten.

Ehrlich gesagt waren die beiden alten Drehgeber defekt seit ich aus versehen 12V auf die 5V Drehgeber gegeben habe.

-- Toast -- ;)

Naja, wie dem auch sei. Ich habe mir bereits drei neue Drehgeber besorgt die jetzt alle die gleichen Parameter aufweisen.
35705
Alle SSI
Alle 10-30V
Alle von einer Dumpfbacke einfach 20cm hinter dem Drehgeber abgezwickt. :confused:

Dafür haben sie aber auch nur 40€ gekostet, was für einen Heidenhain Drehgeber schon ein top Preis ist.
Ich hab einen Drehgeber an die ausgebaute Achse angeflanscht um dann die ersten Tests zu fahren zu können. Als Rechner Hardware habe ich mir einen Raspi 4 gehohlt mit 1GiB Arbeitspeicher der für die Zwecke mehr als ausreichend sein sollte.
35706

Ich habe im Netz viel gelesen das es mit einem regulären Linux nicht möglich wäre eine CNC Steuerung zu bauen. Dort war dann zum Beispiel die Rede von z.B. RTOS als Betriebsystem der Wahl.
Ich bezweifle eigentlich sehr stark das mir das "normale" Linux derart Probleme bereitet wenn ich damit einen Regelzyklus aufbaue.
Wie ihr ja vielleicht noch wißt ist meine alte Steuerung in einem 8 Bit µC mit 4KiB Arbeitspeicher und 64Kib Flash gelaufen bei 16MHz Takt.

Da hat der kleine Raspi doch extrem viel mehr zu bieten! Wäre gelacht wenn der das nicht wuppt.

Okay, so viel für heute.

Rabenauge
12.01.2022, 06:53
Hi,

Ich bezweifle eigentlich sehr stark das mir das "normale" Linux derart Probleme bereitet wenn ich damit einen Regelzyklus aufbaue.
Wie ihr ja vielleicht noch wißt ist meine alte Steuerung in einem 8 Bit µC mit 4KiB Arbeitspeicher und 64Kib Flash gelaufen bei 16MHz Takt.

Da hat der kleine Raspi doch extrem viel mehr zu bieten! Wäre gelacht wenn der das nicht wuppt.

Okay, so viel für heute.

Du übersiehst da ne Kleinigkeit: im Gegensatz zu nem kleinen 8bitter ist Linux bzw, ein Raspi mit Linux kein Echtzeit-System.
Für Ubuntu Linux gab es mal nen Echtzeit-Kernel, glaub aber, der wurde eingestellt. Das war bei Ubuntu Studio, bis 16 oder so.
Ich glaub aber nicht, dass man den auf den Raspi bekäme.
Sachen, die ein Atmel mit links macht (wie z.B. an mehreren Pins gleichzeitig ne PWM auszugeben) kann ein Raspi nicht.
Aber versuchs mal (und berichte drüber), ich halts durchas für möglich, dass sich diese Probleme mit der wesentlich höheren Arbeitsgeschwindigkeit grösstenteils überspielen lassen, so dass man es praktisch nicht mehr merkt.

Osser
12.01.2022, 08:18
Hi Sly,

nein nein, das ist mir schon bewust.
Ich gehe einfach nur davon aus das die Zeit die mir durch den Scheduler geklaut wird, im Verhältnis zu der zusammenhängenden, nicht ins Gewicht fällt.

Ich habe mir vorgenommen die Steuerung in C zu realisieren, die Kommunikation mit SSI erst mal auch in C direkt zu programmieren. Pins hab ich ja ausreichend zur Verfügung.
Da ich nur 5V RS485 Treiber vorrätig habe brauchts dann noch ein Pegelwandlerchen oder einfach einen Spannungsteiler.
Mal sehen.

Als erstes entwickel ich mir eine Bibliothek damit ich ein Interface habe um die Pins schnell ansteuern. Damit soll dann SSI implementiert werden und ein Testproggi das mir anzeigt was da raus kommt.
Die Hardware baue ich mir dann mal schnell auf einem Breadboard auf und da ich unter einem MHz bleibe dürfte ich wenig Phasen und Amplitudenprobleme bekommen, hoffe ich zumindestens.

Für die, die nicht mehr wissen wie mein Maschinchen aussieht. Das ist ein Foto das ich von der fertigen Machine aufgenommen hatte mit der Steuerung basierend auf den ATmega64.
35707
Hier sind sogar noch meine selbst gebauten Wegaufnehmer/Drehgeber verbaut die -- wie soll ich sagen -- Charaktervoll gemessen haben.
Ich habe dann später doch auf Zukaufteile gesetzt weil man sowas einfach nicht selbst bauen muß.



Gruß
Osser

oberallgeier
12.01.2022, 09:36
Schönes Projekt; ich lese schon ne Zeitlang mit.


.. Ich gehe einfach nur davon aus das die Zeit die mir durch den Scheduler geklaut wird .. nicht ins Gewicht fällt ..Ach, nun muss ich mal meine Bedenken (nach eigenen Erfahrungen) vorlegen.

ABER: das ist etwas langatmig >> also lieber nicht wirklich alles lesen << (Punkt 6 reicht *gg* (https://www.roboternetz.de/community/threads/36121-Autonom-in-kleinen-Dosen-R2_D03-Nachfolger-R3D01/page20?p=427784&viewfull=1#post427784)). Warum schreib ich es trotzdem? Ne CNC muss bei Schrägen oder Kurven möglichst die theoretisch gewünschte Synchronizität der verschiedenen Achsen gewährleisten um messbare Abweichungen von der gewünschten Kontur zu vermeiden. WENN da ein Motor auch nur Millisekunden (vermutlich eben sogar Mikrosekunden) anders reagiert als ein anderer - ist das, zumindest bei meinen Antriebsmotoren des Minid0, messbar.

Ich hatte die Motorregelung meiner rollenden Coladose (https://www.roboternetz.de/community/threads/36121-Autonom-in-kleinen-Dosen-R2_D03-Nachfolger-R3D01?p=495507&viewfull=1#post495507) mit zwei UNabhängigen, zeitlich versetzten Regelungsroutinen (Taktung 100 Hz für JEDE der beiden Routinen, die aber gegeneinander versetzt laufen) überprüft, weil ich keinen einwandfreien Geradlauf erreichen konnte. Insbes. der Anlauf zeigte einen Versatz. Hintergrund sind die steilen Beschleunigungen der DC-Motoren bei Geschwindigkeitssprüngen.
Hardware: ATmega1284p, Minimotörchen aus Billigstservo (https://www.roboternetz.de/community/threads/32293-DC-Kleinstmotor-mit-Getriebe-Drehsensor-5V-510-Upm?p=316156&viewfull=1#post316156), Software: C.

Und so war - etwas gerafft - mein Weg zur Erkenntnis:

1. der Wunsch (https://www.roboternetz.de/community/threads/36121-Autonom-in-kleinen-Dosen-R2_D03-Nachfolger-R3D01?p=386840&viewfull=1#post386840)

2. noch immer Wunsch
(https://www.roboternetz.de/community/threads/36121-Autonom-in-kleinen-Dosen-R2_D03-Nachfolger-R3D01?p=397824&viewfull=1#post397824)
3. erste Be-merkungen (https://www.roboternetz.de/community/threads/36121-Autonom-in-kleinen-Dosen-R2_D03-Nachfolger-R3D01?p=399099&viewfull=1#post399099)

4. im Rahmen des Möglichen gleichzeitig (also ein paar µs-Bruchteile hintereinander) (https://www.roboternetz.de/community/threads/36121-Autonom-in-kleinen-Dosen-R2_D03-Nachfolger-R3D01?p=400139&viewfull=1#post400139)

5. Stochern im Sprung-Nebel (https://www.roboternetz.de/community/threads/36121-Autonom-in-kleinen-Dosen-R2_D03-Nachfolger-R3D01?p=421502&viewfull=1#post421502)

6. erste Klarheit/en (https://www.roboternetz.de/community/threads/36121-Autonom-in-kleinen-Dosen-R2_D03-Nachfolger-R3D01?p=427784&viewfull=1#post427784)

Wie erwähnt - es geht hier nur um die bestmögliche "Gleichzeitigkeit" der Motörchen bei meinem MiniD0. Das zeigte eben schon deutliche Probleme beim Beschleunigen, obwohl - wenn weitgehend unbeschleunigt - ein guter Geradauslauf möglich ist.

Vielleicht nützt Dir der Hinweis etwas? Und - sorry für die Langatmigkeit.

Osser
12.01.2022, 10:29
Hallo Oberallgeier,

das Regelintervall der CNC ist ja üblicherweise 4ms, was mir bei dem ATmega mit 16MHz also 64.000 Takte für das Abarbeiten ließ.
Das wäre also grob folgendes
- SSI Positionswerte lesen
- SSI dekodieren und Fehlerprüfung
- evtl. DNC Daten nachladen
- NC Regler abarbeiten und Koordinate abholen
- PID Ist und Soll einstellen (x, w)
- PID durchlaufen
- VT515 Display über serielle Leitung updaten
- Bedienpanel abfragen/steuern
- Bestimmt noch einiges mehr

Die Steuerung lief -- wie soll ich sagen -- ordentlich, nicht perfekt aber ordentlich.


Wenn ich jetzt einen Raspi 4 nehme habe ich folgendes.
- ARM Cortex A72 1,5GHz Quad Core
- 1GB Speicher
- Flash Disk für die NC Programme
- HDMI für einen Monitor

Dann schafft der Prozessor im Regelzyklus also 6e6 Zyklen in 4ms, das ist etwa 93 mal so viel wie beim ATmega64.
Da ich vier Kerne habe, können die Aufgaben Anzeige updaten, Tastenabfragen und Bedienpanel abfragen schonmal in andere Rechenkerne verteilt werden. Dadurch bleibt in den 4ms noch viel mehr Rechenzeit übrig, was von Vorteil sein sollte.

naja wir werden ja sehen obs klappt oder nicht.


Gruß,
Osser

oberallgeier
12.01.2022, 10:47
Du hast natürlich recht - ATmega gegen RasPi sind 16 MHz gegen 1,5 GHz - die fast hundertfache Taktrate. Vom 8Bitter gegen den Vielbitter+Multicore ganz abgesehen. Ich bin neugierig und wünsche Dir viel Erfolg - ohne Widerstände!

Osser
12.01.2022, 11:06
Hallo Oberallgeier,


ach ja, Widerstände wird es geben, Probleme auch.
Darum mach ichs ja. Ohne Problem kein Spaß wenns dann mal läuft.

;)

Gruß,
Osser

Osser
13.01.2022, 14:44
Hallo,

bischen was zum kucken von der alten Steuerung nachdem sie gerade so funktioniert hat. Die PWM läuft leider im hörbaren Bereich was ich bei meinem neuen Aufbau auch ändern werde.
Das hat schon gewaltig gepiepst damals.

Kreuzschlitten Versuch

http://secius.com/fileadmin/media/cnc_MOV06223_overlay_lowres.mp4

Gruß,
Osser

Osser
15.01.2022, 16:47
Hallo,

so die ersten Tests hab ich jetzt schon umgesetzt mit denen ich mir schließlich einen Treiber bauen will um via SSI aus meinen Heidenhain Gebern die Koordinaten auszulesen.


https://youtu.be/KLog4FhsJIk

Gruß,
Osser

Osser
18.01.2022, 20:38
Hallo,

hier der nächste Schritt ohne Prosa als kleines Video.

https://youtu.be/ks1-cXdE8bI

Gruß,
Osser