开源改变世界

CNC 等离子 THC 集成 #1260

推推 grbl 3年前 (2022-10-30) 311次浏览 0个评论
关闭
bduplan 打开了这个问题 on 6 Jul 2017 · 27 条评论
关闭

CNC 等离子 THC 集成#1260

bduplan 打开了这个问题 on 6 Jul 2017 · 27 条评论

注释

CNC 等离子 THC 集成 #1260

我正在使用 v3.51 grbl shield 运行 0.9j。它在我的 4×4 英尺数控等离子台上运行良好,但我很难让割炬高度控制器工作。我编写了第二个 arduino uno 作为割炬高度控制器 (THC),它一直工作到等离子电源打开。等离子弧会产生大量 EMI,我只是无法防止 THC uno 在切割过程中崩溃并重新启动。它有时可以正常工作,但有时不能。我已经屏蔽并接地了所有东西,grbl控制器很好。我在设计、构建和故障排除之间尝试了几个月。无论如何,我现在已经准备好硬着头皮购买像 Proma THC 这样的集成单元。我真的需要让机器工作并使用它。

THC 获取 SpinEn 输出,当不使用 THC 时触发等离子弧继电器,并拦截它。它使用它作为触发器首先进行探测,然后将信号发送到继电器以启动等离子体。然后它等待一段预定的时间(约 0.5 秒)并向 CNC 控制器发送一个“Arc OK”信号,告诉它开始 X 和 Y 运动。我的 Hypertherm 等离子机在检测到电弧已穿透金属时也可以发送 Arc OK。

所以我的问题是:“arc OK”反馈可以作为恢复命令发送到 grbl,但我一开始不知道如何保持它。我希望有一种方法可以将命令放入后处理器中,从而使 grbl 进入暂停状态。我对此很陌生,所以我试着放一个“!” 紧跟在 M03 命令之后的行上,我相信您知道这会为不受支持的 g-code 命令引发错误。但我提到这一点是为了说明我正在努力实现的目标。有没有办法让 grbl 在继续之前基本上等待那个 Arc OK 信号?

谢谢你的帮助!

CNC 等离子 THC 集成 #1260
作者

bduplan 评论 on 8 Jul 2017  

我偶然发现了一点,并认为我找到了解决方案。

在 gcode.c 文件中,我找到了以下用于主轴控制的代码块:

// [7. Spindle control ]:  
if (gc_state.modal.spindle != gc_block.modal.spindle) {

  // Update spindle control and apply spindle speed when enabling it in this block.    

  spindle_run(gc_block.modal.spindle, gc_state.spindle_speed);

  gc_state.modal.spindle = gc_block.modal.spindle;

}

并添加了另一个 if 语句。所以意图是,如果命令是打开主轴,它会使用我在文件其他地方找到的代码执行进给保持。

// [7. Spindle control ]:
if (gc_state.modal.spindle != gc_block.modal.spindle) {

  // Update spindle control and apply spindle speed when enabling it in this block.   
 
  spindle_run(gc_block.modal.spindle, gc_state.spindle_speed);

  gc_state.modal.spindle = gc_block.modal.spindle;

  if (gc_block.modal.spindle == SPINDLE_ENABLE_CW) {

    //Execute a feed hold so that the THC has time to probe.  The THC will resume via the resume pin

    bit_true_atomic(sys_rt_exec_state, EXEC_FEED_HOLD); // Use feed hold for program pause.

  }

}

所以现在当 gcode 发送 M03 命令时,它会进入暂停状态。我在一个 gcode 文件上对此进行了测试,该文件在剪切一些字母的过程中会触发两次火炬。将屏蔽上的恢复引脚接地,然后恢复程序。通过 UGCS 发送的“~”恢复命令在此保持状态下将不起作用,但我应该能够忍受。我只是想知道这是否表明我忽略了一些可能导致问题的东西。

CNC 等离子 THC 集成 #1260

G4 会在一段时间内停下来,为你想要的而工作吗?

CNC 等离子 THC 集成 #1260
作者

bduplan 评论 2017 年 7 月 8 日

