Forum Replies Created
-
AuthorPosts
-
saciMember
Thank you for your reply, I posted a new request on the Github page.
this is the link: https://github.com/synthetos/g2/issues/147saciMemberhttps://dl.dropboxusercontent.com/u/49514937/P_Processor/TinyG_NoArc_mm.pp
https://dl.dropboxusercontent.com/u/49514937/P_Processor/TinyG_Arc_mm.ppDownload this post-processor and paste copy them to your PostP folder :
-run Vectric Aspire application
-File->Open Application data folder
-Open PostP folder
-Paste or move files downloaded here
-Close Aspire and restart it to load the PostP Script
-Now when you post, choose TinyG_NoArc_mm or TinyG_Arc_mm post processor
-the output file will have “.tap” extension, if you want other( .nc, .iso …) just modify the “.pp” file with WordPad or other text editor and don’t forget to close Aspire and restart it !hope this will help you !
saciMemberPersonally I have a machine with servomotors configured to be controlled directly by Step & Dir signals ( TTL 5v level and also 3.3v without problem!). I tried to make my own PCB with an ATXmega processor ( Slave ) programmed with the famous tinyG firmware ( thanks to Alden Hart and Synthetos Team for the great work!),and at the same time I had the idea to put a second ATmega processor ( Main ) with a personal firmware in order to add few interesting things like manual jogging buttons,tool length probing, LCD, SD card … and all this without changing the tinyG firmware that remains intact on the ATXmega.
in this demo video an industrial grade brushless AC servomotor (a Parker 1.3KW motor W/ 8000cnt/rev encoder) with Allen Bradley servo drive (Ultra-100 series used in Follower Mode) is controlled by Step & Dir signals from the 4th axis pin out from the ATXmega port. When pressing “A axes” manual jogging buttons, the motor run smoothly responding to the acceleration and deceleration ramp defined only by tinyG settings . the jogging feed-rate is set by the potentiometer connected to an analog input pin on the main processor (ATmega).
this video shows that Tinyg is a really a sophisticated high quality controller which can be used not only in small machines but also in much larger applications…
saciMemberHi all,
Really TinyG is one of the most powerfull DIY cnc controller and I know that it’s very usefull as is in most case (3D printer, router, lathe or other…), but it’s possible that some people doesn’t longer have need power stage because there machines already have power drivers for motors or simply want to use more powerfull drivers or why not servomotors instead of the conventional stepper motors, in this case hacking the GPIO port to pinout the step/dir signals or implementing a new connector on the future PCB board release seems to be a good idea.saciMemberI send all my best wishes for Christmas to everyone, and hope you all have a prosperous 2012 !!! Merry Christmas & Happy New Year to all.
saci
saciMemberAlden,
The GUI verify only if all lines of the gcode file are well transmitted, but it can not verify the end of the process especially when the last lines are long distance moves, the “ln” key in JSON frame of the Satus Report does not give accurate information ( or I probably misunderstood what it represents! ) so I would like to now if there’s a way to check if the buffer is empty and all commands are executed ? This is essential to know if the machine has really finished the process, or just reporting number of gcode lines still available in the buffer (not executed) . for example add a new key or a flag to the JSON frame to indicate machining status as folows:
{“ln”:204, “xyz”:[0.000,0.000,0.000], “abc”:[0.000,0.000,0.000], “vel”:28.88, “mm”:1, “flag or other”:0}
what you suggest about this ?
thanks.
saciMemberAlden,
Enabling Status Report fonctionality causes some difficulties in handling feedback messages from the controller because it is free running . I added ( not replaced ) a little code in _gc_printsate() function in gcode_parser.c as follows:
mp_get_runtime_position(vector);
double velocity = mp_get_runtime_velocity();
uint8_t distance_mode = 1;if (gm.inches_mode == TRUE)
{
vector[X] = vector[X] / MM_PER_INCH;
vector[Y] = vector[Y] / MM_PER_INCH;
vector[Z] = vector[Z] / MM_PER_INCH;
velocity = velocity / MM_PER_INCH;
distance_mode = 0;
}if ((block[1] == ‘s’)||(block[1] == ‘S’))
{fprintf_P(stderr,PSTR(“{“));
fprintf_P(stderr,PSTR(“”ln”:%1.0f, “), mp_get_runtime_linenum());
fprintf_P(stderr,PSTR(“”xyz”:[%1.3f,%1.3f,%1.3f], “), vector[X], vector[Y], vector[Z]);fprintf_P(stderr,PSTR(“”abc”:[%1.3f,%1.3f,%1.3f], “),vector[A], vector[B], vector[C]);
fprintf_P(stderr,PSTR(“”vel”:%5.2f, “), velocity);
fprintf_P(stderr,PSTR(“”mm”:%d}n”), distance_mode);
}with this, I can get the status report asynchronously with the “?s” or “?S” command.
Is it possible to implemente this code in your firmware or some thing like this ?Can you please give me your email address, I want send you a copy of my GUI just to give me your oppinion .
thanks.saciMemberRiley,
Sorry, I’m not familiar at all with xplatfom javafx programming language, I use the C++ builder on Windows platform, I now it’s not the best choice to make cross-platform applications ( working for Linux, Mac OS X, and Windows). My goal is just have more than one GUI available for TinyG and the GRBL controllers. I need as simple as possible solution and the easiest way to make it.
if you want I can send a copy to your personal email. it is functional with TinyG controller with 0.92 version and a limited support for the GRBL.saciMemberAlden, Now I better understand when you say you are trying to make things as real as possible ! I’m really impressed and I appreciate how you do things.
I will temporarily use the “@” character to stop all axes movement, and to maintain the actual positions, I wrote a little code in the routine st_stop () in stepper.c as follows:
void st_stop()
{
cli(); // disable global interruptsdouble s_vector[AXES];
mp_get_runtime_position(s_vector); // save current positions in s_vectordouble s_vel= mp_get_runtime_velocity(); // save current velocity in s_vel
st_init(); // stepper subsystem
sw_init(); // limit & homing switches
mp_init(); // motion planning subsystem
sei(); // enable global interrupts
gc_init(); // gcode-parsercm_set_feed_rate(s_vel);
cm_set_origin_offsets(cm_set_vector(s_vector[X],s_vector[Y],s_vector[Z],s_vector[A],s_vector[B],s_vector[C]));}
This allowed me to continue the development of my little GUI until implementation of the famous Starting, Stopping and Feedhold commands.
Now I can control manually my cnc, set current position to 0 and independently set current Z position to 0.saciMemberThanks for all the suggestions and comments. This has given me greater clarity. also I find the doccuments very helpful and I will study it carfully.
I would like to know if there is a spécial character used to call cm_async_stop() and cm_async_star() routine in canonical_machine.c ? I use the “!” character to stop motion during manual control but this will reset automaticaly all position counters (x, y, z…) because it call the same ISR used for limit switches. Is it possible to save this values before calling mp_async_end() and restore them after ? this will be very usefull.
Also I found a small problem with homing axis, when I send the G28 or G30 code, the controller don’t respond no move on axis no respond to other gcode or command other than a software reset “!” until performing a hard reset. the same problem when enabling on-power homing ( in this case I can’t do anything, erasing eeprom with the AVR programmer is necessary ! ) do you have any idea on what can cause this problem ? ( I use the atxmega256a3 whith TinyG v0.92 firmware )
thanks.saciMemberHi,
if you have un Arduino with Duemilanove or Uno bootloader with ATmega328(p), try the Xloader software found here:This is a simple GUI for Arduino programming so you don’t have to use the Arduino software ( the avrdude is included ).
Enjoy!saciMemberHello, in “system.h” and the bottom of “stepper.h” files it is mentionned that fourth axis max and min limit switches are respectively used as Direction and Enable output signal to control the Spindle ( PD7 and PD6 of ATXMEGA ) but in this page http://www.synthetos.com/wiki/index.php?title=Projects:TinyG-Hardware-Info: the 4th motor controller uses the PORTF instead of the PORTD.
-
AuthorPosts