GearHeads Corner
July 24, 2019, 03:52:43 AM *
Welcome, Guest. Please login or register.

Login with username, password and session length
 
   Home   Help Search Login Register  
Pages: 1 ... 13 14 [15] 16 17 ... 22
  Print  
Author Topic: reading Pokeys pins  (Read 5824 times)
0 Members and 1 Guest are viewing this topic.
ArtF
Administrator
Hero Member
*****
Posts: 5322



View Profile
« Reply #210 on: May 16, 2019, 08:55:46 PM »

Gary:

  The Pokeys controls that voltage with PWM from 0 - 100%. Usually the Spindle is
controlle r by just that 0 - 100% setting.

  So to calibrate such a setting.. you set it for 100% and measure the spindle speed. You then
know 100% is ..say 20,000RPM. So then youd script it to put out an error if the requested
rpm is greater than 20,000 or just set 100%, other wise youd set the PWM
to a percentag e reflectin g the request. So

 newpwm = (requested RPM / 20000.0) * 100.0;

  That RPM would be a simple linear responce curve. One could get more complex I guess.
If you look in the library youll see I use a PWM channel for laser power, in the TestFire
library function it fires the laser with the sliders power for a set time. Youd setup
your Pokeys so a particula r channel controls the 0-10volts.
  You can test it just by using the script tab and sending PWM commands
to set various voltages. Then just set the pwm commands into the
SetSpindl eSpeed script..

Art
 
 
« Last Edit: May 21, 2019, 09:09:45 PM by ArtF » Logged
gburk
Full Member
***
Posts: 167


View Profile
« Reply #211 on: May 17, 2019, 07:21:57 PM »

Art

Ok Still lost in space..
In the pokeys configura tion the pwm is set to pin17 (pwm 5)
Pdm period 50 and set to (us)

You have a few different scripts with the global SpindleOn() it looks link if I run SpindleOn() in the script window its turning on OC #5 that is in SpindleLi b-RelayOnly
I did change it to #5 so I do get the message Relay spindle was turned on OC #5. and I left the other scripts as they were..
If I hit the fire button I get the message spindle not turned on
So to get it to turn on and fire I have to change the   if( Engine.Ge tSpindleS tate() == 0 ) to == 1 now the auto on led lights and I get the message
Firing Test: Power and the time, when I press the fire button, but I get no voltage change on pin 17...
I also tried changing global LaserPWMC hannel = p.GetInt("Channel",5); to #5 is this correct.. .?

If I don't change anything and hit the fire button I see the onboard led for OC #4 light up...
But the is no OC led for PWM 5

Also I am running your default laser screen and have all my scripts turned off...

So Like you see i'm lost and most likely on the wrong path here..

Most likely getting you confused as well..

One other thing I see Axis 5 Dro moving when I hit fire and keeps running.. .

Thanks gary



« Last Edit: May 17, 2019, 07:29:42 PM by gburk » Logged
gburk
Full Member
***
Posts: 167


View Profile
« Reply #212 on: May 18, 2019, 04:16:23 PM »

Art

When I turn on the spindle I get the message channel 5 axis 5, this is confusing as far as I can see in your scripts its set to channel 4 axis 8..

and axis 5 starts running I don't see anywhere in the laser scripts that has this print message, so not sure where this channel and axis are being set I don't seem to be able to change it...

Gary
Logged
ArtF
Administrator
Hero Member
*****
Posts: 5322



View Profile
« Reply #213 on: May 18, 2019, 05:34:18 PM »

Gary:

 In my laser spindle script, I have

p = Profile("rtPWM");
global LaserAxis = p.GetInt("Axis",8);
global LaserMaxP ower = 100;  //max power = 100%
global LaserPWMP eriod = p.GetFloa t("Period",.0002); //for 5khz tickle 
global LaserPWMC hannel = p.GetInt("Channel",4);
//get a pokeys link for the spindle
global SpindleCo ntrol = Motion();

    This means the system starts up with getting these data items from
the profile under the heading rtPWM. The declarati on as in

global LaserAxis = p.GetInt("Axis",8);


  Means to set the LaserAxis to whatever is stored in the profile,  and
