Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Transforme qualquer motor CC em um servo personalizado de 360° – Guia passo a passo


Neste tutorial aprenderemos como transformar qualquer motor DC em um servo motor autônomo personalizado com muitos recursos. Ao contrário dos servos normais que possuem movimento limitado de 180 ou 270 graus, este possui alcance ilimitado de 360 ​​graus e além disso temos a capacidade de ajustar o alcance da rotação para qualquer valor que precisarmos.

Acho que isso é muito útil e, além disso, podemos até ajustar o ponto central do servo. Assim, podemos ajustar o ponto central e a faixa de rotação ao mesmo tempo.

Você pode assistir ao vídeo a seguir ou ler o tutorial escrito abaixo.

Outra característica é que podemos ajustar a sensibilidade ou a rapidez com que o servo responderá à nossa entrada. Falando em entrada, podemos ter três modos de entrada diferentes.

Podemos controlar o servo com uma entrada de tensão analógica ou usando um potenciômetro, podemos controlar o servo com um transmissor RC, bem como controlar o servo através de uma porta serial inserindo valores de ângulo através do monitor serial em nosso PC ou laptop.

Também podemos fazer isso simultaneamente, controlar o servo inserindo valores através do monitor serial e mover manualmente o servo usando o transmissor RC. O servo motor sempre saberá sua posição atual e poderá vê-la no monitor serial. 

No topo desta lista de recursos do servo motor, está o modo de rotação contínua. Isso mesmo. Podemos controlar e acompanhar a posição do servo motor mesmo neste modo de rotação contínua. Podemos configurar o eixo do servo motor para ir para qualquer posição com um número infinito de voltas.  

Tudo isso é possível graças ao codificador de 12 bits que este servo motor utiliza, ao sensor de posição rotativo magnético AS5600 e ao controle PID implementado para acionar o motor DC.

Eu fiz esta placa controladora de servo motor personalizada que inclui seu próprio microcontrolador e tudo mais para transformar facilmente qualquer motor DC em um servo motor independente.

Basta posicionar a placa no centro do eixo de saída (incluindo um ímã específico no eixo), conectar qualquer tamanho de motor DC com corrente nominal de até 3,5A, alimentar todo o sistema com 12V e pronto, obtemos um servo motor de um motor DC normal com todos esses recursos.

Agora vou orientá-lo em todo o processo de fabricação deste servo motor personalizado para que você também possa fazer um por conta própria. Explicarei o princípio de funcionamento de um servo motor, um controlador de malha fechada, um controlador PID, como projetei a PCB customizada para ele e a caixa de engrenagens, bem como explicarei o código por trás disso.

Princípio de funcionamento do servomotor


Para explicar o princípio de funcionamento de um servo motor, vamos desmontar um servo motor RC típico e ver o que há dentro.

Podemos notar que ele possui um pequeno motor DC, uma placa controladora, um potenciômetro e uma conexão de três fios, sendo dois fios para alimentação e um para sinal de entrada. Além disso, existem algumas engrenagens para reduzir a velocidade e aumentar o torque do motor DC. 

Esta é uma configuração típica para a maioria dos servomotores RC ou hobby. O potenciômetro é acoplado ao eixo de saída do motor DC e atua como sensor de posição, informando ao controlador a posição atual do eixo do servo motor. A placa controladora controla o motor DC com base no sinal de entrada (a posição desejada) e na posição real que obtemos como feedback do potenciômetro. Isto representa um sistema de controle de malha fechada.

O sinal de entrada, ou a posição desejada, é comparado com a posição real do motor que obtemos do sensor de feedback de posição. A diferença que ocorre, chamada de erro, é então processada no controlador que comanda o movimento do motor até atingir a posição desejada.

Como fazer um servo motor personalizado


Portanto, se quisermos construir nosso próprio servo motor com motores CC maiores do que esses servos RC típicos usam, podemos implementar o mesmo sistema de controle de malha fechada.

Precisamos apenas de um sensor de posição conectado de alguma forma ao eixo de saída e um microcontrolador para acionar o motor DC.  

