Table of Contents

 

Motor DC

Teoria

Motor DC

Motores de corrente contínua (ou motores DC) de ímã permanente são muito comuns em diferentes aplicações, onde são essenciais pequenas dimensões, alta potência e baixo preço. Devido à sua velocidade relativamente elevada, eles são utilizados em conjunto com a transmissão (à saída menor velocidade e um binário mais elevado).

O gráfico ideal de relação entre a velocidade (V), a corrente (I), potência (P), eficiência (η) e torque (T) de um motor DC.

Motores DC ímã permanente têm uma construção bastante simples e o seu controle é bastante elementar. Embora o controlo seja fácil, a sua velocidade não é precisamente determinada pelo sinal de controlo, pois depende de vários factores, principalmente do binário aplicado no veio de corrente e da alimentação. A relação entre binário e velocidade de um motor de corrente contínua ideal é linear, o que significa: quanto mais alta é a carga sobre o eixo menor é a velocidade do veio e maior é a corrente através da bobina.

Motores DC com escova usam corrente contínua e, basicamente, não precisam de sistema eletrônico de controle especiais porque toda a comunicação necessária é feita dentro do motor. Quando o motor está a funcionar, duas escovas estáticas estão a deslizar sobre o comutador rotativo e segurando a tensão sobre as bobinas. O sentido de rotação do motor é determinado pela polaridade da corrente. Se o motor deve girar somente numa direção, então a corrente pode vir através de relé ou alguma outra conexão simples. Se o motor tem que girar em ambos os sentidos, então um circuito electrónico chamado ponte-H é usado.

A ponte-H tem quatro transistores (ou quatro grupos) a direccionar a corrente para accionar o motor. O esquema elétrico da ponte-H é semelhante à letra H e é daí que vem o nome. A peculiaridade da ponte-H é a possibilidade de aplicar ambas as polaridades direcionais para o motor. A imagem ao lado mostra a principal economia da ponte-H com base no exemplo dos interruptores. Se dois interruptores diagonais estão fechados, o motor começa a funcionar. A direcção da rotação do motor depende em diagonal que os interruptores fecham. Na ponte-H real os interruptores são substituídas por transistores que são seleccionados de acordo com a corrente do motor e tensão.

O princípio de funcionamento de ponte-H utilizado em interruptores.

Ponte-H também pode alterar o sentido de rotação além da velocidade de rotação do motor. Também existem pontes-H integradas, para a realização de correntes menores. Para maiores correntes, MOSFET-s de poder especial são usados. A ponte-H com outros produtos eletrônicos é chamado controlador ou driver do motor.

Embora a velocidade do motor DC seja fácil de controlar, não existe garantia de que a velocidade desejada seja alcançada. A velocidade real depende de muitos factores, principalmente binário no eixo de saída do motor, corrente e outras características do motor. A velocidade e o binário de saida do motor ideal saída é linearmente dependente, isto é, quanto maior for o binário de saída, menor é a velocidade do motor, e consome mais corrente. Isto depende do tipo exacto de motor no caso de motor real.

Um motor DC pode ser controlado com sinais analógicos ou digitais.

Normalmente, a velocidade do motor é dependente da tensão aplicada nos terminais do motor. Se o motor alimentar uma tensão nominal, ele roda a uma velocidade nominal. Se a tensão dada ao motor é reduzida, a velocidade do motor e o binário são reduzidos também. Este tipo de controle de velocidade é também chamado de controle analógico. Isto pode ser implementado, por exemplo, usando um transistor ou um reostato.

Motores DC são controlados por microcontroladores, e porque microcontroladores são dispositivos digitais, também é razoável controlar os motores digitalmente. Isto é conseguida através da utilização de modulação de largura de impulso (PWM - pulse with modulation), por transistores de comutação rápida on - off. A potência do motor total é algo entre parado e velocidade máxima. O tempo de todo o período de PWM quando o transistor é aberto, chamado ciclo de trabalho, que é medido em percentagem. 0% significa que o transistor está constantemente fechado e não conduz, 100% significa que o transistor está aberto e conduz. A frequência de PWM deve ser suficientemente elevada para evitar a vibração do eixo do motor. Em baixas freqüências o motor produz um ruído e, portanto, é principalmente utilizada a modulação de frequência acima de 20 kHz. No entanto, a eficiência dos transistores sofre em freqüências muito altas.

