PathPilot MegaMod

More
08 Nov 2020 19:56 - 08 Nov 2020 19:57 #188686 by my.cnc.brother
Hey Guys,

In this thread I would like to share with you results of my modifications in PathPilot.

Introduction

Mod is based on PP 2.0.1. Modification was started in 2018 and finished in 2019 thus some data might be outdated (when I am writing this PP 2.6.0 is available). Modified PathPilot is successfully running upgraded Brother TC-225 milling machine.
For those who are using Instagram, you can follow the project here:
instagram.com/my.cnc.brother/

Layout changes

Main obvious change was to put screen to vertical position. I have chosen Iiama FullHD TF2234MC with IPS matrix and capacitive multitouch screen.
My previous machine was driven by Mach3 and I always complain of the size of path preview screen. I always dreamt to have it larger. And there it is... proper size preview screen :-):

User experience
PathPilot in its glory is missing few handy user experience functions.
First of all path preview screen (aka ‘Gremlin’) does not have touchscreen frinedly controls to change the view (projection planes, zoom in, zoom out, rotate move, linear move and to clean the path).
Warning: Spoiler!

Buttons were added at the top of the screen to have it right under my fingerprints.


As you can also see I have enlarged G-code preview window as well.

Control section was modified a little bit as well

Starting from left:
I have added a section for MPG wheel control. You can select axis, step size and also port MPG movement to control FEED, RPM and MAX VEL. If you prefer you can also turn off MPG.



Code control section was completed by POWER button (TC225 specific button) and limits override radio button.

Spindle/tool section was completed only by actual spindle speed display and time and date visible all the time.
Warning: Spoiler!


Position section was modified by adding DTGs, ABS position and Real position (useful for encoder based drives). And… the mod I am most proud of ;-): axis load bars under each axis.



I put there also new useful buttons: Ref All and Ref Spindle button (TC225 specific).

Other Tabs
Only Status tab and ATC tab were changed.
In Status Tab I have implemented some system info (processor speed, RAM usage, etc.) and three counters: system run time, total system run time and total spindle run time. Those values might be useful in regular machine maintenance.



ATC tab mod was most time consuming. It was completely rebuild, according to Brother TC225 ATC (instead of umbrella type in Tormach machines).



Button beep
Due to lack of button press feedback (except visual) I have added button sound beeping. After that operation of the machine is much more convenient.

Cherry on the top :-)
To have machine completed I also changed Linux booting screen and also PathPilot splash screens.
BTW system loading is < 44sec (!):
Attachments:
Last edit: 08 Nov 2020 19:57 by my.cnc.brother.
The following user(s) said Thank You: jbraun, tommylight, smgvbest, Dorro1971, bioname

Please Log in or Create an account to join the conversation.

More
08 Nov 2020 20:45 #188693 by sharmstr
Replied by sharmstr on topic PathPilot MegaMod
It has been some time, right? I remember the first time I saw this on instagram. It turned out great, man! I just got my mill out of storage and spent the morning digging through all my code trying to figure out where I left off. Anyhow, congrats!

Please Log in or Create an account to join the conversation.

More
08 Nov 2020 21:05 #188696 by tommylight
Replied by tommylight on topic PathPilot MegaMod
Very nice.

Please Log in or Create an account to join the conversation.

More
09 Nov 2020 22:01 #188816 by snowgoer540
Replied by snowgoer540 on topic PathPilot MegaMod
Does the spindle operate on a PID loop?

If so, would you mind sharing how you made that happen, and how you got the actual speed to display next to the commanded speed?

I fitted my tormach with an encoder, and I have rigid tapping working with the help of some others here, but the PID and adding to the GUI greatly eludes me.

Please Log in or Create an account to join the conversation.

More
10 Nov 2020 21:21 - 10 Nov 2020 21:59 #188921 by my.cnc.brother
Replied by my.cnc.brother on topic PathPilot MegaMod

It has been some time, right? I remember the first time I saw this on instagram. It turned out great, man! I just got my mill out of storage and spent the morning digging through all my code trying to figure out where I left off. Anyhow, congrats!


Yeah it took me a while as I am not Python expert. However I am very satisfied with a results. I wish LinuxCNC could have such beautiful GUI as standard.
With code I have the same - if somebody asks me about details it is difficult to answer.

BTW:
Did you know that your Probe TAB changes were huge inspiration for me? Thanks man!
How did this happen to be included later in official PathPilot release?

Does the spindle operate on a PID loop?

Spindle in velocity mode has no LinuxCNC PID. However speed is well maintained by servo drive itself (speed loop in servo drive).
Spindle in positioning mode has LinuxCNC PID, this is used for ATC spindle positioning.

If so, would you mind sharing how you made that happen, and how you got the actual speed to display next to the commanded speed?


Actual speed is a raw value from Mesa registers. In the video above (Status TAB) you can see spindle speed variations: 1000rpm commanded, ~1015rpm actual.

In fact for rigid tapping constant spindle speed is not so relevant. More important is dynamic (acceleration) behaviour during tap reversal. This is why poor spindles, with high inertia do not perform well on rigid tapping. To be specific, those are not keeping depth of a thread very well. Servo spindles are best in this application.
During tapping spindle rotation is acting as "jog" for Z axis. Fun fact is that if you will deenrgise spindle, run G33.1, and rotate spindle encoder manually by hand, then Z axis will follow that moves.