Já quanto ao sensor de posição, a solução mais simples é usar um potenciômetro simples igual ao que vimos nos servos RC. O problema com esses tipos de potenciômetros é que eles têm uma faixa de rotação limitada de apenas 270 graus, o que limita diretamente a faixa de rotação do servo motor. Existem também outros tipos de potenciômetros que podem fazer múltiplas voltas e fornecer melhor alcance e resolução, mas ainda assim possuem rotação limitada.

Se precisarmos que o servo motor tenha faixa de rotação ilimitada, precisaremos usar um codificador. Encoders são dispositivos eletromecânicos que podem rastrear a posição angular do eixo com rotação ilimitada. Existem muitos tipos de codificadores como incrementais ou absolutos, ou dependendo da tecnologia de detecção óptica, magnética ou capacitiva. Claro, cada um deles tem suas vantagens e desvantagens.

Codificador AS5600 – Sensor magnético de posição rotativa


Optei por utilizar um encoder magnético, ou o sensor de posição rotativo magnético AS5600, por ser um encoder muito compacto e de fácil implementação proporcionando alta precisão ou resolução. Basta dar uma olhada em quão pequeno é esse microchip.

Possui um sensor de efeito Hall integrado que pode detectar mudanças na direção do campo magnético. Assim, basta fixar um ímã no eixo de saída do motor e posicioná-lo próximo ao microchip a uma distância de 0,5 a 3mm.

Agora, à medida que o eixo do motor e o ímã giram, o sensor de efeito Hall captura essas mudanças na direção do campo magnético. Com a ajuda do conversor A/D de 12 bits integrado, o sensor AS5600 pode produzir 4.096 posições por volta ou rotação de 360 ​​graus.

Isso significa que ele pode detectar mudanças na posição angular tão pequenas quanto 0,0878 graus. Isso é bastante impressionante e, por ser muito acessível e fácil de obter, é a escolha certa para um servo motor personalizado. 

Tudo bem, então o que mais precisamos, um microcontrolador e um driver para o motor DC. Escolhi o driver de motor DC DRV8871, que pode suportar até 3,5 A de corrente, e o microcontrolador Atmega328.

Escolhi a versão para montagem em superfície, pois é muito mais compacta que a versão DIP, e meu objetivo era fazer uma PCB personalizada o menor possível na qual eu pudesse incluir tudo para que o servo pudesse funcionar como um dispositivo autônomo.

Diagrama de circuito de servomotor personalizado


Aqui está o diagrama de circuito completo deste servo motor personalizado.

Você pode obter os componentes necessários para este projeto nos links abaixo:

Divulgação:Estes são links afiliados. Como associado da Amazon, ganho com compras qualificadas.

Portanto, temos o microcontrolador Atmega328 junto com seu circuito mínimo recomendado, que inclui um oscilador de 16Mhz, alguns capacitores e um resistor.

Para alimentar o microcontrolador e os demais componentes que necessitam de 5V, estamos utilizando o regulador de tensão AMS1117, que reduzirá a entrada de alimentação de 12V para 5V.

Aqui está o sensor de posição AS5600 com seu circuito recomendado que inclui dois capacitores e dois resistores pull-up para comunicação IC2.

O driver do motor DC DRV8871 precisa de apenas um resistor para limitar a corrente e dois capacitores de desacoplamento. Depois temos dois potenciômetros conectados às entradas analógicas do microcontrolador, um para ajuste da faixa de rotação e outro para ajuste da sensibilidade do servo. O botão é usado para definir o ponto central do servo e o interruptor dip bidirecional para selecionar os modos de trabalho do servo. Há um cabeçalho de pino para as entradas do servo, seja uma entrada de tensão analógica ou uma entrada PWM digital de um receptor RC, junto com um pino de 5V e um pino de aterramento. Há também um cabeçalho de pinos para programar o microcontrolador através do protocolo SPI e da porta serial. 

Aqui está uma recapitulação deste circuito e seu fluxo de trabalho. A entrada, ou a posição angular desejada, é recebida através desses dois pinos e pode ser uma tensão analógica vinda de um potenciômetro ou um sinal PWM digital vindo de um receptor RC. A entrada vai para o microcontrolador onde é comparada com a posição angular real detectada pelo codificador ou sensor de posição AS5600. Este sensor se comunica com o microcontrolador através do protocolo IC2.

