Índice:

O dispensador de filamentos robóticos para Arduino: 8 etapas (com imagens)
O dispensador de filamentos robóticos para Arduino: 8 etapas (com imagens)

Vídeo: O dispensador de filamentos robóticos para Arduino: 8 etapas (com imagens)

Vídeo: O dispensador de filamentos robóticos para Arduino: 8 etapas (com imagens)
Vídeo: Dispenser de álcool gel 2024, Novembro
Anonim
Image
Image

Por que uma ferramenta motorizada

O filamento de impressoras 3D - geralmente quase robusto - é puxado pela extrusora enquanto o rolo é colocado próximo à impressora, livre para girar. Tenho observado diferenças significativas no comportamento do material dependendo do nível de uso, referido a rolos de filamento de 1 kg. Uma bobina de filamento novo (cheia) flui quase bem, mas a força aplicada pela extrusora deve ser relativamente relevante: o peso é de pelo menos 1,5 kg.

O motor da extrusora (na maioria dos casos um passo Nema17) tem potência suficiente para fazer o trabalho, mas as duas engrenagens da extrusora empurrando o filamento para o lado da extremidade quente enquanto trabalham coletam as partículas do filamento devido às forças aplicadas; isso requer manutenção frequente da extrusora para evitar o entupimento do bico. Essas partículas tendem a se desprender e se misturar com o filamento limpo durante a alimentação, aumentando os problemas do bico e um desgaste mais frequente do bico; isso ocorre com mais frequência com bicos de 0,3 mm de diâmetro.

Quando o rolo de filamento é usado pela metade ou mais, suas espirais tornam-se menores e em algumas condições ambientais o filamento tende a quebrar com muita frequência. Longos trabalhos de impressão tornam-se menos confiáveis e estressantes; Não posso deixar a impressora trabalhando sozinha por uma noite inteira sem controlá-la. Controlando assim a alimentação do filamento por figuras motoras resolvendo uma série de problemas.

O kit está disponível em Tindie.com

Etapa 1: o conteúdo do kit

O conteúdo do kit
O conteúdo do kit
O conteúdo do kit
O conteúdo do kit

O kit inclui todas as peças impressas em 3D e a mecânica para montar o dispensador de filamento motorizado. Em vez disso, existem duas partes opcionais: o motor e a placa do controlador do motor.

Na minha configuração, usei um motor escovado com engrenagem de 12 V McLennan, mas qualquer motor com engrenagem de 37 mm de diâmetro pode se encaixar corretamente dentro do suporte do motor.

Os melhores desempenhos são alcançados com um escudo TLE94112LE Arduino da Infineon (análise completa aqui); esta placa controladora de motor DC pode suportar até 6 kits de dispensadores robóticos diferentes ao mesmo tempo.

Testei todo o sistema em um Arduino UNO R3 e no kit de inicialização XMC1100 da placa compatível com Arduino da Infineon e o sistema respondeu muito bem com ambas as placas de microcontrolador.

O uso da blindagem TLE94112LE é sugerido, mas não essencial. Qualquer controlador de motor DC para Arduino - incluindo seu próprio projeto! - pode funcionar bem com esta ferramenta

O kit é dividido em dois conjuntos de componentes, pois duas partes são construídas para funcionarem juntas. A plataforma de base suportará o rolo de filamento girando sobre os quatro rolamentos de roda livre. A base é fixada no sensor de peso para controlar o mecanismo giratório que aciona seu acionamento e também monitorar as condições do filamento: peso, metros e porcentagem. Muitas informações, bem como um conjunto de comandos completo, podem ser acessados no Arduino por meio de um terminal serial.

Ferramentas que você precisa

Para completar a montagem, você precisa de uma cola plástica robusta para algumas peças, uma chave de fenda e um conjunto de parafusos Allen.

Etapa 2: O Projeto e Design

O Projeto e Design
O Projeto e Design
O Projeto e Design
O Projeto e Design
O Projeto e Design
O Projeto e Design

Este projeto é a terceira evolução da série de dispensadores de filamento para impressora 3D Há alguns tempos criei a base giratória para otimizar o fluxo do filamento quando puxado pela extrusora de impressora 3D.

O segundo modelo incluiu um sensor de peso para monitorar em tempo real o uso do filamento com uma placa Arduino. Este último projeto inclui a liberação automática do filamento dependendo das necessidades do trabalho da impressora 3D. Baseia-se na variação virtual do peso quando a extrusora começa a puxar o filamento. Este evento aciona o microcontrolador por meio do sensor de peso e o rolo de filamento motorizado começa a liberar alguns centímetros de material, em seguida desacelera e para.