to use 8 as the axis is nothing has ever been set. The 8 is just a
default though. To change it it this type of use you can
simply change my declarati ons to

LaserAxis = 8; for example. It may be in your profile its stored as
a 5 and so doesnt use the 8 as default. Same thing with Channel
and such, they have defaults, but if set in the profile they can differ.

(You can open your profile, its just text and see if there are entries
for those variables unless you intend to use your own globals.).

Art


Logged
gburk
Full Member
***
Posts: 167


View Profile
« Reply #214 on: May 19, 2019, 08:54:24 AM »

Art

I have all my scripts turned off and your default screen running.
and only the script spindleli b-laser turned on the profile for this setup shows axis 8 channel 4 how would I wire that to check output voltage when FIRE Held down?
tried the pins for OC4 + - and also the 0-10v pins... no power change

Now if I run my profile it show's axis 5 channel 5, I have the default laser screen loaded with myprofile and the same scripts loaded as your default screen that has the globals set for axis to 8 and channel to 4, but never changes form axis 5 channel 5 back to axis 8 channel 4.. do I have to save the screen for this... it doesn't change even if I run the script...

With both profiles the correct free axis show dro movement when I use SpindleOn();
But the M3 S has no effect, only using the command SpindleOn(); in the script window...

I had a feeling this was going to be a hard one for me to figure out..

Thanks gary

Logged
ArtF
Administrator
Hero Member
*****
Posts: 5322



View Profile
« Reply #215 on: May 20, 2019, 07:14:47 AM »

Gary:

 Lets back this up a touch. I havent used the 0-10 volt myself, I use only the
PWM signals themselve s. You wont want to use the LaserSpin dle library, the
rtSpindle stuff ( Real-Time-Spindle) is a very fast PWM controlle r for a laser, it
modifies every ms, so its not good for spindle cnc use. We'll use a totally
different control for a cnc spindle.

  So lets first get the 0-10 volts working properly. If you have the correct
PWM channel, then changing its output from 0 - 100% in the Pokeys
software in its PWM config will change the voltage from 0 -10 volts?
 Does that much work?  We need to start at a point where we know
that the Pokeys is controlli ng the 0-10 volts. Then we need
to get to the point where a single script call in the script
window can change that voltage with SetPWM functions . From there
the spindle will not be hard.

You dont need to call any spindle function for that, as I
say we need to ignore the rtLaserSp indle, its a special internal
control and you wont use it.

  When SetSpindl eState( state ) is called, you dont need to call
SpindleOn() or SpindleOf f(), instead you need to simple call a
function that sets a pwm to the channel controlli ng the 0-10 volts.
   
inside SetSpindl eState( state )
{

  if ( state == 0): SetPwmDut y( channel, 0);
if (state == 1): SetPwmDut y( channel , properspe eddutycyc le);
 }

   So get the pokeys so you know the right channel is controlli ng the
0-10 volts.. and once thats definite, Ill guide you to finding what
number is the proper speed and how to send it to the pokeys
at the right time. But igfnore the LaserSpin dle library, you will
be turning that off and simply recoding its calls as a general cnc instead
of photo laser engraver.

Art
Logged
gburk
Full Member
***
Posts: 167


View Profile
« Reply #216 on: May 20, 2019, 10:27:31 AM »

Art

Thanks will start over and shut down all my scripts to test spindle only i'm not totally sure but in the pokeys configura tion it show pin 17 pwm 5

so I assume I have to set the axis to 5 or 6 or 7 or 8 whichever I choose and the channel to 5, will start here... anyway.

guess I was steering you in the wrong direction ... sorry

Thanks art
Logged
gburk
Full Member
***
Posts: 167


View Profile
« Reply #217 on: May 20, 2019, 11:28:41 AM »

Art

I think you mat have me on the right track here is the script

I called it with
SetSpindl eState (0); this changed the voltage from .222 to .442
SetSpindl eState (1); changed the voltage to 8.5 I think that's the max I seem to be able to output can't reach 10v even with mach4 and my pokeys has no trim pot so can't make any hardware adjustmen ts