Aí o microcontrolador faz as contas, calcula o erro e de acordo com ele envia o sinal PWM para o driver DRV8871 que aciona o motor DC até atingir a posição desejada. 

Todo o circuito é alimentado por 12V, e o regulador de tensão AS1117 fornece 5V para o microcontrolador e demais componentes de forma adequada.

Projeto de PCB 


De acordo com o diagrama do circuito, tentei projetar o PCB o menor possível e ele ficou com 40x40mm.

Posiciono o codificador na parte inferior e exatamente no ponto central da placa de circuito impresso, para que possa ser facilmente montado e alinhado com o eixo de saída do servo.

Todos os outros componentes estão localizados no outro lado para que não interfiram no codificador e no eixo de saída.

Encomendei o PCB da PCBWay. Aqui podemos simplesmente fazer upload do arquivo Gerber, escolher as propriedades do nosso PCB e encomendá-lo a um preço razoável.

Projetei a PCB para ter 4 camadas, as do meio são para GND, o que aumenta um pouco o preço. Não alterei nenhuma das propriedades padrão, exceto a cor do PCB que escolhi para ser branco, e marquei que aceito a alteração do acabamento da superfície para ouro de imersão, se aplicável, sem custo extra.

Você pode encontrar e baixar o Gerber na comunidade de compartilhamento de projetos PCBWay, por meio da qual você também pode solicitar o PCB diretamente.

Mesmo assim, depois de vários dias, o PCB chegou. A qualidade do PCB é ótima, tudo igual ao design, e consegui com acabamento superficial dourado de imersão.

Tudo bem, agora podemos prosseguir com a soldagem dos componentes. Comecei com os componentes menores, como este LED indicador, os capacitores e os resistores.

Na verdade, esta é a primeira vez que soldo esses pequenos componentes SMD e fui muito, muito ruim nisso. 

O mais desafiador foi soldar o microcontrolador Atmega328, pois os pinos são muito pequenos e muito próximos uns dos outros, mas de alguma forma consegui fazer isso.

O microchip codificador AS5600 foi fácil de soldar na parte traseira da placa de circuito impresso, assim como os componentes maiores e com orifícios passantes, como a chave DIP, os potenciômetros, os blocos de terminais e os conectores de pinos.

Enfim, aqui está a aparência final da placa controladora que afinal ficou decente, eu acho.

Agora é hora de fazer uma caixa de engrenagens adequada para o motor DC e esta placa controladora. 

Modelo Servo 3D personalizado


Projetei a caixa de engrenagens para este servo motor personalizado usando Onshape. O design da caixa de engrenagens depende, é claro, do motor DC. Como mencionei, podemos usar motores DC de qualquer tamanho em combinação com a placa controladora que acabamos de fazer.

Aqui estou usando um motor DC com 37 mm de diâmetro e uma caixa de câmbio integrada que produz 50 RPM. 50 RPM é uma boa velocidade para um servo motor, mas eu queria ir um pouco mais baixo do que isso, para obter melhor torque, então fiz uma caixa de câmbio com redução de 3 vezes. Usei engrenagens em espinha para esse propósito, pois são eficientes e fáceis de fazer com uma impressora 3D.

Claro, aqui temos a liberdade de fazer o design deste redutor como quisermos, pois depende do motor DC que queremos usar e das velocidades de saída que queremos obter. 

Posicionei a placa controladora na parte traseira desta caixa de engrenagens e alinhei-a perfeitamente no centro do eixo de saída.

Caso queiramos usar o eixo do motor DC diretamente como saída, podemos apenas usar o conjunto de engrenagens 1:1 para que possamos rastrear a posição do eixo corretamente. Ou também poderíamos usar um sistema de cinto nesse caso. Como eu disse, temos infinitas possibilidades de fazer a caixa de câmbio. 

Baixe modelo 3D e arquivos STL

Você pode visualizar e explorar o modelo 3D deste servo motor personalizado diretamente em seu navegador com Onshape. (Você precisa de uma conta Onshape para isso. Você pode criar uma conta gratuita para uso doméstico)

Claro, você também baixa o modelo 3D, bem como os arquivos STL necessários para a impressão 3D das peças aqui:

Arquivo PASSO:

Arquivos STL para impressão 3D:

Montando o servo personalizado