Os componentes foram exportados em formato STL e impressos em 3D, depois refinados e montados juntos. Eu criei um suporte personalizado para alinhar a peça de movimento à base. O trilho de alumínio mais longo também foi usado para apoiar o Arduino e a blindagem do motor para tornar toda a ferramenta compacta e fácil de mover.

Ao criar o design, segui uma série de premissas:

  • Tornando o mecanismo automatizado quase simples e fácil de reproduzir
  • Reduza o máximo possível o número de componentes imprimíveis não 3D para torná-lo
  • Reduza o máximo possível o estresse aplicado à extrusora durante a impressão
  • Use uma placa de microcontrolador de baixo custo e fácil de programar
  • Use o sensor de carga de peso para manter sob controle o consumo de filamento e alimentação de filamento Gerenciar o ruído ambiental que interfere nas medidas de peso do filamento

Este é o resultado que alcancei.

Etapa 3: montagem da base

Montagem da Base
Montagem da Base
Montagem da Base
Montagem da Base
Montagem da Base
Montagem da Base

O primeiro passo é montar a base com o sensor de peso.

  1. Insira o pequeno tubo do eixo do rolamento no orifício do rolamento
  2. Coloque os dois discos separadores nas laterais do rolamento
  3. Introduza os componentes dentro do suporte de rolamento tamanho "U" alinhando os orifícios
  4. insira o parafuso allen de um lado e a arruela e a porca do outro lado fechando a porca sem muito esforço

Você deve repetir a operação em todos os quatro suportes de rolamento. Em seguida, teste a montagem: os rolamentos devem girar livremente.

Agora fixe com os parafusos Allen os quatro suportes de rolamento na base superior com os quatro orifícios de regulação. Alinhe os suportes do rolamento para mantê-los paralelos. Regule a distância dependendo da largura dos rolos de filamento.

A próxima etapa é montar a barra do sensor de peso segurando a base inferior e superior juntas. O sensor de peso tem dois parafusos Allen diferentes em ambos os lados e você deve orientá-lo de forma que a etiqueta de peso máximo seja legível quando a base estiver posicionada corretamente. A base inferior possui dois orifícios laterais extras para fixar o amplificador A / D do sensor de peso. O amplificador baseado no HX711 IC será alimentado e conectado à placa Arduino por meio dos quatro fios, conforme mostrado na folha de dados do sensor anexada.

A última etapa é a montagem da base superior completa sobre o sensor de peso já fixado na parte inferior.

O primeiro componente foi configurado!

Etapa 4: Montagem das peças do Spool Motion Engine

Montagem das peças do Spool Motion Engine
Montagem das peças do Spool Motion Engine
Montagem das peças do Spool Motion Engine
Montagem das peças do Spool Motion Engine
Montagem das peças do Spool Motion Engine
Montagem das peças do Spool Motion Engine

O procedimento mais fácil para montar o motor de movimento do carretel é montar separadamente os quatro componentes mais importantes e, em seguida, concluir a construção final:

O motor DC engrenado na caixa de transmissão do motor

O motor DC deve ser montado na parte central do suporte da estrutura; antes de aparafusar o motor deve-se decidir qual será o seu lado preferido onde colocar o lado das engrenagens para alinhar corretamente os dois braços que seguram o motor e a grande engrenagem acionada.

A grande engrenagem acionada

A engrenagem grande deve ser aparafusada com o bloco cônico truncado com os quatro parafusos Allen. Esta engrenagem será bloqueada no eixo de rotação por porcas; a parte cônica manterá o carretel de filamento que está travado do outro lado por uma contraporca semelhante dentro de outro bloco cônico truncado. Esta solução não apenas mantém o mecanismo de movimento no lugar, mas direciona todo o peso para a base e é o peso da tara do sistema.

O suporte da trava do carretel

Este é o bloco cônico truncado que, junto com o lado de travamento semelhante da engrenagem acionada, manterá o mecanismo de movimento no carretel de filamento. Por uma questão de tato, é o rolo de filamento que completa a construção enquanto o movimento de suporte de dois braços é livre para se mover do outro lado.

Conforme mostrado nas imagens, o suporte da trava do carretel é construído em duas partes. Insira primeiro a porca M4 na parte maior do bloco e depois cole a segunda parte (a tampa) mantendo os blocos juntos. A porca fica presa dentro do suporte da trava que será aparafusada ao eixo acionado roscado.