Think i'm on the right track?

don't know if the axis is suppose to move like in your laser scripts but it doesn't...

global channel = 5;
global spindleax is = 5;
global speedduty cycle = 100;
global SpindleCo ntrol = Motion();
 
global SetSpindl eState = function(state)
{
  if ( state == 0)
  {
  SpindleCo ntrol.Set PWM( channel, spindleax is);
  }
  if (state == 1)
  {
  SpindleCo ntrol.Set PWM( channel , speedduty cycle);
  }
};

Thanks gary
« Last Edit: May 20, 2019, 11:38:00 AM by gburk » Logged
ArtF
Administrator
Hero Member
*****
Posts: 5322



View Profile
« Reply #218 on: May 21, 2019, 12:44:10 PM »

Gary:

>>SpindleCo ntrol.Set PWM( channel, spindleax is);

 You have the right idea, but the wrong parameter s. The "SpindleCo ntrol" is just a
hook to the Pokeys, so thats correct. But the call is actually. .

SpindleCo ntrol.Set PWM( channel,  dutycycle );

  So if you set 100, youll get full voltage, if you set 0, youll get 0vdc.
So, in the call you can do a

commandsp eed = GlobalGet("SpindleSp eed"); //this will be the Gcode commanded last speed
percent = (commandsp eed / 20000) * 100;
SpindleCo ntrol.Set PWM( channel,  percent );

  Add a function so that S calls are handled as in..

global SpindleSp eed = function( speed )
{
   /*power is automatic in laser spindle mode..
     no need to specify, in laser mode, spindle
     power is a function of augmentat ion */
  //but in CNC , we need to set the dutycycle to proper speed.

 
percent = (speed / 20000) * 100; //0-100% linearize d to 0 - 100%
SpindleCo ntrol.Set PWM( channel,  percent );

}; 

  Thats about all you need to make a spindle go, though you can be more
complex in its speed command, putting low limits and linearizi ng just
from min to the max.. many ways to do that I think.

Art


Logged
gburk
Full Member
***
Posts: 167


View Profile
« Reply #219 on: May 21, 2019, 07:22:19 PM »

>> You have the right idea, but the wrong parameter s. The "SpindleCo ntrol" is just a
>>hook to the Pokeys, so thats correct. But the call is actually. .

>>SpindleCo ntrol.Set PWM( channel,  dutycycle );

Yes figured that out and had removed it...