不,因为探头将花费不同的时间,具体取决于割炬头在开始时与工件的距离。探针完成后,THC 将信号发送到等离子电源以触发电弧,因此 CNC 需要在与该电弧相关的精确时间恢复运动。

CNC 等离子 THC 集成 #1260
CNC 等离子 THC 集成 #1260
CNC 等离子 THC 集成 #1260
作者

bduplan 评论 2017 年 7 月 10 日

感谢您的全面回复。我不得不承认,我需要一点时间来消化其中的大部分内容。我了解 THC 操作,因为我在设计我的第一个操作时花了很多心思。第二个 Uno 处理了您概述的所有功能。我遇到的问题是稳定性。有时切割时会崩溃。它会做一些削减,然后重置。因为我通过串行监视器处理了材料厚度识别,所以它会重置并询问用户切割中间的厚度。我遇到的另一个问题是获得准确的电弧电压。它非常准确地读取电池电压和 0-5V 之间的任何电压,但切断电压有点嘈杂,而且通常低于应有的电压。我拥有的 Hypertherm Powermax 45XP 提供分弧电压,但我想它没有很好地过滤。这是我需要测试的东西。我可以在运算放大器板上制作一个 RC 滤波器来测量电压。我不得不使用运算放大器,因为 Hypertherm 在 (+) 和 (-) 引脚上提供分压电弧电压 (50:1),但两者均未以地为参考。所以我制作了一个运算放大器电路,接地参考电压测量,以便 arduino 可以在模拟引脚上读取它。我还有一个让 arduino 更稳定的想法,我将通过简单地测量电弧电压并看看 Uno 的表现来测试它。所以我制作了一个运算放大器电路,接地参考电压测量,以便 arduino 可以在模拟引脚上读取它。我还有一个让 arduino 更稳定的想法,我将通过简单地测量电弧电压并看看 Uno 的表现来测试它。所以我制作了一个运算放大器电路,接地参考电压测量,以便 arduino 可以在模拟引脚上读取它。我还有一个让 arduino 更稳定的想法,我将通过简单地测量电弧电压并看看 Uno 的表现来测试它。

昨天,我设法在我的后处理器中获得了可靠的探测序列。有趣的是,如果探针后面跟着一个弧,我得到错误 33 并且它没有被执行。弧确实位于 0.0005″ 以内的路径上。通过将我的引导从弧更改为直线,它可以工作。我在最新的 grbl 1.1 和 0.9j 上验证了这种行为。

(附带说明一下,最新的稳定版 UGCS(1.0.9)在 grbl 1.1 上不显示机器位置,但在 0.9j 上显示。)

我买了 SheetCAM 来编写 gcode。SheetCAM 存储工具,我为每种材料厚度都有一个。不同厚度的再加工对我来说不是问题。我使用了 Mach3_plasma 帖子并对其进行了一些修改。这部分给了我探测:
function OnPenDown() --Probe post.ModalText (" G38.2") post.ModalNumber (" Z", -10, "0.0000") post.ModalNumber (" F", 300, "0.####") post.Eol() --Reset Z axis and feed rate post.Text (" G92 Z-4.8500\n") post.ModalNumber (" F", 4500, "0.####") post.Eol() --Move up above pierce height (for backlash) post.Text (" G00 Z7.0000\n") --Move to pierce height post.NonModalNumber (" Z", pierceHeight * scale, "0.0000") --Below here was already in the post post.Text ("\n M03\n") if (pierceDelay > 0.001) then post.Text (" G04 P") post.Number (pierceDelay,"0.###") post.Eol() end end

以上工作正常,所以剩下的就是切割时响应分压弧压的调整。如果我能让我的另一个 Uno 来处理它,我可能会使用它。根据经验,我希望看到的问题是:
1.)缓慢的调整。使用 AccelStepper 库可能是原因。也许我应该只使用步进器库来加快移动速度。我试着把加速度调高,但它仍然很慢。它在 5Hz 处对值进行平均,但当它必须进行调整时,它不会比 1Hz 快。
2.)通过 grbl Z 步骤通过 THC。也许这是中断功能的工作?请记住,我是新手。这实际上是我的第一个 arduino 项目。我之前通过让 THC Uno 控制一个通过 grbl 步骤或 THC 步骤和方向的继电器来让它工作。它起作用了,但是很粗糙而且有点不可靠。根据文档,Proma THC SD 实际上似乎也使用继电器。
3.) 如前所述,准确测量输入电压。
4.) 为 Arduino 断电后的耗材寿命存储起弧时间。这只是我必须在开机时手动输入的东西吗?我不经营生产车间,所以我的消耗品应该可以持续很多次。

