proto3 / klipper-plasma

Klipper for plasma CNC (in progress...)
GNU General Public License v3.0
17 stars 6 forks source link

Question: About Klipper Plasma #1

Closed leonmelson closed 3 years ago

leonmelson commented 3 years ago

Hi Lucas I was not sure how to get hold of you on your Klipper Plasma Branch so i am contacting your here.

If your Klipper Plasma is setup just for a 3d printer will it still function like normal klipper.

Thank You Leon Melson

proto3 commented 3 years ago

Hi, there was effectively no issues tab on my Klipper fork. I just realized it has to be enabled manually on forked repositories (which is now the case). To answer your question, yes, it will function like normal Klipper for a 3d printer.

But there is currently one exception in klippy/extras/idle_timeout.py. As I use no heater, I removed the TURN_OFF_HEATERS from the idling gcode sequence. Otherwise I receive an error message after 10 minutes, telling me TURN_OFF_HEATERS command doesn't even exist. It would be safer to not remove this gcode, but to handle that case quietly.

leonmelson commented 3 years ago

Ok I saw that it was removed from the idle_timeout.py but if I put it back TURN_OFF_HEATERS your plasma system should still work fine correct?

I want to be able to use the same raspberry pi for 3d printing, cnc and plasma cutting.

O and I just wanted to find out when the plasma.py reads the transfer_pin does it read it as an analog value between 0 and 5v.

I am making a laser system that will send a pwm single based on die analog arc voltage "if arc voltage is 2.5v then the 1Khz pwm is 50% duty cycle" to an OPT101 photodiode. I can turn this back into an analog signal but not with the 1Khz signal it is to slow to do a low pass filter.

So I will read it first with and attachedInterrupt get the width of the signal then map it back to a fast switching PWM so I can low pass filter it back to your transfer_pin that is if it reads an analog signal.

Thank You Leon Melson

proto3 commented 3 years ago

Ok I saw that it was removed from the idle_timeout.py but if I put it back TURN_OFF_HEATERS your plasma system should still work fine correct?

Yes, it will still work if you put TURN_OFF_HEATERS back. In fact Klipper will just inform you with something like "!! Unknown command TURN_OFF_HEATERS in TTY. The problem is on software that sends gcodes (Sheetah, Octoprint...) which have to interpret these errors and possibly stop its current job. I use Sheetah and it stops as soon as it receive an error from Klipper (anything starting with "!!"). This is also the way Sheetah gets informed when plasma transfer fails for example.

O and I just wanted to find out when the plasma.py reads the transfer_pin does it read it as an analog value between 0 and 5v.

This is done in src/plasma.c with gpio_in_read(p->transfer_pin) and it is digital reading. You can set logic level and pullup in your configuration file like any other pin with "!" and "^".

I am making a laser system that will send a pwm single based on die analog arc voltage "if arc voltage is 2.5v then the 1Khz pwm is 50% duty cycle" to an OPT101 photodiode. I can turn this back into an analog signal but not with the 1Khz signal it is to slow to do a low pass filter. So I will read it first with and attachedInterrupt get the width of the signal then map it back to a fast switching PWM so I can low pass filter it back to your transfer_pin that is if it reads an analog signal.

  1. Why not using an optocoupler directly ? It seems you will have more problems characterizing the laser and photodiode level and time response.
  2. IMHO I would not recommend to do PWM decoding in software with interrupts as it consume a lot a CPU resources. There exist chips that convert it to analog voltage, then you can read it directly with internal ADC. Personally, I opted for a different solution without PWM. I use a external ADC (ADS1015) that I can read to through i2c bus. The i2c link is isolated with an ISO1541 chip https://klipper-plasma.readthedocs.io/en/latest/hardware.html I think this is more a software solution because everything about reading precision is handled by the external ADC, but PWM is good too and probably more economical. Thus it may be a bit more challenging to get it well calibrated (still from a software guy point of view).
  3. I think you are confusing with transfer_pin and arc voltage. Transfer_pin is only for arc ON/OFF information. The arc voltage pins are not mentioned in configuration as they are the default i2c pins of the board (SDA/SCL).
leonmelson commented 3 years ago

Hi yes you are correct i have confused the transfer pin for the arc voltage.

I really like what you are doing with this project.

