segunda-feira, 11 de novembro de 2013

The Brain

As coisas tem evoluído rápido com a impressora, acho que passando as dificuldades iniciais a coisa está caminhando. Pode ser também porque acabou a mecânica e começou a parte eletrônica, com a qual eu estou muito mais familiarizado :)

A maior parte das controladoras de RepRap são baseadas no ecossistema ARDUINO, a descrição oficial é "plataforma de prototipagem eletrônica", mas estou chamando de "ecossistema" por que está na moda. Vejam os ecossistemas Apple IOS ou Google Android.

Justifico o apelido; O ecossitema Arduino é composto por várias Boards (Arduino Uno, Arduino Leonardo, Arduino Mega), vários shields (Relay, Ethernet, Motor etc), um IDE e uma linguagem de programação. ou seja, Software, Hardware e Applicações  exatamente como nos Smartphones :))

As Boards, são basicamente pequenos computadores (MCU), que contam com os sistemas básicos de processamento, memoria, comunicação e I/Os (entradas e saídas genéricas), as várias versões contam com diferentes quantidades de memória, capacidade de processamento e quantidade de I/O. assim podemos selecionar a mais conveniente para cada caso.




Só para se ter uma idéia, um Arduino Mega como da foto, roda a 16Mhz e tem 256Kbytes de memoria "ROM", comparando com os computadores atuais parece bem pouco, mas é quase quatro vezes um PC XT quando foi lançado, isso sem contar que a própria arquitetura destas CPU é mais eficiente que a do velho 8086 usado no PC.

Os Shields são expansões das boards que tem recusos específicos, por exemplo o Shield Ethernet adciona às boards a capacidade de conectar-se à internet, da mesma maneira o Shield Motor permite controlar motores a partir do Arduino. Existem inumeros Shields no mercado, desenvolvidos pela comunidade Arduino ou mesmo por terceiros, disponibilizando uma imensa variedade de recursos. Desde simples teclas e leds até GPS ou comunicação wireless. Os Shield são acumulativos (dentro de certos limites), de forma que se eu quero duas funções, basta adicionar os dois Shields. O interessante é que sempre que alguem lança um novo Shield, lança junto bibliotecas para a linguagem de programação, de forma que utilizar o novo Shieid é simples e não demanda conhecimento detalhado que como aquela tecnologia funciona.

 
Na foto um Arduino Mega com 3 Shields.


O IDE e a linguagem de programação são padronizados, de forma que independente da Board ou do Shield usado a forma de programar é a mesma, isso diminui a curva de aprendizado e a passagem de um projeto para outro ocorre com muita rapidez.

As controladoras de RepRap baseadas em Arduino acabaram seguindo duas filosofias. Algumas foram desenvolvidas como um Shield para ser conectado ao Arduino, em geral se usa o Arduino Mega, dado a grande demanda de memória e capacidade processamento dos "Firmwares" para RepRaps. Esse é o caso da RAMPS, uma das mais famosas que segue essa filosofia. A grande vantagem é que por ser padrão e open source, é facil encontrar Arduinos (e seus clones) a preços interessantes. O uso de um Shield também permite flexibilidade em uma possível troca de Board no futuro, caso seja necessário mais processamento ou memoria para tratar novos recursos. Abaixo uma foto da RAMPS, sem os drivers de motor de passo.




A segunda filosofia é a "all in one" onde a parte da Board e do Shield estão montados em uma única placa, de forma que a solução pode ser otimizada em termos de espaço e de custo, em geral uma placa única será menor, mais optimizada e e mais barata que a combinação Arduino + Shield. seguem esta linha placas como a SANGUINOLOLU ou a GEN7.


Esta é uma Sanguinololu já com os Drivers de motor de passo instalados.

Minha busca por um cérebro para a impressora me levou até a placa GEN7v1.2BR2, placa desenvolvida pelo Grupo de Estudos RepRapBR, baseada na GEN7v1.2. A ideia de ter uma versão nacional veio da necessidade de utilizar conectores e componentes fáceis de encontrar no mercado brasileiro.

