Ir ao conteúdo

Posts recomendados

Postado

Gente eu to criando uma extrusora de filamento 3d e gostaria de dicas para montar um código para manter a espessura do filamento estável, eu já consegui através de um vídeo no youtube o material e o caminho a ser seguido, o que eu preciso é acrescentar e modificar este código para que ele controle os passos do motor de passo, para dar 1 passo a mais ou para menos girando um potenciometro que vai aumentar ou diminuir a velocidade do enrolador. Vejam o vídeo para ter uma ideia do que eu estou falando.

https://www.youtube.com/watch?v=tTV52DihPTc

neste vídeo o cara ensina a comunicar e imprimir em um monitor serial as medidas exibidas no medidor semelhante a um paquímetro, eu precisava usar estas medidas para medidas acima de 1,75mm dar um passo no motor de passo para diminuir o potenciometro que controla a velocidade do enrolador, espera 30 segundos continua acima de 1,75mm mais um passo para diminuir o potenciometro, abaixo de 1,75 um passo aumentando o potenciometro e assim ir controlando a velocidade do enrolador. Quem consegue me ajudar com o códigosch_1.thumb.jpg.a85873fd0bbe293596abcce65167eeaa.jpgs-l500.jpg.6ccb5670637ca47540d9c2ef297aa3dc.jpg

/* Read the caliper data with Arduino and display mm or inch on serial monitor and LCD
 * Tutorial on: https://www.electronoobs.com/eng_arduino_tut93.php
 * Schematic: https://www.electronoobs.com/eng_arduino_tut93_sch1.php
 * 
Caliper         |       Arduino
GND (black)             GND + 200 ohm 
DAT (brown)             D11
CLK (blue)              D12
VCC 3.3V (red)          3.3V
 */

#define CLOCK_PIN 12
#define DATA_PIN  11


void setup() 
{
  Serial.begin(9600);  
  pinMode(CLOCK_PIN, INPUT);
  pinMode(DATA_PIN, INPUT);
  
}

char buf[20];
unsigned long tmpTime;
int sign;
int inches;
long value;
float result;
bool mm = true; //define mm to false if you want inces values

void loop()
{
  while(digitalRead(CLOCK_PIN)==LOW) {}
  tmpTime=micros();
  while(digitalRead(CLOCK_PIN)==HIGH) {}
  if((micros()-tmpTime)<500) return;
  readCaliper(); 
  buf[0]=' ';
  dtostrf(result,6,3,buf+1); strcat(buf," in ");  
  dtostrf(result*2.54,6,3,buf+1); strcat(buf," cm "); 

  if(mm)
  {
    Serial.print(result); Serial.println(" mm");    
    delay(100);
  }
  else
  {
    Serial.print(result); Serial.println(" in");    
    delay(100);
  }
}
void readCaliper()
{
  sign=1;
  value=0;
  inches=0;
  for(int i=0;i<24;i++) {
    while(digitalRead(CLOCK_PIN)==LOW) {}
    while(digitalRead(CLOCK_PIN)==HIGH) {}
    if(digitalRead(DATA_PIN)==HIGH) {
      if(i<20) value|=(1<<i);
      if(i==20) sign=-1;
      if(i==23) inches=1; 
    }
  }
  if(mm)
  {
    result=(value*sign)/100.0;
  }
  else
  {
  result=(value*sign)/(inches?2000.0:100.0); //We map the values for inches, define mm to false if you want inces values
  }
  
}

:

  • Membro VIP
Postado

Legal. Nem sabia que paquímetro tinha esta interface... Não devo te ajudar diretamente com o código mas...

-você nem precisa do motor de passo pra controlar o pot de velocidade

-baseie-se diretamente na informação do paquimetro pra controlar seu motor , digamos pwm

-acho que o arduino tem um tal de analogwrite() que nada mais é do que controla o dutty de um pwm

-algo direto como
 

analogwrite(ajuste+valor_do_paquimetro);//=> aumenta a rotação quando aumenta a espessura
//...ou
analogwrite(ajuste-valor_do_paquimetro);//=> diminui a rotação quando aumenta a espessura

 

pode lhe dar algum norte

 

tip120-motor.png

 

Ah ... aquele esquema tá perturbador... o led pode queimar.

Postado

@Isadora FerrazIsadora Muito Obrigado pelas informações, é assim o paquímetro é digital e  ele tem uma saída serial de dados que pode ser interpretada pelo Arduíno.

No esquema que postei acima o diodo emissor de luz é pra dividir um pouco da energia do Arduíno que é de 3,3 volts, acoplado também um resistor, pois a entrada do paquímetro é de 1,5 volts, para não queimar o paquímetro. Por isso que eles estão lá pra diminuir a energia.

O que você escreveu faz muito sentido, mais como integrar isto neste código acima. (Paciência sou iniciante em arduíno.)

 

 

  • Membro VIP
Postado
49 minutos atrás, Dayner disse:

iniciante em arduíno

 Neste caso, sugiro que comece com pisca led.

 

49 minutos atrás, Dayner disse:

dividir um pouco da energia do Arduíno que é de 3,3 volts, acoplado também um resistor, pois a entrada do paquímetro é de 1,5 volts

faz sentido. Mas acho que colocaria o resistor em série com a linha 3V3. O led age como zener.

 

49 minutos atrás, Dayner disse:

como integrar isto neste código acima

Infelizmente não tem como te explicar com palavras humanas normais ou até mesmo fazer pra você (sei que não pediu!) com palavras diretas. Você deve mesmo fazer um led piscar com arduíno antes de qualquer coisa. Depois o faça controlar a velocidade do seu [misterioso] motor [geralmente pwm]. Com menos de 1 clique você acha na net. Nada contra ctrl-c ctrl-v desde que você me prometa que entenderá tudo.

A dica é:

Essencialmente todo sistema com mc simplesmente opera com sensores e atuadores. Ou seja, ele atua em função do que sente. Entenda exatamente o que quer e como opera seu projeto, seus requisitos, seus dados disponíveis e como usá-los pra realimentar o sistema.

Postado

O paquímetro envia os dados para o Arduíno em formato binário neste código a interpretação é feita através de uns cálculos, e impressos em um monitor serial ou tela de lcd, como fazer para utilizar a função analogwrite para interpretar o código com parâmetro > 1,75mm diminuir a velocidade do motor <1,75mm aumentar a velocidade = 1,75mm manter constante.

  • Triste 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...