A caixa de rolamentos

A caixa de rolamentos tem duas funções: garantir um bom suporte às engrenagens de transmissão e um movimento suave e silencioso. Para montar a caixa de rolamento, siga estas etapas fáceis:

  1. Aparafuse a primeira porca M4 a uma das duas extremidades do eixo acionado do porta-carretel roscado
  2. Insira o primeiro rolamento
  3. Insira o separador
  4. Insira o segundo rolamento
  5. Aparafuse a segunda porca e trave moderadamente. O separador de plástico interno irá opor força suficiente para manter as coisas no lugar também para uso por muito tempo.
  6. Insira os rolamentos montados na caixa de rolamentos. Deve ser feito de forma forçada para garantir os melhores resultados, portanto não dilate muito o interior da caixa ao refinar as peças plásticas.

Estamos prontos para a montagem final dos componentes!

Etapa 5: Concluindo a montagem do motor de movimento

Concluindo a montagem do motor de movimento
Concluindo a montagem do motor de movimento
Concluindo a montagem do motor de movimento
Concluindo a montagem do motor de movimento
Concluindo a montagem do motor de movimento
Concluindo a montagem do motor de movimento

Estamos prestes a terminar a montagem da estrutura, então podemos passar para testar o movimento. Agora você precisa novamente de um pouco de cola. A caixa de rolamento - montada na etapa anterior - deve ser inserida no orifício porta-caixa do suporte de dois braços do motor e possivelmente colada antes de aparafusar a tampa da caixa.

Atenção: não cole a tampa da caixa, apenas parafuse. A tampa é importante para proteção contra poeira e deve ser removível para qualquer operação de manutenção futura.

Quando esta configuração estiver concluída antes de adicionar a engrenagem acionada (a maior) adicione o pequeno anel separador: ele mantém a engrenagem grande alinhada com a engrenagem do motor atuando como uma arruela para fixar o conjunto móvel acionado.

Em seguida, insira a engrenagem acionadora (a pequena) no eixo do motor. Observe que há um lado plano no motor, bem como no orifício central da engrenagem para manter a rotação da engrenagem acionada pelo motor CC.

Última etapa, insira a engrenagem acionada grande conforme mostrado nas imagens e trave-a no eixo roscado com duas porcas M4.

A construção da mecânica está concluída!

Etapa 6: Bônus: como personalizei o suporte para gerenciar o kit

Bônus: como personalizei o suporte para gerenciar o kit
Bônus: como personalizei o suporte para gerenciar o kit
Bônus: como personalizei o suporte para gerenciar o kit
Bônus: como personalizei o suporte para gerenciar o kit
Bônus: como personalizei o suporte para gerenciar o kit
Bônus: como personalizei o suporte para gerenciar o kit

Para manter o kit no lugar, fiz uma estrutura muito simples baseada em dois tubos quadrados de alumínio para suportar a base e a estrutura de movimento. A base foi fixada com quatro parafusos aos dois trilhos (cerca de 25 cm de comprimento) e com alguns pequenos suportes impressos em 3D fixei o motor de movimento livre para ser movido para facilitar a inserção e remoção do rolo de filamento.

Qualquer um pode escolher sua própria solução dependendo de como sua bancada está organizada.

Etapa 7: Fiação e conexão ao Arduino

Image
Image
Fiação e conexão ao Arduino
Fiação e conexão ao Arduino

Conforme explicado na etapa de conteúdo do kit, usei um protetor de motor Infineon TLE94112LE DC para Arduino e testei o motor no Arduino UNO R3 e no kit de inicialização Infineon XMC110.

Se você for controlar o motor (precisa de recursos PWM) com uma placa controladora DC de sua escolha, basta adaptar as instruções às especificações técnicas de sua blindagem.

Uma observação sobre o TLE04112LE Arduino Shield

Um dos limites que experimentei com outras blindagens de controle de motor para Arduino é que elas usam os recursos do mesmo microcontrolador (ou seja, pinos PWM e GPIO); isso significa que sua placa se torna dedicada a essas tarefas enquanto apenas alguns outros recursos (MPU e GPIO) estão disponíveis para outros usos.

