Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
pt:examples:motor:stepper [2015/12/14 18:13] articapt:examples:motor:stepper [2020/07/20 12:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +====== Motor de passo ======
  
 +//Conhecimento prévio: 
 +[HW] [[en:hardware:homelab:combo]], 
 +[AVR] [[en:avr:io]], 
 +[LIB] [[en:software:homelab:library:module:motor]], \\
 +[LIB] [[en:software:homelab:library:delay]]//
 +
 +===== Teoria =====
 +
 +[{{  :examples:motor:stepper:stepper.jpg?220|Motor de passo}}]
 +
 +
 +Motores de passo são amplamente utilizados em aplicações que exigem precisão. Ao contrário de motores DC, os motores de passo não têm escovas ou comutador - eles têm várias bobinas independentes, que são comutadas com eletrônicas externas (drivers). Rodar o rotor é feito por comutação de bobinas passo a passo, sem feedback. Esta é uma das falhas dos motores de passo - em caso de sobrecarga mecânica, quando o rotor não está girando, os passos são misturadas e o movimento torna-se impreciso. Dois tipos de motores de passo são distinguidos por bobinas: motores de passo unipolar e bipolar. Por construção três segmentos adicionais são considerados:
 +   * Passo de relutância váriável (alta precisão, baixo torque, baixo preço)
 +   * Passo de ímã permanente (baixa precisão, alto torque, baixo preço)
 +   * Passo híbrido síncrono (alta precisão, alto torque, alto preço)
 +
 +Motores de passo de relutância variável tem rolamentos dentados e rotor de ferro dentado. A maior força de tracção ocorre quando os dentes de ambos os lados estão cobrindo o outro. O motor de passo de ímã permanente, tal como o nome indica, são ímãs permanentes que orientam de acordo com a polaridade dos enrolamentos. Em motores de passo híbrido síncrono são usadas ambas as tecnologias.
 +
 +Dependendo do modelo do motor de passo, realizando uma rotação completa (360 graus) do rotor, exige centésimos de passos de comutações. Para o movimento estável e suave, são usados sistemas eletrônico de controle apropriados que controlam o motor de acordo com os seus parâmetros (inércia do rotor, torque, ressonância etc.). Em adição à electrônica de controle, diferentes métodos de comutação podem ser aplicados. Comutando um enrolamento numa fila é chamado passo completo, se a unidade é alternada entre um e dois enrolamentos é chamado meio passo. Micro passos de cosenos também é utilizado, permitindo controlo especialmente preciso e suave.
 +
 +**Motor passo unipolar**
 +
 +O motor de passo unipolar tem 5 ou 6 derivações. De acordo com o esquema do motor apenas ¼ dos enrolamentos são ativados. Linhas //Vcc// são normalmente conectadas à fonte de alimentação positiva. Durante a comutação as extremidades dos enrolamentos 1a, 1b, 2a e 2b são conectados através de transistores apenas para o chão e isso faz com que os seus aparelhos eletrônicos de controle sejam bastante simples.
 +
 +**Motor passo bipolar**
 +
 +[{{  :examples:motor:stepper:motor_stepper_unipolar.png?250|Enrolamentos de um motor de passo unipolar.}}]
 +[{{  :examples:motor:stepper:motor_stepper_bipolar.png?250|Enrolamentos de um motor de passo bipolar.}}]
 +
 +O Motor de passo bipolar difere do unipolar por ter a polaridade dos enrolamentos alterada durante a comutação. Metade dos enrolamentos são activados ao mesmo tempo, isto permite ganhar maior eficiência do que motores de passo unipolar. Motores de passo bipolar têm quatro ligações, cada uma ligada a uma meia-ponte diferente. Durante a comutação meias-pontes estão aplicando tensão positiva ou negativa às extremidades dos enrolamentos. Motores unipolares podem ser iniciados usando o driver bipolar: basta conectar linhas 1a, 1b, 2a e 2b dos enrolamentos (//Vcc// não será conectado).
 +
 +A comutação necessária para o controle de motores de passo com enrolamentos em modo de passo completo e modo de meio passo é apresentado na tabela em baixo. Uma vez que nos drivers de motores de passo unipolar só ocorre abertura dos transistores, os passos são marcados por 0 e 1. O controle dos motores de passo bipolare podem precisar de mais sinais e, portanto, os passos são marcados usando a polaridade das saídas de driver:
 +
 +^ ^   Unipolar   ^^^^   Bipolar   ^^^^
 +^ Passo ^ 1A ^ 2A ^ 1B ^ 2B ^ 1A ^ 2A ^ 1B ^ 2B ^
 +^   Passo completo   ^^^^^^^^^
 +| 1 ^ 1 | 0 | 0 | 0 ^ + | - | - | - |
 +| 2 | 0 ^ 1 | 0 | 0 | - ^ + | - | - |
 +| 3 | 0 | 0 ^ 1 | 0 | - | - ^ + | - |
 +| 4 | 0 | 0 | 0 ^ 1 | - | - | - ^ + |
 +^   Meio passo   ^^^^^^^^^
 +| 1 ^ 1 | 0 | 0 | 0 ^ + | - | - | - |
 +| 2 ^ 1 ^ 1 | 0 | 0 ^ + ^ + | - | - |
 +| 3 | 0 ^ 1 | 0 | 0 | - ^ + | - | - |
 +| 4 | 0 ^ 1 ^ 1 | 0 | - ^ + ^ + | - |
 +| 5 | 0 | 0 ^ 1 | 0 | - | - ^ + | - |
 +| 6 | 0 | 0 ^ 1 ^ 1 | - | - ^ + ^ + |
 +| 7 | 0 | 0 | 0 ^ 1 | - | - | - ^ + |
 +| 8 ^ 1 | 0 | 0 ^ 1 ^ + | - | - ^ + |
 +
 +===== Prática =====
 +
 +O Módulo combinação tem pontes-H para controlar motores de passo bipolares e a matriz de transistores para motor de passo unipolar.
 +
 +Existem funções //bipolar_init// e //unipolar_init// na biblioteca do HomeLab que definem os pinos de saída e funções // bipolar_halfstep// e //unipolar_halfstep// que executam rotações por meio passos determinados. A comutação é feita por tabela de meios passos, mas as operações de bit mais complexas são utilizadas. Motor de passo unipolar está ligado a um conector separado //Passo unipolar//, motor passo bipolar é conectado a um conector de motor DC, em que um dos motores bipolares ocupam pinos de driver de dois motor DC. A seção de código a seguir são funções de biblioteca HomeLab II (ATmega2561).
 +
 +<code c>
 +// Preparing for controlling the bipolar stepper motor
 +void bipolar_init(void)
 +{
 + DDRB |= 0x0F;
 + PORTB &= 0xF0;
 +}
 +
 +// Moving the bipolar stepper motor by half steps
 +void bipolar_halfstep(signed char dir,
 + unsigned short num_steps, unsigned char speed)
 +{
 + unsigned short i;
 + unsigned char pattern, state1 = 0, state2 = 1;
 +
 + // Insuring the direction +- 1
 + dir = ((dir < 0) ? -1 : +1);
 +
 + // Execution of half-steps.
 + for (i = 0; i < num_steps; i++)
 + {
 + state1 += dir;
 + state2 += dir;
 +
 + // Creating the pattern
 + pattern = (1 << ( (state1 % 8) >> 1) ) |
 +           (1 << ( (state2 % 8) >> 1) );
 +
 + // Setting the output.
 + PORTB = (PORTB & 0xF0) | (pattern & 0x0F);
 +
 + // Taking a break to wait for executing the step
 + sw_delay_ms(speed);
 + }
 +
 + // Stopping the motor
 + PORTB &= 0xF0;
 +}
 +</code>
 +
 +Uso das funções é demonstrado no programa exemplo que roda o motor alternadamente numa direcção e, em seguida para a outra, 200 passos. A velocidade de rotação do motor é determinada pelo comprimento dos travões feitos entre as etapas. Se o intervalo é definido para ser demasiado curto, o motor não pode realizar a sua vez, devido à inércia do rotor e o veio não se move.
 +
 +<code c>
 +// The test program for the stepper motor of the HomeLab
 +#include <homelab/module/motors.h>
 +
 +// Main program
 +int main(void)
 +{
 + // Set up of the motor
 + unipolar_init(0);
 +
 + // Endless loop
 + while (true)
 + {
 + // Turning the rotor 200 half steps to one direction 
 + // at speed of 30 ms/step.
 + unipolar_halfstep(0,+1, 2000, 30);
 +
 + // Turning 200 half steps to the other direction 
 + // at speed 30 ms/step.
 + unipolar_halfstep(0,-1, 2000, 30);
 + }
 +}
 +</code>
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0