CNC 等离子 THC 集成 #1260
CNC 等离子 THC 集成 #1260
作者

bduplan 评论 2017 年 7 月 10 日

回复:电弧电压校准。hypertherm 背面有一个 amphenol 端口,该端口具有用于触发电弧的引脚、接地引脚、arc ok 引脚(干式接地)以及用于分压电弧电压的 (+) 和 (-)。我首先尝试通过将 (+) 引脚连接到 THC Uno 上的模拟引脚并将 (-) 引脚接地来测量电压。这给出了非常不一致的值。(-) 引脚在切割时测量到接地时读取电压,有时它既是正的又是负的。所以我构建了一个微分运算放大器电路,它测量 (+) 和 (-) 之间的差异,然后输出该电压(这就是我所说的接地参考,因为电压现在是从所有的公共接地测量的控制使用。)起初,我在运算放大器电路上的增益是 1,你是对的,它在 5V 时确实有问题。然后我通过增加电阻将增益降低到 1/2,现在它可以准确测量 1.63V 的电池、两个串联的 3.26V 和 5V 的 Vref。在 5V 时,测量值为 4.96。

我将不得不查找如何写入 eeprom,但我不知道这可以通过编程方式实现,所以这是个好消息。

grbl Uno 和我的 THC Uno 都通过 USB 连接到笔记本电脑。THC Uno 似乎没电了,所以我也用 1A 9V DC 壁式电源给它供电。我认为这是导致我的崩溃问题的一个重要因素,因为电线没有屏蔽并且在我的电箱之外运行。

我有一个装有电子设备的家用断路器箱。它通过橡胶隔离器(电气和振动隔离)​​安装在桌面框架上,并通过 4ga 绞线直接接地到 8′ 接地棒。台架也与接地棒分开接地。所有接线(除了电源线)都被屏蔽并接地到脚架。在它们进入电子盒之前,我的电线上有铁氧体磁芯。盒子上的所有孔(一个用于 120 毫米风扇,另外三个用于排气)都覆盖有铝窗纱。grbl Uno 从不崩溃。

我的割炬头浮动在轴承上,4.85mm 是割炬头接触工件和触发探头开关之间的测量值。因此,当探头开关打开时,Z 轴低于零,因为它必须在割炬开始升高之前恢复。然后,我将割炬带到零上方 7 毫米处,然后返回以考虑运行 z 轴的螺杆驱动器的间隙。这确保了我得到正确的穿孔高度 (0.15″) 并且 z 轴在 grbl 要求它下降到切割高度 (0.06″) 时立即响应。我已经验证这适用于百分表,并且始终在 0.003″ 以内。

非常感谢您花时间帮助我!我将研究 _BV 函数和中断。我使用中断来测量 X 和 Y 步长,以便确定它们是否足够快地进给以进行 Z 调整,或者我是否应该在减速转弯时停止 THC。稍后我将在删除探测例程后发布我的 THC 代码,因为它在 grbl 中工作。

在测头后放置 G02/G03 圆弧后,您是否遇到过错误 33?如果我注释掉 G38.2 行并保持其他所有内容不变,则弧线工作正常。我现在使用线性导入而不是弧线。

CNC 等离子 THC 集成 #1260
CNC 等离子 THC 集成 #1260
作者

bduplan 评论 2017 年 7 月 11 日

等离子台接地到接地棒,接地棒被驱动到地面 8 英尺。我通常将等离子电源的大夹具夹在工件上,但我已将它夹在工作台和接地棒上(海宝的 Jim Colt 向其他人提出的建议。)

当您说不要将 THC 接地时,我不明白。您如何在不共享接地的情况下为其供电或让它向/从 grbl Uno 发送信号?