This guy explains spindle synchronisation very well:



(including examples to download)

Following his guide my Brother TC225 is capable for rigid tapping @3000rpm :-), however I do not use this feature very often as this is to stressful for me.

Last edit: 10 Nov 2020 21:59 by my.cnc.brother.
The following user(s) said Thank You: tivoi, snowgoer540

Please Log in or Create an account to join the conversation.

More
11 Nov 2020 12:33 #188986 by snowgoer540
Replied by snowgoer540 on topic PathPilot MegaMod
Thank you for the reply!

Just to be clear, my spindle is already fitted with an encoder, and does do G33.1 synchronized movements/rigid tapping now.

The next steps for me are:
1. Add actual RPM to the GUI
2. Use actual RPM feedback (PID loop) to drive the spindle closer to the commanded position.

I am aware that Tormach uses a .comp file to run the spindle at certain values based on the commanded RPM. They also have ramp up and ramp down values in there as well (AFAIK).

So I guess my question for you at the moment is, how did you get the actual rpm to display on the GUI?

Please Log in or Create an account to join the conversation.

More
11 Nov 2020 20:43 - 11 Nov 2020 21:21 #189036 by my.cnc.brother
Replied by my.cnc.brother on topic PathPilot MegaMod
First you have to find your spindle encoder velocity value. In my case spindle encoder in connected to 5th axis in my Mesa 7i77.
To read velocity I use below link in my hal file:
net spindle-fb-rps 	   motion.spindle-speed-in     <= hm2_7i92.0.encoder.05.velocity   => spindle-at-speed.in2
Then in my postgui.hal I pin this signal to GUI:
net spindle-fb-rps tormach.actual_rps
Then in your .py gui file you have to initiate hal pin:
self.hal.newpin("actual_rps", hal.HAL_FLOAT, hal.HAL_IN)
In my case actual rpm is simple label. Label initialisation:
#MC **************actual rpm****************
        self.actual_rpm_label = self.builder.get_object("actual_rpm_label")
        actual_rpm_label_font_description = pango.FontDescription('helvetica ultra-condensed 11')
        self.actual_rpm_label.modify_font(actual_rpm_label_font_description)
Label value update:
#***********RPM label****************
        self.actual_rpm_label.set_markup('<span foreground="white">%s</span>' % "%1d"  % (self.hal['actual_rps']*60))
Raw value is rev. per sec. so you have to multiply it by 60 to have value in rpm.
And that is it!
Last edit: 11 Nov 2020 21:21 by my.cnc.brother.
The following user(s) said Thank You: tivoi, snowgoer540

Please Log in or Create an account to join the conversation.

More
11 Nov 2020 22:38 - 11 Nov 2020 22:38 #189058 by snowgoer540
Replied by snowgoer540 on topic PathPilot MegaMod

First you have to find your spindle encoder velocity value. In my case spindle encoder in connected to 5th axis in my Mesa 7i77.
To read velocity I use below link in my hal file:
net spindle-fb-rps 	   motion.spindle-speed-in     <= hm2_7i92.0.encoder.05.velocity   => spindle-at-speed.in2
Then in my postgui.hal I pin this signal to GUI:
net spindle-fb-rps tormach.actual_rps
Then in your .py gui file you have to initiate hal pin:
self.hal.newpin("actual_rps", hal.HAL_FLOAT, hal.HAL_IN)
In my case actual rpm is simple label. Label initialisation:
#MC **************actual rpm****************
        self.actual_rpm_label = self.builder.get_object("actual_rpm_label")
        actual_rpm_label_font_description = pango.FontDescription('helvetica ultra-condensed 11')
        self.actual_rpm_label.modify_font(actual_rpm_label_font_description)
Label value update:
#***********RPM label****************
        self.actual_rpm_label.set_markup('<span foreground="white">%s</span>' % "%1d"  % (self.hal['actual_rps']*60))
Raw value is rev. per sec. so you have to multiply it by 60 to have value in rpm.
And that is it!


This is awesome, Thank you! I cant wait to try it this weekend.

Does the following code also go in the .py gui file?


In my case actual rpm is simple label. Label initialisation:

#MC **************actual rpm****************
        self.actual_rpm_label = self.builder.get_object("actual_rpm_label")
        actual_rpm_label_font_description = pango.FontDescription('helvetica ultra-condensed 11')
        self.actual_rpm_label.modify_font(actual_rpm_label_font_description)
Label value update:
#***********RPM label****************
        self.actual_rpm_label.set_markup('<span foreground="white">%s</span>' % "%1d"  % (self.hal['actual_rps']*60))

Last edit: 11 Nov 2020 22:38 by snowgoer540.

Please Log in or Create an account to join the conversation.

More
13 Nov 2020 14:30 #189207 by Vmax549
Replied by Vmax549 on topic PathPilot MegaMod
my.cnc.brother would you happen to know HOW to place B and C axis DROs into the toolpath window ? I need to place them in the top left corner of the toolpath window.

(;-) TP

Please Log in or Create an account to join the conversation.

More
13 Nov 2020 19:40 #189245 by jbraun
Replied by jbraun on topic PathPilot MegaMod
This is awesome, congratulations !

that is all.....

Please Log in or Create an account to join the conversation.

Moderators: cncbasher
Time to create page: 0.439 seconds
Powered by Kunena Forum