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

Dominando motores de passo com Arduino:o guia completo


Neste tutorial aprenderemos tudo o que precisamos saber sobre como controlar motores de passo com Arduino. Abordaremos como controlar um motor de passo NEMA17 em combinação com um A4988, um DRV8825 e um driver de passo TMC2208.

Esta combinação de motores de passo e drivers é usada em inúmeras aplicações onde o controle de posição é necessário, como impressoras 3D, máquinas CNC, robótica, máquinas de automação e assim por diante.

Eu já o usei em muitos dos meus projetos Arduino, como o seguinte:

Explicarei detalhadamente como eles funcionam, como conectar motores de passo com Arduino, como definir o limite de corrente dos drivers e como programá-los com ou sem biblioteca Arduino. Além disso, mostrarei como podemos controlar facilmente vários motores de passo usando um escudo Arduino CNC para qualquer tipo de projeto Arduino. 

Portanto, temos muito o que abordar neste tutorial. Você pode assistir ao vídeo a seguir ou ler o tutorial escrito abaixo, que também inclui todos os exemplos de códigos e diagramas de fiação.

O que é um motor de passo e como funciona?


Começarei explicando brevemente o que é motor de passo e como funciona, pois isso nos ajudará a entender melhor todo o resto deste tutorial. 

Um motor de passo é um tipo único de motor DC sem escova cuja posição pode ser controlada com precisão mesmo sem qualquer feedback.

O princípio de funcionamento de um motor de passo é baseado em campos magnéticos. Possui dois componentes principais, um estator e um rotor. O rotor geralmente é um ímã permanente e é cercado por algumas bobinas no estator.

Quando energizamos ou deixamos a corrente fluir através das bobinas, campos magnéticos específicos são gerados no estator que atraem ou repelem o rotor. Ao ativar as bobinas, passo a passo, uma após a outra em uma ordem específica, podemos conseguir o movimento contínuo do rotor, mas também podemos fazê-lo parar em qualquer posição.

Então é por isso que esses motores são chamados de motores de passo, eles se movem em passos discretos. 

Ao aumentar o número de pólos magnéticos do rotor, podemos aumentar o número de posições de parada possíveis, aumentando assim a resolução ou a precisão do motor. Observe que esta é apenas uma explicação básica e você pode encontrar mais detalhes em meu tutorial Como funcionam os motores de passo. 

Um motor de passo típico, um NEMA17 por exemplo, possui 50 pontos de parada ou etapas no rotor. Por outro lado, o estator pode ter várias bobinas organizadas em duas fases que proporcionam quatro orientações ou posições diferentes do campo magnético.

Assim, os 50 passos do rotor multiplicados pelas 4 diferentes orientações do campo magnético, perfazem um total de 200 passos para completar uma rotação completa. Ou se dividirmos 360 graus por 200 passos, teremos uma resolução de 1,8 graus por passo.

Mencionei que as bobinas do estator são organizadas em duas fases, e também podemos notar isso se olharmos a quantidade de fios de um motor de passo. Possui 4 quatro fios, dois para cada fase. As quatro orientações diferentes do campo magnético são possíveis, pois podemos deixar a corrente fluir através das fases em ambas as direções.

Existem também motores de passo com 5, 6 ou até 8 fios, mas ainda funcionam em duas fases ou controlamos com apenas quatro terminais.

O problema com eles é que podem fornecer diferentes características de desempenho, como mais torque ou mais velocidade, dependendo de como conectamos esses fios nos quatro terminais de controle.

Porém, com esta breve explicação, agora entendemos que para acionar um motor de passo não podemos simplesmente conectar energia a ele, pois nada acontecerá. Em vez disso, temos que energizar as duas fases do motor em ambas as direções e ativar ou enviar pulsos a elas em uma ordem específica, em uma sequência oportuna. Então é por isso que precisamos de drivers para controlar motores de passo. 

Existem muitos tipos e tamanhos de drivers, correspondendo aos diversos tipos e tamanhos de motores de passo. Porém, o princípio básico de funcionamento de todos eles é que possuem duas pontes H que permitem energizar as fases do motor nos dois sentidos.

