Tradutor

terça-feira, 17 de abril de 2018

Construindo uma Extrusora de Filamento - Fase 2 - Parte 1

Olá pessoal,
Neste post começo a montagem da segunda parte do projecto extrusora de filamento, esta segunda fase trata de resfriar, medir e enrolar o filamento de maneira que o mesmo se mantenha em 1,75mm e seja enrolado no rolo de filamento.

Ao longo deste post irei detalhar a montagem de cada uma das partes. Como primeira parte vou fazer o bobinador de filamento (equipamento que irá enrolar o filamento de maneira uniforme).

Ainda estou escrevendo o detalhamento deste post, porem gostaria já de compartilhar com vocês os vídeo e o código fonte do bobinador enquanto o texto não fica pronto.

Montagem mecânica:
Segue lista de componentes para montagem mecânica:
2- Flange com rosca de 3/4 PVC
2- Capas (tampão) com rosca 3/4
1- Rosca infinita 5/16 polegada
2- Porcas 5/16 polegada (https://amzn.to/2zrRl4X)
6- Parafuso 5/32 polegada (https://amzn.to/352tbcI)
6- Porcas 5/32 polegada (https://amzn.to/2Vxmf4t)
20- Arruela 5/32 polegada
1- Mola
1- Tubo rosqueado de 3/4 polegada
Madeiras
4- Parafusos com ponta

Vídeo da parte mecânica.


Parte eletrônica:
Nesta parte usamos o arduino para obter as medidas do sensor ultra som, medindo quanto de filamente já existe no rolo e com isso ajustar a velocidade do motor que gira a bobina.

Componentes eletrônicos:
1- Sensor de ultra som
1- Servo motor G9 (https://amzn.to/2XZ9pxn)
1- Motor DC 12v (https://amzn.to/2zimsQb)
1- Driver IR590

Vídeo da parte eletrônica e teste final.

Código Fonte:
Abaixo segue o código fonte usando no arduino:
//Projeto Extrusora de filamento fase 2
//www.eletronicaparatodos.com.br
#include <Servo.h>

Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

//Variáveis do Servo
int posicao = 45;    // variable to store the servo position
int direcao = 1;    // 1= direita para esquerda; 0 = esquerda para direita;
int velocidade = 5; // Velocidade de varredura de rotacao do servo.

//Variáveis do ultra son
int echoPin = 3; // Declara variavel Echo do ultrason no pino 7
int trigPin = 2; // Declara variavel Trig no pino 6
int distancia = 0; // Declara variavel\ que mede distancia

//Variaveis Motor DC
// motor A
int s1Pin = 6;
int i = 255;
int distancia2 = 0;

void setup() {
  //Setup Servo
  myservo.attach(5);  // attaches the servo on pin 5 to the servo object
  //Setup Comunicação Sereal
  Serial.begin (9600); // Define comunicaçao
  //Setup UltraSon
  pinMode(trigPin, OUTPUT); // Define Trig como saida
  pinMode(echoPin, INPUT); // Define Echo como entrada para ler a resposta do som
  //Setup Motor DC
  pinMode(s1Pin, OUTPUT);

}

void loop() {
// Aciona motor DC
distancia = motordc(distancia);

//Efetua leitura com o ultrason em CM
  distancia = ultrason();
  Serial.print(distancia);    // Imprimir distancia encontrada pelo ultra Som
  Serial.println(" cm");
 
//Movimenta a Servo
  posicao = posfilamento(posicao, velocidade);
//  Serial.print(posicao);
//  Serial.println(" posicao");
//  Serial.print(direcao);
//  Serial.println(" Direcao");
 
  delay(500); // define tempo de execução do loop.
}

int ultrason(){
  int duration, cm;
  digitalWrite(trigPin, LOW);
  delayMicroseconds(20);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(20);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  cm = duration / 29 / 2;
/* Sound velocity=29cm/microsec, then divide by 2 because of the return time */
  return cm;
}

int posfilamento(int pos, int vel){
if (direcao==1){ //Vai da esquerda para a direita
  if (pos == 45) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    pos = pos + 1;
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    direcao = 0;                    // muda de lado
  }else {
    pos = pos - 1;
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    direcao = 1;
    }
}else{                                  // Direcao - 1
  if (pos == 135) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    pos = pos - 1;
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    direcao = 1;                    // muda de lado
  }else {
    pos = pos + 1;
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    direcao = 0;
    }
  }
  //Serial.print(pos);
  //Serial.println(" pos");
  return pos;
  delay(vel);                       // velocidade de movimentaçao do servo.
}

int motordc(int distancia){  // De acordo com a distancia medida pelo ultra som se define a velocidade do motor DC.
  //Vale lembrar que este código ainda tem que ser melhorado e refinado.
  if (distancia2 != distancia){
    if (distancia2 < distancia){
          i = i + 50;
          if (i >= 255){
            i = 255;
          }
          analogWrite(s1Pin, i);
          distancia2 = distancia;
    }else{
          i = i - 50;
          if (i <= 0){
            i=0;
          }
          analogWrite(s1Pin, i);
          distancia2 = distancia;
    }
  }else {
    analogWrite(s1Pin, i);
    distancia2 = distancia;
  }
  Serial.print(i);    // Imprimir distancia encontrada pelo ultra Som
  Serial.println(" i");
//  for (i = 0; i < 255; i +=10) {
//    analogWrite(s1Pin, i);
//    delay(500);
//  }
  return distancia2;
}



No próximo post vou mostra a parte que traciona o filamente e com isso ajusta seu diâmetro.

6 comentários:

  1. e ai amigo estou querendo ver a parte final da extrusora pronta

    ResponderExcluir
    Respostas
    1. ola Andre, tudo bem?
      No momento o projeto da fase 2 da extrusora está parado, porque estou montando uma impressora 3d baixo custo para poder testar os filamentos gerados por ela. Muito em breve voltarei com esse projeto.
      Aproveite para olhar este novo projeto que chamo projeto Dolly (em breve colocarei posts no blog).
      https://youtu.be/ESnM_Bf7zaE
      Abc

      Excluir
  2. Boa tarde amigo, qual seria o tamanho da bobina que você está utilizando?
    Elas são de tamanho padrão? Estou com uma bobina de impressora 3D para esse projeto, é essa que devo utilizar mesmo?

    ResponderExcluir
  3. Respostas
    1. Obrigada pela resposta! Apenas mais uma duvida... Vi no ultimo vídeo que a velocidade que ele puxou o fio foi bem rápida, mas que essa velocidade é regulável, nesse caso da pra deixar ela realmente bem lenta pra não alterar o diâmetro do filamento?
      Estou curiosa quanto ao resultado desse projeto, tem pretensão de finaliza-lo?

      Excluir
  4. Exato, tudo depende da velocidade de saida do plastico e da bobina. Precisam estar sincronizados se a bobina estiver mais rapida o fio fica mais fino, se a bobina estiver mais lenta o fio fica mais grosso. Pode tentar fazer com arduino, mas o processo e de tentativa e erro.

    ResponderExcluir