Tendo a possibilidade de colocar as mãos no escudo TLE94122LE Arduino para testes de estrada, a vantagem mais evidente do IC em que a placa se baseia é apenas sua completude. A placa Arduino se comunica com o escudo por meio do protocolo SPI usando apenas dois pinos. Cada comando que você envia para o escudo é processado de forma autônoma pelo TLE94112LE IC sem consumir recursos MPU. Outra característica marcante da placa Infineon é a possibilidade de controlar até seis motores escovados com três canais PWM programáveis. Isso significa que o Arduino pode configurar um ou mais motores, iniciá-los e continuar trabalhando em outras tarefas. Esta blindagem revelou-se perfeita para suportar até seis rolos de filamento diferentes ao mesmo tempo, o movimento é apenas uma das tarefas a cargo do MPU. Considerando a possibilidade de gerenciar seis carretéis de filamento diferentes com um único Arduino + blindagem os impactos de custo do microcontrolador em cada controlador de filamento por menos de 5 euros.

O sensor de peso

Depois de fazer alguns experimentos, vi que era possível controlar todo o sistema - monitoramento e alimentação automática - com um único sensor; uma célula de carga (sensor de peso) é capaz de medir dinamicamente as variações de peso do carretel de filamento fornecendo todas as informações de que precisamos.

Usei uma célula de carga barata na faixa de 0-5 Kg junto com uma pequena placa baseada no amplificador AD HX711, um IC específico para gerenciar os sensores das células de carga. Não houve problemas de interface, pois está disponível uma biblioteca Arduino que funciona bem.

Três etapas para configurar o hardware

  1. Insira a blindagem na parte superior da placa Arduino ou do kit de inicialização Infineon XMC110
  2. Conecte os fios do motor aos conectores aparafusados Out1 e Out2 da blindagem
  3. Conecte a alimentação e os sinais do amplificador do sensor de peso HX711 AD aos pinos do Arduino. Neste caso, usei os pinos 2 e 3, mas todos os pinos livres estão bem.

Aviso: p ins 8 e 10 são reservados pela blindagem TLE94113LE para a conexão SPI

Isso é tudo! Pronto para configurar o software? Vá em frente.

Etapa 8: O Software e o Conjunto de Comandos de Controle

O Conjunto de Comandos de Software e Controle
O Conjunto de Comandos de Software e Controle
O Conjunto de Comandos de Software e Controle
O Conjunto de Comandos de Software e Controle
O Conjunto de Comandos de Software e Controle
O Conjunto de Comandos de Software e Controle
O Conjunto de Comandos de Software e Controle
O Conjunto de Comandos de Software e Controle

O software documentado completo pode ser baixado do repositório GitHub 3DPrinterFilamentDispenserAndMonitor

aqui, consideramos apenas as partes mais significativas e os comandos de controle.

Existe um motivo imposto pelo número de pinos disponíveis no Arduino UNO. Decidi controlar o sistema através do terminal serial USB; Como toda unidade motorizada é baseada em um sensor de peso, o controle de seis distribuidores de filamentos diferentes requer a leitura de dados de seis sensores de peso. Cada célula de carga "consome" dois pinos, os pinos 0 e 1 são reservados (Tx / Rx) para o serial e os pinos 8 e 10 são reservados para o canal SPI conectando a blindagem TLE94112LE.

Status do sistema

O software de controle funciona em quatro estados diferentes, definidos em filament.h:

#define SYS_READY "Pronto" // Sistema pronto

#define SYS_RUN "Running" // Filamento em uso #define SYS_LOAD "Load" // Roll carregado #define SYS_STARTED "Started" // Aplicativo iniciado // Códigos de status #define STAT_NONE 0 #define STAT_READY 1 #define STAT_LOAD 2 #define STAT_RUN 3

Status: Iniciado

Este status ocorre após uma reinicialização do hardware ou quando o sistema é ligado. A inicialização (e a chamada de configuração () quando o esboço começa) inicializa os valores padrão internos e deve ser iniciada sem nenhum peso extra na plataforma, como parte da sequência de inicialização é a aquisição da tara absoluta para atingir o peso zero físico.

Status: Pronto

O estado pronto ocorre após uma reinicialização suave (enviada do terminal serial). É semelhante à ressecção física, mas nenhuma tara é calculada; o comando reset também pode ser iniciado quando o sistema está em execução.

Status: Carregar

O status de carregamento ocorre quando o comando de carregamento é enviado pelo terminal. Isso significa que o rolo de filamento foi carregado e a tara dinâmica calculada. O peso exato do filamento é obtido pelo tipo de configuração do rolo subtraindo o peso da unidade do motor e o rolo vazio.

Status: em execução

Este status permite o cálculo automático do peso e o dispensador automático de filamentos.

Mensagens de terminal