Claro, eles têm muitas outras funções, como micro passo, limitação de corrente e assim por diante, que nos permitem controlar facilmente os motores de passo, que é o propósito deles.

Como controlar o motor de passo NEMA17 com Arduino e driver de passo A4988


Tudo bem, agora podemos dar uma olhada no primeiro exemplo deste tutorial, como controlar um motor de passo NEMA 17 com um driver de passo A4988. 

Tudo bem, agora podemos dar uma olhada no primeiro exemplo deste tutorial, como controlar um motor de passo NEMA 17 com um drive de passo A4988.

O NEMA17 é o motor de passo mais popular entre os fabricantes, pois oferece ótimo desempenho e ao mesmo tempo é acessível. Ele também pode ser encontrado em quase todas as impressoras 3D de mesa e gravadores a laser. 

Geralmente, o motor de passo NEMA17 tem 200 passos, ou resolução de 1,8 graus por passo, mas também existem modelos com resolução de 400 passos e 0,9 graus por passo. Devemos observar aqui que a designação NEMA17 na verdade descreve apenas o tamanho do motor em termos do tamanho do painel frontal.

O número representa o tamanho do painel frontal em polegadas quando dividido por 10, ou neste caso seria 17 dividido por 10 igual ao painel frontal de 1,7 polegadas, ou painel frontal de 2,3 polegadas no caso de NEMA23.

Assim, o tamanho do painel frontal é fixo, mas o comprimento dos steppers NEMA17 pode variar de 20mm a 60mm, e com isso a necessidade de potência do motor também varia. O requisito de energia geralmente é definido pela quantidade de corrente que o motor pode consumir, e a faixa para esses motores de passo NEMA17 é de 0,3A a 2,5A.

Agora, de acordo com a corrente nominal do motor de passo, precisamos escolher um driver adequado que possa suportar essa quantidade de corrente. O driver de controle de motor de passo NEMA17 mais popular é o driver de motor de passo A4988.

O A4988 tem uma corrente máxima de 2A por bobina, mas na verdade é uma classificação de pico. Recomenda-se manter a corrente em torno de 1A, mas claro, também é possível ir até 2A se um bom resfriamento for fornecido ao IC. 

Um ótimo recurso que o driver de passo A4988 possui, na verdade todas as outras unidades, é a limitação de corrente. Com isso podemos facilmente definir quanta corrente o motor consumirá, independentemente da classificação do motor. Por exemplo, podemos conectar até mesmo um motor de passo com classificação de 2,5A, mas limitaremos a corrente do driver a 1,5A. Assim, embora o motor não funcione na sua capacidade máxima, ainda assim poderemos utilizá-lo.

Por outro lado, se o motor tiver uma classificação inferior ao limite de corrente definido no driver, o motor superaquecerá. Claro, é sempre recomendável tentar combinar a corrente nominal do motor com a corrente nominal do driver.

Conexão A4988 e Arduino


Tudo bem, agora vamos ver como conectar o driver A4988 ao motor de passo e ao controlador Arduino.

Você pode obter os componentes necessários para este tutorial do Arduino nos links abaixo:

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

No canto superior direito do driver temos os pinos VMOT e GND e aqui conectamos a fonte de alimentação do motor que pode variar de 8 a 36V. Aqui também é recomendado usar um capacitor de desacoplamento entre esses dois pinos para proteger a placa contra picos de tensão. Devemos usar um grande capacitor eletrolítico com capacidade de pelo menos 47uF. 

A seguir estão os quatro pinos onde conectamos o motor de passo. Uma fase do motor vai nos pinos 1A e 1B, e a outra fase nos pinos 2A e 2B. 

Às vezes pode ser um pouco difícil reconhecer quais dois fios do motor formam uma fase, mas existem várias maneiras de identificá-los. A maneira mais simples é girar o eixo do motor de passo manualmente e, em seguida, conectar dois fios entre si. Se você conectar dois fios que formam uma fase, a rotação do eixo seria um pouco mais difícil.

Outra forma é usar um multímetro e verificar a continuidade entre os dois fios. Se você conectar dois fios que formam uma fase, ocorrerá um curto-circuito e o multímetro começará a apitar.

Assim que encontrarmos uma fase, podemos conectá-la a qualquer posição das duas posições do driver, a ordem não importa. 

