Re: [Emc-users] Charge Pump on Wiki
S, Kirk Wallace pis(e: On Sun, 2011-01-09 at 16:13 -0800, Kirk Wallace wrote: In case anyone might be interested, I added a charge pump page to the wiki. If any one has charge pump information or machine configurations they would like to share on that page, please add it to the page. Corrections are welcome too. http://wiki.linuxcnc.org/emcinfo.pl?About_Charge_Pumps Oops, I forgot the subject:( As e_stop_latch has near same output (one of them) it's good idea to mention it in that wiki. And just comment for 567 circuit. The 5V peak to peak is little high for them. Just use voltage divider (1/10 ratio) on input and should work. -- Gaining the trust of online customers is vital for the success of any company that requires sensitive data to be transmitted over the Web. Learn how to best implement a security strategy that keeps consumers' information secure and instills the confidence they need to proceed with transactions. http://p.sf.net/sfu/oracle-sfdevnl ___ Emc-users mailing list Emc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/emc-users
Re: [Emc-users] Kearney and Trecker Milwaukeematic IIIb progress
These big machines running EMC2 are just very cool! Been watching this big girl come to life since you started posting the vids. Thanks for keeping us in the loop Sam! Mark On 01/09/2011 11:30 AM, sa...@empirescreen.com wrote: That is the spindle collet unclamp. It moves forward about .05 inch. seems to not be a problem with the encoder setup. (it really was the only sane solution..) ;) sam On Sun, 09 Jan 2011 07:02:59 -0500 Mark Wendt (Contractor)mark.we...@nrl.navy.mil wrote: Pretty neat stuff Sam! What is that last operation in that video - where it looks like that big nut moving laterally? Is that part of the tool changing process? Mark At 07:40 PM 1/8/2011, you wrote: Ok - have the spindle encoder mounted. http://www.youtube.com/watch?v=5vvP4L_hr90 rigid tapping works - I will make a video soon. (having some tool prep issues. Master seems to pause everything while it is pre-fetching the tool) sam -- Gaining the trust of online customers is vital for the success of any company that requires sensitive data to be transmitted over the Web. Learn how to best implement a security strategy that keeps consumers' information secure and instills the confidence they need to proceed with transactions. http://p.sf.net/sfu/oracle-sfdevnl ___ Emc-users mailing list Emc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/emc-users
Re: [Emc-users] Charge Pump on Wiki
On Mon, 2011-01-10 at 08:56 +0200, Slavko Kocjancic wrote: ... snip As e_stop_latch has near same output (one of them) it's good idea to mention it in that wiki. I mentioned in the wiki that it may be appropriate to use the charge pump detector as _part_ of an e-stop system. E-stop is a bigger subject than charge pump. This may or may not be something I'll have time to get to. Oops, I now realize you're saying that e_stop_latch has a charge pump like feature? I'll look into it, thanks. And just comment for 567 circuit. The 5V peak to peak is little high for them. Just use voltage divider (1/10 ratio) on input and should work. Yes, I noticed the .2V RMS recommended maximum mentioned in the app. note. I used a 5k potentiometer as a voltage divider and found that the output changed fairly randomly at different settings for the same frequency. Varying the frequency also had peaks and valleys, which was fairly discouraging. Pulse behavior, as opposed to 50% duty, wasn't very good. I need to get the scope out to see whats going on, but the cap/diode and AVR circuits already work well, so I'm beginning to loose interest in this one. If anyone has a working, or near working, circuit (with square wave or pulse input), I can post it, but I'm not certain I'll do much more with the 567. -- Kirk Wallace http://www.wallacecompany.com/machine_shop/ http://www.wallacecompany.com/E45/index.html California, USA -- Gaining the trust of online customers is vital for the success of any company that requires sensitive data to be transmitted over the Web. Learn how to best implement a security strategy that keeps consumers' information secure and instills the confidence they need to proceed with transactions. http://p.sf.net/sfu/oracle-sfdevnl ___ Emc-users mailing list Emc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/emc-users
Re: [Emc-users] Charge Pump on Wiki
On Mon, 2011-01-10 at 07:21 -0800, Kirk Wallace wrote: On Mon, 2011-01-10 at 08:56 +0200, Slavko Kocjancic wrote: ... snip As e_stop_latch has near same output (one of them) it's good idea to mention it in that wiki. I mentioned in the wiki that it may be appropriate to use the charge pump detector as _part_ of an e-stop system. E-stop is a bigger subject than charge pump. This may or may not be something I'll have time to get to. Oops, I now realize you're saying that e_stop_latch has a charge pump like feature? I'll look into it, thanks. ... snip I think I get it, e-stop latch should be mentioned along with the other pump enable inputs on the wiki page. A Mazak page http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?MazakEstopChain mentions the charge pump and latch so I'll need to study it. My feeling right now is that the pump should be on any time EMC2 is sane, or sane with the machine On, with the CP detector as just another switch in the e-stop loop. -- Kirk Wallace http://www.wallacecompany.com/machine_shop/ http://www.wallacecompany.com/E45/index.html California, USA -- Gaining the trust of online customers is vital for the success of any company that requires sensitive data to be transmitted over the Web. Learn how to best implement a security strategy that keeps consumers' information secure and instills the confidence they need to proceed with transactions. http://p.sf.net/sfu/oracle-sfdevnl ___ Emc-users mailing list Emc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/emc-users
Re: [Emc-users] Charge Pump on Wiki
On Mon, 2011-01-10 at 07:47 -0800, Kirk Wallace wrote: On Mon, 2011-01-10 at 07:21 -0800, Kirk Wallace wrote: On Mon, 2011-01-10 at 08:56 +0200, Slavko Kocjancic wrote: ... snip As e_stop_latch has near same output (one of them) it's good idea to mention it in that wiki. Uugh, there is a charge pump, or rather, watchdog in estop-latch, ... 24 if( ok_out ) { 25 /* toggle watchdog */ 26 watchdog = !watchdog; 27 } 28 } else { ... -- Kirk Wallace http://www.wallacecompany.com/machine_shop/ http://www.wallacecompany.com/E45/index.html California, USA -- Gaining the trust of online customers is vital for the success of any company that requires sensitive data to be transmitted over the Web. Learn how to best implement a security strategy that keeps consumers' information secure and instills the confidence they need to proceed with transactions. http://p.sf.net/sfu/oracle-sfdevnl ___ Emc-users mailing list Emc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/emc-users
Re: [Emc-users] HAL Documentation: canonical encoder, linksp, linkps, newsig
On Sun, 09 Jan 2011 15:04 -0800, Kirk Wallace kwall...@wallacecompany.com wrote: On Sun, 2011-01-09 at 12:41 -0600, Jon Elson wrote: The hal component encoder is a specific implementation of an encoder, equivalent in function to a general encoder counter module which might be partly implemented in hardware or software. I think the term encoder has been used rather loosely, but Wikipedia states: An encoder is a device, circuit, transducer, software program, algorithm or person that converts information from one format or code to another,... To me, that means a rotary disk and sensor encodes position information into a set of quadrature signals. Then, I consider that the quadrature signals are decoded by the misnamed encoder component into counts which are then stored and managed by a count/position register -- encoder = decoder = counter. Technically you are probably correct, but if we used that nomenclature we would confuse the hell out of everybody. In the CNC world, the encoder is the thing connected to a shaft that generates the pulses. To be precise we should say absolute encoder or incremental quadrature encoder or one of several other possibilities, but the default meaning is incremental quadrature encoder, and when we refer to encoder signals we mean quadrature, possibly with an index pulse. The HAL component is technically a decoder and counter of those signals, but if we called it a decoder people would be really confused. Calling it an encoder counter or encoder interface would be better than just encoder, but people usually know what we mean. Likewise, hardware boards that support quadrature signals with or without index pulses usually call them encoder inputs or encoder counters. It's really just mice nuts, but I'm doing jury duty right now, so I may me in a lawyer's frame of mind. Lawyers, ewww. -- John Kasunich jmkasun...@fastmail.fm -- Gaining the trust of online customers is vital for the success of any company that requires sensitive data to be transmitted over the Web. Learn how to best implement a security strategy that keeps consumers' information secure and instills the confidence they need to proceed with transactions. http://p.sf.net/sfu/oracle-sfdevnl ___ Emc-users mailing list Emc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/emc-users
Re: [Emc-users] Serial kinematics
2011/1/5 Alex Joni alex.j...@robcon.ro: Please correct me, if I am wrong, but if I will change this line: 81 genser-links[t].quantity = GO_QUANTITY_ANGLE; to this one: 81 genser-links[t].quantity = GO_QUANTITY_LENGTH; then it will change all the joints from angular to linear. Is that correct? Yes, that is correct snip the adding HAL pins looks ok, but one would need to test/debug it to say that it's 100% ok. Ok, thanks! So now the remaining part is to create code that would select either GO_QUANTITY_ANGLE or GO_QUANTITY_LENGTH, based on type value - if it is 0, then GO_QUANTITY_LENGTH, if it is 1, then GO_QUANTITY_ANGLE. That should be fairly simple: change line 81 to: genser-links[t].quantity = TYPE(t); Since my impression is that the TYPE(t) value cannot be set to GO_QUANTITY_LENGTH or GO_QUANTITY_ANGLE, but rather it will be either 1 or 0, determining, if joint is angular or linear, I would like to ask, if anyone could comment, which of the following examples of code is correct to set value of genser-links[t].quantity to be GO_QUANTITY_LENGTH or GO_QUANTITY_ANGLE, depending on TYPE(t) value (I am not sure, if the syntax is correct. Please, someone with knowledge in programming, step in and point me into direction of correct code, if I have made some mistakes.): 1) for (t = 0; t GENSER_MAX_JOINTS; t++) { if (*(haldata-type[t]) = 0){ genser-links[t].u.dh.d = 0; genser-links[t].type = GO_LINK_DH; genser-links[t].quantity = GO_QUANTITY_LENGTH; } else { genser-links[t].u.dh.a = A(t); genser-links[t].u.dh.alpha = ALPHA(t); genser-links[t].u.dh.d = D(t); genser-links[t].u.dh.theta = 0; genser-links[t].type = GO_LINK_DH; genser-links[t].quantity = GO_QUANTITY_ANGLE; } } 2) for (t = 0; t GENSER_MAX_JOINTS; t++) { if (TYPE(t) = 0){ genser-links[t].u.dh.d = 0; genser-links[t].type = GO_LINK_DH; genser-links[t].quantity = GO_QUANTITY_LENGTH; } else { genser-links[t].u.dh.a = A(t); genser-links[t].u.dh.alpha = ALPHA(t); genser-links[t].u.dh.d = D(t); genser-links[t].u.dh.theta = 0; genser-links[t].type = GO_LINK_DH; genser-links[t].quantity = GO_QUANTITY_ANGLE; } } I suspect that linear joint does not need a, d, alpha and theta values as well. Is that correct? hmm.. good question I'm afraid I don't have a useful answer. you would have to check the code (around genserkins.c and gomath) to see how those are treated for linear joints. Found that! In gomath.c: if (GO_LINK_DH == link-type) { linkout-u.dh.a = link-u.dh.a; linkout-u.dh.alpha = link-u.dh.alpha; if (GO_QUANTITY_LENGTH == link-quantity) { linkout-u.dh.d = joint; linkout-u.dh.theta = link-u.dh.theta; } else { linkout-u.dh.d = link-u.dh.d; linkout-u.dh.theta = joint; } return GO_RESULT_OK; } This is the reason, why in the previous examples of the code I removed the lines, related to a, alpha and theta values. Or should I leave them and assign some value to theta, or even create HAL pins to add also theta value for linear joints and add default theta value in genserkins.h file? I have attached (my apologies, I know that e-mail attachements are not encouraged on this list) genserkins.c file with all my changes. I would appreciate receiving any suggestions or comments, if this is right. Thanks in advance! Viesturs / * Description: genserkins.c * Kinematics for a generalised serial kinematics machine * * Derived from a work by Fred Proctor, * changed to work with emc2 and HAL * * Adapting Author: Alex Joni * License: GPL Version 2 * System: Linux * *** These are the forward and inverse kinematic functions for a general serial-link manipulator. Thanks to Herman Bruyninckx and John Hallam at http://www.roble.info/ for this. The functions are general enough to be configured for any serial configuration. The kinematics use Denavit-Hartenberg definition for the joint and links. The DH definitions are the ones used by John J Craig in Introduction to Robotics: Mechanics and Control The parameters for the manipulator are defined by hal pins. Currently the type of the joints is hardcoded to ANGULAR, although the kins support both ANGULAR and LINEAR axes. TODO: * make number of joints a loadtime parameter * add HAL pins for all settable parameters, including joint type: ANGULAR / LINEAR * add HAL pins for debug data (num_iterations) * add HAL pins for ULAPI compiled version */ #include rtapi_math.h #include gotypes.h /* go_result, go_integer */ #include gomath.h /* go_pose */ #include genserkins.h /* these
Re: [Emc-users] Serial kinematics
snip Since my impression is that the TYPE(t) value cannot be set to GO_QUANTITY_LENGTH or GO_QUANTITY_ANGLE, but rather it will be either 1 or 0, determining, if joint is angular or linear, I would like to ask, if anyone could comment, which of the following examples of code is correct to set value of genser-links[t].quantity to be GO_QUANTITY_LENGTH or GO_QUANTITY_ANGLE, depending on TYPE(t) value (I am not sure, if the syntax is correct. Please, someone with knowledge in programming, step in and point me into direction of correct code, if I have made some mistakes.): I would write it like this: for (t = 0; t GENSER_MAX_JOINTS; t++) { genser-links[t].u.dh.a = A(t); genser-links[t].u.dh.alpha = ALPHA(t); genser-links[t].type = GO_LINK_DH; if (TYPE(t) == 0) { genser-links[t].u.dh.d = 0; genser-links[t].u.dh.theta = THETA(t); genser-links[t].quantity = GO_QUANTITY_LENGTH; } else { genser-links[t].u.dh.d = D(t); genser-links[t].u.dh.theta = 0; genser-links[t].quantity = GO_QUANTITY_ANGLE; } } This is the reason, why in the previous examples of the code I removed the lines, related to a, alpha and theta values. a and alpha are still used (for any case). They define the rotation and translation between the previous and current joint. Imagine you want to construct a genserkins for a regular XYZ machine. Or should I leave them and assign some value to theta, or even create HAL pins to add also theta value for linear joints and add default theta value in genserkins.h file? Yes, that is the right way. Btw, all this talk should be moved to the emc-developers list... Regards, Alex -- Gaining the trust of online customers is vital for the success of any company that requires sensitive data to be transmitted over the Web. Learn how to best implement a security strategy that keeps consumers' information secure and instills the confidence they need to proceed with transactions. http://p.sf.net/sfu/oracle-sfdevnl ___ Emc-users mailing list Emc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/emc-users