A GEN7BR (assim como a GEN7) foi desenvolvida com o intuito de poder ser fabricada em casa, tanto na montagem, pois não usa componentes SMD, quanto na fabricação da própria PCI. As trilhas são grossas e a placa pode ser feita em face simples.

Apesar dessa filosofia de simplicidade, ela é capaz de controlar todos os recursos de uma impressora padrão, como 3 eixos, 1 extrusor, 1 mesa aquecida, sensores de fim de curso máximo e minimo para cada eixo e 1 ventilador com velocidade variável para resfriar a peça. Ela ainda tem um processador capaz de rodar a 20Mhz, o que pode ajudar a conseguir boas velocidades na impressora.

Como eu já passei da idade de ficar com as mãos manchadas de percloreto de ferro, eu comprei uma PCI fabricada e fiz a montagem em casa, à um custo de menos de 50% de comprar a placa montada.



Na foto faltam os Drivers para os motores de passo e o processador. Os conectores que não montei serviriam para alimentar a impressora com uma fonte de PC, mas como vou usar uma fonte 12V eu montei apenas o borne azul na parte inferior esquerda.

Chamei a controladora de cérebro da impressora, pois a placa tem todos os recursos para receber os dados do computador e acionar os motores e aquecedores da impressora. Sendo assim o Firmware é a inteligencia. É o Firmware que interpreta os comandos, calcula os movimentos e comanda os motores. O firmware ainda mede as temperaturas do bico e mesa e aciona os aquecedores para manter as temperaturas conforme definido para fabricação do objeto.

Parece simples, mas na realidade o computador informa apenas a posição de destino dos eixos e as temperaturas desejadas, a impressora faz todo o cálculo do melhor caminho, sentido e quantidade de passos dos motores e acelerações/desacelerações. Além de implementar dois controles PID para manter as temperaturas constantes independente da demanda ou  fatores externos. Por exemplo, quanto mais rapido o filamento é derretido, mais o bico esfria e mais energia tem que ser entregue de forma a manter a temperatura.

Existem vários firmwares para Repraps, eu fiquei em duvida entre dois. O Marlin e o Repetier-Firmware, aparentemente ambos descendem do Sprinter, tem características similares e são bastante usados no Brasil, acabei optando pelo Repetier-firmware pois ele tem o "par" Repetier-Host, falo mais disso daqui a pouco.

Com a placa montada, um punhado de conectores colocados nos cabos, e o firmware instalado na placa eu estava pronto para ligar a impressora e ver se ela "aceita" algum comando.

As RepRaps aceitam comandos no padrão G-code, esse padrão é largamente usado em maquinas CNC, fresadoras, maquinas de corte a Laser, tornos e etc. Faz todo o sentido usar isso para uma maquina tão parecida com uma maquina operatriz. Longa historia contada de forma curta, G-code são os comandos que dizem para a maquina qual movimento fazer e com qual velocidade,  por exemplo  G1 X90.5 Y15.3 F1500 seria: mova a ferramenta (neste caso a extrusora) para a posição 90.5mm no X e 15.3mm no Y, a uma velocidade de 1500mm/min.

Muito legal isso, mas ficar dando comandos para a impressora escrevendo tudo isso não é lá muito pratico, ai é que entram dois tipos de software fundamentais para as impressoras 3D o Slicing sotfware e o G-code Sender

O Slicing software carrega um arquivo CAD em 3d (normalmente é usado o formato STL) e "fatia" a peça em camadas, gerando um arquivo com os G-codes para desenhar cada camada, uma sobre a outra.

O G-code Sender é um pouco mais que o nome diz, claro que a principal função dele é abrir o arquivo G-code e enviar linha a linha para a impressora, mas ele também permite controlar manualmente a impressora, assim como setar uma série de parâmetros e condições de operação.

Eu estava interessado em testar a impressora, pelo menos movimentar os eixos, ligar os aquecedores e ver o que acontecia. Como disse lá atrás, optei pelo repetier-firmware pois ele tem um parzinho chamado Repetier-Host, que é exatamente um G-code Sender, ele ainda trás na instalação um Slicing software o Slic3r. DEpois de brigar um pouco para instalar esses softwares na maquina Linux que estou usando eu estava em condições de testar minha impressora.

Mas ai, já é tema para outro post, até lá!