Aqui estão as peças impressas em 3D para esta construção para que possamos começar a montar o servo motor.

Junto com eles, precisamos de alguns parafusos M3 e insertos roscados, além de alguns rolamentos. 

Primeiro, fixei o motor DC na placa de base com alguns parafusos M3 de 8 mm de comprimento.

Então podemos instalar as duas engrenagens no lugar. A engrenagem menor vai diretamente para o eixo do motor DC, e a engrenagem maior será a saída do servo. Porém, o eixo de saída do é composto de duas partes.

Instalei insertos roscados em ambos os lados desta peça do eixo de saída, de um lado para conectar a engrenagem a ele e do outro lado para fixar coisas na saída do servo. 

Também instalei insertos roscados na engrenagem menor que serão usados para fixá-la ao eixo do motor DC. Agora podemos deslizar as engrenagens paradas em suas posições. Como se trata de engrenagens em espinha, devemos deslizá-las ao mesmo tempo, caso contrário não poderemos emparelhá-las se as inserirmos uma por uma.

Usando um parafuso sem cabeça, prendi a pequena engrenagem ao eixo do motor DC. Apliquei 12V ao motor DC para verificar se o conjunto de engrenagens funcionaria corretamente. 

Podemos finalizar a montagem do redutor inserindo o painel lateral, o rolamento de esferas do eixo de saída e a tampa superior.

Instalei algumas inserções roscadas M3 na placa traseira para que possamos fixar todo o conjunto com alguns parafusos M3 de 20 mm de comprimento. Testei a caixa de câmbio novamente, funciona muito bem. Podemos notar como o eixo de saída gira na parte traseira e aqui precisamos inserir o ímã que o codificador AS5600 irá monitorar.

Fixamos a placa controladora à caixa de engrenagens usando alguns parafusos e porcas M2. O sensor de posição AS5600 agora está perfeitamente alinhado com o ímã e, portanto, quando o eixo de saída girar, ele medirá a mudança no campo magnético corretamente.

Observe aqui que a direção de magnetização do ímã permanente é muito importante. Dependendo se é magnetizado axial ou diametralmente, devemos posicionar o ímã perpendicular ou paralelo ao IC AS5600.

Acabei mudando a direção do meu ímã, pois ele não tinha a magnetização correta para que o codificador AS5600 pudesse medi-lo.

Em seguida, soldei dois fios ao motor DC e conectei o motor ao controlador com o bloco de terminais. Quanto à alimentação, conectei dois fios ao bloco de terminais de alimentação, que do outro lado possui um conector de alimentação DC para conectar uma fonte de alimentação de 12V. E é isso, nosso servo motor personalizado está pronto.

Programando o Controlador


O que falta agora é dar vida a este servo, ou programar o controlador. Para isso, primeiro precisamos gravar um bootloader no microcontrolador ATmega328p. Sem um bootloader o microcontrolador não conseguirá entender a linguagem ou o código que lhe enviaremos. 

Queima do bootloader


Para gravar o bootloader no ATmega328p, precisamos de uma placa Arduino, no meu caso usarei uma placa Arduino Nano.

Usaremos a comunicação SPI, então precisamos conectar os pinos SPI adequados na placa Arduino e em nossa placa controladora.

Agora, usando o Arduino IDE, precisamos abrir o esboço de exemplo do ArduinoISP e carregá-lo na placa Arduino Nano. Com este código o Arduino Nano agora é capaz de gravar o bootloader no microcontrolador ATmega328. 

A seguir, no menu Ferramentas, como programador, precisamos selecionar Arduino como ISP e clicar em Gravar Bootloader.

Ao gravar o bootloader, devemos notar que as luzes do Arduino NANO piscarão muito, e isso resultará na queima bem-sucedida do bootloader. 

Envio de código


Feito isso, podemos programar ou fazer upload do código para a placa controladora com a ajuda de um módulo de interface USB para UART.

A placa controladora possui pinos dedicados para conectá-los facilmente, conforme mostrado neste diagrama de circuito. 

Agora podemos abrir o código deste servo customizado que fiz e carregá-lo no controlador. Antes de fazermos isso, devemos primeiro instalar as bibliotecas para o sensor AS5600 e o controle PID. Podemos fazer isso facilmente no Arduino IDE Library Manager. Assim que clicarmos no botão de upload, o código será gravado em nosso controlador ATmega328 por meio do módulo USB para interface UART.

