Table of Contents

Motores

Relacionado com: [HW] Módulo de Motores

Esta biblioteca contém funções para controlar diferentes motores no HomeLab. Existem funções para motores DC, stepper e servomotores.

Tipos

Funções

Inicializa um dos controladores de motor DC. Parâmetros:

Alimenta um dos controladores de motor DC. Parâmetros:

Alimenta um dos controladores de motor DC. O motor roda numa dada direcção e velocidade Parâmetros:

Inicializa o controlador de um dos motores stepper. Parâmetros:

Comando de meio passo para um motor stepper unipolar. Esta função bloqueia o processador até os passos estarem concluídos. Parâmetros:

Inicializa o controlador de um motor stepper bipolar.

Comando de meio passo para um motor stepper bipolar. Esta função bloqueia o processador até os passos estarem concluídos. Parâmetros:

Inicializa as unidades de geração de sinal PWM de um servomotor no timer 1 do ATmega128. O sinal PWM é de 50 hz com período elevado a 1.5 ms ± 0.5 ms. Parâmetros::

Comando de controlo da largura do pulso do servomotor. Se o posicionamento do servomotor é executado, a sua posição é alterada, se é rodado, a sua velocidade de rotação é alterada. Parâmetros:

Exemplo

O programa seguinte demonstra o uso de motores DC, stepper e servomotores.

#include <homelab/module/motors.h>
 
int main(void)
{
	// DC motors initialization.
	dcmotor_init(0);
	dcmotor_init(1);
 
	// Bipolar stepper initialization.
	bipolar_init();
 
	// Servo motors initialization.
	servomotor_init(0);
	servomotor_init(1);
 
	// One DC motors drives forward, another in backward direction.
	dcmotor_drive(0, -1);
	dcmotor_drive(1, +1);
 
	// Rotating the stepper motor 100 steps in one direction
	// and then back with twice the speed.
	bipolar_halfstep(1, 100, 50);
	bipolar_halfstep(-1, 100, 25);
 
	// Rotating servo motors in opposite directions.
	servomotor_position(0, -100);
	servomotor_position(1, +100);
}

Este exemplo demonstra o ajustamento da velocidade para um motor DC.

#include <homelab/module/motors.h>
 
int main(void)
{
        unsigned char speed = 0;
 
	// DC motors initialization
  	dcmotor_drive_pwm_init(0, TIMER2_NO_PRESCALE);
 
  	while(1)
  	{   	
		speed = 100;
 
		// DC motors drives predefined speed and direction.
		dcmotor_drive_pwm(0, 1, speed);			      
  	}
}