我的 gcode 是公制的,精度为 4 位小数。只有在 G38.2 存在时才会出错。如果我将其注释掉并离开 G92,它不会出错。(坐标都是错误的,但不会抛出错误。)

CNC 等离子 THC 集成 #1260
CNC 等离子 THC 集成 #1260
作者

 bduplan 评论 2017 年 7 月 11 日

CNC 等离子 THC 集成 #1260

嗨,大家好,

我刚刚连接了我们的测试平台,明天太平洋夏令时间下午 6:00 将运行等离子/grbl 测试,在我们的 youtube 频道上直播。我们正在使用 Lotos LTP5000D 和 CNC 直式割炬。Grlb 版本 1.1f。

优酷直播!

谢谢

CNC 等离子 THC 集成 #1260

@zentoolworks 是否有更多关于 LTP5000D 的引脚排列、接线和技术数据等技术数据?

CNC 等离子 THC 集成 #1260
作者

bduplan 评论 2017 年 7 月 12 日  

这是我将 Uno THC 与继电器和 Z 驱动器连接起来的方法。X 和 Y 驱动程序(以及 A 上的克隆 X)是 grbl shield 上的 8825。我的下一步是取出为 THC 供电的壁疣,并在 EMI 滤波器之后从金属盒内部获取电力。与此类似:https ://www.picclickimg.com/d/w1600/pict/121235665835_/1pc-NEW-AC-Power-Line-EMI-Filter-10A.jpg

图:
http ://sickspeedmonte.com/Wiring.jpg

如果有问题,我真的不需要在切割时将 THC 连接到计算机上。

这是我将运算放大器放入分压弧压之前的接线图。
http://sickspeedmonte.com/IMG_7323.JPG

运算放大器电路:
http
://hades.mech.northwestern.edu/images/3/36/Opamp_differential_amp.gif R1 = 2kohm, R2 = 1kohm

CNC 等离子 THC 集成 #1260

@mkeyno

LTP4000D Lotos 是一款没有任何探头反馈的 50A 机器。我正在使用 Pin12(主轴启用)来控制等离子炬触发器。目前,我只有 X 和 Z 轴设置,所以它只会切出一条直线。最后,我想先探测切割区域,并使用该数据来补偿割炬高度。

这是一个示例 gcode 序列,它将被发送到 grbl shield。我们现在假设表面是平的。

S1000
M5
G4 P0.5(根据测试结果调整延迟)
G1 X20 F100(联邦也需要根据结果调整)
M3
X0

CNC 等离子 THC 集成 #1260
CNC 等离子 THC 集成 #1260
作者

 bduplan 评论 2017 年 7 月 12 日

CNC 等离子 THC 集成 #1260
作者

bduplan 评论 2017 年 7 月 12 日  

这是 THC Uno 上的代码。我还没有运行这个特定的草图。我一直在运行另一个版本,其中包括探测,所以我只是移除了探针部分,这就是闭环电弧电压反馈部分的剩余部分。

// Libraries ===========================================
#include <AccelStepper.h>

// Pin Assignments =====================================
const byte arcVoltPin = 1;                              //analog input

const byte xStepInPin = 2;                              //digital input  0 and 1 are reserved for TX/RX
const byte yStepInPin = 3;                              //digital input  2 and 3 are the only valid interrupt pins
const byte spinEnInPin = 5;                             //digital input

const byte zStepControl = 6;                            //digital output  High Level Trigger Relay
const byte zDirControl = 7;                             //digital output  Low Level Trigger Relay
const byte zStepOutPin = 10;                            //digital output
const byte zDirOutPin = 13;                             //digital output

// Parameters to tune ==================================
float vHyst = 1;                                        //Hysteresis for OK-Band during THC closed-loop operation (undivided arc voltage, V).  If the measured voltage is within the target, +/- vHyst, tortch height is not changed
float zBacklash = 1.81;                                 //mm, backlash in z axis
float THCsteps = 0.5;                                   //mm of adjustment on every THC iteration in closed feedback loop control
float loopFreq = 5;                                     //Hz, frequency of Z adjustment in closed-loop
float zMaxSpd = 10;                                     //mm/s
float zMaxAccel = 1000;                                 //mm/s^2
float ArcVoltDivisor = 100.6;                           //Voltage divider, set at 50:1 (times a 2.012 op amp gain)
float xstepspmm = 20.32;                                //X steps per mm
float ystepspmm = 20.32;                                //Y steps per mm
float zstepspmm = 102.00;                               //Z steps per mm
float closedLoopSpeed = 400;                            //Z steps per sec
float closedLoopAccel = 50000;                          //Z steps per sec^2
int sampleSize = 80;                                    //Number of samples for running average.  Max of (1000/loopFreq)