E é isso, nosso servo motor personalizado está pronto. Agora podemos conectar um potenciômetro a ele para testá-lo. Apenas observe que a entrada analógica vai para o pino “S” na placa controladora, em vez do pino “A”.

Ao projetar a PCB, conectei esses dois pinos incorretamente ao ATmega328. Então podemos selecionar o modo de entrada analógica através da chave DIP e alimentar o servo.

E aqui está, podemos controlar a posição do servo motor com a ajuda da entrada analógica do potenciômetro. Convertemos com sucesso nosso motor DC em um servo motor.

Código Fonte


Agora vamos dar uma olhada no código deste servo motor personalizado.
02 
Visão geral do código

Assim, iniciamos o loop lendo o valor do codificador ou a posição atual do eixo.
11 
Então, se estivermos no modo rotação contínua, aceitamos os valores do monitor serial e os utilizamos como setpoint ou ângulo desejado para o controlador PID.
29 
Se o modo de entrada estiver configurado para potenciômetro, lemos sua entrada analógica e corrigimos o valor do setpoint dependendo de quão longe o giramos.
33 
Fazemos a mesma correção do setpoint se a entrada for o receptor RC. 

Aqui convertemos os valores do codificador RAW em valores de ângulo e, com essas instruções if, rastreamos em qual quadrante está a posição atual do eixo.
41 
Com essas informações, podemos acompanhar como o eixo gira e quando ele dará uma volta completa. O ângulo total é o valor de entrada para o controlador PID.
59 
Por outro lado, se estivermos no modo de rotação limitada, primeiro lemos o valor do potenciômetro que é usado para ajustar a faixa de rotação e ajustamos os limites de rotação esquerdo e direito de acordo.
62 
Se o modo de entrada for o potenciômetro, utilizamos seu valor como valor de setpoint para o controlador PID.
74 
Se o modo de entrada for o receptor RC, lemos o valor PWM de entrada do receptor e usamos esse valor como ponto de ajuste.
81 
Para definir um ponto central diferente, verificamos se pressionamos o botão e capturamos essa posição como um novo ponto central.
91 
De acordo com ele, temos que ajustar as leituras reais do codificador e compensá-las pela diferença angular entre o novo e o antigo ponto central. Usamos esse valor como valor de entrada para o controlador PID.
108 
Utilizando a entrada analógica do outro potenciômetro ajustamos o ganho proporcional do controlador PID e finalmente executamos o processo PID para obter um valor de saída.
116 
Usamos esse valor de saída para acionar os motores DC com sinal PWM, esquerdo ou direito, ou em posição imóvel dependendo do valor de saída do controlador PID, ou dependendo do erro entre a posição desejada e a real que o encoder lê.
121 
Então isso seria tudo para este vídeo. Observe que o código não está bem otimizado e há espaço para melhorias.

Além disso, se você tentar recriar este projeto, deverá estar preparado para solucionar problemas. Há muitas coisas que podem dar errado, especialmente ao soldar esses pequenos componentes SMD.

Não consegui fazer esse servo funcionar na primeira tentativa. Inicialmente, tive algumas conexões erradas na PCB, depois encomendei a PCB novamente com novas atualizações, mas ainda precisei de mais algumas tentativas até fazê-la funcionar. 

Esta seção do artigo ainda está em construção, verifique um pouco mais tarde….

Processo de manufatura

  1. Estatueta de porcelana Bisque
  2. Tecnologias de Secagem de Carvões de Lignite
  3. Efeito das inclusões nas propriedades do aço
  4. Monitoramento de indústrias usando IoT
  5. BLE Bot 9000
  6. Windows 10 IoT Core para Raspberry Pi 3 Modelo B +
  7. Eixo de moagem promete capacidade de moagem profissional
  8. Como escolher o serviço de usinagem CNC certo?
  9. Fonte de alimentação linear e fonte de alimentação de modo comutado (SMPS)
  10. Soldagem Ultrassônica:Princípio, Funcionamento, Equipamentos, Aplicação, Vantagens e Desvantagens