Full text
Universidade do Minho Escola de Engenharia Francisca Carolina Vigo Pereira Pinto Conceção de uma Interface Homem-Máquina para uma máquina CNC fevereiro de 2021 UMinho | 2021 Francisca Vigo Conceção de uma Interface Homem-Máquina para uma máquina CNC
Francisca Carolina Vigo Pereira Pinto Conceção de uma Interface Homem-Máquina para uma máquina CNC Dissertação de Mestrado em Engenharia Mecânica Trabalho efetuado sob a orientação de Professor Doutor Eurico Augusto Rodrigues de Seabra Professor Doutor Luís Fernando Sousa Ferreira da Silva Universidade do Minho Escola de Engenharia fevereiro de 2021
ii DIREITOS DE AUTOR E CONDIÇÕES DE UTILIZAÇÃO DO TRABALHO POR TERCEIROS Este é um trabalho académico que pode ser utilizado por terceiros desde que respeitadas as regras e boas práticas internacionalmente aceites, no que concerne aos direitos de autor e direitos conexos. Assim, o presente trabalho pode ser utilizado nos termos previstos na licença abaixo indicada. Caso o utilizador necessite de permissão para poder fazer um uso do trabalho em condições não previstas no licenciamento indicado, deverá contactar o autor, através do RepositóriUM da Universidade do Minho. Atribuição-NãoComercial-CompartilhaIgual CC BY-NC-SA https://creativecommons.org/licenses/by-nc-sa/4.0/
iii Agradecimentos Ao Professor Eurico Seabra e Professor Luís Ferreira da Silva, orientadores da minha dissertação, por todo o tempo e trabalho que investiram no meu projeto. Um especial agradecimento ao Sr. Carlos Quelhas que me aceitou, de bom grado, para estagiar na sua empresa. A toda a equipa de trabalho na empresa Padrão Ortopédico, em especial ao Pedro, ao Ricardo e à Susana. Agradeço ao meu orientador da empresa, engenheiro Joel Gomes (Joélio), por me aturar em todos os momentos que eu fiquei sem projeto por achar que era impossível e por me ter feito ver que eu conseguia. Ao Ivo, o meu porto seguro e melhor amigo que me acompanhou neste percurso com a máquina que tanto deu que fazer. Claro que, nada seria possível sem a minha família, , a bada a e a, a Mila, Beatriz e padrinho que, não só tornaram esta dissertação possível, como também todo o meu percurso académico. Gostaria ainda de agradecer às pessoas que, direta ou indiretamente, ajudaram-me a chegar a este ponto da minha vida e a terminar este trabalho. Ao Zé e à família, obrigada por sempre me acolherem e me ouvirem. À Inês Estudante por estar sempre disponível quando precisei de ajuda. Aos meus tios, Sabina e Luís, por me hospedarem sempre que precisei de trabalhar na universidade. Por fim, agradeço a todas as pessoas que me ajudaram ou se interessaram no meu projeto e me deram forças para o terminar.
iv DECLARAÇÃO DE INTEGRIDADE Declaro ter atuado com integridade na elaboração do presente trabalho académico e confirmo que não recorri à prática de plágio nem a qualquer forma de utilização indevida ou falsificação de informações ou resultados em nenhuma das etapas conducente à sua elaboração. Mais declaro que conheço e que respeitei o Código de Conduta Ética da Universidade do Minho.
v Resumo As próteses e ortóteses emergiram da área de terapia física. Enquanto prótese é um dispositivo aplicado externamente, usado para substituir total ou parcialmente um segmento de membro, a ortótese é um dispositivo usado para modificar as características estruturais e funcionais dos sistemas neuromuscular e esquelético. Uma das ortóteses existentes na área são os capacetes para tratamento de plagiocefalia posicional. Para a realização destes capacetes é necessária a tiragem do molde do crânio do paciente e produzir uma réplica, ou seja, um molde positivo do membro. Para isso, a empresa Padrão ortopédico utiliza uma série de etapas recorrendo a uma máquina CNC fabricada na própria empresa para maquinagem do molde. A máquina CNC da Padrão Ortopédico padece de dois eixos principais, Z e X, sendo Z o eixo da ferramenta de corte (horizontal) e o X o eixo de movimento vertical. O bloco de poliuretano de baixa densidade é colocado num prato segundo o eixo rotativo A da CNC e o controlo da máquina seria promovido através do software Gb Ce ed cad ad a controlador Arduino da máquina. Para o design da interface gráfica, o software previamente utilizado serviu como base para definir as funções necessárias a implementar como, E de cd e Maae, Maa Maa d e, Aea da defe e ae da Ma e Cca He-Máquina. Estas funções foram programadas na linguagem Python3, com a utilização das bibliotecas Tkinter e Pyserial . O programa foi, por fim, implementado num Raspberry Pi4 (modelo b) como respetivo ecrã tátil de sete polegadas. Para calibração da máquina foram ainda calculados os steps/mm de cada eixo, ajustados, através da nova interface, na CNC e realizados vários produtos de teste da fiabilidade do Sistema InterfaceMáquina. Foi ainda, incorporado um fim de curso no eixo Z para garantir o homing no movimento horizontal da máquina. Por fim, foi criado um livro de utilização da máquina que contempla asdimensões principais da mesma, os parâmetros ajustáveis e como proceder a uma maquinagem, passo a passo. PALAVRAS-CHAVE: Molde, CNC, Interface, Grbl , Python .
vi
vii Abstract Prostheses and orthoses emerged from the area of physical therapy. While prosthesis is an externally applied device, used to replace part or all of a limb segment, orthosis is a device used to modify the structural and functional characteristics of the neuromuscular and skeletal systems. One of the existing orthoses in the area are helmets for the treatment of plagiocephaly. To make these helmets, it is necessary to remove the mold from the patient's skull and produce a replica, i.e., a positive mold of the limb. For this, the company Padrão Ortopédico uses a series of steps using a CNC machine manufactured in the company itself for machining the mold. The CNC machine of Padrão Ortopédico has two main axes, Z and X, with Z being the cutting tool axis (horizontal) and X being the vertical movement axis. The low density polyurethane block is placed on a rotary plate along the secondary axis A of the CNC and c of the machine is promoted through the Gb Ce software inserted in a portable computer connected to the machine's Arduino. For the design of the graphical interface, the previously used software served as a basis for defining the ecea fc be eeed, c a Sed cde ad ac, Maa aaon f e ae, Ca e e ad aaee f e Mace ad Cca Mace man". These functions were programmed in the Python3 language, using the Tkinter and Pyserial libraries. The program was finally implemented on a Raspberry Pi4 (model b) as its seven-inch touchscreen. In order to calibrate the machine, the steps / mm of each axis were also calculated, adjusted, through the new interface, at the CNC and several products were tested for the reliability of the Interface Machine System. A limit switch on the Z axis was also incorporated to ensure homing in the horizontal movement of the machine. Fa, a ace aa a ceaed a cde e a de f e ace, e adable parameters and how to proceed with machining, step by step. KEYWORDS: Mold, CNC, Interface, Grbl, Python.
viii
xv Figura 4.25 - Ajuda da interface gráfica "CNController". .................................................................... 74 Figura 4.26 - Fluxo de informação no modelo MVC. .......................................................................... 75 Figura 4.27 - Variáveis e funções da estrutura MVC dos scripts de . ..................................... 76 Figura 4.28 - F de fa da ae a cae Mde. .................................................. 77 Figura 4.29 - Bbeca ada a Cae Mde. ..................................................................... 77 Figura 4.30 - Variável inicial "self.ser" que abre o canal em série com o controlador da máquina....... 78 Figura 4.31 - Gestor de dispositivos do Windows. .............................................................................. 78 Figura 4.32 - Atribuição de um valor à variavel "self.file_name". ........................................................ 79 Figura 4.33 - Vae "c", "ae_ae" e "aa" da cae Mde. ................................. 80 Figura 4.34 - F "ead_cde" da cae de. .................................................................... 81 Figura 4.35 - Dependência das funçe d C a ae d Mde. ................................ 82 Figura 4.36 - Scripts e bibliotecas importadas da class "View". ......................................................... 83 Figura 4.37 - Menus Visualizados pelo Operador da Interface. ........................................................... 84 Figura 4.38 - Programação da janela principal "root". ....................................................................... 85 Figura 4.39 - Esquematização dos níveis de informação requeridos para a interface. ......................... 85 Figura 4.40 - Identificação dos objetos da janela de comunicação correspondentes às variáveis programadas. ................................................................................................................................... 86 Figura 4.41 - Visualização do formato ttk.Notebook da biblioteca Tkinter . ....................................... 87 Figura 4.42 - Dependência em camada das diferentes labels da interface. ........................................ 87 Figura 4.43 - Paa d be da ea a d Me Pca: "Debea Caa", "Idle/Check" e "Estado da Operação". ............................................................................................. 88 Figura 4.44 - Apresentação dos botões da primeira linha do Menu Principal. ..................................... 88 Figura 4.45 - Ca de be de ae aa Me ca. ............................................... 89 Figura 4.46 Paa da ae ef.e. .................................................................... 89 Figura 4.47 - Proramação dos botões dos comandos manuais da CNC. ............................................ 90 Figura 4.48 - Diferença entre valor zero e um de "borderwidth" dos botões. ...................................... 91 Figura 4.49 - Esquematização do desenvolvimento de informação após a escolha de um movimento de eixo. ................................................................................................................................................. 91 Figura 4.50 - Visualização dos botões de parâmetros programados. .................................................. 93 Figura 4.51 - Array para a formação da lista de parâmetros que se podem escolher para alterar. ...... 93 Figura 4.52 - Identificação das variáveis e objetos correspondentes e interligação dos mesmos para alterar parâmetros na interface. ........................................................................................................ 94
xvi Figura 4.53 - Posicionamento das Colunas sem a utilização de "Columnspan". ................................. 95 Figura 4.54 - Escolha e seleção do parâmetro. .................................................................................. 96 Figura 4.55 - Caixa de texto utilizada para demostrar o parâmetro a alterar e o valor correspondente. 96 Figura 4.56 - Texto importado para submeter informação no menu "Ajuda". ..................................... 97 Figura 4.57 - Fluxo de informação e variáveis no menu "Ajuda"......................................................... 97 Figura 4.58 - Disposição linear dos botões do Menu Ajuda. ............................................................... 98 Figura 4.59 Ma script . ............................................................................................................. 98 Figura 4.60 - Steps/mm dos eixos X. Z e A. .................................................................................... 100 Figura 4.61 - Joelho para maquinar como prova de teste dos parâmetros ( Meshmixer ). ................... 101 Figura 4.62 - Pae ad De aa aae d e. ............................ 101 Figura 4.63 - Simulação do percurso da ferramenta de corte, tempo estimado de trabalho e dimensões do bloco inicial. .............................................................................................................................. 102 Figura 4.64 - Molde positivo do joelho após a maquinagem. ............................................................ 102 Figura 4.65 - Dimensões em X, Y e Z do modelo do joelho CAD....................................................... 103 Figura 4.66 - Medidas obtidas na peça maquinada em comparação com as medidas do modelo CAD. ...................................................................................................................................................... 104 Figura 4.67 - Excesso de material na peça final cortada. ................................................................. 104 Figura 4.68 - Limit Switch SS implementado na CNC. ..................................................................... 105 Figura 4.69 - Fim de curso e batente (parafuso). ............................................................................. 105 Figura 4.70 - Alinhamento do eixo do Z para marcar o zero peça. .................................................... 106 Figura 4.71 - Alinhamento do eixo do Z (vista de cima) para marcar o zero peça. ............................ 106 Figura 4.72 - Botões para ativar o homing ($22=1) e para fazer homing ao eixo do Z ($Hz), respetivamente. .............................................................................................................................. 106 Figura 4.73 - Bloco de Poliuretano de baixa densidade no prato da CNC. ........................................ 107 Figura 4.74 - Modelação CAD dos moldes cilíndricos com dimensões 200 x 300 mm. .................... 107 Figura 4.75 - Modelação CAD dos moldes cilíndricos com dimensões 120 x 300 mm. .................... 108 Figura 4.76 - Prato dimensionado para a fixação dos moldes e do bloco. ......................................... 108 Figura 4.77 - Esquema de imagem CAD do sistema para a criação dos blocos de poliuretano de baixa densidade ...................................................................................................................................... 109 Figura 4.78 - Prato para colocação do bloco com as coroas inseridas. ............................................. 109 Figura 4.79 - Raspberry Pi4 modelo b e ecrã de 7'' com suporte. .................................................... 110 Figura 4.80 - Parte de trás da capa do conjunto. ............................................................................. 110
xvii Figura 4.81 - Máquina "Nada" com interface implementada. ........................................................... 111 Figura 4.82 - Interface ativa na CNC. .............................................................................................. 111 Figura 4.83 - Ecrã da Interface - operação de desbloquear canal e verificar estado de operação. ...... 112 Figura 4.84 - Ecrã da Interface - Movimento em coordenadas relativas dos três eixos de trabalho. ... 112 Figura 4.85 - Ecrã da interface - marcação de zeros peça e estado de operação. ............................. 113 Figura 4.86 - Ecrã da Interface - Movimento dos eixos em coordenadas absolutas e estado de operação. ...................................................................................................................................................... 113 Figura 4.87 - Ecrã da interface - envio do código G para a CNC. ...................................................... 114 Figura 4.88 - Linha de Comandos Raspberry. .................................................................................. 114 Figura 4.89 - Linha de comandos: Final da maquinagem e espera da paragem dos eixos. ............... 115 Figura 4.90 - Ecrã da Interface - Utilização dos botões de "Start" e "Stop". ...................................... 115 Apêndice - Figura 1 - Parâmetros gerais do Grbl firmware. .............................................................. 123 Apêndice - Figura 2 - Desenho técnico do motor nema 23 (mm). .................................................... 131 Apêndice - Figura 3 - Desenho técnico do motor nema 23 (mm). .................................................... 131 Apêndice - Figura 4 - Desenho técnico do motor nema 34 (mm). .................................................... 132 Apêndice - Figura 5 - Desenho técnico do motor nema 34 (mm). .................................................... 133 Apêndice - Figura 6 - Orientação dos eixos principais e secundários(ACIERA Iniciação Ao Comando Numérico Das Máquinas Ferramenta, n.d.) ..................................................................................... 137 Apêndice - Figura 7 - Blocos funcionais NCK (Suh et al., 2008) . .................................................... 140 Apêndice - Figura 8 - Arquitetura e funções do sistema PLC (Suh et al., 2008). .............................. 140 Apêndice - Figura 9 - Sistema e interações da máquina CNC (Suh et al., 2008). ............................. 141 Apêndice - Figura 10 - Dimensões da perna: diâmetro maior - 150.25 mm, diâmetro menor - 123 mm, altura - 392,20 mm. ....................................................................................................................... 145 Apêndice - Figura 11 - Dimensões do pé: comprimento - 165.47 mm, largura - 91.74 mm, altura - 75.67 mm ................................................................................................................................................ 145 Apêndice - Figura 12 - Menu Principal da Interface desenvolvida. ................................................... 147 Apêndice - Figura 13 - Execução do botão responsável pelo comando de desbloquear o canal. ....... 148 Apêndice - Figura 14 - Comunicação utilizador-máquina: Botão IDLE/Check. .................................. 149 Apêndice - Figura 15 - Comunicação utilizador-máquina: Botão Estado da Operação....................... 150 Apêndice - Figura 16 - Comunicação utilizador-máquina: Botão Selecionar Ficheiro. ....................... 150 Apêndice - Figura 17 - Comunicação utilizador-máquina: Botão Enviar Gcode. ................................ 151
xviii Apêndice - Figura 18 - Comunicação utilizador-máquina: Botões Start/Stop. ................................... 151 Apêndice - Figura 19 - Menu Comando Manual. ............................................................................. 152 Apêndice - Figura 20 - Menu Comando Manual: interação e utilização. ........................................... 153 Apêndice - Figura 21 - Menu Definições. ........................................................................................ 153 Apêndice - Figura 22 - Visualização dos Parâmetros fornecidos pelo Grbl. ....................................... 154 Apêndice - Figura 23 - Me "Ada" d CNCe. ................................................................ 155 Apêndice - Figura 24 - Mensagem intercetada do Grbl: "Error:8". ................................................... 156 Apêndice - Figura 25 - Definição de "error 8" no menu ajuda, botão "Erros e Alarmes". .................. 156 Apêndice - Figura 26 - Janela pop-up para ajuda das definições dos botões. ................................... 156 Lista de tabelas Tabela 2.1 - Ortóteses e próteses dos membros inferiores ................................................................... 4 Tabela 2.1 - Ortóteses e próteses dos membros inferiores (cont.) ........................................................ 5 Tabela 2.2 - Próteses e ortóteses dos membros superiores. ................................................................ 5 Tabela 2.3 - Diferença entre fabrico de próteses e ortóteses convencional e digital. ........................... 12 Tabela 2.3 - Diferença entre fabrico de próteses e ortóteses convencional e digital. (cont.) ................. 13 Tabela 2.4 - Códigos G suportados (versão 1.1). ............................................................................... 20 Tabela 2.4 - Códigos G suportados (versão 1.1). (cont.) ..................................................................... 21 Tabela 2.5 - Pca ae de cca c Gb Firmware ..................................... 23 Tabela 3.1 - La d d Gb cad Ad Mea 2560 (). ...................... 28 Tabela 4.1 - Especificações gerais dos dispositivos: Controlador Arduino 2560 R3 e Raspberry Pi 4 model B ...................................................................................................................................................... 58 Tabela 4.1 - Especificações gerais dos dispositivos: Controlador Arduino 2560 R3 e Raspberry Pi 4 model B (cont.) ........................................................................................................................................... 59 Apêndice - Tabela 1 - Definições, valor padrão, unidade e número dos parâmetros do Grbl (Breiler, 2020a). .......................................................................................................................................... 123 Apêndice - Tabela 2 - Definições, valor padrão, unidade e número dos parâmetros do Grbl (Breiler, 2020a) (cont.) ............................................................................................................................................ 124
xix Apêndice - Tabela 3 - Definições, valor padrão, unidade e número dos parâmetros do Grbl (Breiler, 2020a). (cont.) ............................................................................................................................... 125 Apêndice - Tabela 4 - "Mask" para os valores de inversão de step e direção do movimento (Breiler, 2020a). .......................................................................................................................................... 126 Apêndice - Tabela 5 - "Mask" para o relatório de estado do Grbl (Breiler, 2020a). ............................ 126 Apêndice - Tabela 6 - "Mask" para os valores de direção de homing (Breiler, 2020b). ...................... 127 Apêndice - Tabela 7 - Tabela de Componentes da CNC e características (23HS45-3504S - Nema23.Pdf, n.d.; 34HS59-5004S - Nema34.Pdf, n.d.; AliExpress, n.d.; BotnRoll, 2020a; Stepper Online, 2017; worten, 2020). ............................................................................................................................... 129 Apêndice - Tabela 8 - Tabela de componentes da CNC e características (igus, 2019). ...................... 130 Apêndice - Tabela 9 - Especificações da ferramenta de corte. .......................................................... 130 Apêndice - Tabela 10 - Especificações do motor Nema 23. .............................................................. 132 Apêndice - Tabela 11 - Especificações do motor Nema 34. .............................................................. 133 Apêndice - Tabela 12 - Microsteps dos drivers dos motores do eixo A e Z. ........................................ 134 Apêndice - Tabela 13 - Microsteps dos drivers dos motores do eixo X. ............................................. 134 Apêndice - Tabela 14 - Medições das peças maquinadas para testar os parâmetros. ....................... 144 Apêndice - Tabela 15 - Média de valores e erro absoluto.................................................................. 144 Lista de Equações Equação 1 - Calculo dos steps/mm (Breiler, 2020a). ........................................................................ 99 Equação 2 - Cálculo dos step/mm do eixo Z. .................................................................................... 99 Equação 3 - Cálculo dos steps/mm do eixo x. ................................................................................. 100 Equação 4 - Cálculo dos Steps/mm do eixo de rotação A (Aasvik, 2015). ........................................ 100
xx Lista de abreviaturas, siglas e acrónimos Abreviatura Significado 3D Tridimensional CAD Ce Aded De , Design assistido por computador CAM Ce-Aded Mafac , Manufatura assistida por computador CNC Ce Neca C , Controlo Numérico Computorizado CPU Cea Pce U , Unidade de processamento central EEPROM Eecca-Erasable Programmable Read-O Me , Memória programável para ler FDM Fed De Mde , Modelação por deposição Gb Gigabyte GPU Gac Pce U , Unidade de processamento gráfico GUI Gaca Ue Ieface , interface gráfica do utilizador HDMI H-Def Meda Ieface , interface de multimédia de alta definição IDE Ieaed Deee Ee , Ambiente de desenvolvimento integrado LCD Ld Ca Da , ecrã de cristal liquido LED Light-E Dde , Díodo emissor de luz MMI Ma Mace Ieface , Interface homem-máquina MVC Mde Ve C , Modelo visualizador - Controlo NCK Neca C Kee , Controlo numérico Kernel P.O. Padrão Ortopédico PLA Pacc Acd , Poliácido Lático PLC Pe Le Cca , Comunicação via rede elétrica RAM Rad Acce Me , Memória de acesso aleatória Rx Recee , Recetor SD Sece Da , Digital seguro TFT T f a , Transístor de pelicula fina Tx Ta , Transmissor
1 1. Introdução Esta dissertação assenta no estudo, projeção e desenvolvimento de uma Interface Homem-Máquina para uma máquina CNC existente na empresa do estágio curricular Padrão Ortopédico do grupo Quelhas, Ribeiro & Cardoso Lda. No decorrer dos capítulos, será estabelecido como objetivo o estudo da CNC existente como base da projeção da interface, a determinação do equipamento físico a implementar, o design visual do software e a sua conceção em termos de programação. Posto isto, desta dissertação resulta o equipamento final para que o operador da CNC da Padrão Ortopédico possa comandar a máquina de uma forma mais fácil e com menor probabilidade de ocorrência de erros. 1.1. Enquadramento As máquinas CNC de fresagem são um utensílio recorrente nas grandes industrias de próteses e ortóteses sendo uma necessidade constante neste meio a produção de moldes positivos dos membros dos utentes. A máquina desenvolvida na empresa Padrão ortopédico está equipada com dois sistemas de eixos principais e um rotativo, sem capacidade para ser controlada na raiz, mas sim, através de um computador portátil com um software open-source . Os técnicos da empresa carecem de conhecimento em órgãos de máquinas e controlo de máquinas industriais, sendo um entrave para os mesmos utilizarem programas complexos de envio de código para a CNC, podendo pôr em risco a veracidade da peça obtida, o estado da máquina ou o próprio técnico. Assim, o pretendido é equipar a máquina com uma interface homem-máquina amigável ao utilizador, simples e intuitiva sem nunca pôr em causa o tempo, a precisão e exatidão do trabalho. 1.2. Objetivo Genericamente, esta dissertação incide na conceção de uma interface Homem-Máquina para a CNC da empresa Padrão Ortopédico facilmente manuseada por qualquer técnico da empresa (sem qualquer tipo de formação em máquinas industriais). Sendo que, inicialmente, não existe qualquer informação sobre a máquina em si, é necessária a aquisição de dados físicos (mecânicos e eletrónicos) e dados no âmbito do software utilizado para traduzir e controlar os movimentos da CNC. Após a recolha desta informação,
2 é possível a caracterização das limitações da mesma e, assim, as especificações necessárias para a idealização da base da interface. Ao basear a nova interface a partir de softwares prévios, sem a necessidade de adquirir um controlador existente no mercado que, reivindica a compra de sistemas mecânicos compatíveis com o mesmo, é possível obedecer a um dos objetivos para com a empresa que é o baixo custo de conceção, evitando também a remodelação de alguns equipamentos já adquiridos para a máquina. É importante referir que este trabalho não está centrado no estudo da máquina e no seu controlador, mas sim na possibilidade de comunicar com o mesmo sem necessidade de enviar códigos que não são intuitivamente visíveis para um operador inexperiente. 1.3. Estrutura da dissertação A dissertação divide-se em cinco capítulos expressos ordenadamente segundo a execução de cada etapa do trabalho. Obtendo-se a distribuição a baixo descrita. No Capítulo 1, é expressa a introdução ao tema, onde se promove o enquadramento do tema e a descrição dos objetivos. No Capítulo 2, abordam-se os temas teóricos para contextualizar a leitura da dissertação. O leitor poderá usufruir de uma breve revisão bibliográfica sobre o trabalho realizado na empresa Padrão Ortopédico para a concessão de moldes positivos para a manufatura de próteses e ortóteses, bem como o ponto de situação das máquinas CNC nesta área da ortopedia. No Capítulo 3, é realizado um estudo da máquina CNC fabricada na Padrão ortopédico, desde o estudo os componentes mecânicos e dos eixos de transmissão de movimento, até à execução detalhada de um molde positivo de um membro inferior na própria máquina. Por fim, é possível contemplar uma lista de limitações da CNC e algumas propostas de melhoria para essas mesmas limitações. No Capítulo 4, dá-se início ao Design, programação e conceção da interface homem-máquina. Começando pela aquisição dos componentes físicos a implementar; das funções que o operador espera encontrar, seguindo-se do posicionamento gráfico das mesmas e, por fim, a programação do software . Após a descrição destes tópicos, são ainda especificadas algumas alterações realizadas na CNC e nos seus componentes para que, seja possível a implementação e verificação do equipamento concebido no final do capítulo.
3 Posteriormente a todos os tópicos anteriormente enunciados, no capítulo 5, estão expressas as conclusões retiradas de todo o estudo, projeto e conceção realizados, bem como a definição de melhorias e trabalhos futuros.
4 2. Produção de moldes positivos no fabrico de próteses e ortóteses e máquinas CNC Este capítulo dá início ao projeto adjacente a toda a dissertação. Foram esmiuçados os conceitos teóricos que permitem a compreensão do projeto e as bases onde este assenta. As próteses e ortóteses emergiram da área de terapia física. O desenvolvimento nestes dois campos foi consequência de três eventos históricos, nomeadamente, a primeira guerra mundial, a segunda guerra mundial e a epidemia de pólio (Lusardi, 1994). Antes e aquando a primeira guerra mundial, a produção de uma prótese era realizada por ferreiros e soldadores, sendo estas constituídas principalmente de madeira e metal. Já na segunda guerra mundial, profissionais de terapia física, próteses e ortóteses eram aliados dos médicos, aumentando assim o desenvolvimento científico na área (Lusardi, 1994). Após a epidemia do pólio, com a gravidade e variedade de casos de paralisia, iniciou-se um estudo aprofundado, considerando campos como distrofia muscular e desarticulações, reabilitação física, recuperação cirúrgica e paralisia cerebral (Lusardi, 1994). Hoje em dia, cada tipo de prótese e ortótese é fabricada de uma forma diferente e utilizando técnicas e materiais consoante a necessidade do paciente, sendo o objetivo principal o seu bem-estar (Lusardi, 1994). A prótese é um dispositivo aplicado externamente, usado para substituir total ou parcialmente um segmento de membro ausente ou deficiente. Exemplos comuns são as próteses transtibiais e transfemorais para o membro inferior e as próteses transradial ou transumeral para o membro superior (Healy et al., 2018). A ortótese é, por sua vez, um dispositivo aplicado externamente, usado para modificar as características estruturais e funcionais dos sistemas neuromuscular e esquelético. Exemplos comuns são suportes para tornozelo, talas de pulso, ortóteses de pé e tornozelo, calçados personalizados (Lusardi, 1994). Na tabela 2.1 e 2.2 é possível observar os tipos gerais de próteses e ortóteses existentes. Tabela 2.1 - Ortóteses e próteses dos membros inferiores (Quintero-Quiroz, 2017) Próteses AK Próteses acima do joelho BK Próteses abaixo do joelho TT Próteses transtibiais TF Próteses transfemorais Ortóteses FO Ortóteses de pé
11 é pretendida uma maior ou menor resolução da imagem). Entre as diferentes formas de digitalização, existem três modos principais de se proceder com a obtenção de uma imagem tridimensional: digitalização por tecnologia de laser, projeção e estruturação de luz ou por trajetória ótica (EMS, 2019). Na tecnologia a laser é utilizada triangulação trigonométrica onde feixes de luz são consecutivamente enviados até a superfície a digitalizar, sendo a reflexão do feixe captada pelos sensores do scanner , criando, assim, uma superfície com milhões de pontos (EMS, 2019). Já numa tecnologia de projeção e estruturação de luz, é enviado até à superfície um padrão, normalmente constituído por contrastes de luz LED branca ou azul que, consoante as deformações do padrão causadas pelas irregularidades da superfície, formam digitalmente os relevos da mesma (EMS, 2019). Por fim, a utilização de um scanner de trajetória ótica baseia-se na obtenção de frames em relação a um ponto conhecido do espaço sendo que, quando as coordenadas são lidas pelos sensores, a imagem bidimensional é colocada e aglomerada com as outras diferentes imagens retiradas de pontos conhecidos (EMS, 2019). Após a obtenção do molde digital, através de softwares de CAD como, por exemplo, Mee (utilizado em várias empresas por ser open source ), como representado na figura 2.4, são efetuadas correções a nível da digitalização, nomeadamente, falhas de dados potencialmente existentes, eliminação de pontos em excesso e alteração do tipo e forma de malha do molde, consoante o nível de rigor desejado. Posto isto, em softwares de modelação CAD, dependendo do tipo de produto final, é possível transformar a malha obtida numa superfície paramétrica podendo, posteriormente, adicionar uma espessura. Em certos casos, é necessário proceder á correção dos moldes positivos. No fabrico digital de moldes de cosméticas (por exemplo), como são produzidas em elastómero de poliuretano por impressão 3D tem de ser implementada uma estrutura de encaixe para acoplar a cosmética ás restantes partes da prótese. Já em capacetes para correção de plagiocefalia, a correção é diretamente feita nas malhas pois, como Figura 2.4 - Posicionamento da cabeça para maquinar no software Meshmixer (Autodesk).
12 se trata de um molde positivo produzido por desbaste de um bloco, são apenas necessárias as coordenadas da superfície. Por fim, o molde digital é convertido em código através de software CAM, guardado e enviado para a máquina que produzirá uma peça final ou um molde positivo, representada na figura 2.5. 2.1.4. Diferença entre fabrico de próteses e ortóteses convencional e digital Como em todas as formas de produção, existem sempre diferenças na produção convencional (manual) e na produção digital ou mais automatizada. Todavia, segundo os técnicos da empresa Padrão Ortopédico, qualquer uma das duas opções não deixa de ser correta e a melhor solução depende sempre do caso que se trata. Na tabela 2.3, encontram-se algumas diferenças gerais entre estes dois tipos de fabrico. Tabela 2.3 - Diferença entre fabrico de próteses e ortóteses convencional e digital. Fabrico convencional de moldes Fabrico digital de moldes Vasta utilização de diferentes utensílios Geralmente utilização apenas de um scanner, computador e de uma máquina CNC O processo de tiragem do molde é demorado O processo de tiragem do molde é realizado com o scanner e é relativamente rápido Há grandes quantidades de desperdício de materiais para fabricar o molde São apenas desperdiçados os materiais de excesso do bloco ou os suportes (no caso de FDM) Figura 2.5 - Molde positivo de um paciente com plagiocefalia maquinado na CNC da Padrão Ortopédico.
13 Tabela 2.3 - Diferença entre fabrico de próteses e ortóteses convencional e digital. (cont.) Fabrico convencional de moldes Fabrico digital de moldes Processo mais evasivo para o paciente (principalmente na tiragem do primeiro molde) Processo muito menos evasivo para o paciente (não há praticamente contacto) Maior sensibilidade na correção das zonas de alívio e pressão Como não é um processo físico não há tanta sensibilidade a fazer as correções devidas Difícil de armazenar o modelo físico do molde O modelo digital é facilmente guardado Dificuldade em alterar as correções e formas já existentes Qualquer modelo digital é fácil de alterar independentemente do formato existente Processo muito demorado Processo demorado mas, comparativamente ao convencional é consideravelmente mais rápido Muito mais fácil de fazer correções especificas que implicam a utilização de peso e pressões para a alteração da forma dimensional É difícil ter noção das formas dimensionadas quando é necessário aplicar uma carga 2.2. Máquinas CNC e a indústria de próteses e ortóteses Por definição, relacionada com o tipo de máquina pretendida para este estudo, uma CNC fresadora é uma máquina de comando numérico assistido por computador capaz de remover material de um dado bloco utilizando, simultaneamente, o movimento de uma ferramenta de corte com o movimento de, pelo menos, dois eixos ao mesmo tempo (Smid, 2003). É sabido que, as máquinas de comando numérico assistidas por computador, nomeadamente, as CNC, são utilizadas para uma grande variedade de produção. Consoante a sua complexidade e a precisão pretendida pelo operador, estas máquinas são capazes de criar uma ampla gama de peças (Smid, 2003). No que toca à área do fabrico de próteses e ortóteses, existem duas empresas que se dedicam, exclusivamente, ao fabrico de máquinas CNC para a produção de moldes destes equipamentos em específico. Apesar de existirem mais máquinas capazes de produzir as peças desejadas, os produtos destas marcas focam-se, essencialmente, na melhor utilização das CNC para os objetivos intrínsecos na área.
14 Apesar dos materiais utilizados para a produção de moldes serem de baixa densidade, aumentando a facilidade de corte do mesmo, a peça exige que o rigor e a precisão sejam extremamente elevados, para que o molde reflita, com a maior semelhança, o membro do utente. Diminuindo, assim, falhas e incómodos no posterior fabrico da prótese ou ortótese ou, até mesmo a necessidade de executar um novo molde. Uma das principais especificações destas máquinas é o tamanho do curso do eixo X tal que, a CNC permita a revolução de um mole desde um dedo, até um membro inferior inteiro na mesma máquina. 2.2.1. Ma V Como a própria empresa reivindica, todas as máquinas V são rápidas, precisas, fáceis de operar e feitas para durar. Funcionam como parte integrante da solução V CAD/CAM para próteses e ortóteses: basta importar o arquivo de projeto Canfit 3D para o molde, colocar uma peça bruta de escultura e pressionar "Iniciar". Em minutos, um molde prostático ou ortótico complexo está pronto para o seu fabrico. Dispositivos finais, como palmilhas e assentos de espuma macia, podem ser fresados diretamente nestas máquinas V (Vorum, n.d.). A V produz máquinas de três a sete eixos, todas elas previamente programadas para trabalhar com o próprio software CAD/CAM desenvolvido pela empresa (Vorum, n.d.). Por exemplo, na figura 2.6, está representada uma CNC de quatro eixos fabricada por esta empresa. Contemplando um eixo rotativo e uma superfície de corte plana, a máquina de 4 eixos é a solução para diversas necessidades de fabrico como assentos e palmilhas ortopédicas, além de uma ampla gama de modelos de ortóteses e próteses (Vorum, n.d.). Oferece, ainda, versatilidade e eficiência máximas. A grande superfície plana, facilita a produção direta de uma almofada de assento ou de até 8 pares de palmilhas macias de uma vez. Permite a produção Figura 2.6 - CNC 4 e V (Vorum, n.d.).
15 de modelos e dispositivos com uma variedade de materiais duros e macios, incluindo poliuretano, EVA e cortiça. Sendo as dimensões desta máquina reduzidas (2 x 2,6 m2) (Vorum, n.d.). É de salientar que a empresa fornece todos os equipamentos necessários para a correta utilização da máquina, desde software s de scan , equipamento, software de CAM/CAD e a máquina em si (Vorum, n.d.). 2.2.2. Ma Rd4d A Rd4d é também uma empresa que visa responder às necessidades de produtores e fabricantes de próteses e ortóteses. Tal como a V, disponibiliza em catálogo todos os componentes necessários para a produção de aparelhos ortopédicos, iniciando-se de igual modo em software s de Scan e CAM/CAD para, posteriormente, implementar o resultado nas suas máquinas produzindo, assim, as peças desejadas pelo operador (rodin4d, 2018). Existem várias máquinas CNC e robôs fabricados pela empresa, para que o comprador possa adquirir de um modelo mais simples a um mais complexo, conforme a necessidade (rodin4d, 2018). O modelo S da Rd4d e eeead a fa 2.7. Este apresenta um tamanho compacto, facilitando a integração no ambiente de trabalho. Apesar do seu tamanho, possibilita o fabrico de quase todos os aparelhos ortopédicos requisitados (rodin4d, 2018). A área de trabalho é de 700 x 500 mm2 tendo como principais características técnicas de maquinagem (rodin4d, 2018): x Motor do eixo: 3000/10000 T / min; x Fonte de alimentação: 380 V, 60 Hz, 25 A; x Tempo médio de ciclo: 20 min; x Nível de som <80db; x Tamanho: largura 1600 x comprimento 1740 x altura 1880 mm; x PC industrial integrado. Figura 2.7 - CNC 4 e Rd4d (rodin4d, 2018).
16 2.2.3. Controladores de máquinas CNC e plataformas GUI no mercado Os controladores e as interfaces CNC vivem em codependência, ou seja, grande parte dos controladores existentes no mercado estão acoplados à respetiva interface do comerciante. À exceção de certos protótipos encontrados por programadores freelancers , a industria responsável por fabricar este tipo de equipamento tende a ser exclusiva. Por outras palavras, a compra de um controlador para uma CNC, inclui a compra de todos os restantes produtos, nomeadamente, motores especificas, drivers e sensores. Por serem normalmente empresas que fabricam as próprias máquinas, estes equipamentos são ideais apenas para as máquinas que os mesmos fornecem. Assim, não é garantida uma eficiência adequada quando implementados em máquinas diferentes daquela para a qual foram concebidos. Posto isto, a maioria destas filiais, apenas fornece informações detalhadas do produto e do custo quando contactados pelo comprador, para poder validar a sua escolha e para garantir que o equipamento não sofrerá altera- e deeada e e a de ed aa d eae dc. Inicialmente, avaliando alguns fornecedores online destes equipamentos, estipulou-se um intervalo de preços de, aproximadamente, 9 000 a 19 000 euros. Este custo remete para a compra de kits retrofit para CNC, ou seja, um conjunto de equipamentos para renovar as máquinas CNC. É claro que, o custo do produto advém da qualidade e fiabilidade do mesmo. Para empresas que se gerem pela marca e que requisitam grandes quantias de equipamentos, é necessária uma coerência nos equipamentos para que, se precisa, seja possível a interação com o fabricante (Machine Tool Products, n.d.). O conjunto CNC 808D da Siemens pré-fabricado, representado na figura 2.8, é para uma fresadora básica de 3 eixos. Os componentes do kit incluem: Display /controlador CNC Siemens (PPU), painel de controlo da máquina (MCP), (3) drivers e servo motores Siemens com conjuntos de cabos, gabinetes, braço pendente, componentes de controlo, (2) fontes de alimentação, transformador de controlo, saída e relés de segurança, desconexão rotativa, disjuntores reinicializáveis. O custo é de aproximadamente treze mil euros (Machine Tool Products, n.d.). Figura 2.8 - Kit CNC 808D da Siemens pré-fabricado (Machine Tool Products, n.d.).
17 O conjunto CNC TKP Fagor 8055i FL MC TKP de 3 eixos para CNC (fresadora) é um sistema servoCNC pré-projetado. O sistema dos servos motores é projetado num gabinete elétrico. Os dois sistemas são integrados para fornecer um sistema turnkey (funcional e pronto para instalação). Toda a eletrónica necessária é fornecida, incluindo os cabos de alimentação do motor, cabos do codificador e servo motores. Cada sistema é pré-cablado e configurado para sua aplicação específica de máquina por técnicos da marca e está totalmente funcional na entrega. Este equipamento, representado na figura 2.9, tem um custo de, aproximadamente, dezanove mil euros (Machine Tool Products, n.d.). Entretanto, existem sempre mais alternativas de mercado. Grandes distribuidores mundiais de produtos de baixo custo, como o Alibaba e o Aliexpress fornecem alternativas substancialmente mais em conta, nunca garantindo, claro, instalação, eficiência e compatibilidade com o equipamento. Na comunidade do AliExpress , existem modelos, como o representado na figura 2.10, um kit de hardware para CNC, ddcsv3.1 4-axis, que engloba quatro motores Nema 23/57, um controlador de movimento, uma fonte de alimentação e um botão de paragem de emergência. Com um custo muito mais acessível de, aproximadamente, quatrocentos e quarenta euros. Figura 2.9 - Kit CNC TKP Fagor 8055i FL MC TKP (Machine Tool Products, n.d.). Figura 2.10 Kit para CNC ddcsv3.1 4-axis (AliExpress, 2020).
18 O grande problema em adquirir componentes para a construção de máquinas CNC separadamente, incide na incompatibilidade entre o hardware e software . Apesar de ser possível a compra de interfaces e controladores isoladamente, estes necessitam do software próprio, especificamente desenvolvido para cada um eles. A acrescentar ao elevado custo de mercado do hardware em questão seria, de certo modo irrelevante, a análise de conjuntos destes dois componentes para instalar na máquina CNC em estudo. Por um lado, porque esta já provém de um firmware completamente funcional e simples instalado, por outro lado, porque, como já foi mencionado, haveria necessidade de alterar todos os componentes existentes na máquina, à exceção da estrutura, para garantir eficiência. De salientar também que, o intervalo monetário estipulado é remetente a máquinas de alto rendimento, dimensionadas e projetadas para suportar uma elevada gama de materiais para corte, sendo que, seria um investimento extremamente elevado para o tipo de trabalho que a CNC da empresa Padrão Ortopédico acarreta. Anda assim, haveria a possibilidade de encontrar um firmware open-source que fornecesse maior facilidade em projetar uma interface para a máquina. Apesar de não ser viável, pois estes firmwares estão ligados a programas de controlo apenas desenvolvidos para computadores, seria, tendo em conta o custo de um equipamento de origem, uma opção a explorar. A vantagem deste tipo de software é que, para além de gratuitos, são ajustáveis às necessidades do utilizador, dependendo do numero de eixos, tipo de motores, binário, velocidades máximas e parâmetros de maquinagem. 2.2.4. Firmwares para controlo de Máquinas CNC Um dos software s mais utilizados pela comunidade construtora de máquinas de comando numérico assistido por computador, é o Ma. Este firmware é compatível com máquinas que suportam o movimento de quatro eixos, geralmente três lineares e um rotativo. Pode ser encontrado em plataformas de programadores como o GitHub (Rdpowers, 2016). Este firmware RepRap (com lincensa gratuita segundo a GNU, General Public License) foi programado a partir de fae c Se e Grbl por Erik van der Zalm. Permite a interrupção de cursos de maquinagem, comporta o acesso de cartões SD para transferência do código G, suporte para implementação de um ecrã LCD, menu para a interface, representada na figura 2.11, entre outros (Rdpowers, 2016).
19 Por outro lado, o Grbl é uma alternativa de alto desempenho e baixo custo que visa controlar o movimento em máquinas CNC de fresagem. Este firmware está projetado para ser utilizado em qualquer tipo de controlador Arduino do mercado (Breiler, 2020a). Este controlador é escrito em C altamente otimizado, utilizando todos os recursos inteligentes dos chips AVR para obter um tempo preciso e operação assíncrona. É capaz de manter até 30kHz de pulsos de controlo estáveis e livres de jitter 1 (Breiler, 2020a). Este programa aceita código G consoante os padrões universais e foi testado com a saída de várias ferramentas CAM, não apresentando anomalias. Arcos, círculos e movimento helicoidal são totalmente suportados, bem como todos os outros comandos primários do código G. Funções macro, variáveis e a maioria dos ciclos fixos não são suportados, mas possíveis de executar em plataformas GUI. (idem) O Grbl promove o controlo total antecipado da aceleração. Isso significa que o controlador preverá até 18 movimentos futuros, planeando assim, antecipadamente, as velocidades para executar uma aceleração suave e movimentos com a menor vibração possível (Breiler, 2020a). Este firmware é open-source e encontra-se lançado através da licença GPLv3 (Breiler, 2020a). No projeto atual, está a ser utilizada uma expansão do Grbl para cinco eixos, Grbl-Mega-5X (figura 2.12), de modo a incluir os eixos rotativos, nomeadamente, o eixo A (Breiler, 2020a). 1 Jitter Variação do tempo em que os dados chegam ao recetor, quanto maior o jitter (milissegundos), maior a latência da transmissão de dados. Figura 2.11 - Interface fornecida para o MArlin firmware. (Breiler, 2020a) Figura 2.12 - Logótipo da extensão de 5 eixos do Grbl (Breiler, 2020a).
20 Esta versão do Grbl foi lançada a partir da licença inicial na plataforma online GitHub. Neste caso, devido à maior quantidade de sistemas eletrónicos a incluir, é exclusivamente necessária a utilização de um controlador Arduino Mega (Breiler, 2020a). Tal como os próprios fornecedores indicam, qualquer operador que necessite de um controlador para fresagem simples e agradável e que pretenda a sua implementação em qualquer tipo de controlador Arduino, capaz de acolher todas as ligações eletrónicas necessárias para o controlo dos motores, pode utilizar este firmware . Assim, é desnecessária a utilização de estruturas cabladas extremamente complexas, facilmente conseguidas através do controlador Arduino (Breiler, 2020a). Também utilizadores que pretendam implementar este controlador em trabalhos e projetos mais específicos, são evidenciados pelo fornecedor como incluídos no grupo de pessoas que o Grbl será uma mais valia para elas (Breiler, 2020a). Intrínsecamente, no que diz respeito ao projeto onde se encontra a ser utilizado, esta foi a opção inicial de controlador implementada pelo criador da CNC, eliminando os custos da compra de um software específico para controlar a máquina e de todos os componentes mecânicos e estruturais necessários para os implementar, sendo que, é facilmente controlável via uma ligação em série em qualquer computador (Breiler, 2020a). O interpretador de código G implementa um subconjunto do padrão LinuxCNC e é compatível com a maioria das ferramentas CAM (Breiler, 2020a). A lista de código G suportado pela versão de Grbl 1.1. encontra-se representada na tabela 2.4 (Breiler, 2020a). Tabela 2.4 - Códigos G suportados (versão 1.1) (Breiler, 2020a). G0 Psicionamento rápido G01 Interpolação linear G2, G3 Interpolação circular no sentido horário (G2) ou sentido anti-horário (G3) G4 Dwell (tempo de permanência) G10 Entrada de dados de Deslocamentos de Coordenadas de Trabalho G17, G18, G19 Seleção de Plano: XY (G17); XZ (G18); YZ (G19). G20, G21 Entrada de dados: em polegadas (G20) ou em milímetros (G21) G28 Prosseguir para a posição pré-definida G28.1 Definir posição pré-definida (de todos os eixos) G38.2 Sondagem (dois eixos)
27 A unidade CNC da máquina é então constituída por estes dois conjuntos de hardware e software. A ligação é sempre realizada através da entrada USB 2.0 do controlador Arduino para a USB do computador, identificando a porta do canal em série e ligando o Grbl Controller no computador. Após realizada a conexão, o operador tem total controlo sobre a máquina, nomeadamente para promover a alterar os 136 parâmetros existentes no Grbl firmware , mover os eixos manualmente, promover e parar operações. Caso o computador fique sem bateria aquando uma operação a máquina continua a funcionar a não ser que seja manualmente cortada a energia. Porém, é impossível voltar a ligar o canal anterior, ou seja, operador deixa de ter controlo sobre a operação que está a ser executada. Isto acontece por serem sistemas separados, ou seja, o firmware não é ativado só depois do Grbl estar ligado, mas sim, porque existe energia na máquina. A ligação para a passagem de informação entre os drivers e o controlador Arduino no circuito é executada de forma cablada. Como é necessário ligar cada um dos componentes ao pórtico de corrente (5 V) e à Terra (GND), está implementada no sistema uma protoboard para permitir todas as ligações. Ainda, cada pino do motor é ligado aos drivers que, por sua vez, estão ligados à fonte de alimentação do. Os pinos dos motores para direção, limite e pulso, estão ligados diretamente ao controlador Arduino (através da protoboard ) e encontram-se definidos na tabela 3.1. Figura 3.4 - Sea ec da Ma CNC "Nada" e a ce a Gb firmware .
28 Tabela 3.1 - Ligação dos pinos do Grbl no controlador Arduino Mega 2560 (pinout). Função Pino Limite Eixo Z 53 Eixo X 51 Eixo A 50 Direção Eixo Z 37 Eixo X 35 Eixo A 34 Pulso de Step Eixo Z 22 Eixo X 24 Eixo A 25 Reset 0 Stop (pausa) 1 Start (continuar) 2 Porta de Segurança 3 Os pinos correspondentes ao reset, stop, start e porta de segurança estão ligados a todas os drivers de cada motor, para que, atuem igualmente em todos quando utilizados. Esta informação depende do tipo de controlador Arduino utilizado, sendo que, a CNC utiliza um controlador Arduino Mega 2560 para ser possível a ligação dos pinos referentes ao eixo A. Na figura 3.5 está representado o esquema do circuito elétrico da CNC. Figura 3.5 - Circuito elétrico da CNC.
29 3.2. Estrutura da CNC da Padrão Ortopédico Existem centenas de tipos de próteses e ortóteses no mercado, não evidenciando que cada projeto é um projeto e está estritamente condicionado pelo paciente que posteriormente irá utilizar a peça. Quer isto dizer que, os tamanhos das próteses e ortóteses e, por consequência direta, os seus moldes, podem ter dimensões completamente distintas umas das outras. Posto isto, é de notar que a área de trabalho da máquina, representada na figura 3.6, tem de satisfazer todas as dimensões necessárias para conseguir fazer o maior número de dimensões de moldes diferentes. Como a maioria dos moldes são gerados por revolução e, como essa revolução está incutida na peça a maquinar verticalmente, o percurso vertical da máquina é o mais elevado. Já o percurso da ferramenta horizontalmente é reduzido, tendo por base que, como é necessária a criação do bloco de matéria consoante o tipo de peça que se pretende maquinar, este será dimensionado para não sucumbir a remoções de material desnecessárias, resultando em longos percursos de profundidade que destabilizam as operações, perda de tempo de maquinagem desnecessário e desperdício material do bloco. Posto isto, é possível identificar que, o eixo com maior movimento em todas as maquinagens é o eixo A (eixo de rotação). A este eixo, é possível fixar um bloco com dimensões até 400 mm de diâmetro. Uma descrição mais detalhada dos componentes está representada no apêndice II. Área de trabalho Figura 3.6 - Área de trabalho da Máquina CNC "Nada" (Silva, 2021).
30 A área de trabalho da máquina está compreendida na zona em forma de paralelepípedo identificada na figura. Corresponde a 900 mm de altura por 400 x 400 mm2 de base. No compartimento restrito à maquinagem da peça, representado mais discriminadamente na figura 3.7, a spindle com potência de 2200 W é programada para girar a uma dada velocidade, dependente do material a cortar que, promove a rotação da ferramenta de corte diretamente ligada. À spindle , está diretamente fixada um porta-ferramentas onde é colocada a ferramenta de corte. O bloco a maquinar encontra-se afixado a um prato que, por sua vez está acoplado ao eixo de rotação A, representado na figura 3.8. Este prato fica posicionado num veio paralelo ao veio do motor que promove a rotação da peça. A transmissão do movimento realiza-se através de um sistema duas polias e correia para diminuição da transmissão de potência. O veio que suporta o prato do bloco é afixado à polia, de 34 dentes, do sistema. O movimento é concebido a partir da transmissão através da correia de passo de 10 mm que, por sua vez, está ligada ao pinhão de 14 dentes (ambas as polias com passo de 10 mm) fixado ao veio do motor NEMA 23 (ver especificações no apêndice II). Estes motores, motores de 200 steps com um ângulo de passo de 1,8°, têm como Figura 3.7 - Modelação 3D do sistema de transmissão de movimento do eixo de rotação A (Silva, 2021). Figura 3.8 - Mecanismo de Transmissão de movimento do eixo A (Silva, 2021).
31 unidade de momento 3 Nm (Newton metro) e funcionam a uma tensão de 4,2 V com corrente de alimentação de 3,5 A. Um movimento semelhante é realizado no topo da área de trabalho, representado na figura 3.9, com vista a que, no caso de blocos de material maiores, seja possível uma dupla amarração da peça, evitando oscilações da mesma. Para ambos os sistemas, a relação de transmissão, i, corresponde a, aproximadamente, 2,429 (rácio entres os 34 e os 14 dentes). O eixo de movimento X, que promove o movimento vertical da máquina, representado na figura 3.10, é constituído por dois motores NEMA 34 que, tal como os NEMA 23, possuem 200 steps a passo com um ângulo de 1,8. Estes motores, com as especificações evidenciadas no apêndice II, funcionam a uma tensão de 5 V e corrente de 5 A. Com duas polias inseridas nos veios de cada motor e ligadas por uma correia. As polias, ambas com 14 dentes, possuem um passo de 10 mm (tal como a correia). Neste caso, os dois motores utilizados são para auxiliar o movimento, ou seja, como todo o sistema demonstrado na figura tem de ser movimentado aquando a spindle, a utilização de dois motores por Figura 3.9 - Motor superior do movimento de rotação A (Modelação 3D) (Silva, 2021). Figura 3.10 - Modelação 3D do sistema de movimento do eixo de translação X (vertical) (Silva, 2021).
32 parte do fabricante ajuda a que a força seja distribuída por ambos os veios, evitando erros de translação causados por vibrações ou excesso de força sofrida pelo eixo que leva os motores a saltar passos. Por fim, o eixo do movimento Z é conseguido através de um fuso de esferas de dois milímetros de passo e curso de 500 mm, acoplado a um motor NEMA 23 (idêntico aos do eixo A ver apêndice II), que impulsiona a translação horizontal da ferramenta, representado na figura 3.11. 3.3. Estudo e avaliação do fabrico de moldes positivos na CNC da empresa Padrão Ortopédico Resumidamente, neste capítulo vão ser destacados os passos do processo de maquinagem de um molde na CNC existente na empresa Padrão Ortopédico antes de se realizarem alterações na máquina. Neste caso, a peça final a ser gerada é o membro inferior de um utente (do joelho ao tornozelo). Como todos os processos de maquinagem, é necessário começar por criar o ficheiro CAD do objeto final. Nesta empresa é utilizado um Scan 3D (Einscan Pro +) que, através da projeção de feixes de luz, calcula a distância entre pontos pela deformação do padrão projetado na perna do utente. Ao longo do procedimento começa-se a gerar, no software exclusivo do dispositivo, uma superfície (oca) com o relevo da perna do utente, como se pode observar na figura 3.12. N f, fce adad c .stl 4 . 4 .- formato de ficheiro relativo à linguagem de estereolitografia, criação de modelos tridimensionais computorizados. Figura 3.11 - Eixo de movimento Z (Modelação 3D) (Silva, 2021).
33 O segundo passo remete para o tratamento do ficheiro, por exemplo, no caso dos capacetes para pacientes de plagiocefalia posicional, é necessária a modificação do molde da cabeça como, aumentar as regiões de sensibilidade ou alinhamento do crânio, para isto, é utilizado o software Solidworks. É também ece afa a caca eada scanner num objeto sólido, bem como alinhar as extremidades da peça (aquando a utilização de scanner os limites da perna ficam geralmente pouco delineados, cobertos de altos e baixos ver figura 3.12). Para a concessão destas etapas, é usado o software Meshmixer , representado na figura 3.13. O alinhamento da peça é executado no software Mee onde, como observado na figura 3.13 é utilizado a extremidade maior do membro para definir a base do futuro bloco de maquinagem. O centro Figura 3.12 - Geração da superficie de relevo da perna. Figura 3.13 - Posicionamento do molde da perna no software Meshmixer .
34 dessa base está identificado com a esfera a vermelho na figura. Já o eixo a verde, terá de ser alterado para que corresponda ao eixo X (visto que a peça tem de ser maquinada verticalmente) e o eixo a vermelho, corresponde ao eixo do Z. A máquina está dimensionada para que o bloco seja maquinado com uma amarração no eixo A que permite a rotação do mesmo. Sendo peças por revolução, a altura da perna é definida pelo eixo X (vertical) e os diferentes diâmetros (relevo) pelo eixo Z (horizontal), eixo da ferramenta de corte, como representado na figura 3.14. Posto isto, o maior comprimento da perna tem de ser paralelo ao eixo X e perpendicular ao eixo Z. Uma das etapas que também é indispensável, é o alinhamento da peça com o plano de corte que corresponderá ao0 à base do bloco. No caso da base se encontrar distanciada do ponto de referência, o software de geração do CAM assumirá essa distância como espaço a maquinar. Após finalizar todos aae, ae ea fce c .e 5 para que este seja compatível com programa de CAM. O programa que permite a geração do CAM é denominado por Deskproto , neste caso, a versão 6.1. Para este tipo de máquina é apenas possível utilizar esta versão ou versões mais recentes, permitindo a inibição do eixo Y e inserção de um eixo rotativo A. Primeiramente, é fulcral definir a máquina onde vai ser maquinada a peça. Na figura 3.15, estão expressos os parâmetros utilizados para a definição do equipamento. 5 .e formato de ficheiro com linguagem padrão para o intercâmbio de dados de produtos industriais. Figura 3.14 - Alinhamento dos eixos para a maquinagem em função das características da máquina.
35 As características principais são o pós-processador (Grbl), a área de trabalho (X 900 e Z - 400) que, neste caso, não é utilizada toda a região de trabalho que a CNC comporta, o diâmetro do porta-ferramentas, 20 mm, e a velocidade mínima e máxima de maquinagem ( feed rate 6 de 0 a 700 mm/min). As características relativas à spindle também são, por norma, muito importantes (definem a velocidade corte) mas, neste caso, como a spindle está separada eletricamente da máquina, ou seja, é controlada manualmente, não será necessária a alteração destes parâmetros. No que toca a erros de tempo o valor estipulado encontra-e 1, ea, e de aae estimado pela máquina é igual ao tempo real de maquinagem. O segundo passo a implementar no uso deste programa é a definição da ferramenta de corte. É possível observar na figura 3.16, os parâmetros remetentes à ferramenta utilizada na CNC. A ferramenta nomeada de Cabde, e a eedade efca (ba), 150 de ce a, 100 de comprimento de corte e 10 mm de diâmetro de corte. Para máquinas existentes no mercado, este processo é muito mais simples pois o programa contempla uma biblioteca de máquinas e ferramentas predefinidas. Todavia, este passo é executado apenas uma vez enquanto é utilizado o mesmo software . Após a definição da CNC e da ferramenta de corte, passa-se então para as especificações da maquinagem em si. 6 Feed rate é a velocidade de alimentação dos eixos da máquina, normalmente definida a partir do eixo da spindle dado que, este sofre mais momentos do que os restantes. Figura 3.15 - Caracterização da CNC no programa DeskProto . Figura 3.16 - Caracterização da ferramenta de corte no programa DeskProto.
36 É ed fce .e aa e ca aacaee a a. A eda, e escolher um nome para o projeto de CAM, a máquina a utilizar e, neste caso muito importante, se é para a e de a A (XZA a), c eefcad a fa 3.17. Ao colocar a utilização do eixo A, os parâmetros remetentes ao eixo Y são automaticamente desativados. Outro aspeto importante é o dimensionamento do bloco a maquinar para que a ferramenta saiba onde começar e acabar o percurso, processo representado na figura 3.18. A altura do bloco definida é sempre a altura da peça a maquinar (402 mm altura da perna), caso, na prática o bloco tenha uma altura superior, é apenas necessário marcar o zero peça mais acima (com a devida diferença de alturas) do zero do bloco real. O movimento horizontal máximo, em Z, é metade do diâmetro máximo do bloco (sendo que a ferramenta nunca pode ultrapassar o zero que se encontra como centro da peça), nomeadamente, 80 mm. Por fim, o bloco é definido como cilíndrico com o eixo A a gerar trajetórias de 360°. Figura 3.18 - Definição do bloco de maquinagem inicial no software DeskProto. Figura 3.17 Parâmetros gerais da peça no software DeskProto .
43 Depois do técnico promover uma mistura homogénea destes reagentes, estes são vertidos para o molde, ocorrendo a reação. Após a solidificação, são removidos os moldes laterais, cortado o excesso de material e aparafusados quatro parafusos na base com comprimento suficiente para entrarem no bloco (de modo a promover uma maior fixação). Foram utilizados quatro parafusos para madeira (devido ao roscado ser maior o que, promove a amarração de mais material evitando que a vibração faça com que o parafuso seja removido gradualmente do bloco) com quatro centímetros de comprimento total. Por fim, o bloco de 20 x 22,5 cm2, está pronto (representado na figura 3.35). tendo a base uma altura de dez milímetros e os parafusos quarenta milímetros, seria de esperar que as maquinagens apenas ocorressem acima desse valor, ou seja, três centímetros acima da base do bloco, isto é, dependendo do quando a ferramenta desbastará ao diâmetro total da peça. É de notar que, neste caso específico, não foi utilizado um bloco realizado na empresa como em todas as outras maquinagens que já haviam sido realizadas, dado que a dimensão deste molde está preparada aa aa cabea de beb e a aa de 400 de a ea. A, f ad um bloco encomendado, exatamente com as medidas referidas anteriormente no processo de CAM. De igual forma, o bloco foi aparafusado ao prato rotativo com os mesmos parafusos de madeira M6, perfurando a base num diâmetro de três centímetros (ocupando 1,5 cm de distância de maquinagem do eixo Z). Figura 3.35 - Bloco fabricado na empresa de 20 x 22,5 cm.
44 Finalmente, é necessária a preparação da máquina. A primeira coisa a fazer é ligar a ficha da máquina à tomada, de seguida, é necessária a ativação da passagem de corrente para o sistema motor e controlador Arduino e, por fim, desativar o travão dos motores. Os botões responsáveis por estas funções estão representados na figura 3.36. Após ligar a máquina é necessária a ligação do controlador à mesma através de um cabo USB 2.0 USB. Neste caso, a ligação é para com um computador portátil, visto que o único controlador capaz, Grbl Controller, só pode ser utilizado através deste tipo de dispositivo. A ligação fica então como representada na figura 3.36. Na figura 3.37 é possível observar o computador ligado à máquina. Figura 3.36. Botões responsáveis por ativação da máquina. Botão para desativar o travão dos Motores Botão para ativar a Máquina Conexão do controlador Arduino ao controFigura 3.37Ligação do controlador (Grbl Controller) à maquina para ativação do canal de comunicação.
45 O Grbl Controller, software utilizado para complementar o pós-processador Grbl (incluso na máquina), tem como funcionalidade fornecer um canal de comunicação com a mesma. Para isso, é necessário compreender os conceitos gerais de código G (sendo que na empresa existe apenas um funcionário com tal conhecimento). Na figura 3.38 pode-se observar o menu geral deste software . Antes de qualquer operação, a porta onde está inserida o controlador Arduino tem de ser ativada e o Grbl abrirá automaticamente o canal da máquina. A próxima etapa tem de ser executada ainda sem o bloco inserido na máquina, isto é, é necessário definir o zero do eixo Z manualmente antes de colocar o bloco, isto porque, este é no centro do eixo A, como mencionado na figura 3.13. Paa , cad c G91 Z-50 f500 7 (coordenadas relativas) têm de ser enviados através da linha de comandos, observando quando a ponta da ferramenta encontra o ce d e A. Ee ce ea eaad de fa aa, a aee, a . Para zerar o eixo X, é necessário agora colocar o bloco na máquina, já em posição de maquinagem. Tendo em conta a distância dos parafusos colocados na base do bloco, é definida uma altura qualquer como zero do X, desde que fique altura suficiente para a maquinagem de toda a altura da peça. Tanto o zero de Z como o zero de X, são definido G92 Z0 e G92 X0, eeaee. A ea aametrização é possível enviar comandos em coordenadas absolutas (G90). Para finalizar o processo, é ligada a spindle , como representado na figura 3.39. A velocidade da Spindle não é definida diretamente, sendo que a gama de frequência que tem de ser imposta é de 85 Hz a 90 Hz, gerando a velocidade correta para a maquinagem deste tipo de material. 7 Comando em linguagem G para movimentar a ferramenta em coordenadas relativas cinquenta milímetros na direção do eixo Z negativamente. Figura 3.38 - Grbl Controller.
46 Depois de ligar a Spindle basta carregar o ficheiro com o cód G aa Gb e cca e Be. Aquando a maquinagem é preciso ter em atenção a necessidade de aspirar a máquina, como já foi mencionado, apesar dos componentes serem resistentes a pós, o material desbastado é tão fino que se penetra entre as correias e as polias, fazendo com que o movimento encrave. Apesar do tempo estimado pelo programa Deskproto ter sido cinco horas e seis minutos, a máquina demorou cerca de seis horas a maquinar a peça, resultando no molde positivo de uma perna representado na figura 3.40. Figura 3.39 - Controlador da Spindle. Figura 3.40 - Molde positivo da perna do utente maquinado na CNC da Padrão Ortopédico.
47 3.4. Limitações da máquina CNC da empresa Padrão Ortopédico Apesar da máquina de comando numérico encontrada na empresa ser eficiente na realização do seu propósito inicial, ou seja, na concessão de moldes positivos para capacetes de pacientes com plagiocefalia, este mecanismo, construído com um orçamento de apenas cinco mil euros, apresentava ainda algumas falhas no que toca a ergonomia e automatização do seu sistema. A principal mudança requerida pela empresa seria a implementação de um terceiro eixo, de movimento linear (eixo do y), para tornar possível o fabrico de palminhas ortopédicas diretamente da máquina e a otimização do sistema de controlo, adquirindo a máquina uma interface gráfica amigável ao operador da mesma. Também o facto de ser necessário, de todas as vezes que se pretendesse maquinar qualquer peça, disponibilizar um computador para manter ligado à máquina sendo assim possível a comunicação homem-máquina da mesma, era um inconveniente ao operador. Outros problemas estariam ainda ligados à performance da CNC, nomeadamente, a necessidade de realizar sempre homing manual da mesma, bem como o zero peça. Com o orçamento inicial reduzido, não foi também implementado, em primeira instância, um sistema de aspiração no mecanismo, resultando em acumulação de resíduos por toda a CNC. 3.4.1. Implementação do eixo do Y Como já foi referido, a máquina em estudo possui dois eixos principais, um em torno de X (que promove o movimento vertical) e outro em torno de Z (que promove o movimento horizontal segundo o eixo da ferramenta de corte), como representado na figura 3.41. A hipótese de implementar um eixo Y (eixo representado a amarelo) na CNC foi estudada e conferenciada com o orientador da empresa. Chegando à breve conclusão que, para além desta implementação acarretar custos elevados adicionais ao orçamento da máquina, poderia ser uma tarefa arriscada, dado que, idealmente, este movimento teria de ser realizado por todo o sistema mecânico (figura 3.41) já existente.
48 Acrescentando ao facto da CNC estar projetada para corte de um tipo de material diferente do material de maquinagem de palmilhas e, o facto de não ser eficiente utilizar uma máquina com uma grande área de trabalho para a concessão de peças pequenas (visto que não poderiam ser feitas mais do que uma peça de cada vez pois, as palmilhas são diferentes consoante o utente). Chegou-se à única hipótese viável e rentável para a empresa: adquirir uma CNC cartesiana de baixo custo para produzir apenas as palmilhas. 3.4.2. Implementação de interface homem-máquina Este é o tópico abordado para esta dissertação, não só por ser um dos principais objetivos do estudo da CNC de comando numérico assistido por computador, mas também, pelo facto de que não seria uma CNC se não possuísse uma interface homem-máquina, capaz de controlar todas as varáveis intrínsecas ao sistema mecânico e eletrónico da máquina. Tal como está referido anteriormente, a interface é um dos três principais componentes de uma máquina de comando numérico assistido por computador, servindo como controlador da máquina. Figura 3.41 - Esquematização do eixo Y, em falta na CNC.
49 No subcapítulo anterior e na figura 3.42, está exemplificado o que é necessário para comunicar com o a CNC, a ligação do computador à máquina tem vários riscos e falhas, dos quais: a necessidade de dispensar o aparelho por todo o tempo de maquinagem, possibilidade de dano devido à proximidade com a máquina, acumulação do pó do desbaste no aparelho, descarga de energia para o aparelho caso aconteça, não é comodo para o operador se instalar e operar a máquina. O próprio software utilizado, Grbl Controller , é simples para quem não carece de conhecimento neste tipo de máquinas e linguagem, mas, para os técnicos da empresa, sem qualquer formação em máquinas industriais e CAM, torna-se complexo e até perigoso ter de enviar os comandos manuais através de código G, sendo que, aumentar uma unidade a uma dimensão pode resultar na perfuração do bloco ou até mesmo das paredes da CNC. 3.4.3. Automatização de operações de homing e zero peça Estas especificações estão completamente dependentes do hardware e software da máquina já existente. É um problema relativamente simples que implica acrescentar sensores de posição e batentes na estrutura da CNC. A programação destes processos está completamente dependente do programa utilizado para controlo dos eixos. Figura 3.42 - Ligação do computador à Máquina CNC.
50 Apesar de ser um entrave relativamente simples de resolver, é crucial ao bom funcionamento da máquina, evitando processos repetitivos desnecessários e aumentando a segurança do operador, bem como da própria máquina. Como já foi referido, o zero do eixo Z e o zero do eixo X é posicionado manualmente, resultando em erros na peça e abrindo portas a um problema ainda maior, caso seja necessária a paragem e encerramento da máquina, estes terão de ser definidos novamente. Posto isto, se não existir um ponto de referência, a peça vai sofrer alterações na sua dimensão. 3.4.4. Implementação de sistema de aspiração A CNC Nada f ccebda c eae eee a ed d, eadaee, a libertado com o corte da espuma para o fabrico de moldes (situação representada na figura 3.43). Porém, o excesso de resíduo no momento da maquinagem promove erros de corte bem como a danificação cíclica persistente dos componentes da máquina, para não falar da rutura total do movimento de eixos assim que o pó penetra entre a correia e a polia. Apesar de até os motores apresentarem durabilidade para este tipo de desgaste, a área de trabalho da máquina onde se encontra a peça e a área onde se encontram os mecanismos de transmissão de movimento estão interligadas, sem meio de separação. Seria, assim, necessária a projeção de um sistema de aspiração automático para a máquina. Este tema foi tratado, paralelamente, na dissertação de mestrado do aluno Ivo Lopes Silva. Figura 3.43 - Deposição do pó do desbaste na CNC e nos seus componentes.
51 Outro problema associado ao pó é a falta de separação das partes da máquina. Estas encontravam-se separadas por folhas de papel fixadas umas às outras, porém, apesar de provavelmente ter resultado aquando as primeiras maquinagens, o papel foi ganhando forma até se encontrar completamente aberto, como pode ser observado na figura 3.44. 3.4.5. Instabilidade da Máquina Apesar do material não exercer vibrações elevadas aquando a maquinagem, existem sempre vibrações, seja do movimento dos eixos ou da Spindle . A máquina está suportada por quatro vigas de alumínio, representadas na figura 3.45. Figura 3.45 - Vigas de alumínio que suportam a CNC. Figura 3.44 - Divisão da área de trabalho e da área mecânica da CNC.
52 Após algumas maquinagens, constatou-se que, quando são executadas penetrações de 10 mm, por exemplo, como a força que a máquina promove é superior, existe uma vibração considerável da máquina que, em peças com uma altura superior, pode gerar dimensões não desejáveis. 3.4.6. Modificação dos Moldes e Prato Rotativo Outra limitação encontrada, relativa á máquina, porém não associada ao sistema mecânico da mesma, foram as deformações dos moldes onde são produzidos os blocos de poliuretano de baixa densidade. Este material exerce pressão sobre as paredes internas do molde e do prato de fabrico que, fabricados através da impressão 3D de PLA, forçam o enchimento das placas de plástico a moverem-se, alterando as dimensões das mesmas, como representado na figura 3.46. Figura 3.46 - Deformações causadas nos moldes de PLA pela pressão do poliuretano de baixa densidade em reação.
59 Tabela 4.1 - Especificações gerais dos dispositivos: Controlador Arduino 2560 R3 e Raspberry Pi 4 model B (cont.) Dispositivo Controlador Arduino Mega 2560 R3 Raspberry Pi 4 Hardware para leitura de dispositivos externos Aquisição de equipamentos externos para leitura de cartões SD, USB 2.0, USB 3.0, C, Portas USB: 2 USB 3.0; 2 USB 2.0 Preço do dispositivo 37, 90 € 21,50 € (3.5 ‘’) 50, 40 € 41,95 € (2 Gb) 82,00 € (7 ’’) 123,95 € Preço do ecrã Preço total Olhando a um lado empreendedor, é notável a diferença de preços existente para cada uma das aplica- e (e cedee a de eeda eeca B R), , e f ada a a- dade de equipamentos externos que teriam de ser adicionados se fosse utilizado o Controlador Arduino Mega, como leitor de cartões SD (sensivelmente cinco euros), um display de maiores dimensões (com preço aproximadamente de cento e vinte cinco euros para um ecrã de dez polegadas) que, por sua vez, requereria um novo shield para implementar no controlador Arduino, sendo possível a ligação de todos estes equipamentos externos, o custo deste sistema seria muito menos vantajoso, tanto a nível económico como de complexidade de projeto. O facto do Raspberry, ao contrário do controlador Arduino, conter 4 entradas para ligação de dados, facilita a conexão do dispositivo a qualquer tipo de equipamento externo, seja o controlador Arduino incluso na máquina ou um dispositivo para passagem de código G. No Mega, o LCD tem de ser implementado através de um shield (à parte para ecrã maiores) que ocupa os pinos de receção do controlador Arduino, sendo necessário utilizar outros pinos de receção para ligar o dispositivo ao controlador Arduino da máquina. Por último, em termos de linguagem, o Raspberry permite, através do seu software ( open-source ), executar programas escritos em várias línguas de código e simultaneamente controlar o firmware da máquina. Já o controlador Arduino apenas consegue executar programas escritos em C++ sendo que, cada dispositivo só pode incluir um só código. Em suma, será utilizado para o projeto o sistema físico que engloba o Raspberry Pi 4 modelo B (2 Gb) e o Raspberry Pi Touch Display.
60 4.2.1. Programação do Raspberry Pi 4 modelo B e do ecrã tátil A vantagem deste equipamento é que o seu sistema operativo é gratuito e fornecido diretamente pela eea a a da ea .abe./dad/. O ea ea Raspbian foi desenvolvido exclusivamente para estes computadores e deriva de uma versão do Linux. Para uma instalação mais simples, o fornecedor oferece uma aplicação que contém todos os ficheiros necessários para a passagem do programa para o dispositivo. Neste ponto, é necessário fazer download do NOOBS, representado na figura 4.7. A dad d fce . d NOOBS, ece ea d fce ee cd. Ee ficheiros serão passados para um cartão de memória que comportará o sistema operativo. De notar que, este cartão de memória tem de estar formatado 13 . Após transferir os ficheiros para o cartão SD, inserese o cartão no Raspberry Pi4, já devidamente ligado ao ecrã. Na figura 4.8, está a representação do que deverá aparecer. 13 Fe Aca Tabe, ea, abea de aca de a de fce de imagem ou vídeo ficam num lugar fico e acad, a abea aa e, d ca acede deaee a e. Figura 4.8 - Instalação do Sistema operativo presente no cartão SD no Pi4B (Raspberry Pi (Trading) Ltd., 2020). Figura 4.7 - Excerto do site onde é possível descarregar o NOOBS para proceder à instalação do RASPBIAN (Raspberry Pi (Trading) Ltd., 2020).
61 Ao clicar no botão Install , eae a cede aa aacaee a aaece aviso que dita se a instalação foi bem-sucedida. O ambiente do sistema operativo é, de origem, idêntico ao representado na figura 4.9. Como é possível observar trata-se, de facto, de uma pequena versão de um computador habitual de trabalho. Com uma estrutura idêntica aos ambientes Linux , é possível armazenar conteúdos em pastas, editar as preferências de utilizador e, como o software é programado em Python, é possível executar programas em python diretamente da linha de comandos (isto se a versão do python estiver atualizada). 4.3. Design concetual e arquitetura da interface O Gb já provém de uma vasta biblioteca de funções e parâmetros que torna o processo de comunicação muito mais auxiliado (Breiler, 2020a). Para a projeção da interface, o seu design teve de ir de encontro às especificações do firmware utilizado, ou seja, dependendo do que o programa permite ou não permite fazer. A principal função da interface é permitir ao utilizador o envio do ficheiro com o código G para o controlador na máquina, todas as outras funções seriam adjacentes, ou seja, funções de preparação da máquina para a maquinagem e funções de informação enquanto a maquinagem da peça. O design do display f ad a d de fa da eface aa cad d Gb Ce, representada na figura 4.10. Este controlador apresenta apenas um menu que permite a manipulação da máquina segundo as opções: x Identificação da porta onde está ligado o controlador Arduino da máquina; x Opção para fechar a porta; Figura 4.9 - Ambiente de Trabalho do sistema operativo Raspbian (Raspberry Pi (Trading) Ltd., 2020).
62 x Reset do Gb; x Escolha do ficheiro e representação visual do diretório desse ficheiro; x Botão para começar a enviar o conteúdo do ficheiro para o Gb; x Botão de paragem de envio; x Barra de Progresso do envio do ficheiro para o Gb; x Tempo de trabalho da máquina (crescente); x Painel para comunicação do Gb; x Janela para introdução de comandos a enviar ao Gb (ead aa da eca Ee de um teclado); x Monitores de coordenadas (X, Y, Z) do movimento dos eixos; x Painel de comando manual para três eixos; x Botão para escolher o movimento dos eixos manualmente; x Botão de ativação da Spindle ; x Botão para aceder às definições do Gb. Esta interface, inclui ainda um botão de ferramentas no canto superior direito que fornece ao operador uma série de opções do envio de informação e dos eixos da máquina. Como a nova interface foi concebida para facilitar o operador da sua utilização, ou seja, torná-la num ambiente amigável de comunicação entre o homem e a máquina, pretendia-se uma disposição de elementos mais acessível a utilizadores sem formação neste campo, por outras palavras, mais intuitiva na sua utilização. Figura 4.10 Gb Ce eface.
63 Apesar desta interface apenas usufruir de um menu, como é utilizada em computadores de bancada ou portáteis, o operador teria sempre acesso a um teclado e rato, ou seja, seria possível, desta forma, escrever diretamente todos os comandos necessários de alteração da máquina sem que estes se apresentassem no menu. Por um lado, a estrutura torna o programa muito mais comprimido. Todavia, na nova interface pretendia-se que certas operações importantes estivessem ao alcance de um só botão, aed ecedade d ad eeee cede ea d cd ece aa executar essa mesma função e enviá-los para o controlador, facilitando a interação com a máquina. Posto isto, seria apreciável a inserção de todas estas funções na interface implementada. Ainda, algumas funções apenas possíveis a partir da digitalização de código, se exequível, deveriam ser substituídas por botões ou outro tipo de objeto que permitisse ao utilizador uma interação facilitada, sem necessidade de pesquisar, decorar ou escrever estes mesmos códigos. É importante perceber que, realizar funções básicas como desbloquear o sistema, definir o modo de movimento ou selecionar os milímetros a mover o eixo a partir de um botão visível para o operador, em vez de utilizar um código escrito diretamente na máquina, pode não ser o processo mais simples e prático para fazer o pretendido. Todavia, para técnicos sem experiência nos comandos e no código universal, apesar de ter de selecionar mais botões, é muito mais fácil e intuitivo do que escrever linhas de código em si, evitando erros de escala (como, por exemplo, pôr uma casa decimal a mais numa medida) ou erros de movimento (tal como escrever o eixo errado a utilizar). Assim, ao clicar no botão, o operador vai ser obrigado a pensar no que quer fazer e efetivamente ver o que quer fazer. Dividindo os tipos de funções, como representado na figura 4.11, haveriam então quatro grupos principais, sendo este E de cd e Maae, Maa Maa d e, Aea da defe e ae da Ma e Cca He-Ma. Ea ea faca a- pamento de objetos aquando a organização visual da interface. Figura 4.11 - Funções gerais a implementar na interface.
64 4.3.1. Funções relacionadas ao envio do código e maquinagem: ativação de comunicação, envio de ficheiros e visualização do estado de operação e da máquina Como já foi referido, o principal objetivo da interface é o envio do código G para a máquina. Para isso, como representado no esquema da figura 4.12, são necessárias duas tarefas principais: ligar a interface à máquina (ao controlador) e escolher o ficheiro a enviar. Seriam então, à partida, necessários três botões para cada uma destas funções. Oad aa a f La Ieface a, e bea e ea deede de da bfe. Na e Gb Ce, ee b aa La a eedda e ad. Porém, na interface projetada, este botão foi descartado, sendo que, o dispositivo está diretamente ligado à máquina, sempre pelo mesmo canal, possibilitando a programação de apenas uma porta que abrirá sempre que se der início ao programa. P ad, a ab Gb Ce, aa d aacaee a de de Ide à CNC. No caso da nova interface, este botão tem de ser ativado, por modo de segurança (assim, mesmo que, por engano, o utilizador promova o movimento de algum eixo antes do pretendido, este não se moverá, mantendo a máquina e o utilizador em segurança). Ter-se-ia, assim, aea b aa aa ead Ide da a ed e, a eface e eletricamente ligada ao sistema da máquina (em série) e a porta também de encontra conectada. Paa a f Ece fce, ea e ece botão que permitisse ao utilizador procurar o ficheiro pretendido e selecioná-lo. Por via de verificação da escolha, é plausível a perceção visual, pela parte do operador, do nome (ou diretório) do ficheiro escolhido. Assim, para a execução desta função, seriam então implementados um botão para escolher o ficheiro e uma janela onde apareceria o nome do ficheiro escolhido. Passando agora a funções necessárias aquando a concessão da peça, ou seja, após o envio do programa. Neste campo, existem dois tipos de operação, operações informativas e operações físicas. De notar que Figura 4.12 - Esquematização das funções necessárias para enviar o ficheiro de código para o controlador.
65 existem muitas funções que seriam necessárias à boa prática da maquinagem, mas, que não são permitidas pelo controlador executar enquanto a máquina se encontra a maquinar, por forma de segurança do utilizador e pelo próprio firmware não as conseguir identificar. No esquema da figura 4.13. Estão as funções necessárias (e permitidas pelo controlador) para o utilizador monitorizar a máquina enquanto esta se encontra no processo de maquinagem. Ea fe Gb Ce ea eecada aea aa de cad ead ea baa de e de cad, ecead ce de aa e ca e e eca dec- nados em botões. A nível de Processos informativos é vantajoso, ao utilizador, saber em que estado se encontra a máquina. P ee, a ee acece e, ead debea caa (Ide) ae de ea código, o que faz com que o Gb envie um erro. Em termos de informação de maquinagem, é importante saber em que estado está o buffer do controlador Arduino que está a processar o código enviado, assim, o utilizador pode saber em que parte do código se encontra. Por último, mas não menos importante, saber onde os eixos de movimento se encontram nos planos de corte. Na nova interface, é necessária a introdução de um botão que peça esta informação ao Gb de modo a que este a retorne visualmente. Os processos físicos permitidos pelo Gb, enquanto a máquina se encontra a maquinar, remetem para a paragem do movimento e a respetiva retoma dele. Assim, a implementação de um botão para parar o processo e outro para continuar seria indispensável. É possível então definir, nesta primeira fase, quatro níveis de funções hierárquicas para implementar na interface, como representado na figura 4.14. Figura 4.13 - Processos Informativos e Físicos aquando a maquinagem de uma peça.
66 Num primeiro nível encontra-e b de Ide, e ea eead c Debea Caa, para uma maior facilidade no que toca ao operador para compreender a função deste botão. No segundo nível encontram-se os botões para fornecer informação sobre o estado da operação e o estado da máquina que, não dependeriam da maquina se encontrar já em processo de maquinagem podendo, assim, o utilizador obter estas informações antes de começar o processo. O terceiro nível remete para o envio do ficheiro: um botão para escolher, outro para enviar e uma caixa de texto para enunciar o nome ou diretório do ficheiro escolhido. No quarto e último nível, estão as operações de parar e recomeçar a maquinagem, sendo estes botões só necessários quando a maquinagem está em curso. 4.3.2. Funções relacionadas à manipulação manual dos eixos de movimento: eixo a movimentar, sentido e distância de movimento A c Gb Ce, ae da a eface aa CNC de a opção manual de movimento dos eixos. Esta operação é importante para corrigir a posição dos eixos antes do processo de maquinagem, para testar o movimento de cada eixo ou para realizar homing manual (Breiler, 2020a). Na máquina CNC em questão, são utilizados três eixos de movimento, X, Z e A. Para cada eixo, haveria a necessidade de introduzir um botão para ativar o seu movimento. Porém, assumindo que este movimento é incremental, ou seja, da posição onde se encontra o eixo, é adicionado um valor, sendo que, pode ser positivo ou negativo, consoante o sentido para que se pretende movimentar, há necessidade de saber qual o valor de distância que se pretende percorrer (e o seu respetivo sentido). Para um aumento da intuição quando em interação com o operador, definiu-se que, Figura 4.14 - ilustração de botões e entradas de texto para cada função requerida.
67 a c Gb Ce, e a eea d be aa ea cada eixo. Um botão para promover o movimento no sentido positivo e outro no sentido negativo, como representado na figura 4.15. Seria ainda necessário algum tipo de botão para escolher a distância a percorrer (seja esta positiva ou negativa). É vantajoso que cada botão, intuitivamente, leve o operador a assumir o sentido que o movimento irá tomar. Por exemplo, os botões para o eixo Z devem ser colocados horizontalmente, visto que o eixo do Z promove o movimento horizontal da ferramenta. Os botões do eixo X deverão estar dispostos na vertical (tal como o movimento que efetuam). Para a organização do sentido, é necessário definir a face da máquina que estará voltava para o operador e o parâmetro do controlador que define o sentido. Se a face voltada para o operador tiver a ferramenta do lado direito da peça, então, o movimento positivo do Z e do A será para a esquerda e o de X será para cima, assentando nos sentidos impostos na figura 4.15. O objeto que dará um número à distância a percorrer terá de ser dado em mm ou graus, sendo que, o eixo A é de rotação, logo, a transmissão de movimento é efetuada em graus (ao contrário de Z e X, em milímetros). 4.3.3. Funções relacionadas com alteração de definições e dos parâmetros da máquina Como referido anteriormente, o Gb padece de um leque de parâmetros que podem ser alterados (que influenciam a leitura e processamento do controlador quando enviadas certas ordens) e códigos que permitem visualizar informação sobre o estado da máquina e das operações e mandar diretamente operações específicas. Todos os parâmetros alteráveis são importantes para o utilizador, dependendo do que este pretende maquinar e como. Dentro das definições do Gb, existem três funções para visualizar três diferentes tipos de parâmetros, nomeadamente, a lista de definições do sistema, os blocos iniciais da máquina e os códigos G54 a G59, estes comandos estão organizados conforme o esquema da figura 4.16. Figura 4.15 - Objetos necessários a incluir na interface para o controlo manual dos eixos.
68 É relevante para o utilizador saber os valores em que se encontram as definições todas do sistema (parâmetros do Gb), de modo a que, se não forem os que pretender, alterar para os valores favoráveis à máquina e à maquinagem. Os blocos iniciais da máquina mostram os blocos que se encontram no buffer do controlador Arduino para processar, assim, o utilizador sabe, ao inserir algum código para maquinar se a máquina não processará nenhum código primeiro. Por fim, os códigos G54 a G59 são parâmetros que definem a localização do espaço de trabalho através de coordenadas, podendo ser alteradas consoante a máquina que se utiliza pelo que, fornecem ao operador a noção de espaço que este tem para maquinar. Em suma, na interface deverão ser implementados três botões, uma para cada lista de parâmetros acima descrita (Breiler, 2020a). No que toca a alterar parâmetros, o firmware contém 136 parâmetros alteráveis, alguns com valores numéricos tabelados (que na linguagem de software traduzem o valor numa função específica ver anexo A) e outros onde, o utilizador, pode solicitar valores (como, por exemplo, aceleração dos movimentos ou binário máximo). Como se prevê uma interface tátil, sem acesso a teclado ou rato, a alteração destes valores teria de ser toda eecada ec, e, Gb Ce aea adda com o envio de comandos específicos para o controlador (Breiler, 2020a). Sabendo que existem 136 variáveis e que todas as variáveis são numéricas, é necessário então proceder à execução de um objeto que dê para escolher uma das variáveis, um ou mais botões para selecionar o valor que se pretende dar à variável e um botão para enviar a alteração para o controlador processar. Figura 4.16 - Tipos de comandos associados aos parâmetros alteráveis do Grbl firmware .
75 Nee ca, ad cc b E e Aae e aaece a aea a d ae de comunicação onde estão descritos todos os erros e alarmes que o firmware pode enviar e o respetivo significado. No anexo E encontram-se, detalhadamente descritos, todos os botões e objetos da interface. 4.5. Programação da interface para a CNC da empresa Padrão Ortopédico A interface desenvolvida para a máquina CNC foi inteiramente escrita em python, uma linguagem de programação de objetos, nomeadamente, Python 3 (Rodas de Paz, n.d.). Para uma melhor abordagem e implementação das bibliotecas necessárias, foi também utilizado um Python IDE, isto é, um programa de edição de código predefinido, Pca, e um ambiente virtual gerado pelo compilador Anaconda 3. Como base do programa foi utilizada a biblioteca Tkinter , uma biblioteca que fornece objetos de contexto visual. O código correspondente a todo o programa encontra-se descriminado no apêndice VI. Foi adotada uma estrutura MVC para a organização do código: Model-View-Control. Esta estrutura, simplificada na figura 4.26, é geralmente usada em programas para facilitar ao programador a relação entre diferentes tipos de variáveis (Pop & Altar, 2014). O Mde (modelo) engloba todas as variáveis numéricas ou literárias do programa. Esta parte do programa tem como função registar e guardar os itens pretendidos pelo utilizador (Pop & Altar, 2014). O Ve (Visualizador) contempla todos os objetos visíveis do programa, ou seja, todo o código que originará algo que o utilizador vê através de um ecrã (Pop & Altar, 2014). Por fim, o C (controlador) direciona as variáveis entre o Mde e o Ve, de modo a que estas percorram um caminho sem se perderem (Pop & Altar, 2014). Figura 4.26 - Fluxo de informação no modelo MVC.
76 Resumidamente, na GUI criada, existem então quatro classes, três MVC e um main que executa o programa. Estas classes correspondem cada uma a um script de Python3. As variáveis e funções utilizadas estão descritas na imagem 4.27, esquema UML simulado no IDE Pycharm Professional 2020. 4.5.1. Leitura e processamento de variáveis: model A informação ou os dados, tal como evidenciado no esquema da figura 4.26, exercem um movimento cíclico no programa. O Mde processa os dados que entram no sistema atribuindo valores às variáveis que, por sua vez, são enviadas para o C que as encaminha para o Ve. No Ve, as variáveis são transformadas em objetos visíveis pelo operador para que, deste modo, as possa alterar ou validar. Se o operador inserir novos dados no programa, estes serão reencaminhados de novo para a o Ve e percorrerão o percurso anterior mais uma vez. (Pop & Altar, 2014) O Mde está dividido em variáveis e funções de processamento de variáveis. Na figura 4.28, encontram-se as dependências de cada uma delas. É nesta classe que está programado o canal em série que promove a ligação da interface com o Gb firmware da máquina e a possibilidade de escolha do ficheiro de código G que se pretende maquinar. Resumidamente, são criadas variáveis com valores nulos na definição de início da classe e utilizadas as funções para dar valores a essas variáveis para, posteriormente, serem enviadas para o c e serem processadas. Figura 4.27 - Variáveis e funções da estrutura MVC dos scripts de .
77 C d d Ca 17 , ece eca a ae ca e, ca aaeamente com o correr do programa, segundo os valores que lhes foram atribuídos. Neste script , foram utilizadas três bibliotecas gerais do python3 , representadas no excerto de código da figura 4:29. “from Tkinter import filedialog import serial import time Figura 4.29 - Bibliotecas utilizadas na Classe Mde. A feda, uma biblioeca ecda da Tkinter, promove certas operações como abrir um diretório do sistema operativo (consoante as especificações), selecionar um ficheiro, ler o ficheiro, alterar o ficheiro, guardar as alterações submetidas a um ficheiro, entre outras (Rodas de Paz, n.d.). A bbeca ea e deeda aa aa d de fe que remetem para a comunicação em série de dois dispositivos, nomeadamente, enviar e receber dados (Liechti, 2018). P f, a bbeca e ca a aa de fe ea ea aa ca eae ou variáveis. Esta biblioteca é normalmente utilizada no âmbito de funções de outras bibliotecas que, necessitam de coordenação temporal (Rodas de Paz, n.d.). Como representado na figura 4.30, defda a ea ae ef.e e, e c f ligar o canal serial entre o dispositivo onde o programa se encontra e um outro dispositivo. A expressão ea.Sea eee aa a caada da f Sea (de a d caa) a bbeca ada ea. Ua da ae utilizada dea f, (a), defda ea a COM8, caa onde se encontra ligado o cabo de dados referente ao controlador Arduino que contém o Gb. Este nome varia consoante a porta do hardware onde se encontra conectado e o dispositivo com que se 17 Construtor de objetos, ou seja, agrupa objetos (e a informação deles) que, podem ser utilizados por toda a classe. Figura 4.28 - Fluxo de informação das variáveis na classe Mde.
78 pretende estabelecer a ligação. No sistema operativo Windows, é possível visualizar o nome das portas Ge de D, eeead a fa 4.31 (Liechti, 2018). Para que a conexão seja possível, os dispositivos têm de se encontrar na mesma banda, neste caso, como o Gb a a bada 115200, a eda ae da a e e, badae dada e e 115200. Ada ed a eecfcae d Gb, é sabido que número de bits de dados c b de aae, , ab a a e e ead stopbits=1, bytesize=8. A ae e=Ne fa c e a a e rie seja imediata e, por último, - ff=Te e ee controlo de movimento de dados na comunicação (Liechti, 2018). A ae ca ef.fe_ae = '', ef.cde = '', ef.daa_ = '' e ef. = '' utilizadas nas funções dentro da class Mde tendo, assim, de ser evidenciadas logo de início, para não ocorrerem erros de processamento de informação. Deste modo, é possível interligar estas variáveis exclusivamente à class Mde, tornando-se variáveis locais. A utilização do carace aa (), dea a nulo, ou seja, consoante a variável seja numérica ou string. A f def e_a(ef), que retora a ae ef.fe_ae,é utilizada para guardar o diretório do ficheiro escolhido e, mais tarde, abrir, processar e enviar o ficheiro para o Gb. A função que define a ae, eada feda.aefeae a f da bbeca feda, ae- feae, responsável por fazer pop-up de uma janela do sistema operativo para o utilizador procurar o ficheiro que pretende (Rodas de Paz, n.d.). class “Model: def __init__(self): self.ser = serial.Serial('COM8', 115200, timeout=None, xonxoff=True, stopbits=1, bytesize=8) Figura 4.30 - Variável inicial "self.ser" que abre o canal em série com o controlador da máquina. Figura 4.31 - Gestor de dispositivos do Windows.
79 A ad="/", eeeada a fa 4.32, é responsável por especificar a localização do disco onde se pretende procurar fce. Nee ca, /, fa c e a aea abea ea dc e ea, podendo o operador pesquisar em qualquer compartimento do disco. Pode-se alterar este diretório para qualquer pasta específica na memória do computador (Rodas de Paz, n.d.). C fce eed, fce de cd G, fce de e (.), ece encontrar outro tipo de ficheiro na pesquisa. A, c a ae filetypes=(("Text File", "*.txt"), de fce de e defd c aea Te.Fe (fce de e). A ae title="Choose a file." Ab e aea de ea, eadaee, Ce a fe (Rodas de Paz, n.d.). Ainda na classe Mde, apesar do canal de comunicação em série já se encontrar ativo, o programa espera que se especifíque a diferença entre enviar e receber dados do computador para o Gb. A f def read_from_serial(self) responsável por receber todos os dados que o Gb envia pelo canal, retornando- aa da ae ef.daa_. Ea f eba cc We e, e- a aa cdea edade (Te), e caee a e cead. Neste caso, a cd d a a eacdade dee deede a ee if self.ser.inWaiting() > 0, ea, e a ae e ecece caa, ef.e, defca b de dados no buffer do emissor superiores a ze, ef.e.Wa > 0. A vare ef.daa_ a a d b eee bffe. Ee b d aa da f da bbeca ea, self.ser.read. c b aeea caracteres ac cdfcad, ee e de e decdfcad, decode('ascii'). Para uma questão de garantir que o código está a funcionar, é pedido ainda que seja expressa a informação referida no prompt , através da f print(self.data_str) (Rodas de Paz, n.d.). A f time.sleep(0.01), crdena o intervalo de tempo que cada ciclo espera para recomeçar após terminar, neste caso, 0,01 segundos. Figura 4.32 - Atribuição de um valor à variavel "self.file_name".
80 P ad, a f def write_to_serial(self) ee e e de fa d ad para o Gb. Os dados são colocados na vare ef. e, a a ed a f self.ser.write(self.code): a f e da bbeca ea ea, e caa, ef.e, e utilizador pretende, nomeadamente, o ced da ae ef.cde (Liechti, 2018). A fe def unlock(ef), def parser_state(self) e def param(self) ea ae eecfc para funções estipuladas pelo Gb, expressas na figura 4.33. A f c defe a ae ef.cde, e, c d, ee ea dad aa firmware , aa a $X, - vendo o desbloqueio do canal. Como o Gb compreende caracteres em ac, e ecea a utilização dos mesmos, para isso há a complementação da string aa b'$X\n' (b defe c de a e \ c de aae). A def ae_ae aea a de ef.cde aa $G (também com a respetiva codificação) que, promove o pedido dos parâmetros de estado do bloco inicial ao Gb. P f, a f aa aea a de ef.cde aa $$, cad s parâmetros gerais do programa (Breiler, 2020a). “def unlock(self): self.code = b'$X\n' print(self.code) return self.code def parser_state(self): self.code = b'$G\n' print(self.code) return self.code def param(self): self.code = b'$$\n' print(self.code) return self.code” Figura 4.33 - Variáveis "unlock", "parser_state" e "param" da classe Mde. Por último, a f def read_gcode(self), representada na figura 4.34, provavelmente a função mais ae da eface. Ea f abe fce d cd G eecad, e(ef.fe_ae, ), de cae ca c e aa e. cad fI d caa aa e seja ocupada a memória real do controlador Arduino, assim, mal os dados são lidos pelo controlador Arduino, são apagados do seu buffer . Parte desta função foi adaptada de um programa 18 de comunicação em série bcad a aafa Gb e ad Ca. O fce d a a a e afa cada a a ae _bc. É indicado para esperar pela dca de d Gb para alterar o valor desta variável e enviar a linha seguinte. 18 Disponível em : https://github.com/gnea/grbl/blob/master/doc/script/stream.py (janeiro, 2021.
81 Esta função não só envia o código como verifica, constantemente, se o estado do buffer permite enviar mais uma linha. Caso ocorra algum tipo de erro na leitura, este vai ser lido pelo código e apresentado no painel de comunicação. “def read_gcode(self): self.response=False with open(self.file_name, 'r') as f: # Wait for grbl to initialize and flush startup text in serial input time.sleep(5) self.serial.flushInput() self.reading = 'Streaming Gcode...' … if self.verbose: print("SND>" + str(self.l_count) + ": \"" + l_block + "\"") self.resulta = l_block + '\n' self.talk = self.serial.write(self.resulta.encode()) # Send g-code block to grbl self.grbl = '{}'.format(self.resulta) self.interface.insert(END, self.grbl) self.interface.yview(END) while 1: self.rbl_out = self.serial.readline().strip().decode() # Wait for grbl response with carriage return if self.grbl_out.find('ok') >= 0: if self.verbose: print(" REC<" + str(self.l_count) + ": \"" + self.grbl_out + "\"") break … Figura 4.34 - Função "read_gcode" da classe model. 4.5.2. Envio das variáveis processadas para a interface: c Como havia sido especificado, o C (Controlador) é como um canal entre o Mde e o Ve. Neste caso, como o programa está escrito em Python, uma linguagem de objetos, não haveria necessidade de ter esta classe a intermediar a informação. Mas, com vista a cumprir o modelo seguido, MVC, o C foi inserido como meio de retornar as variáveis desenvolvidas no Mde para o Ve. Paa , aea ada a cae Model, d fce de, c bbeca (from model import Mde). Esta classe, ao contrário das restantes, comporta apenas uma variável inicial, pois, apenas se pretende que estas funções retornem valores quando chamadas pelo utilizador. A ae ca ef.de defe a cae Model aa e, a e ad ae eamente retornado Model a cae Ce. De notar que, para utilizar as variáveis do Mde ecea a a d ca ead ef.- de, ea:
82 ef.de,e ef.de.e_a self.model.read_from_serial self.model.write_to_serial self.model.unlock self.model.parser_state self.model.param self.model.read_gcode Estas variáveis são retornadas, respetivamente, pelas fe da cae Ce: ea_e, e_a, e_ead, e_ea, e_c, e_ae_ae, e_aa e e_cde, podendo, assim, ser utilizada a cae Ve a a C, como representado na figura 4.35. 4.5.3. Visualização dos objetos e variáveis pelo utilizador: view O script Ve engloba tudo o que é possível ao utilizador visualizar na interface, desde a janela do programa, os botões, as barras, as imagens, as caixas de texto ou até as próprias letras. Como já foi referido, a biblioteca em que assenta este programa, denominada de Tkinter , promove a utilização de funções e códigos específicos para criar diferentes tipos de objetos visíveis, cada um com as suas diferentes funções (Rodas de Paz, n.d.). Figura 4.35 - Deedca da fe d C a ae d Mde.
83 De modo geral, qualquer código é iniciado por enunciar as bibliotecas utilizadas, não só pela organização do trabalho, mas, também pelo facto de que a hierarquia da escrita é de extrema importância. Ao utilizar uma biblioteca, é necessário que esta esteja importada antes da primeira vez que se pretenda utilizar. Na figura 4.36 estão representadas as bibliotecas utilizadas para a escrita do script Ve. A biblioteca Tkinter possui diversas extensões interessantes para o programador, que permitem a aglomeração de be d e e ece, eadaee a bbeca e cede. A a da bb- eca e aa de fa de be e aea, ced a eda d objetos simultaneamente, evitando linhas de código desnecessárias e tempo de trabalho. No caso da bbeca cede, á vantagem na definição dos códigos apenas para o grupo específico desse objeto, neste caso, uma janela de texto já programada com barra lateral, onde apenas é necessário o ajuste de parâmetros como, por exemplo, tamanho, letra ou cor (GeeksforGeeks, 2020). Paa faca a eca d cd, aa da bbeca fa ada c a, a c , diminuído assim o tamanho das funções e código em que estas necessitem de ser enunciadas. Pelo mesmo motivo, realizou-se também a importação de objetos específicos da biblioteca no caso, por exemplo, do widget Peba (van Hattem, 2020). As últimas duas linhas apresentadas não se referem a biblioteca eca a Python, mas sim, aos dois scripts que reencaa fa aa e aeeada aee, ed ee ce e a e_. Cada parte do programa está dividida em classes, neste caso, para a divisão da classe View, é necessária a resposta às perguntas: O que aparece, visualmente, logo após o início do programa? O que acontece quando o utilizador interage com o programa? Como é que acontece? Como se trata de uma interface homem-máquina, é de esperar que, na ideia primordial, exista uma janela com botões que, ao pressionar os botões seja exercida uma função. Posto isto, é possível então responder as perguntas acima referidas. Primeiro é necessário aparecer uma janela com botões, de from Tkinter import * from Tkinter import ttk import threading import time import Tkinter.scrolledtext as tkst from Tkinter.ttk import Progressbar from controller import Controller from error_list import lista_erros Figura 4.36 - Scripts e bibliotecas importadas da class "View".
84 seguida é necessário que o utilizador possa pressionar os botões e, por fim, estes terão de fazer algo acontecer. Começando pelo início: gerar uma janela e gerar botões. Tendo em conta que tudo o que é visualizado é código, é necessário que, tudo o que se vê quando o programa é corrido, seja programado exatamente para aparecer em simultâneo. A maneira mais simples de fazer tal coisa é recorrendo a uma variável ca def ____ e, aacaee, quando a class é chamada, executa todos os comandos que nela se encontram definidos. O código, apenas nesta definição inicial, comporta 61 widgets que transformam o programa no que o utilizador vê quando o abre, isto é, as quatro janelas observáveis na figura 4.37. Figura 4.37 - Menus Visualizados pelo Operador da Interface. Caminhando por partes, como seria de esperar, para implementar o que quer se seja numa janela de visualização, primeiro, é necessário criar a janela. Na figura 4.38, encontram-se as primeiras quatro e fundamentais linhas de código para a interface. ef. = T() e a cação de uma janela através da biblioteca Tkinter , sendo esta considerada como master de ae a bacee. ab eada aa da f .e e de- ada a a da f . geometry . C ea aca ara ser utilizada num RaspberryPi 4, com ecrã tatil de 800 pixéis de comprimento por 400 pixéis de largura, a janela foi programada para a impossibilidade de ser redimensionada aquando a utilização (ef..eabe(width=False, e=Fae)) utilizando-se as variáveis de tamanho width (comprimento) e height (altura) como variáveis binárias onde a sa aa dada c Faa (Rodas de Paz, n.d.).
91 O fundo de cada botão é branco para não sobressair comparativamente ao fundo da label (b='e) e, aa aea a eca de aeea, ebd (bded) aad a e, aa da a sensação que apenas existe a seta da imagem e não um quadrilátero a envolvê-la (figura 4.48). Neste caso, da forma como os botões se encontram programados, existe apenas uma variável em jogo, nomeadamente, o valor inteiro, numérico que, é possível movimentar nos eixos. Na figura 4.49, está representado o processo de transmissão da informação, desde que o operador escolhe um valor para o movimento e clica no botão do eixo e sentido que pretende movimentar. A ae ef., através da biblioteca Tkinter , a a Sb, , a caa de ae, neste caso de 0 a 100, onde é possível, a partir de duas setas, aumentar ou diminuir o valor pretendido com incrementos de uma unidade (Murmu, 2020). Figura 4.48 - Diferença entre valor zero e um de "borderwidth" dos botões. Figura 4.49 - Esquematização do desenvolvimento de informação após a escolha de um movimento de eixo.
92 Para referenciar a Spinbox, foi criada uma label , ef.aaa_eca c e Me [ ] dad e, d e eeca e e e (X e Z) e o eixo rotativo promove um movimento em graus (eixo A) (Murmu, 2020). A Spinbox engloba variáveis como a master label (self.label3), o valor mínimo e máximo possível (f_=0, =100), a aa d b (ee ca 5) e a fe. Como esta se encontra numa posição não favorável à utilização de uma geometria matricial, foi utilizada a ea ace, de e eecfca pixéis onde o canto superior esquerdo do widget se encontrará, dentro da label master . Para a programação gráfica do submenu Defe aaa-se duas labels principais, uma intrínseca à outra para, mais uma vez, ser possível utilizar diferentes parâmetros geométricos de organização. A ef.abe1_1 a frame do widget Neb, ee ea aea e ador vê ao clicar na tab Defe. Paa a eeação de uma gama de botões específica dentro da label principal, foi criada uma label , ef.abe1_2, posicionada pelo canto superior esquerdo da mesma, no ponto (200, 108) (Murmu, 2020). Na aea Defe coexistem três botões principais que permitem visualizar, na janela de comunicação, os diferentes tipos de parâmetros predefinidos no Gb, um painel para alterar os parâmetros, um ae c a e de ee d Gb, botões para utilizar o homing e o ventilador. Os botões dos parâmetros foram programados tal como todos os outros botões de imagem, fazendo cd da ae eedda e d e de cada . O be ef.a_bc, ee ed a controlador Arduino os blocos iniciais da máquina está construíd aa e e Bc ca. J be ef.aa_b, c e Defe d Sea ee a ad bea, a aea de cca, d ae predefinidos para o diferente tipo de operações e funções da CNC como, por exemplo, velocidade e aceleração dos movimeno dos eixos, homing , unidade das medidas, posicionamento inicial dos eixos, etc.. A este botão estão interligadas duas funções, uma que fará aparecer todas as definições possíveis da a e a, e a ae ae da CNC. O widget ef.cada_aa eee aa ae d cd G ee G54 a G59 de, e não ocorrer nenhum erro, o comando ligado ao botão fará aparecer no ecrã os valores sobre estes dados. Ee be e defd de a d, ad a ea .d aa a cca d be ed, a, ccad aea a a =0 e ca dfeee (0, 1 e 2). A imagens utilizadas da fce . aa a possível orientação em pixéis, reproduzidas em Adobe CC illustrator como todas as imagens do software . Após a utilização da conversão para
93 PIae, ea ae fa edda ecaa 1 aa 8 e ab ad, como forma de ajustar às dimensões da interface. Por fim, após a definição das imagens, do texto, da posição e da fonte da letra de cada botão, está exemplificado, na figura 4.50, o resultado visual final. Ainda neste separador de informação, estão organizados mais dois grupos de funções. Como já havia sido dito, uma parte remete para a modificação dos parâmetros predefinidos e outra que, engloba todas a e de Ree da CNC, a e de Homing e de Ventilação da máquina. Como seria necessária uma estrutura matricial para a organização do teclado referente aos números responsaveis pela introdução do valor necessário para a alteração dos parâmetros da CNC e para os botões para o reset parcial ou total, homing e ventilação, foram então inseridas, dentro da label principal, duas labels secundárias para acoplar os restantes widgets . A label ef.abe1_1 cea, a be de ae , a label apenas para enunciar um e, Ece Pae, aa e, ad aba e, a a dee , e a e de escolha para modificar os parâmetros. Seguidamente, é utilizado um widget da bbeca , Cbb, para mostrar o array onde estão inseridos todos os parâmetros possiveis de alterar no Gb, de 0 a 136. Este array , representado na figura 4.51, é definid ae ca d fce View de d e, a ca início do aa, ae da Cbb ea aacaee dfcad aa a d aa.A ae ef.aa dada c a , cad e e a ca de tervalo de valores, neste ca de e e. ad cad ae c fa de aacaee ea intervalo de zero ao número pretendido de inteiros, nomeadamente, 136 (Rodas de Paz, n.d.)(Foundation, 2021). Figura 4.51 - Array para a formação da lista de parâmetros que se podem escolher para alterar. “self.array = list(range(136))” Figura 4.50 - Visualização dos botões de parâmetros programados.
94 Como é possível observar no esquema da figura 4.52, a .Cbb e ab eda a ef.abe1_1, c e ca e a aaa Pae. O mecanismo deste botão é extremamente e: ae=ef.aa defe e ae aeead ad ead cca a ea d botão correspondem aos valores do array (0 a 136), eaabe=ef.ecd fa c e a, escolhido pelo ead, ea adad a ae ef.ecd aa e, a ade, a e utilizado para modificar o parâmetro (Foundation, 2021). Paa e a ea e d ead da a ea a, f defd e Pae c ca da Cbb de d e, ae ea e e a eface aba e é naquela lista que se seleciona o parâmetro a alterar (Foundation, 2021). Na label ef. label _a, cada e da label principal, estão inseridos todos os widgets responsáveis pela submissão do valor para o qual se pretende alterar o parâmetro previamente escolhido. Primeiramente, é disposto um widget E (ef.ee_fed) e, e a e de a- quer valor no espaço gerado. Neste caso, o valor inserido é dado pela varie ef.ea (ea- abe=ef.ea). Ee be e cad c a ea .d, ea, eada colunas e linhas. Como se trata do primeiro objeto, encotra-e a ca 0 e a a 0, c c- a=3, ea, ee be de ca ca e dfca aa d widgets . Caso não fosse utilizada a f ca, d objetos encontrados na primeira ca ea a ea de da caa de e (d=21, ea, 21 pixéis), ficando, visualmente , como está representado na figura 4.53 (Rodas de Paz, n.d.). Figura 4.52 - Identificação das variáveis e objetos correspondentes e interligação dos mesmos para alterar parâmetros na interface.
95 Inicialmente o valor da ae ef.ea dad c Va Peedd (ef.ea.e('Va Peedd')), aa e, a a e, ad aba ca ea de aaece a e selecionou. Na figura 4.54, é possível observar como foram programad be d ecad e fa de ca- cada. Td dostos de uma forma matricial 4x3, com inclusão dos botões correspondentes de 0 a 9, Cea, . e Ee. O be defcad c e fa aad de fa a epresentarem caracee d ecad a de cad ad ccad, ed a f c- ad=abda: ef.e(2), ee, ca ead caee b c e 2 e, fa a ad d e e 2 aa a ae ef.ea. Os botõe Cea e . fa aad para o caso do utilizador de enganar ou pretender adicionar números decimais aos valores. Estes pertencem à última a da a, = 5. Ea b ef. aee utilizada aea a f ef.e aa eeca cad, b Cea e c cad a f ef.cea e, aee aaa a ed a caa de e ef.ee_fed. Ee b ece ca ad ea aea a ed mudar outro parâmetro para outro valor. O b Ee, ef.ee ca eaee a a fe da cacada. C cad ef.ece, ee b e e d cd e caa de ligação em série até ao controlador Arduino, para a mudança do parâmetro pretendido para o valor inserido. Neste botão não só é utilizada a f ca aa e, aee, b a ca ca da a e aea o comprimento dos outros widgets mas, também é utilizada a f c="e (norte-sul-esteoeste) isto porque, deste modo, os botões ocupam o tamanho por completo dos blocos de linhas e colunas e não apenas o necessário para aglomerar os caracteres inseridos como texto. Finamente, ainda na label ef. label _a f aada a E e, permite a visualização da escolha por completo, ou seja, o parâmetro escolhido e o valor dado a esse parâmetro. Figura 4.53 - Posicionamento das Colunas sem a utilização de "Columnspan".
96 No excerto de código da figura 4.55, identifica-se uma variável responsável pela inserção do número do parâmetro e valor na Entry ef.aae_eedd e, caada a a e última coluna da matriz, mostra, como dito, o valor total escolhido pelo operador para ser enviado ao Gb. “self.variavel = StringVar() self.parametro_pretendido = Entry(self.label_val, textvariable=self.variavel, fg='black', font=("Malgun Gothic", 10)) self.parametro_pretendido.grid(column=0, row=7, columnspan=3, sticky='nsew')” Figura 4.55 - Caixa de texto utilizada para demostrar o parâmetro a alterar e o valor correspondente. N ad de da aea Defe, ba d be de ae, eca-se a label secundária ef.abe1_2. Ee ae f cad, e e eed da label , no ponto (200, 108) com dimensões de 220 px por 300 px. Os botões e as labels de texto encontradas neste separador são todas estruturadas pea f .d, organização por blocos matriciais, onde, todos os widgets se encontram na mesma coluna. Inicialmente aeead e e='Ree Paca a d Gb:' aad a label ef.e- _ee caada a ea a e ea e ca ca: ef.e_ee.d(=0, c=0, c="e"). Seguido do titulo, encontram-se três botões referentes à execução de três diferentes tipos de resets do Gb. Ee be, ead ef.ee1, ef.ee2 e ef.ee3 e, eeamente, colocados na segunda, terceira e quarta linha da label secundária. Cada um tem e efeee a e eeca, eadaee RESET $$, RESET G54-G59/G28G30 e RESET EEPROM be c cad dead dea ea f. Por fim, foram programados dois botões e duas labels de e, a aa aca be de H- e outra para enunca a e d Vead. Figura 4.54 - Escolha e seleção do parâmetro.
97 Paa a aa d e Ada, ed ef.abC c self.label5 = ttk.Frame(self.tabControl) aa d be Frame da biblioteca Tkinter , foram importados três ficheiros de texto diferentes, com vista a inseri-los em janelas distintas, consoante a necessidade do operador. Como se observa no excerto de código da figura 4.56, dos scripts e_, be_def e aae- , fa ad, eeaee, fce de e a_e, B_def e aa. “from error_list import lista_erros from botoes_def import Bt_def from parametros import param Figura 4.56 - Texto importado para submeter informação no menu "Ajuda". Paa e e a fce abee da cae View, ee de e eciados como variáveis iniciais. Assim sendo, e aa a da ae ef.e_ada, ef.B_def e ef.ada_aa representados na figura 4.57. Foram criados três botões para ser possível o acesso a esta informação. O b e_b, defd a a d be B e cea e E e Aae, de d a e ead saiba o que o botão executa. Tem como comando a funçã ef.e_, ee fae - up de uma janela com a definição dos erros e alarmes do Gb. Nea Def, caee eda a ae Tee, ae ea ee ca a hierarquia de janelas ( frames ou labels ) de da aafa GUI. A ae ef. defe a ef.abe5 c a label ee d e Ada: self.top = Toplevel(self.label5) (Rodas de Paz, n.d.). Para dimensionar a janela que fará pop-up , de modo a ser coerente com a interface, foi definido um valor de 400400 pixéis. De seguida, é criado um objeto label ed a aea ee ef. e, a e, de be de e tkst.ScrolledText (Foundation, 2021). A ae ca self.texto_ajuda eda be de e, ef.e1 e, f, é criado o botão ef.b1, c e a e, ee a ad feca a a de fa. Figura 4.57 - Fluxo de informação e variáveis no menu "Ajuda".
98 Os botões be_b e aa_b_b fa aad de igual modo com a exceção do texto inserido para cada um que, tomou o valor das duas variáveis de texto restantes e, por uma e a, fa ed, aa da f de .ace, c cee de 120 pixéis a ae de cada , ad e a d eeeada a figura 4.58. 4.5.4. Compilação da interface e início de ciclo: main Para finalizar a concessão do código, é realizada uma class exclusivamente para promover o correr do aa. Ea cae, Ma, ade aea a cae View c f a cea, c ee no excerto de código da figura 4.59. “#!/usr/bin/python3 from view import * if __name__ == "__main__": “View()” Figura 4.59 Main script . A a #!/usr/bin/python3 aae e a e d Python instalada que está a ser utilizada para correr o programa é o Python3. Icaee ad d (*) d script e aa e e cea a cae View (c acesso a todas as bibliotecas e ficheiros importados anteriormente). É utilizada a f if __name__ == "__main__" c fa de ce aa. O __name__ é uma variável interna que avalia o nome do módulo atual. No entanto, se um módulo estiver a ser executado diretamente (a partir da linha de comando), então __name__ definido como a string 120 px 120 px 120 px 390 px Figura 4.58 - Disposição linear dos botões do Menu Ajuda.
99 __a__. Ou seja, ao executar este código, as variáveis tomarão valores iguais e, por isso, a função Ve() e eecada. Abd, assim, a interface pretendida (Fooz, 2009). 4.6. Implementação da interface na máquina CNC e validação de resultados Antes de implementar a Interface com o Controlador na CNC, foi necessário fazer alguns ajustes no equipamento, nomeadamente, a programação dos parâmetros da CNC, o homing e a produção de um prato rotativo e molde de blocos. 4.6.1. Programação dos parâmetros step/mm e aceleração dos eixos Aquando a programação da interface para a máquina, foram encontrados erros nos parâmetros do Gb relativos à mesma, tais como, erros e/ executados pela CNC e nas suas acelerações o que, resultava em movimentos não concordantes com os pedidos pelo utilizador. Genericamente, a equação para calcular os steps/mm é o rácio entre os steps por revolução multiplicados pelos microsteps e os milímetros por revolução. Assim, sabendo que os steps por revolução dos motores são 200 steps (1,8°) é apenas necessário encontrar os microsteps utilizados pelo fabricante e calcular os milímetros por revolução para cada caso. A fórmula geral para o cálculo dos steps/mm está representada na equação 1. Equação 1 - Calculo dos steps/mm (Breiler, 2020a). No eixo Z, a transmissão de movimento é executada a partir de um sistema de um motor Nema 23 (200 steps) que faz movimentar o eixo ao longo de duas guias através de um fuso de esferas com rosca trapezoidal de passo 2 mm. (igus, 2019) Existindo microsteps aplicados correspondentes a dois, ver tabela de microsteps do apêndice II, a expressão teórica do valor step/mm do eixo Z está descrita na equação 2. 𝑠𝑡𝑒𝑝 𝑚𝑚 𝑑𝑜 𝑒𝑖𝑥𝑜 𝑧 = 200𝑥2 2 𝑠𝑡𝑒𝑝/𝑚𝑚 Equação 2 - Cálculo dos step/mm do eixo Z. Assim, o valor d ae $102 d Gb deverá ser alterado para 200 steps/mm, devendo ser este posteriormente acertado manualmente. De eda, aa cc dee ae e X (eca), ae $100, ece ece à contagem de dentes da polia que intersetam a correia, dado que o sistema de transmissão é resultado 𝑠𝑡𝑒𝑝 𝑚𝑚 =(𝑠𝑡𝑒𝑝/𝑟𝑒𝑣𝑜𝑙𝑢çã𝑜 × 𝑚𝑖𝑐𝑟𝑜𝑠𝑡𝑒𝑝𝑠 𝑚𝑚 𝑝𝑜𝑟 𝑟𝑒𝑣𝑜𝑙𝑢çã𝑜
100 de duas polias de dimensões iguais ligadas cada uma a dois motores Nema34 (200 step). As polias têm 8 dentes interlaçados na correia com um passo de 8 mm. Posto isto, na equação 3, encontra-se a fórmula que remete para os mm/step do eixo X. 𝑠𝑡𝑒𝑝 𝑚𝑚 𝑑𝑜 𝑒𝑖𝑥𝑜 𝑋 = 200 × 16 8 × 8 𝑠𝑡𝑒𝑝/𝑚𝑚 Equação 3 - Cálculo dos steps/mm do eixo x. Com 16 microsteps ativos, ver tabela de microsteps do apêndice II, 8 dentes em contacto com a correia com 8 mm de passo, o valor de steps por milímetro do eixo X é então 44,444 steps/mm. Por fim, para o eixo A (eixo de rotação), assistido por um motor Nema 23 (200 steps), o valor foi ajustado manualmente, dado a falta de informação sobre o sistema de transmissão que engloba duas polias e a correia. Teoricamente, o valor de steps é definido pela equação 4. 𝑠𝑡𝑒𝑝 𝑚𝑚 𝑑𝑜 𝑒𝑖𝑥𝑜 𝐴 = 200 × 8 × 34 14 × 𝜋110 𝑠𝑡𝑒𝑝𝑠/𝑚𝑚 Equação 4 - Cálculo dos Steps/mm do eixo de rotação A (Aasvik, 2015). Assim, com microsteps de 8 vezes o valor dos steps do motor (200), ver tabela de microsteps do apêndice II, 14 dentes da polia do motor e 34 da polia passiva e um diâmetro de 110 mm da polia passiva, tem-se um valor de steps/mm igual a, aproximadamente 11,244. Apesar destes valores serem teoricamente calculados, após alguns testes na máquina, os parâmetros foram ajustados para valores aproximados dos teóricos. Os parâmetros ajustados no Gb , $100, $102 e $103, estão representados na figura 4.60, correspondentes aos steps/mm de X, Z e A, respetivamente (Breiler, 2020a). Foram várias vezes retirados valores, a partir de pontos de referência a distâncias de 5, 10 e 20 mm para o eixo X e Z, de modo a garantir que estes se encontravam a andar, efetivamente, a medida requerida. O eixo A foi acertado a partir de rotações de 90, 180 e 360 graus com o auxílio de um transferidor. Por fim, para testar a veracidade dos movimentos aquando a maquinagem, foi maquinado um joelho de um utente como teste de prova, representado na figura 4.61. Foram tiradas algumas medidas ao joelho para comparar com o resultado final. Figura 4.60 - Steps/mm dos eixos X. Z e A.
107 nas paredes do recipiente que a molda em forma de cilindro. Como os moldes existentes se encontravam deformados devido a estas pressões, houve necessidade de criar uns novos. Porém, existia uma carência paralela de coexistir um tipo de bloco mais pequeno, para evitar o desbaste excessivo quando toca a maquinar peças com menores diâmetros e, por outro lado, moldes com uma altura mais elevada, para ser possível a maquinagem de moldes positivos de membros de maiores dimensões. O molde existente tratava-se de duas partes de um cilindro que eram aparafusadas uma à outra e, ainda, ao prato que, posteriormente, se colocava na máquina. Após a solidificação do químico, eram retirados os moldes laterais, ficando apenas o bloco no prato, como representado na figura 4.73. As dimensões dos blocos fabricados com este molde são, aproximadamente, 200 mm de diâmetro de base por 225 mm de altura. Este diâmetro, é necessário manter para a maquinagem de moldes positivos de cabeças, porém, no caso de se pretender realizar, por exemplo, o molde de uma perna, em que a parte superior da perna também necessita deste diâmetro, a altura deveria ser aumentada, de forma a reduzir a quantidade de vezes que se terá de dividir o membro para o maquinar na totalidade. Assim, mantendo o princípio de funcionamento deste molde, foi projetado um molde cilíndrico com 200 mm de diâmetro e com 300 mm de altura, representados na figura 4.74. Inicialmente era pretendida uma altura máxima de 400 mm, porém, não seria possível imprimir uma altura tão elevada nas impressoras 3D da empresa. Figura 4.73 - Bloco de Poliuretano de baixa densidade no prato da CNC. Figura 4.74 - Modelação CAD dos moldes cilíndricos com dimensões 200 x 300 mm.
108 Para a realização de blocos de menores dimensões, como pés ou joelhos dimensionou-se um molde com diâmetro de 120 mm de base e com 300 mm de altura, representados na figura 4.75. Ambos os moldes contemplam oito furos para os fixar um ao outro, quatro de cada um dos lados, com um diâmetro de furo de 4 mm. Para a fixação de ambos os moldes à base, seria também desejável a projeção de um novo prato, que permitisse o acoplamento de qualquer um dos tamanhos definidos. Na figura 4.76, está representado o prato dimensionado. Este suporte contém duas saliências cilíndricas com dois centímetros de altura e cinco milímetros de espessura em cada diâmetro de molde, para evitar que escoe poliuretano quando este se encontra ainda líquido. Tanto os furos que se encontram no exterior da saliência de maior diâmetro (dez furos) como da de menor (8 furos), são furos de 5 mm tais como os dimensionados na parte inferior dos moldes laterais, para que seja possível a fixação das peças. O cone (de diâmetro máximo de 50 mm e mínimo de 30 mm), permite a melhor amarração do bloco ao prato, auxiliado por quatro parafusos M6 na sua extremidade. O veio utilizado para fixar o prato à máquina entra a uma profundidade de cinco centímetros do cone. Figura 4.76 - Prato dimensionado para a fixação dos moldes e do bloco. Figura 4.75 - Modelação CAD dos moldes cilíndricos com dimensões 120 x 300 mm.
109 Na figura 4.77 é possível observar a vista em corte do conjunto de todos os elementos do sistema e do bloco formado pelos moldes. Para segurança das paredes com dois centímetros de altura, foram ainda dimensionadas da ca para ocupar todo o fundo do prato, aumentando a estabilidade do processo. As coroas permitem que o bloco possua uma base estável, representada na figura 4.78 e não adira às saliências de baixa espessura, evitando que as danifique. Todas estas peças foram impressas em PLA com um infill de 20% a uma temperatura de 197 ºC e uma velocidade de 3000 mm/min. O preenchimento das peças foi aumentado para evitar as deformações ocorridas nos moldes anteriores. A velocidade de maquinagem foi consideravelmente elevada para evitar que o tempo de fabrico de cada peça excedesse as trinta horas. Este molde ainda não foi completamente testado dado a impossibilidade de imprimir as coroas da figura 4.78. Porém, moldes teste impressos pelos mesmos parâmetros foram testados e não deformaram. Figura 4.78 - Prato para colocação do bloco com as coroas inseridas. Figura 4.77 - Esquema de imagem CAD do sistema para a criação dos blocos de poliuretano de baixa densidade
110 4.6.4. Implementação da Interface na CNC Com todos os componentes terminados, procedeu-se à introdução da interface na CNC. Primeiramente, foi impresso em PLA um suporte para o ecrã e Raspberry, retirado do site , open-source , Tee dead e ad e (Mkellsy, 2020). Para a fixação da capa e do suporte ao conjunto (RaspberryPi e ecrã tátil), utilizaram-se 16 parafusos M2 de dois centrimos de altura. O resultado pode ser observado na figura 4.79. A capa e o suporte foram escolhidos pela facilidade de adaptação de novos suportes. No verso da capa, como representado na figura 4.80, os suportes são aparafusados por dois parafusos (em cada um). Estes componentes facilmente podem ser virados para suportar o ecrã como base numa superfície plana, como podem ser trocados por outro tipo de suporte, como, por exemplo, um sistema de guias para retirar o ecrã da parede da máquina quando necessário. Figura 4.79 - Raspberry Pi4 modelo b e ecrã de 7'' com suporte. Figura 4.80 - Parte de trás da capa do conjunto.
111 O facto da própria capa incluir um sistema de respiração para as alhetas do dispositivo dissiparem o calor e do furo para implementação de uma ventoinha foram também fatores que levaram à escolha desta capa dado que, o Raspberry, ficará várias horas ligado a acompanhar a maquinagem na CNC. Após a implementação da capa e do suporte é hora de incluir a interface na máquina. Para evitar a furação da placa de acrílico da CNC, a mesa já existente foi posicionada ao nível do técnico que utilizará a máquina. Por fim, foi ligado o dispositivo no quadro elétrico da máquina e colocado na mesa, como observado na figura 4.81. A interface liga automaticamente quando é ligado o botão da máquina (ver apêndice VII, manual de utilizador da máquina). Na figura, é possível observar os cabos de ligação ainda por fora do quadro elétrico. Iste deve-se ao facto de o quadro ainda não ter sido furado para colocação de fios e cabos, na medida que, tal operação só seria favorável, quando os cabos do projeto paralelo de implementação de um sistema de aspiração, fosse concluído para, desse modo, constatar o melhor local de passagem de cabos. Na figura 4.82, está representada a interface ativa já ligada ao controlador Arduino da máquina. Figura 4.81 - Máquina "Nada" com interface implementada. Figura 4.82 - Interface ativa na CNC.
112 4.6.5. Teste e validação da Interface na CNC da Padrão Ortopédico. Como já havia sido relatado, a interface já contempla a ligação à porta do controlador Arduino especificada no código. Sendo assim, é apenas necessário ligar a máquina e testar a passagem de informação. O ecrã do Raspberry estava a ser partilhado com o computador (via VNC 19 ) para ser possível a tiragem de capturas de ecrã do dispositivo, mas todas as operações foram realizadas no Raspberry. O primeiro passo é verificar se o Gb está a aceder ao canal. Na figura 4.83 encontra-se o sucedido a cca b de Debea Caa da Ieface. Como é possível observar, o Gb e a eae a de e Ca: Uced, ea, Cdad: Debead. A, de ca-se que o canal está a funcionar corretamente na CNC. ab cae e b Ead de ea e e fcae ed e f clicado e o Gb procedeu ao envio da informação presente no ecrã, na figura 4.83. Seguindo os passos normais de preparação da máquina para efetuar uma maquinagem (ver anexo VII), procedeu-se ao movimento dos eixos X, Z e A, em coordenadas relativas, para posicionar a ferramenta e o prato, como representado na figura 4.84. Foi efetuado um movimento de 2 mm em cada eixo. 19 VNC é um software que permite, via Wi fi , partilhar o ecrã do Raspberry com um computador. Figura 4.83 - Ecrã da Interface - operação de desbloquear canal e verificar estado de operação. Figura 4.84 - Ecrã da Interface - Movimento em coordenadas relativas dos três eixos de trabalho.
113 De notar que todos os movimentos foram enviados com as coordenadas selecionadas e que o Gb ede c , ed-se dois milímetros em cada eixo. Foi, de seguida, clicado no botão de ead de ea a ede c a a cdeada de da feaea (2,2,2). Fa acad e ea (be Z0, X0 e A0) com o resultado representado na figura 4.85. Como demonstrado, após a marcação dos zeros, no estado de operação as coordenadas do sistema voltaram a ser representadas como (0,0,0). Para testar o envio de coordenadas absolutas (e na medida de verificar os zeros), foram movidos os eixos cinco milímetros em coordenadas absolutas, como representado na figura 4.86. Fa e ad e e cdeada aba (G90 eee e ecebd c pelo firmware ). No eixo Z foram movidos 5 mm no sentido negativo e nos X e A no sentido positivo. Pelo estado de operação é notável que os eixos se moveram para a posição pretendida apesar de, no primeiro estado de operação o eixo A ainda não estava na posição quando foi pedida a informação à máquina. Já no segundo estado de operação, as coordenadas encontravam-se em (5,-5,5). Figura 4.85 - Ecrã da interface - marcação de zeros peça e estado de operação. Figura 4.86 - Ecrã da Interface - Movimento dos eixos em coordenadas absolutas e estado de operação.
114 Por fim, foi enviado um ficheiro de código G para a CNC (figura 4.87). O código foi também enviado com sucesso e a CNC procedeu ao movimento dos eixos. Como é possível observar, o código estava a ser enviado e, apesar de não ser possível ver o estado de operação no ecrã, para evitar conflito de informação (visto que a função pede ao Gb Ead de ea endo), é possível observá-lo na linha de comandos do Raspberry, como expresso na figura 4.88. N ead, a a e d R e a cdeada e a e aeada edda e eixos se movem na CNC. É também mencionado o estado do buffer do coad Ad (Bf). A eface e a eea e d Gb para enviar a linha de código seguinte sendo que, já só existem 0,255 bits de espaço no buffer . Figura 4.87 - Ecrã da interface - envio do código G para a CNC. Figura 4.88 - Linha de Comandos Raspberry.
115 Faee, fa ead be de S e Sa a a, a CNC a edatamente o e d e e aa de de ea a cd. (ad ccad b S). A cca e Sa, a CNC e e e CNCe e e de cd, c eee- tado na figura 4.89. No final do envio de código, a CNC continua a enviar o estado de operação até os eixos efetuarem todos os comandos, como representado na figura 4.90. Posto isto, a principal funcionalidade do ecrã está terminada, sendo que, é possível executar uma maquinagem, tanto pela parte de preparação da máquina como pelo envio de código G. De notar que, este processo foi realizado sem a utilização de envio manual de comandos para a máquina, aliás, a interface não possui sequer uma entrada para tal função. A alteração de parâmetros não foi realizada, porém, já havia sido testada e os resultados encontram-se adce V, C fca da eface. Figura 4.90 - Ecrã da Interface - Utilização dos botões de "Start" e "Stop". Figura 4.89 - Linha de comandos: Final da maquinagem e espera da paragem dos eixos.
116 5. Conclusões e Trabalhos futuros Neste capítulo serão retiradas as conclusões sobre o estudo e o trabalho realizado sobre a máquina CNC da empresa Padrão Ortopédico e a projeção da interface homem máquina concebida. Serão ainda constatados alguns tópicos que deverão ser melhorados futuramente, com a utilização do dispositivo. 5.1. Conclusões Com o término deste projeto, é possível dar os objetivos inicialmente propostos como compridos. No fim, foi inserida uma interface gráfica na CNC da empresa Padrão Ortopédico, capaz de controlar a máquina sem o auxílio de objetos e dispositivos externos. De notar que, apesar dos objetivos principais cumpridos, ee ada ade ca ea fee e ca a aaa da a Nada. A nível do estudo dos componentes da máquina, catalogou-se quase todos os seus componentes com as respetivas fontes de aquisição. Todavia, por falta de informação registada, alguns dos componentes foram apenas dimensionados e catalogados através da medição manual das suas dimensões. É de notar que existem componentes da máquina que se tornam secundários no seu funcionamento, por exemplo, os motores do eixo X e do eixo A poderiam ser reduzidos apenas a um por cada eixo. Olhando para o processo de maquinagem da CNC, teria sido muito mais fácil e menos moroso se, o criador e única pessoa que sabia manusear a máquina, tivesse estado presente para realizar uma prova exemplo, ou mesmo para tirar dúvidas que surgiram aquanto os testes que se realizaram para descobrir quais os parâmetros importantes e como se operava no dispositivo. Contudo, o estudo da maquinagem na CNC foi completado e, desta vez, foi descrito todo o processo necessário para a maquinagem, todas as peças e pae ae be c, edd Maa de Uad aa ae erador saber o que vai encontrar na máquina e como a manusear. A um nível mais fulcral do projeto, na inserção e programação da interface gráfica homem-máquina, é possível, felizmente, dizer que o programa ficou concluído, na medida que, dois dos técnicos da empresa responsáveis pela utilização da máquina, ambos sem qualquer formação em máquinas industriais, já se encontram a operar a CNC a partir da interface, CNCe, criada. Pelo que, garante que o principal objetivo do programa, criar uma interface gráfica intuitiva para o utilizador, foi cumprido. No que toca à escolha da parte física do projeto, ou seja, o Raspberry Pi 4, modelo b e o respetivo ecrã tátil de sete polegadas, foi, sem dúvida, uma melhor escolha do que a utilização de um controlador Arduino. A única observação a ser feita é o tamanho do ecrã. Talvez, um ecrã de maiores dimensões
123 O Gb é um firmware para comunicação em série, numa banda de 115200, 8 bits, sem paridade e com um bit de paragem (Breiler, 2020a). O cad $ ervem para alterar as definições e parâmetros do firmware e para pedir ao Gb informações sobre os mesmos (Breiler, 2020a). Na fig. 1, encontram-se descriminados os parâmetros principais do Gb firmware (Breiler, 2020a). O ae $C ee aa aea d de ea d Gb e IDLE e CHECK. Td eae ae de e ad d Ide, ece de !, e ? e ed aquando a maquinagem, ou seja, d R (Breiler, 2020a). Existem 136 parâmetros de valores para definições, sendo que, parte desses parâmetros são booleanos (0 ou 1) e outros têm definida uma máscara para efetuar a sua função com modos ou características diferentes (Breiler, 2020a). Nas tab. 1, 2 e 3, encontram-se descriminados os parâmetros do Gb à exceção dos valores para definição dos três eixos secundários possíveis (Breiler, 2020a). Apêndice - Tabela 1 - Definições, valor padrão, unidade e número dos parâmetros do Grbl (Breiler, 2020a). Parâmetro $x = val Valor padrão Unidade Definição $0 10 µs Pulso de step (microssegundo) $1 25 ms Delay de leitura de step Apêndice - Figura 1 - Parâmetros gerais do Grbl firmware.
124 Apêndice - Tabela 2 - Definições, valor padrão, unidade e número dos parâmetros do Grbl (Breiler, 2020a) (cont.) Parâmetro $x = val Valor padrão Unidade Definição $2 0 mask Inversão da porta dos steps $3 6 mask Inversão da direção $4 0 bool Ativar inversão de steps $5 0 bool Inversão do pino de limite de eixo $6 0 bool Inversão de pino de procura do limite $10 3 mask Reportar situação da máquina $11 0.020 mm Desvio de junção $12 0.002 mm Tolerância de arco $13 0 bool Reportar em inches $20 0 bool Limites da maquinagem $21 0 bool Limites da máquina $22 0 bool Ativar homing $23 1 mask Inversão do sentido de homing $24 50 mm/min. Feed rate do homing $25 635 mm/min. Feed rate de procurar limite $26 250 ms Tempo e fechar o circuito de fim de curso $27 1 mm Recuo após fim de curso
125 Apêndice - Tabela 3 - Definições, valor padrão, unidade e número dos parâmetros do Grbl (Breiler, 2020a). (cont.) Parâmetro $x = val Valor padrão Unidade Definição $100 800 Step/mm Steps por milímetro em x $101 800 Step/mm Steps por milímetro em y $102 800 Step/mm Steps por milímetro em z $110 635 mm/min Distância máxima por unidade de tempo em x $111 635 mm/min Distância máxima por unidade de tempo em y $112 635 mm/min Distância máxima por unidade de tempo em z $120 50 mm/s2 Aceleração em x $121 50 mm/s2 Aceleração em y $122 50 mm/s2 Aceleração em z $130 225 mm Máximo deslocamento de X $131 125 mm Máximo deslocamento de Y $132 170 mm Máximo deslocamento de Z A Ma, beada a aae, ae e ea de valores que efetuam a função de formas diferentes (Breiler, 2020a). Paa $2, e eeeads os valores da máscara para cada situação na tab. 4. A coluna X, Y e Z, refere-e e de de d d e, ee ca, N e e ed e Y aa estarem invertidos (Breiler, 2020a).
126 Apêndice - Tabela 4 - "Mask" para os valores de inversão de step e direção do movimento (Breiler, 2020a). Valor Ma X Y Z N ca d ae $3, aa aea a de de e de e, a abea dca representada na figura acima (Breiler, 2020a). Na Ma aa $10, eecad a e ea a caaceca edda ea f ?. O operador pode escolher se quer ver todos os parâmetros ou apenas um, ou o conjunto de dois, por exemplo (Breiler, 2020a). Os principais valores definidos estão representados na tab. 5 (Breiler, 2020a). Na coluna da direita está representado o tipo de relatório que se vai receber e à esquerda o valor a dar ao parâmetro (Breiler, 2020a). P f, a a Ma, $23 remete para a inversão da direção do homing . Na tab. 6, encontram-se os valores a atribuir ao parâmetro e o que cada um fará (Breiler, 2020a). Apêndice - Tabela 5 - "Mask" para o relatório de estado do Grbl (Breiler, 2020a).
127 No que toca aos parâmetros para eixos secundários, A, B e C (como representados pelo Grbl), são ee ae $ ee, de deca, d ae aa e Z. P ee, e toca a steps/mm, o eix ca a $102, e A $103, B $104 e C $105. Apêndice - Tabela 6 - "Mask" para os valores de direção de homing (Breiler, 2020b).
128 Apêndice II. Cee da Ma CNC Nada
129 Componentes da CNC e especificações dos mesmos representadas na tab.7, 8 e 9. Apêndice - Tabela 7 - Tabela de Componentes da CNC e características (23HS45-3504S - Nema23.Pdf, n.d.; 34HS59-5004S - Nema34.Pdf, n.d.; AliExpress, n.d.; BotnRoll, 2020a; Stepper Online, 2017; worten, 2020). Nome Referência Quant. Corrente (output) Ddp Dimensões (máx.) e Especificações Spindle Spindle CNC 2200 W 1 10 A 220 V 80x80x281 mm3 Motor eixo A Nema 23 Bipolar 3Nm 23HS45-3504S 2 3.5A 4,2 V 57x57x114 mm3 Motor eixo X Nema 34 Bipolar 13 Nm 34HS59-5004S 2 5 A 5 V 25x37x150 mm3 Motor eixo Z Nema 23 Bipolar 3Nm 23HS45-3504S 1 3.5A 4,2 V 57x57x114 mm3 Controlador Arduino MEGA 2560 REV3 A000067 1 20-50 mA 5 V 53,3x51,52 mm2 Cabo para ligação USB 2.0 TipoA/TipoB MITSAI 6896944 1 - - 3 m Fontes de alimentação S-350-60 3 5,9 A 60 V DC 215x115x50 mm3 Driver eixo A Digital Stepper Drive DM542T 2 1,0 A 4,2 A 20-50 V DC 25,5x75,5x118 mm3 Driver eixo Z Digital Stepper Drive DM542T 1 1,0 A 4,2 A 20-50 V DC 25,5x75,5x118 mm3 Driver eixo X Digital Stepper Drive DM860I 2 2,4 A 7,2 A 20-80 V DC 42,5x97x115 mm3 Fonte de tensão da Spindle Inversor tensão de entrada 110-220 V YL620 A 1 10 A 110-220 V AC Não especificado Colett ER25 1 - - 26x26x34 mm3 Ø = 10 mm Bomba de água 80 W HY - 3500 1 0,36 A 220 V Não específicado
130 Apêndice - Tabela 8 - Tabela de componentes da CNC e características (igus, 2019). Nome Referência Quant. Dimensões Dentes Passo Carga (máx.) Polia eixo X HJZ-Drive 0634223857570 2 - 14 8 mm - Polia eixo A Não especificado 1 - 34 10 mm - Pinhão eixo A HJZ-Drive 0634223857570 1 - 14 10 mm - Correia eixo A Não especificado 1 - - 10 mm - Correia eixo X Não especificado 1 - - 10 mm - Fuso de esferas DLE-SA-0006 1 Carruagem = 100 mm Curso = 500 mm - 2 mm Axial=750 N Radial=2000 N Apêndice - Tabela 9 - Especificações da ferramenta de corte. Componente Referência Formato Curso total Comprimento de corte Flautas Diâmetro Ferramenta de Corte Não encontrada Ponta esférica 200 mm 100 mm 4 10 mm
131 x Motor Nema 23 As dimensões do motor estão descritas nas fig. 2 e 3, em milímetros. Apêndice - Figura 2 - Desenho técnico do motor nema 23 (mm). Apêndice - Figura 3 - Desenho técnico do motor nema 23 (mm).
132 As especificações do produto pelo vendedor estão presentes na tab. 10. Apêndice - Tabela 10 - Especificações do motor Nema 23. x Motor Nema 34 As dimensões do motor estão descritas nas fig. 4 e 5, em milímetros. Apêndice - Figura 4 - Desenho técnico do motor nema 34 (mm).