// Initialize variables ================================
String tTarg;
float startx;
float starty;
float startt;
float endt;
float freqx;
float freqy;
float freqPythag;
volatile unsigned int xsteps;
volatile unsigned int ysteps;
float arcVsum;
float arcVavg;
float vTarg;
float frTarg;
boolean validInput = false;
boolean lastMoveUp;
unsigned int charCount;
float i;
unsigned int floatLowCount;
unsigned int floatHighCount;
float arcV2Counts = (1024/(5*ArcVoltDivisor));
unsigned int SpinEnInCount;

// Define a stepper and the pins it will use ===========
AccelStepper stepper(AccelStepper::DRIVER, zStepOutPin, 
  zDirOutPin);


void setup() {
  // Set input pins ====================================
  pinMode(xStepInPin, INPUT);
  pinMode(yStepInPin, INPUT);
  pinMode(spinEnInPin, INPUT);
  pinMode(zStepControl, OUTPUT);
  pinMode(zDirControl, OUTPUT);
  pinMode(zStepOutPin, OUTPUT);
  pinMode(zDirOutPin, OUTPUT);
  
  // AccelStepper Parameters ===========================
  stepper.setPinsInverted(true, false, false);          //Direction, Step, En, TB6600 Driver
  
  // Interrupt Parameters for measuring X/Y speed ======
  attachInterrupt(digitalPinToInterrupt(xStepInPin), 
    xcount, RISING);
  attachInterrupt(digitalPinToInterrupt(yStepInPin), 
    ycount, RISING);

  // Get target thickness from serial monitor ==========
  Serial.begin(9600);                                   //Start the serial buffer
  while (!validInput) {                                 //Until a valid input has been entered
    tTarg = SerialInput("material thickness");          //Target thickness
    
    // Correlate material thickness ====================//Hypertherm Powermax 45XP
    if      (tTarg == "16ga") {
      frTarg = 249*25.4/60;                             //inches/min to mm/s
      vTarg = 128;                                      //Volts
      validInput = true;                                //boolean
      Serial.println("16 ga identified");
    }
    else if (tTarg == "14ga") {
      frTarg = 225*25.4/60;                             //inches/min to mm/s
      vTarg = 128;                                      //Volts
      validInput = true;                                //boolean
      Serial.println("14 ga identified");
    }
    else if (tTarg == "10ga") {
      frTarg = 129*25.4/60;                             //inches/min to mm/s
      vTarg = 128;                                      //Volts
      validInput = true;                                //boolean
      Serial.println("10 ga identified");
    }
    else if (tTarg == "3/16") {
      frTarg = 85*25.4/60;                              //inches/min to mm/s
      vTarg = 129;                                      //Volts
      validInput = true;                                //boolean
      Serial.println("3/16 identified");
    }       
    else if (tTarg == "1/4") {      
      frTarg = 48*25.4/60;                              //inches/min to mm/s
      vTarg = 130;                                      //Volts
      validInput = true;                                //boolean
      Serial.println("1/4 identified");
    }       
    else if (tTarg == "3/8") {      
      frTarg = 33*25.4/60;                              //inches/min to mm/s
      vTarg = 136;                                      //Volts
      validInput = true;                                //boolean
      Serial.println("3/8 identified");
    }       
    else if (tTarg == "1/2") {      
      frTarg = 18*25.4/60;                              //inches/min to mm/s
      vTarg = 141;                                      //Volts
      validInput = true;                                //boolean
      Serial.println("1/2 identified");
    }
    else if (tTarg == "0.1") {      
      frTarg = 184*25.4/60;                             //inches/min to mm/s
      vTarg = 128;                                      //Volts
      validInput = true;                                //boolean
      Serial.println("0.100\" identified");
    }
    else if (tTarg == "1/8") {      
      frTarg = 144*25.4/60;                             //inches/min to mm/s
      vTarg = 128;                                      //Volts
      validInput = true;                                //boolean
      Serial.println("1/8\" identified");
    }
    else {
      Serial.println("Invalid Response");
    }
  }
}