>>global SpindleSp eed = function( speed )
>>{
>>   /*power is automatic in laser spindle mode..
 >>    no need to specify, in laser mode, spindle
>>     power is a function of augmentat ion */
 >> //but in CNC , we need to set the dutycycle to proper speed.

 
>>percent = (speed / 20000) * 100; //0-100% linearize d to 0 - 100%
>>SpindleCo ntrol.Set PWM( channel,  percent );

Yes already have this working also..
I have a setting for max spindle speed and replace the / 20000 with / MaxSpindl eSpeed that's in a dro I placed on the screen

haven't tried it on the mill yet but the voltage does go form 0 to 8.5 volt depending on the percent values...

so I think it will work I will try it on the mill in the next couple of days its been hotter that heck here weather people are talking about reaching 100 this week...

My next and hopefully the last function to get working, endless I find other problems along the way..
Is the spindle index, i'm not sure how you would connect it up with auggie  the pokeys doc's say it on pin 13 of the ultra fast encoder.. .
So I am not sure if a script would be fast enough for the index,  kind of like the probe routine i'm thinking, and it would have to be accessed Constantl y to update the rpm dro…

With mach4 I have it connected with the smoothste pper and I am using a c3 I think that's the board from cnc4pc maybe a c6 and just to a pin on the BOB I think i'm using pin 15.
Would I need the index board for pokeys also, it doesn't sound it from the docs but if that would make it easier then that's what I will do..

Thanks gary
 
Logged
ArtF
Administrator
Hero Member
*****
Posts: 5322



View Profile
« Reply #220 on: May 21, 2019, 09:09:03 PM »

Gary:

  Great!, sounds like your about there. Spindle should be fine.

  >>Is the spindle index, i'm not sure how you would connect it up with auggie  the pokeys doc's say it on pin 13 of the ultra fast encoder.. .

  Are you looking to use the index for speed calculati ons? Mach4 may use it for constant speed PID
loop or something, but other than perhaps a speed indicatio n Im not so sure its usefull in
Auggie. I think the pokeys has a hi-speed counter or a high speed encoder input you could use
and sample it periodica lly for a count, divide by time passed and youd get a fairly accurate
indicatio n of speed.
   I havent used any index in the pokeys , I havent had a use for it, but if you can figure
out how to count it on the pokeys, you can likely get the informati on by script. Your right
about the index being too fast for Auggie to do anything with , it only converses with
the pokeys a hundred times a second or so.
  Spindle feedback, unless its for pid correctio n I never saw as being very usefull for
my own use. Let me know if you need any methods to read a count or anything, Im
pretty sure their all there though perhaps not doc'ed..

Glad to see things are coming along..ju st remember, use caution, I havent used the
program for much cnc , just laser. Your cutting new ground,but it was designed
to run near anything really..


Art
Logged
gburk
Full Member
***
Posts: 167


View Profile
« Reply #221 on: May 22, 2019, 10:13:52 AM »

Art

My Thought is so I can see what RPM the spindle is turning and if I can read it close enough and compare it to want I want it to a just the current to correct the speed if possible, probably not or find a way to sink the two correct current to entered RPM..

Make any sense, wasn't sure if you may have the code already built into auggie…

Maybe just a way to display the RPM using the sensor..

Thanks You have been a great help and not getting to frustrate d  with me

one thing before I forget where you able to check why the m6 runs when I boot g code the g code never moves past the first line but the m6 is running moving the z to 1.0 which is what I have in the script hit run now and it runs ok stops as it should at m6..
I motioned this a while a go and forgot about it..

Gary     
« Last Edit: May 22, 2019, 01:40:53 PM by gburk » Logged
ArtF
Administrator
Hero Member
*****
Posts: 5322



View Profile
« Reply #222 on: May 22, 2019, 08:32:42 PM »

Gary:

  I think Ive fixed the script running during load but it may not be in your version.
Ill try to get a version out this week.

   You may be able to hook up the encoder of the spindle up to the
hispeed encoder input on the Pokeys, reading that will probably give a number we
can use to compute a speed approxima tion..

Art
Logged
gburk
Full Member
***
Posts: 167


View Profile
« Reply #223 on: May 23, 2019, 01:27:22 PM »

art

When I made the BOB for my pokeys I have it with all ribbon cables in and screw terms out except for the homing and encoder those are the opposite's screw term in and ribbon out to the pokeys make sense to you if not I can try and post a pic of the board,

any way I have the index already on the board running to pin 13 of the encoder in pokeys and wire 7 of the of the encoder cable..

I just would need to know how to read it, thats way above my pay grade Smiley

I tested the relays on the mill and the flood and spindle power up great, so next I will check the spindle speed and see if I can get it moving it should work getting good voltage changes from the 0-10v output, will let you know how that gos..

thanks gary 
Logged
ArtF
Administrator
Hero Member
*****
Posts: 5322



View Profile
« Reply #224 on: May 23, 2019, 08:06:08 PM »

Gary:

  Try as I might I cant find any way to read just an index and figure out speed.
There is no way it would be read fast enough by Auggie to know anything about speed.
In theory one could use such a signal to move the spindle until it stops on index..in other
words to use the index as a homing signal of sorts, but for counting speed its useless
unless the entire encoder is hooked up so that a count may be taken. Now if you hooked
the index instead to a connector pin that can be used as a counter you could at least count
the index pulses, so that dividing by time would give a good approxima tion of
actual speed. I cannot think of any way to use just an index signal though.. they are very short
and cannot be read by anything at any reliable speed.
  Im not sure how M4 could count speed with the index.. or mach3...

Art

Logged
Pages: 1 ... 13 14 [15] 16 17 ... 22
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006-2009, Simple Machines LLC Valid XHTML 1.0! Valid CSS!