Em comparação com o controlo analógico, o digital tem uma série de vantagens. A principal vantagem do sistema controlado por microcontroladores é que ele requer apenas uma única saída digital e não há necessidade de conversor digital-para-analógico complicado. O controlador digital também é mais eficiente porque menos energia é convertida em calor.

Um esquema simplificado de controlo é mostrada no seguinte desenho. A tensão de controlo Vc está vindo para o pino de saída do microcontrolador e comuta o transistor Q on-off com uma frequência de aproximadamente 20 kHz. Quando o transistor Q está ligado, então a corrente total I está a atravessar o motor M. Neste caso, o transistor se comporta como um interruptor fechado e uma queda de tensão Vq é próxima de 0, e toda a tensão de entrada Vdd continua a no motor.

A potência total que passa no transistor gem pode ser calculada pela fórmula:

P = I * V

P = I * Vq, e quando Vq ~ 0, então P ~ 0 W

Isto significa que o transistor passa quase nenhuma energia no estado aberto. Uma situação semelhante é também o caso quando o transistor está no estado fechado. Neste caso, não existe fluxo de corrente através do transistor ou do motor. Agora, a energia que atravessa o transistor, é calculada como se segue:

P = I * Vq, e quando I = 0, então P = 0 W

Em conclusão, podemos dizer que, se o transistor é um elemento de comutação no esquema, em seguida, a eficiência do sistema é alta e a potência usada pelos transistores é baixa. Em comparação com um sistema linear (analógico), em que o transistor em estado semi-aberto consome a mesma quantidade de energia do que o do motor, que é uma grande poupança de energia. Na prática, não existe um sistema sem perdas e, de facto, as perdas ocorrem quando o transistor comuta de um estado para outro. Portanto, as perdas mais elevadas ocorrem quando os transistores são ligados em freqüências mais altas.

Prática

O HomeLab inclui componentes para controlar motores DC, incluindo 2 pontes-H integradas e diodos de quebra de circuitos. O motor é controlado com três sinais digitais, um deles é sinal de ligação enable e os outros dois são a determinação do estado dos transistores na ponte-H. Nunca pode ocorrer que dois transistores verticais sejam abertos, porque isso seria curto-circuitar a fonte de alimentação. Isto significa que o driver é concebido à prova de falhas e que só pode ser escolhida a opção de qual o transistor que é aberto (superior ou inferior) de um lado da ponte-H (de “semi-ponte”). Em outras palavras, a polaridade é seleccionada utilizando dois sinais de accionamento aplicados às duas extremidades da bobina do motor.

A placa de combinaçãodo HomeLab permite conectar até quatro motores DC. Basicamente, para cada motor existe uma ponte-H, que é controlada com dois pinos de saída digital do microcontrolador, porque o pino de ligação está constantemente alto. Se ambos os pinos controladores têm mesmo valor, então o motor está parado, se for diferente, então ele gira na direção correspondente. O estado da ponte-H está descrita na tabela seguinte:

Entrada A Entrada B Saida A Saida B Resultado
0 0 - - O motor está parado
1 1 + + O motor está parado
1 0 + - O motor gira na direcção 1
0 1 - + O motor gira na direcção 2

Para cada motor ligado à ponte-H é operado por duas saídas digitais do microcontrolador. A velocidade do motor é controlada por temporizadores que geram sinais PWM contínuos para a ponte-H, o sentido da rotação do motor é controlado no segundo terminal. A velocidade do motor é controlada a valores relativos entre 0 e 255, em que 0 significa que o motor está parado e 255 é a velocidade máxima do movimento do motor. O código que se segue descreve uma função descrita na biblioteca do HomeLab II (ATmega2561) para controlar os motores DC.