Em seguida, temos o IC ou os pinos lógicos da fonte de alimentação, VDD e GND, que podem ser de 3V a 5V. Do outro lado temos os pinos Step e Direction, que podem ser conectados a qualquer pino da placa Arduino. Com o pino Direction selecionamos o sentido de rotação do motor, e com o pino Step controlamos os passos do motor. A cada pulso que enviamos ao pino Step, o motor avançará um passo na direção selecionada. 

Logo acima desses pinos, temos os pinos Sleep e Reset que são usados para, como seus nomes sugerem, colocar o driver em modo sleep ou redefini-lo. Devemos observar que ambos os pinos estão ativos em nível baixo. O pino Sleep por padrão está no estado HIGH, mas o pino RST está flutuando. Isso significa que para ter o driver habilitado, a maneira mais fácil é apenas conectar esses dois pinos um ao outro, assumindo que não usaremos as funções desses pinos. 

O pino Enable também está ativo em nível baixo, portanto, a menos que o puxemos para ALTO, o driver será habilitado. 

Os próximos três pinos, MS1, MS2 e MS3, servem para selecionar a resolução do passo do motor. Já dissemos que a resolução do passo depende da construção do motor que normalmente é de 200 passos por revolução para um motor de passo NEMA 17. Porém, todos os drivers de passo possuem esse recurso chamado microstepping que permite acionar o motor em resoluções mais altas. Isto é conseguido energizando as bobinas em um nível de corrente intermediário, que produz locais de etapas intermediárias.

Por exemplo, se selecionarmos a resolução de um quarto de passo, os 200 passos do motor se tornarão 200 multiplicados por 4 iguais a 800 micropassos por revolução. O driver usará quatro níveis de corrente diferentes nas bobinas para conseguir isso. 

O driver A4988 tem uma resolução máxima de 16 micropassos, o que faria com que um motor NEMA17 de 200 passos tivesse 3.200 passos por revolução, ou seja, 0,1125 graus por passo. Essa precisão é realmente impressionante e é por isso que esses tipos de motores de passo e drivers são usados ​​em tantas aplicações. Na verdade, existem drivers de passo que têm até 256 micropassos, ou seja, 51.200 passos por revolução, ou 0,007 graus por passo.

Porém, esses três pinos possuem resistores pull-down, portanto, se os deixarmos desconectados, o driver funcionará em modo full-step. Para selecionar uma resolução de microstepping diferente, precisamos conectar 5V aos pinos apropriados de acordo com esta tabela. 

Limitação de corrente A4988


Tudo bem, agora que sabemos como conectar o motor de passo e o driver à placa Arduino, podemos prosseguir explicando como programar ou codificar o Arduino para controlar o stepper. Porém, antes de fazermos isso, ou antes de alimentarmos o motor, há mais uma coisa muito importante que precisamos fazer:ajustar o limite de corrente do driver.

Como já explicamos, precisamos ajustar o limite de corrente do driver para ser inferior à corrente nominal do motor, caso contrário o motor superaqueceria.

Há um pequeno potenciômetro trimmer no driver A4988, através do qual podemos ajustar o limite de corrente. Girando o potenciômetro no sentido horário, o limite de corrente aumenta e vice-versa. Existem dois métodos que podem ser usados ​​para determinar o valor real do limite de corrente. 

O primeiro método envolve medir a tensão de referência no próprio potenciômetro e no GND. Podemos medir a tensão de referência usando um multímetro e usar esse valor na seguinte fórmula para calcular o limite de corrente do driver:

Limite de corrente =Vref / (8 x Rcs)

O Rcs é a resistência de detecção de corrente ou os valores dos resistores de detecção de corrente localizados próximos ao chip. Dependendo do fabricante, esses valores são geralmente 0,05, 0,1 ou 0,2 ohms. Portanto, precisamos examinar mais de perto o valor desses resistores para calcular com precisão o limite de corrente com este método. No meu caso, esses resistores foram rotulados como R100, o que significava 0,1 ohms.

Por exemplo, se medirmos uma tensão de referência de 0,7V e tivermos resistores de 0,1 ohms, o limite de corrente seria 0,875A. Ou se quisermos limitar a corrente para, digamos, 1A, devemos ajustar a tensão de referência para 0,8V. 

O segundo método para definir o limite de corrente é medir diretamente a corrente através das bobinas. Para isso, precisamos conectar o motor de passo e o driver conforme explicado anteriormente. Podemos pular a conexão do controlador, mas em vez disso conectar 5 V aos pinos de direção e passo para que o motor permaneça ativo e mantenha uma posição. Os pinos MS devem ser deixados desconectados para que o driver funcione em modo full-step. Então podemos desconectar uma linha ou bobina do motor e conectá-la em série com um amperímetro. Desta forma, uma vez que alimentamos o driver tanto com a tensão lógica, 5V, quanto com a alimentação do motor 12V no meu caso, podemos ler quanta corrente está passando pela bobina.

Porém, devemos observar aqui que quando o driver funciona em modo full-step, a corrente nas bobinas pode atingir apenas 70% do limite de corrente real. Assim, ao utilizar o driver nos demais modos de microstepping, a leitura do amperímetro deve ser multiplicada por 1,3 para se obter o valor real do limite de corrente do driver. 

Tentei os dois métodos para configurar o limite atual do driver e eles me deram aproximadamente os mesmos resultados.

Motores de passo e Arduino – códigos de exemplo


No entanto, agora podemos prosseguir com a programação do Arduino ou dar uma olhada em vários exemplos de códigos para controlar um motor de passo com uma placa Arduino.

Vamos começar com um exemplo de código muito básico de como controlar um motor de passo sem usar uma biblioteca.

Código de exemplo 1
01 
Descrição do código:

Aqui tudo o que precisamos fazer é definir a qual número de pinos os pinos STEP e DIR estão conectados e defini-los como saídas. No loop, primeiro definimos o sentido de rotação do motor, colocando o status do pino de direção em ALTO. Em seguida, usando um loop “for”, enviamos 200 pulsos para o pino STEP que fará o motor girar um ciclo completo, considerando que funciona em modo full-step. Os pulsos são gerados simplesmente alternando o estado do pino STEP de HIGH para LOW com algum atraso entre eles. Este atraso de tempo realmente define a velocidade de rotação. Se o baixarmos, a velocidade de rotação aumentará à medida que os passos ocorrerem mais rapidamente e vice-versa. 

Em seguida, mudamos o sentido de rotação e, usando outro loop “for”, enviamos 400 pulsos que fariam o motor girar dois ciclos completos. Porém, se mudarmos o modo de microstepping do driver, digamos um quarto de passo, o que faria o motor ter 800 passos agora, o primeiro loop fará o motor girar apenas 90 graus, e o segundo loop apenas meia rotação.

Código de exemplo 2

Aqui está outro exemplo simples, controlando a velocidade do motor de passo usando um potenciômetro.

Para isso basta conectar o potenciômetro ao Arduino e ler seu valor através da função analogRead().
10 
Descrição do código:

Podemos então mapear ou converter os valores do potenciômetro que vão de 0 a 1023, para valores adequados para serem um tempo de atraso em microssegundos para os pulsos Step. Achei que o valor mínimo para o atraso entre as etapas era de cerca de 300 microssegundos. Ao descer mais, o motor de passo começou a pular etapas. 

No geral, controlar motores de passo com este método é fácil e funciona, mas apenas se o controle necessário for simples, como mostrado nos exemplos. Caso precisemos de um controle mais complexo, a melhor forma é utilizar uma biblioteca Arduino.

Controlando motores de passo com Arduino e a biblioteca AccelStepper – exemplos


A biblioteca mais popular para controlar motores de passo com Arduino é a biblioteca AccelStepper de Mike McCauley. É uma biblioteca extremamente versátil com controle de velocidade, aceleração e desaceleração, definição de posições alvo, controle de vários motores de passo simultaneamente e assim por diante.

A biblioteca possui uma ótima documentação explicando como cada função funciona. Já usei esta biblioteca para vários dos meus projetos Arduino, para controlar o movimento do meu DIY Camera Slider, da máquina dobradeira de fio 3D, do braço do robô SCARA e alguns outros. Caso você tenha interesse, há detalhes e explicações de código para cada projeto no site. 

Agora vamos dar uma olhada em alguns exemplos de código usando esta biblioteca.

Código de exemplo – Controle de velocidade do motor de passo usando um potenciômetro


O primeiro exemplo será controlar a velocidade do motor através do potenciômetro.
28 
Descrição do código:

Então, aqui primeiro precisamos incluir a biblioteca AccelStepper. Claro, antes de fazermos isso, precisamos instalar a biblioteca e podemos fazer isso a partir do gerenciador de biblioteca Arduino IDE. Basta pesquisar “AccelStepper” e a biblioteca aparecerá e poderemos instalá-la. 

Então, precisamos criar uma instância da classe AccelStepper para nosso motor. O primeiro parâmetro aqui é o tipo de driver, neste caso para um driver com dois pinos de controle esse valor é 1, e os outros dois parâmetros são os números dos pinos aos quais nosso driver está conectado ao Arduino. Se tivermos vários motores de passo, precisamos definir cada um deles assim, e podemos nomeá-los como quisermos, neste caso chamei meu motor de passo1. 

Na seção de configuração basta definir a velocidade máxima do motor que é definida em passos por segundo. Este valor pode ir até 4.000, mas na documentação da biblioteca afirma-se que valores de velocidade superiores a 1.000 passos por segundo podem não ser confiáveis. 

Na seção loop, usando a função setSpeed() definimos a velocidade atual do motor, e neste caso é a entrada analógica do potenciômetro que vai de 0 a 1023.

Para que o motor se mova e implemente essa velocidade constante, precisamos chamar a função runSpeed() a cada intervalo. Um valor negativo aqui, ou simplesmente incluir um sinal de menos antes do valor, faria o motor de passo girar na direção oposta.

Código de exemplo – Controlando dois motores de passo com aceleração e desaceleração


Aqui está outro exemplo de controle de dois motores de passo com implementação de aceleração e desaceleração usando a biblioteca AccelStepper.
32 
Descrição do código:

Portanto, precisamos definir os dois motores de passo, e no setup, utilizando a função setAcceleration() definir o valor de aceleração dos motores. Usando a função setCurrentPosition() definimos a posição dos motores como 0 passos. 

Na seção de loop, começamos com a função moveTo() através da qual informamos ao motor em que posição deve ir ou quantos passos ele deve se mover. No caso de resolução de um quarto de passo, 800 passos significariam uma rotação completa. Em seguida, a função runToPosition() move o motor para essa posição enquanto implementa aceleração e desaceleração. Porém, esta é uma função de bloqueio, portanto a execução do código permanecerá lá até que o motor de passo atinja essa posição. 

Com o mesmo método movemos o segundo motor 1600 passos ou duas rotações completas com resolução de um quarto de passo. 

Se não quisermos que nosso código seja bloqueado até que o motor atinja a posição alvo, em vez de usar a função runToPosition(), devemos usar a função run(). O run() também implementa aceleração e desaceleração para atingir a posição desejada, mas dá apenas um passo por chamada. Portanto, precisamos chamá-lo com a maior frequência possível. Por esse motivo, colocamos aqui as funções run() para ambos os motores neste loop while, que é executado até que ambos os steppers alcancem a posição 0. Anteriormente configuramos os dois motores para irem para a posição 0 com as funções moveTo(). 

Também poderíamos adicionar mais código nesse loop “while” e fazer outras coisas ao longo do funcionamento do motor. Na verdade, existem muitos métodos para operar os motores e fazer outras coisas também. Recomendo consultar a documentação bem descrita da biblioteca para entender como cada função funciona e implementá-las de acordo com suas necessidades.

Código de exemplo – Controlando vários motores de passo com a biblioteca AccelStepper


Gostaria de mostrar mais um exemplo usando a biblioteca AccelStepper e controlando vários motores de passo de forma coordenada. Isso significa que podemos definir posições alvo para cada stepper e eles podem alcançar suas posições todos ao mesmo tempo, independentemente da distância que precisem percorrer.

Isso pode ser feito facilmente usando a classe MultiStepper que vem com a biblioteca AccelStepper.
40 
Descrição do código:

Aqui também precisamos incluir a classe MultiStepper e criar uma instância dela. Então precisamos definir um array, tipo “long”, que será utilizado para armazenar as posições alvo de nossos motores. Na seção de configuração, precisamos definir os valores de velocidade máxima dos steppers e adicionar os steppers à instância MultiStepper criada anteriormente, que no meu caso chamei de “steppersControl”. 

Na seção de loop, começamos armazenando os valores da posição alvo no array que criamos anteriormente. Configurei o primeiro stepper para mover uma rotação, o segundo, duas rotações e o terceiro, três rotações. Então podemos atribuir este array à função moveTo() que calculará as velocidades necessárias para que todos os motores cheguem a essas posições ao mesmo tempo. Depois só temos que chamar a função runSpeedToPosition() que moverá os motores para sua posição. Embora devamos observar que esta função bloqueia o código até que os steppers atinjam sua posição alvo. Poderíamos usar a função run() em vez disso, se não quisermos bloquear o código. Devemos também observar que a classe MultiStepper não suporta aceleração e desaceleração. 

Porém, se quiser saber mais, a partir de exemplos mais avançados, você pode conferir meus projetos de Arduino que já mencionei, todos os detalhes e os códigos deles estão no site.

Escudo CNC para controlar vários motores de passo para qualquer projeto Arduino


Ainda falando sobre o controle de múltiplos motores de passo, vale a pena mencionar e dar uma olhada no escudo Arduino CNC.

O objetivo principal do escudo Arduino CNC é controlar máquinas CNC de 2 ou 3 eixos, mas na verdade é uma ótima opção para controlar qualquer tipo de projeto onde precisamos controlar vários motores de passo, pois é compacto e fornece conexões fáceis para os drivers e os motores. 

Este escudo fica no topo de uma placa Arduino UNO e pode controlar até 4 motores de passo individuais e tem todos os pinos Arduino restantes disponíveis para uso. Usei esta combinação de uma placa Arduino UNO e o escudo CNC para controlar meu braço robótico SCARA de 4 eixos.

Atualizarei esta seção do artigo, como usar o escudo CNC com Arduino com mais detalhes em breve.

DRV8825 versus A4988


Tudo bem, agora vamos ver como podemos controlar motores de passo usando o outro driver que mencionei no início, o DRV8825.

Na verdade, tudo o que explicamos até agora sobre o controle de motores de passo com o driver de passo A4988 também se aplica ao DRV8825. O princípio de funcionamento, as conexões e a codificação são quase os mesmos para ambos os drivers. A diferença entre eles está nas características técnicas e agora vamos dar uma olhada e compará-los.

O DRV8825 é um driver de passo da Texas Instruments que pode ser usado como substituto direto do driver Allegro A4988, pois suas conexões são as mesmas. As três principais diferenças entre eles são que o DR8825 pode fornecer mais corrente do que o A4988 sem resfriamento adicional (1,5A vs 1A), tem tensão de alimentação máxima mais alta (45V vs 35V) e oferece maior resolução de micropassos (32 vs 16 micropassos). 

Claro, eles também têm algumas outras pequenas diferenças. Por exemplo, o potenciômetro de limite de corrente tem uma localização diferente e a relação entre a configuração do limite de corrente e a tensão do pino de referência é diferente. O DRV8825 não necessita de alimentação lógica e a localização desse pino é usada como saída de FALHA.

Porém, é seguro conectar o pino FAULT diretamente a 5V, portanto o DRV8825 pode ser usado como um substituto direto em sistemas projetados para o driver A4988. 

É importante notar, porém, que ao substituir um driver A4988 por um DRV8825 é muito importante garantir que a orientação do driver esteja correta. Já mencionei, os potenciômetros deles estão em locais diferentes, no A4988 fica abaixo do chip, e no DRV8825 fica acima do chip, e isso às vezes pode causar confusão e o driver pode ser facilmente colocado no lado errado. 

Para definir o limite de corrente, podemos medir a tensão de referência com uma ponta de prova no GND e outra no próprio potenciômetro.

A fórmula de cálculo do drive de passo DRV8825 é a seguinte:

Limite atual =Vref x 2

Quanto à seleção da resolução de microstepping, podemos usar a tabela a seguir.

No geral, o DRV8825 é um driver de passo melhor que o A4988, pois oferece classificações de corrente e tensão mais altas e maior resolução de micropasso, o que resulta em uma operação mais suave e silenciosa do motor de passo.

Driver de passo TMC2208


Falando em operação mais suave e silenciosa, vamos dar uma olhada no driver de passo TMC2208. O chip TMC2208 é fabricado pela Trinamic, uma empresa alemã especializada em eletrônicos de controle de movimento. O TMC2208 é um driver de motor de passo silencioso que também pode ser usado como substituto direto em sistemas projetados para os drivers A4988 ou DRV8825. É amplamente utilizado em impressoras 3D de mesa, gravadores a laser, scanners e assim por diante.

O que diferencia este driver dos outros dois é a sua unidade de interpolação integrada que fornece 256 subdivisões ou micropassos. Isso permite um controle sinusoidal perfeito que é gerado internamente no chip. Isso significa que o driver emitirá 256 micropassos para o motor de passo, independentemente da resolução de micropassos selecionada por meio dos dois pinos MS, 2, 4, 8 ou 16 micropassos. Isso proporciona uma operação mais suave e reduz significativamente a carga do microcontrolador.

Este recurso do driver, em combinação com sua tecnologia StealthChop2 de controle de corrente silenciosa, fornece aquele controle ultrassilencioso dos motores de passo. Aqui está uma comparação dos níveis de ruído entre os três drivers.

Níveis de ruído do driver de passo: A4988 em torno de 65dB, DRV8825 em torno de 67dB e TMC2208 em torno de 41dB.

O TMC2208 aciona os motores de passo de forma totalmente silenciosa, o que é realmente impressionante.

A classificação atual do TMC2208 é ligeiramente superior à do driver A4988, ou é 1,2A com corrente de pico de 2A. Para definir o limite atual do driver, novamente podemos usar o mesmo método explicado para os outros drivers. Precisamos medir a tensão de referência com uma ponta de prova no GND e outra ao lado do pino Enable.

A fórmula para calcular o limite atual é a seguinte:

Limite atual =Vref x 0,71

Embora possa ser usado como substituto direto, o driver TMC2208 possui uma pinagem ligeiramente diferente em comparação ao driver A4988. Aqui temos apenas dois pinos para selecionar a resolução de micropassos e para habilitar o driver precisamos conectar o pino Enable ao GND.

Em termos de codificação, é igual aos outros dois drivers. 

O driver TMC2208 também possui alguns outros recursos mais avançados em comparação com os outros dois drivers, como por exemplo, uma interface UART simples de usar que permite controlar o driver com apenas uma linha, em vez dos dois pinos Step e Dir. Além disso, ofereço mais opções de ajuste e controle. 

No geral, o TMC2208 é um driver melhor que o A4988 e o DRV8825, mas isso é normal, pois tem um preço mais alto. Porém, se você não precisa desses recursos extras e os níveis de ruído não o preocupam, os outros dois drivers são uma ótima escolha.

Conclusão


Portanto, cobrimos praticamente tudo o que precisamos saber sobre o controle de motores de passo com Arduino. O NEMA17 e os três drivers, o A4988, o DRV8825 e o TMC2208 são incrivelmente versáteis e podem ser usados ​​em muitas aplicações onde o controle de posição é necessário. Você sempre pode aprender mais explorando alguns dos meus projetos do Arduino.

Se você estiver interessado em aprender como controlar motores de passo maiores como NEMA23 ou NEMA34, terei um tutorial dedicado para isso também. 

Espero que você tenha gostado deste tutorial e aprendido algo novo. Não se esqueça de se inscrever e fique à vontade para fazer qualquer pergunta na seção de comentários abaixo.

Processo de manufatura

  1. Estatueta de porcelana Bisque
  2. Robô Pi Simples
  3. Principais características de um alto-forno moderno de alta capacidade
  4. Métodos e Máquinas de Fresagem CNC
  5. Cycle Chaser
  6. Injeção de carvão pulverizado em um alto-forno
  7. Filme fotográfico
  8. Robô da caixa de CD do Raspberry Pi
  9. Tipos de motor de automóvel
  10. Vantagens da usinagem por vibração de peças mecânicas de precisão