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