// The setup of the pins driving pins
static pin dcmotor_pins[4][2] =
{
	{ PIN(B, 7), PIN(B, 4) },
	{ PIN(D, 1), PIN(D, 0) },
	{ PIN(D, 7), PIN(D, 6) },
	{ PIN(D, 5), PIN(D, 4) }
};
static int motorindex[4][2] =
{
	{ 0, 1 },
	{ 2, 3 },
	{ 4, 5 },
	{ 6, 7 }
};
// Initializing a PWM to chosen motor
void dcmotor_drive_pwm_init(unsigned char index, timer2_prescale prescaler)
{
  	unsigned char i, pwm;
 
	pin_setup_output(dcmotor_pins[index][0]);
	pin_setup_output(dcmotor_pins[index][1]);
 
	motor[index] = 1;
  	pwm = PWMDEFAULT;
 
  	// Starting all channels
  	for(i=0 ; i<CHMAX ; i++)
  	{
    	  // PWM state variable initialization
    	  compare[i] = pwm;           
    	  compbuff[i] = pwm;          
  	}
 
  	// Starting Timer 2 to normal mode
  	timer2_init_normal(prescaler);
  	// Allow Timer 2 interrupt
  	timer2_overflow_interrupt_enable(true);
 
  	// Enable global interrupts
  	sei();
}
// Generating a PWM for chosen motor
void dcmotor_drive_pwm(unsigned char index, signed char direction, 
unsigned char speed) 
{
	if(direction == -1)
	{
		compbuff[motorindex[index][0]] = 0x00;
		compbuff[motorindex[index][1]] = speed;
	}
	if(direction == 1)
	{
		compbuff[motorindex[index][0]] = speed;
		compbuff[motorindex[index][1]] = 0x00;
	} 
}

Os pinos controladores de 4 controladores de motor são determinados com o array dcmotor_pins na biblioteca. Antes de controlar os motores, a função dcmotor_drive_pwm_init com o número do motor-controlador (0-3) deve ser chamada. Ela define os pinos como saída. Também define o pré escalador do temporizador, para o HomeLab II timer2_prescale e para o HomeLab III timer_prescale, que determina a frequência do sinal PWM. No caso do HomeLab II, como o programa não tem funções que usem o temporizador, é apropriado para o valor TIMER2_NO_PRESCALE. Quando, por exemplo, são usados sensores de ultra-som, então deve ser escolhido TIMER2_PRESCALE 8, caso contrário, o desempenho do controlador pode não ser suficiente e as leituras dos sensores podem vir corrompidas. Isto não se aplica no HomeLab III. Valores mais altos do pré escalador não são recomendados, porque torna a rotação do motor intermitente, e gera vibração.

Função dcmotor_drive_pwm é usada para controlar a velocidade do motor. Esta função tem três valores de entrada: número do motor, direção (-1, 0, +1), onde -1 é a rotação numa direção, +1 na outra direção e 0 para parar e, em terceiro lugar, a gama de velocidade de 0-255. O valor de velocidade não está associado a uma velocidade de rotação específica, é o valor relativo entre a velocidade minima e máxima do motor. A velocidade real do motor depende do tipo de motor, da carga e da tensão de alimentação. A precisão de velocidade do motor é de 8-bits, o que significa que a precisão mínima de controlo é 1/255 da velocidade máxima do motor.

O seguinte é um exemplo de programa que controla o primeiro e o segundo motor DC de modo que o primeiro motor roda a metade da velocidade e a velocidade do segundo motor é controlada por um potenciómetro.

// Robotic HomeLab DC motor driving example program
#include <homelab/module/motors.h>
#include <homelab/adc.h>
 
// Main program
int main(void)
{
	// Variable of speed
	int speed;
 
	// Start of ADC
	adc_init(ADC_REF_AVCC, ADC_PRESCALE_8);
 
	// DC1 & DC2 motor initialization (without timer prescaler)
	// HomeLab II
	//dcmotor_drive_pwm_init(1, TIMER2_NO_PRESCALE);
	//dcmotor_drive_pwm_init(2, TIMER2_NO_PRESCALE);
	// HomeLab III
	dcmotor_drive_pwm_init(1, TIMER_NO_PRESCALE);
	dcmotor_drive_pwm_init(2, TIMER_NO_PRESCALE);
 
 
	// Endless loop
	while (true)
	{
	   // Reading potentiometer value (average of 4)
	   speed = adc_get_average_value(15, 4);
	   // ADC value is 12-bit but DC motor input is 8-bit
	   // conversion can be ether dividing the value with 8 or
	   // make bit shifting to right 3 times (>>3)
	   dcmotor_drive_pwm(1, 1, speed/8);
	   dcmotor_drive_pwm(2, 1, 128);
	}
}
pt/examples/motor/dc.txt · Last modified: 2020/07/20 09:00 by 127.0.0.1
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