0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

フィラメント自動供給装置2

Posted at

フィラメント自動供給装置を、Flashforge Dreamerのデュアルヘッドに合わせて、
2つのフィラメントを供給できるように設計変更しました。

同時に、湿気を吸わないように密閉構造(完全ではないですが)にしてみました。
(また散在しまくりです(笑))

まずは設計
https://grabcad.com/library/3d-printer-filament-feeder-for-dual-head-1
image.png

実物(内部に湿気取りを入れてます)
image.png

arduinoで上手に2つのステッピングモーターを同時制御する知識が無かったので、
左右のスプールは別々のコントローラーで制御しています。

また、シングルの時に1回だけあった、(何故か)モーター?センサー?の暴走によるフィラメントの
過剰供給(絡まってました)を防止するため、一定時間供給ONが連続すると
自動的にシステムがダウンするように、arduino pro-miniとは別にAttiny85を追加して、
センサー情報のモニタリングするようにしました。
(リレーでモーターOFF)これで不在時のプリントで、モーターが暴走して(無いとは思いますが)
最悪ケースで火事が起きることはないと思っています。(保証無し)
(回路図と基板については準備でき次第アップロードします)

arduino pro-mini(5V)のスケッチ

/**
 * spool feeder with TMC2130 SPI
 * PIN 4 = limit switch or other sensor input
*/
#define EN_PIN           7  // Enable
#define DIR_PIN          5  // Direction
#define STEP_PIN         6  // Step
#define CS_PIN           10 // Chip select
#define SW_MOSI          11 // Software Master Out Slave In (MOSI)
#define SW_MISO          12 // Software Master In Slave Out (MISO)
#define SW_SCK           13 // Software Slave Clock (SCK)

int val = 0;
int cc = 0;
constexpr uint32_t steps_per_mm = 80;

#include <TMC2130Stepper.h>
TMC2130Stepper driver = TMC2130Stepper(EN_PIN, DIR_PIN, STEP_PIN, CS_PIN);

#include <AccelStepper.h>
AccelStepper stepper = AccelStepper(stepper.DRIVER, STEP_PIN, DIR_PIN);

void setup() {
    SPI.begin();
    Serial.begin(9600);
    while(!Serial);
    Serial.println("Start...");
    pinMode(CS_PIN, OUTPUT);
    digitalWrite(CS_PIN, HIGH);

    pinMode(4, INPUT);
    
    driver.begin();             // Initiate pins and registeries
    driver.rms_current(600);    // Set stepper current to 600mA. The command is the same as command TMC2130.setCurrent(600, 0.11, 0.5);
    driver.stealthChop(1);      // Enable extremely quiet stepping
    driver.stealth_autoscale(1);
    driver.microsteps(16);

    
    stepper.setMaxSpeed(4000);
    stepper.setAcceleration(2000);
    stepper.setEnablePin(EN_PIN);
    stepper.setPinsInverted(true, false, true);
    stepper.enableOutputs();
}

void loop() {
    val = digitalRead(4);
    if (val == HIGH){
       stepper.move(50*steps_per_mm); // Move 50mm
       stepper.enableOutputs();
    }
stepper.run();

}

attiny85のスケッチ(arduino化)

//for attiny85

unsigned int timeCount = 0;

int inPin = 1;
int outPin = 3;

void timerFire() {
  if(digitalRead(inPin)==LOW){
    //timer reset
    timeCount = 0;
      }else {
    //timer count up
          timeCount++;
    }
    }

void setup() {
  digitalWrite(outPin, HIGH);
  Serial.begin(9600);
  pinMode(inPin, INPUT);
  pinMode(outPin, OUTPUT);
  
 }

void loop() {
  if (digitalRead(inPin) == HIGH){
    
    delay(10);
    timerFire();
    //timer start
    
  }
  
  Serial.print(timeCount);
  Serial.println("");
  
  if (timeCount >3000) { //stop signal after continue 3000count
    digitalWrite(outPin, LOW);
    while(1);
   }
}

(WDTをうまく使えばattiny85は要らないかも・・・)

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?