オートレベリングセンサ BLTouch(3DTouch) 単独動作確認

3Dプリンタ

3DTouchことBLTouchのパチモノを買ったのでまずはArduinoと接続して単独で動作確認してみました。
精度が良いそうなのでうまく行けば他でも使えるかも!

【公式認証】BIQU BLTouch V3.0 ベッドレベリングセンサー 自動レベリングセンサー 3Dプリンタ部品 ヒーターベッドレベリングセンサー
【公式認証】BIQU BLTouch V3.0 ベッドレベリングセンサー 自動レベリングセンサー 3Dプリンタ部品 ヒーターベッドレベリングセンサー
Aibecy 3Dタッチセンサー 自動平準化位置センサー 3Dプリンタアクセサリ 3Dプリンタ用 印刷精度向上
Aibecy 3Dタッチセンサー 自動平準化位置センサー 3Dプリンタアクセサリ 3Dプリンタ用 印刷精度向上

機能

機能が4個しかないので本家BLTouchの最新版と比べると少ないですね。
BLTouch V2.0互換って感じです。
3DTouch機能

  • Push-pin down
  • Push-pin up
  • Self-test
  • Alarm release(Push-pin up)

接続

Arduino UNOと接続しました。
割り込み入力とPWM(サーボ)を使用します。

3D Touch Arduino UNO
Z(白)2
G (黒)GND
S (黃)3
5V (赤)5V
G (緑)GND

Zmin信号

Zminの信号がどのように変化するかタイミングチャートを確認するとセルフテスト中は変化なし、アラーム発生中はON、Pin-Down中にON位置まで来ると10msパルスが立つようです。ZminがON位置になると赤のLEDが点灯します。

使用方法

電源を入れると自動でセルフテストが行われます。
電圧不足やピンが動作しない等でセルフテストに失敗すると下記のようにLEDが赤点滅します。

セルフテストが正常に終わった場合は赤と青のLEDが点灯します。

シリアルからコマンドを送信して機能を使用できるようにしました。

#include <Servo.h>

const int Z_LimitSensorPin = 2;
const int ServoPin = 3;
const int LED_pin = 13;
Servo myservo;

volatile bool pinDownFlag = LOW;

void setup() {
  Serial.begin(9600);
  pinMode(LED_pin,OUTPUT);
  attachInterrupt(digitalPinToInterrupt(Z_LimitSensorPin), Z_LimitChanged, CHANGE);
  myservo.attach(ServoPin);
}

void loop() {
  String input;
  if (Serial.available() > 0) {
    input = Serial.readStringUntil('\n');
    input.replace("\r","");
    if(input == "PIN_UP"){
      Serial.println("PIN_UP");
      myservo.write(90);
    }
    if(input == "PIN_DOWN"){
      myservo.write(10);
      Serial.println("PIN_DOWN");
      pinDownFlag = true;
    }
    if(input == "RESET"){
      myservo.write(160);
      Serial.println("RESET");
    }
    if(input == "SELF_TEST"){
      myservo.write(120);
      Serial.println("SELF_TEST");
    }
    //BLTouch V2.1以降のみ
    if(input == "SW_MODE"){
      myservo.write(60);
      Serial.println("SW_MODE");
    }
  }
}

//Zmin変化時割り込み処理
void Z_LimitChanged()
{
  if(digitalRead(Z_LimitSensorPin)){
    Serial.println("Z Limit : ON");
    if(pinDownFlag){
      myservo.write(90);
      Serial.println("PIN_UP");
    }
  }else{
    Serial.println("Z Limit : OFF");
  }
}

セルフテスト後”PIN_DOWN”を送ってピンを下げます。
ピンが下がった状態でピンを押し込んでいきZminがONしたら”PIN_UP”コマンドを送ってピンを引き上げます。

うまく動いたので他でも使用できそうですね。
とりあえず今回購入した物はEnder-3 Proに取り付けます。

Anet A8 Tevo Reprap MK8 i3用 3Dプリンター 3Dタッチオートレベリングセンサー キット
Anet A8 Tevo Reprap MK8 i3用 3Dプリンター 3Dタッチオートレベリングセンサー キット

コメント

タイトルとURLをコピーしました