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
Druckbare Version
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
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
Hi Peter1060,
yep, so is das. :cheesy:
O.
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
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:
also ein 9 bit breiter Datenbus der mit einem Statetransition Protokoll Timingunabhängig die Daten auslesen kann.Code: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
Das Protokoll ist folgendermassen implementiert:
Code:µ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.
Bild hier
Bild hier
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.
..ach ja
hier noch ein altes Filmchen vom Test der Servologik.
http://www.secius.com/AsuroFlash/wp-...h/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.
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
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
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
Hi Peter,
hast Du auch Bilder von deinem Aufbau?
Gruss,
O.
Hi Olli,
leider im Moment wenig Zeit fürs Hobby, Stress auf Arbeit und mit dem Energieversorger.
Melde mich wieder,
mit Gruß
Peter
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.
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):
.. und der MasterCode:.
.
.
/* 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;
.
.
.
Code:
// 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.
Hi,
hier das versprochene Video:
http://secius.com/fileadmin/media/cn...res_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.
https://www.roboternetz.de/phpBB2/al...hp?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...0_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/al...hp?pic_id=2428
Gruß Lacky
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!
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.
dann ist ja ok...ich hätte mir bei einem so durchdachten Konzept eigentlich auch nichts anderes gedacht...noch mal: respekt!
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
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 ;-)
Hi wisda.noobie,
Du hast ja nette Tests auf deiner Seite :--)
Gruss,
O.
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... ;-)
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...01226004r32624
Mit Gruß
Peter
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.
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
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.
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.
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
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
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
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:
...ich kann alles lesen was Rechner auch lesen können... ;-)Zitat:
..kannst Du was in Delphi(5) machen/lesen? ..
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
Bild hier
http://secius.com/fileadmin/media/cn...lay_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.
Hi Olli,
wenn Du noch eine Bremse für die Z-Achse brauchst:
http://cgi.ebay.de/Schrittmotor-Nano...item1e5a3e16cf
Habe ich auch, bremst gut.
Rest heute abend.
Mit Gruß
Peter
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.
Anhang 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.
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
Hi,
hier noch mal eben eine bessere (evtl. entgültige) Studie des Ständers:
Anhang 35718
Gruss,
O.
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.
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.
Hi Peter,
uuups, hab ja ganz vergessen zu antworten....
Hab den Aufbau des Ständers schon verbessert und auch der Fräsmotor kommt noch näher an den Laufbock ran.Zitat:
Der Fräsmotor kann ja in alle Richtungen schwingen...
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-[Zitat:
Als Bus nutze ich SPI over CurrentLoop. Mit TLP113 werden...
Stell mal ein paar Bilder ein. Wie gross ist Gross? Mehr als 200x200x200? O:)Zitat:
..werde mein Untergestell für die "große" Fräse eventuell fertigstellen.
Yep.Zitat:
Dann sollten wir mal über Software reden.
1) Koordinaten (absolut, nullpunkt, raw; abhängig von Maschineneinstellung)Zitat:
Was willst Du alles auf dem Display darstellen?
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
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
Hi,
hier noch die entgültige Version des Ständers.
Bild hier
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.
Hallo
Dafür ist der Ausleger sehr lang.Zitat:
Spindelmotor sehr nahe am Laufbock der Z-Achse
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