// Interrupt Functions for XY steps ====================
void xcount() {
  xsteps++;
}

void ycount() {
  ysteps++;
}

void moveWithBlock() {
  while (stepper.run()) {                               //Could this be while (stepper.run()) ?
    stepper.run();
  }
}

// Serial Input Function ===============================
String SerialInput(String InputParam) {
  Serial.print("Enter the ");
  Serial.print(InputParam);
  Serial.println(". [16ga, 14ga, 10ga, 1/8, 3/16, 1/4, 3/8, 1/2, 0.1]");
  String Input;
  while(Serial.available() == 0) { }                    // There really is nothing between the {} braces, delays until something is entered.
  if (Serial.available() > 0) {                         //If there is anything in the buffer
    Input = Serial.readString();                        //parse the input from the buffer   
  }     
  return Input;
}

void loop() {
  // Set Z-stepper Speed/Accel
  stepper.setMaxSpeed(zMaxSpd*zstepspmm);               //mm/s (scaled to steps)
  stepper.setAcceleration(zMaxAccel*zstepspmm);         //mm/s^2 (scaled to steps)
  
  //Give Z control to grbl through relay ===============
  Serial.println("Pass-through Z from grbl");
  digitalWrite(zStepControl, LOW);
  digitalWrite(zDirControl, HIGH);
  delay(10);
  SpinEnInCount = 0;
  while (SpinEnInCount < 3) {
    SpinEnInCount = SpinEnInCount+digitalRead(spinEnInPin); //If there is no spinEn command, wait
    delay(30);
  }

  // When SpinEn goes HIGH, take Control of the Z axis
  digitalWrite(zStepControl, HIGH);                     //Closes high
  digitalWrite(zDirControl, LOW);                       //Closes low (different relay type)

  // Closed loop THC ===================================
  Serial.print("Target Voltage: ");
  Serial.print(vTarg-vHyst);
  Serial.print(" to ");
  Serial.print(vTarg+vHyst);
  Serial.println(" volts");
  
  while (digitalRead(spinEnInPin) == HIGH){             //Only do when torch is on
    // Get starting X and Y positions ==================
    startx = xsteps;
    starty = ysteps;
    startt = millis();
    
    // Get the average arc voltage =====================
    i = 0;
    arcVsum = 0;
    while ((millis()-startt) <= ((1/loopFreq)*1000)){   //Calculate avg voltage over delay period
      //delay(((1/loopFreq)/sampleSize)*1000);            //(1/loopFreq) = Period.  Period/sampleSize => sampleSize samples during delay.  1/sampleSize * 1000 for ms
      arcVsum = arcVsum+analogRead(arcVoltPin);
      i++;
    }
    arcVavg = (arcVsum/i)/arcV2Counts;                  //Average arc voltage (sum/numel) * (D to A) * ArcVoltDivisor
    Serial.print(arcVavg);
    Serial.print(" ");
    
    // Calculate X and Y speeds ========================
    endt = millis();
    freqx = ((xsteps-startx)/xstepspmm)/
      ((endt-startt)/1000);                             //dx/dt, mm/s
    freqy = ((ysteps-starty)/ystepspmm)/
      ((endt-startt)/1000);                             //dy/dt, mm/s
    freqPythag = sqrt(sq(freqx)+sq(freqy));             //dv/dt, mm/s of torch head in XY plane
    
    // Control Torch Height ============================
    stepper.setMaxSpeed(closedLoopSpeed);               //Set stepper speed for closed-loop THC control
    stepper.setAcceleration(closedLoopAccel);           //Set stepper accel for closed-loop THC control
    if (freqPythag >= (0.8*frTarg)) {                   //If the speed is within 80% of the target
      // Too High, Move Down
      if (arcVavg > (vTarg+vHyst)) {                    //If the arc voltage is greater than the target plus the hysteresis window
        if (lastMoveUp) {                               //If the last move was up
          stepper.move(-((THCsteps+zBacklash)*zstepspmm));//Move target down with backlash compensation
          moveWithBlock();
        }
        else {                                          //If the last move was down
          stepper.move(-(THCsteps*zstepspmm));          //Move down without adding backlash
          moveWithBlock();
        }
        Serial.println("v");
        charCount++;
        lastMoveUp = false;                             //Indicate that the last move was down
      }
      // Too Low, Move Up
      else if (arcVavg < (vTarg-vHyst)) {               //If the arc voltage is less than the target minus the hysteresis window
        if (lastMoveUp) {                               //If the last move was up
          stepper.move(THCsteps*zstepspmm);             //Move up more without accounting for backlash
          moveWithBlock();
        }
        else {                                          //If the last move was down
          stepper.move((THCsteps+zBacklash)*zstepspmm); //Move up with backlash compensation
          moveWithBlock();
        }
        Serial.println("^");
        charCount++;
        lastMoveUp = false;                                 //Indicate that the last move was up
      }
      // OK, No Move
      else {
        Serial.println("-");
        charCount++;
      }
    }
    else {
        Serial.println("S");
        charCount++;
    }
    
    // Carriage return Up/Down feedback
    if (charCount >= 50) {
        Serial.println("");
        charCount = 0;
    }
  }
  Serial.println("");
}
CNC 等离子 THC 集成 #1260
CNC 等离子 THC 集成 #1260
作者