A versão atual do software retorna mensagens legíveis por humanos ao terminal, dependendo dos comandos. As mensagens de string são definidas em dois arquivos de cabeçalho: commands.h (mensagens e respostas relacionadas ao comando) e filament.h (strings usadas pelo analisador para criar mensagens compostas).

Comandos

Dois arquivos diferentes estão envolvidos no gerenciamento de comandos: commands.h incluindo todos os comandos e parâmetros relacionados e filament.h incluindo todas as constantes e definições usadas pelo sistema de ponderação e pelo analisador.

Enquanto os cálculos internos são feitos automaticamente pelo software, implementei uma série de comandos para definir o comportamento do sistema e controlar manualmente alguns parâmetros.

Palavras-chave de comando diferenciam maiúsculas de minúsculas e devem ser enviadas apenas do terminal. Se um comando não for apropriado para o status atual do mesmo não for reconhecido, uma mensagem de comando incorreta será retornada, caso contrário, o comando será executado.

Comandos de status

Altere o status atual do sistema e o comportamento também será adaptado

Comandos de filamento

Usando comandos separados, é possível configurar as características do filamento e do rolo com base nos pesos e tamanhos mais comuns hoje disponíveis no mercado

Comandos de unidades

Estes são alguns comandos para definir a visualização das unidades de medida em gramas ou centímetros. Na verdade, é possível eliminar esses comandos e sempre representar os dados em ambas as unidades.

Comandos de informação

Mostrar grupos de informações dependendo do status do sistema

Comandos do motor

Controle o motor para alimentação ou tração do filamento.

Todos os comandos do motor seguem um caminho de aceleração / desaceleração. Os dois comandos feed e pull executam uma sequência curta, conforme definido em motor.h pela constante FEED_EXTRUDER_DELAY, enquanto os comandos feedc e pullc são executados indefinidamente até que um comando de parada não seja recebido.

Comandos do modo de execução

O status de execução aceita dois modos; O homem de modo apenas lê periodicamente o peso e o motor se move até que um comando de controle do motor não seja enviado. Em vez disso, o modo automático executa dois comandos de alimentação quando a extrusora precisa de mais filamento.

O princípio é baseado nas leituras de peso, contextualizadas para este ambiente particular. Esperamos que o consumo de filamentos seja relativamente lento, as impressoras 3D são quase lentas e as oscilações de peso normal dependem da vibração do ambiente (melhor se você não colocar tudo na impressora 3D)

Quando a extrusora puxa o filamento, a diferença de peso aumenta dramaticamente (50 g ou mais) em muito pouco tempo, normalmente entre duas ou três leituras. Essas informações são filtradas pelo software que "deduz" aquele novo filamento necessário. Para evitar leituras erradas, variações de peso enquanto o motor está funcionando são ignoradas.

Lógica de aplicação

A lógica do aplicativo é distribuída no principal.ino (o esboço do Arduino) ao longo de três funções: setup (), loop () e parseCommand (commandString)

O esboço usa duas classes separadas: classe FilamentWeight para gerenciar todos os cálculos de filamento e leitura do sensor por meio do IC HX711 e classe MotorControl fazendo interface com os métodos de baixo nível do escudo TLE94112LE Arduino.

configurar()

Lançado uma vez ao ligar ou após uma reinicialização do hardware, inicializa as instâncias das classes, configura o hardware e a comunicação do terminal.

ciclo()

A função de loop principal gerencia três condições diferentes.

Embora existam duas classes de sensores de peso e motores relativamente complexos, há a vantagem de que o esboço resultante é realmente fácil de entender e gerenciar.

  1. Verifique (no modo automático) se a extrusora precisa de mais filamento
  2. Se o motor estiver funcionando, verifique se há erros de hardware (retornados pelo TLE94112LE)
  3. Se houver dados seriais disponíveis, analise o comando

parseCommand (commandString)

A função de análise analisa as strings que vêm do serial e, quando um comando é reconhecido, ele é imediatamente processado.

Cada comando atua como uma máquina de estado impactando em algum parâmetro do sistema; seguindo esta lógica todos os comandos são reduzidos a três ações sequenciais:

  1. Envie um comando para a classe FilamentWeight (comandos de peso) ou para a classe MotorControl (comandos do motor)
  2. Executa um cálculo para atualizar os valores de peso ou atualizar um dos parâmetros internos
  3. Mostrar no terminal e saída de informações quando a execução for concluída

Instale a biblioteca HX711 Arduino, baixe o software do GitHub e carregue-o na placa Arduino e divirta-se!

Recomendado: