Tinha ali uns motores de passo, tirados de um impressora velha e decidi aproveitar aquilo para ver qual a velocidade que ele atingia.

Mas começando pelo principio...

Motor de passo, o que é?

Um motor de passo é um tipo de motor que como o nome indica, roda em "passos", ou seja em ângulos certos (por norma escrito no próprio motor).

Para fazer um passo, deve-se fazer passar bastante corrente pelas bobinas do motor, de modo a criar um campo magnético e a atrair um dos dentes do eixo.

Também de ter em atenção que quanto maior for a velocidade de rotação, menor é o torque do motor (ver datasheet em baixo).



Informação mais detalhada AQUI.

No meu caso, o motor a utilizar é o M42SP-7T da MITSUMI.

Vemos então que ele utiliza a excitação de 2 fases em simultâneo. Quer isto dizer que dos 4 fios que saem do motor de passo (correspondendo ás 2 bobinas) 2 vão ficar com uma tensão mais elevada e os outros dois com uma mais baixa (neste caso a GND).

AQUI, para mais informações sobre este tipo de excitação.

Driver:

Já falei em cima que é preciso fazer passar bastante corrente pelas bobinas para que criem um campo eléctrico suficientemente forte para atrair a o dente do eixo.

Como podem ver na foto em baixo, a indutância destas bobinas é de 10R, assim quando alimentado a 12V precisa de pelo menos 1,2A.

[caption id="attachment_47" align="aligncenter" width="300"] "Chapa" do motor[/caption]

Para fazer passar toda esse corrente, precisa-se usar uma ponte H, para que um micro possa controlar a velocidade, posição, etc, do motor.

Há 2 soluções. Fazer a ponte H, com os 4 transístores/MOSFET, ou então ver se há algum integrado com uma ponte H que suporte a corrente máxima que se vai usar.
No meu caso, escolhi o L298, para fazer o driver de corrente.

Após identificar as bobinas do motor (com um simples multímetro), bastou ligar tudo como mostra o esquema em baixo.

[caption id="attachment_45" align="aligncenter" width="300"] Esquema de ligações[/caption]

MCU utilizado e programa:

Para este teste usei o microcontrolador PIC16LF1827.

O programa é bastante simples. São accionados 2 pinos simultaneamente é feito um delay e são accionados outro dois pinos e por aí adiante, tal como mostra a seguinte figura:

[caption id="" align="aligncenter" width="329"] Accionamentos[/caption]

Como quero atingir uma grande velocidade, não posso arrancar logo com um tempo muito curto, pois o motor de passo não tem força para arrancar logo aquela velocidade.

Então a cada 4 passos (4*7,5º=30º) o tempo entre cada passo é decrementado. Desta forma, tenho um arranque progressivo e vou conseguir fazer com que ele chegue a uma velocidade maior.

O tempo mínimo que estipulei é de 500uS.

#include "16lf1827.h"

#fuses INTRC_IO, NOLVP, NOWDT, NOMCLR, NOIESO, PUT, NOBROWNOUT

#use delay (internal=8MHz)

void main()
{
int16 tempo;

setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_spi(FALSE);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
setup_oscillator(OSC_8MHZ);

output_A(0);

delay_ms(2000);

   for(tempo=5000;tempo>500; tempo-=5)         //aumenta a velocidade, descresce o tempo
   {
      output_A(0b00001001);
      delay_us(tempo);
      output_A(0b00000101);
      delay_us(tempo);
      output_A(0b00000110);
      delay_us(tempo);
      output_A(0b00001010);
      delay_us(tempo);
   }   

   while(TRUE)                         //velocidade fixa
   {
      output_A(0b00001001);
      delay_us(tempo);
      output_A(0b00000101);
      delay_us(tempo);
      output_A(0b00000110);
      delay_us(tempo);
      output_A(0b00001010);
      delay_us(tempo);
   }


 

Vídeo







Notas finais

Motores deste tipo são bastante usados em equipamentos de precisão que podem facilitar em muito a nossa vida.
Nunca é demais saber trabalhar com um pouco de tudo.

É bastante fácil liga-lo a um varão roscado e fazer de com que de forma programada e sistemática possa mover na vertical um berbequim, por exemplo...

0 Responses so far.

Enviar um comentário