bduplan 评论 2017 年 7 月 19 日  

我订购了一些光隔离器,应该在星期一。我还订购了一条串行电缆和一个串行到 USB 转换器。我将光隔离 TX/RX 引脚,使用 1k 电阻,并将它们连接到串行电缆以与我的笔记本电脑通信。我还将隔离进入 arduino THC 的其余输入/输出。我使用的 Z 驱动器在板上确实具有隔离功能。

我将尝试摆脱接地回路。

我将使用 RC 滤波器过滤来自等离子体的分弧电压并读取参考电压,而不是假设它是 5.0。我将 arcVsum 更改为 unsigned long 并将循环速度提高到 10Hz。

你是说我需要在 Vref 和地之间连接一个 0.1uF 的电容吗?我假设这是为了过滤和稳定 Vref?

我一直在尝试理解 Z 步长和方向的端口掩码代码。首先,我假设如果 grbl 引脚为低电平,则当 THC 步骤/dir 引脚变为高电平时,我将需要二极管来保护 grbl arduino。

就代码而言,我一直在阅读有关 arduino 端口的信息,并且我想我遵循了您如何更改 Z step/dir 引脚的输入/输出状态。据此:https ://www.arduino.cc/en/Reference/PortManipulation ,端口 B 是数字引脚 8-13。我没有看到任何关于端口 A 的信息。

CNC 等离子 THC 集成 #1260
CNC 等离子 THC 集成 #1260

Oi, para todos, sei que esta Discussionão ficou um pouco para trás, estava acompanhado os comentários, gostaria de sabre sobre o desfecho final, se o colega bduplan conseguiu resolver seus problemas com o THC, e se possível passe para nós suas experiencias tais como , circuitos, placas, programas e dicas, pois creio que muitos estão também com o mesmo questiona, 包容性欧盟。瓦卢…

CNC 等离子 THC 集成 #1260

我需要它来工作,几个月后,我屈服了,买了一个 Proma SD。现在效果很好,从那以后我一直在切割。

CNC 等离子 THC 集成 #1260

Stò usando grbl per il mio cnc taglio al plasma autocostruito tutto funziona bene fino a che non accendo il plasma , allora il programma si blocca e devo staccare usb e ricominciare ma aimè si blocca di continuo .In principio questo difetto lo faceva meno e ho potuto tagliare alcune cosette ma adesso non va .Cosa posso fare ?

CNC 等离子 THC 集成 #1260
作者

 bduplan 评论 2017 年 12 月 30 日

CNC 等离子 THC 集成 #1260

CNC 等离子 THC 集成 #1260
喜欢 (0)

您必须 登录 才能发表评论!