I could use optoisolators for my pwm but have the lasers and the opt101's. I will have a dedicated arduino uno or pro only handling the plasma on laser and then it will read the laser pwm from the opt101. The opt101 can handle up to 14khz so it is faster than a standard opto isolater i think they can handle 4khz."Might even be possible to send 9600 Baud Rate serial signals from and to the plasma cutter".

It would be nice to have klipper also be compatible with a proma thc. I have never worked with them so i am not 100% sure how they work. But I think it has an enable pin en then and read up or down pin that tells the controller how to adjust the z height. Maybe in the future you could add more modes and if or when i get better with python I will help with that.

I was planning to just have the main arduino Laser/OPT101 read and plasma ON pin from Klipper "But while the plasma pin is not on the main arduino will just pass through the step en dir pins" then send it to the Plasma arduino to enable the plasma and start to transmit its pwm signal "Or Serial not sure yet". The Main Arduino will then read that signal and stop the passthrough and start to adjust the z height based on the signal that it receives from the plasma. So in this case Klipper will not do much. I think the Proma THC SD works in a similar way.

If I keep it a 1Khz PWM signal then it will work well with opto isolators as well. So maybe I should keep it with a pwm. "O I was thinking of sending a pwm stack for example I first send 1 x 20% pwm's then the pwm single and last 1x 80% pwms so everything that starts and ends with the fixed value is accurate data".

Thank you so long for the excellent project Hope to hear from you soon again.

Thank You Leon Melson

On Sat, 29 Aug 2020, 12:36 Lucas Felix, notifications@github.com wrote:

Ok I saw that it was removed from the idle_timeout.py but if I put it back TURN_OFF_HEATERS your plasma system should still work fine correct?

Yes, it will still work if you put TURN_OFF_HEATERS back. In fact Klipper will just inform you with something like "!! Unknown command TURN_OFF_HEATERS in TTY. The problem is on software that sends gcodes (Sheetah, Octoprint...) which have to interpret these errors and possibly stop its current job. I use Sheetah and it stops as soon as it receive an error from Klipper (anything starting with "!!"). This is also the way Sheetah gets informed when plasma transfer fails for example.

O and I just wanted to find out when the plasma.py reads the transfer_pin does it read it as an analog value between 0 and 5v.

This is done in src/plasma.c with gpio_in_read(p->transfer_pin) and it is digital reading. You can set logic level and pullup in your configuration file like any other pin with "!" and "^".

I am making a laser system that will send a pwm single based on die analog arc voltage "if arc voltage is 2.5v then the 1Khz pwm is 50% duty cycle" to an OPT101 photodiode. I can turn this back into an analog signal but not with the 1Khz signal it is to slow to do a low pass filter. So I will read it first with and attachedInterrupt get the width of the signal then map it back to a fast switching PWM so I can low pass filter it back to your transfer_pin that is if it reads an analog signal.

  1. Why not using an optocoupler directly ? It seems you will have more problems characterizing the laser and photodiode level and time response.
  2. IMHO I would not recommend to do PWM decoding in software with interrupts as it consume a lot a CPU resources. There exist chips that convert it to analog voltage, then you can read it directly with internal ADC. Personally, I opted for a different solution without PWM. I use a external ADC (ADS1015) that I can read to through i2c bus. The i2c link is isolated with an ISO1541 chip https://klipper-plasma.readthedocs.io/en/latest/hardware.html I think this is more a software solution because everything about reading precision is handled by the external ADC, but PWM is good too and probably more economical. Thus it may be a bit more challenging to get it well calibrated (still from a software guy point of view).
  3. I think you are confusing with transfer_pin and arc voltage. Transfer_pin is only for arc ON/OFF information. The arc voltage pins are not mentioned in configuration as they are the default i2c pins of the board (SDA/SCL).

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/proto3/klipper-plasma/issues/1#issuecomment-683271759, or unsubscribe https://github.com/notifications/unsubscribe-auth/AFHTKOKK76NRUQSG5S5KYJDSDDKZ3ANCNFSM4QL2CSKQ .

github-actions[bot] commented 3 years ago

Hello,

It looks like there hasn't been any recent updates on this Klipper github issue. If you created this issue and no longer consider it open, then please login to github and close the issue. Otherwise, if there is no further activity on this thread then it will be automatically closed in a few days.

Best regards,

~ Your friendly GitIssueBot

PS: I'm just an automated script, not a human being.