StepMotor - Robo4al/robot GitHub Wiki

Definição

Um motor de passo é um tipo de motor elétrico usado quando algo tem que ser posicionado muito precisamente ou rodado de um ângulo exato.

Neste tipo de motor, a rotação do balancete é controlada por uma série de campos eletromagnéticos que são ativados e desativados eletronicamente.

Tipos de Motor de Passo

Existem os seguintes tipos de motor de passo:

  1. Relutância Variável: Estator com Enrolamentos e Rotor com várias polaridades;
  2. Imã Permanente: Parecido com o motor de Relutância Variável, porém possui um imã fixo no rotor;
  3. Híbrido: Imã permanente no eixo e rotor multidentado. É o tipo de motor de passo mais comum em industrias. Essa classificação é feita por meio das diferenças na construção dos motores de passo.

Funcionamento do Motor de Passo

Todos os motores usam um mesmo principio, que é usar as bobinas para atrair o rotor. Veja abaixo um esquema do motor de passo:

Motor de passo

Veja que temos quatro bobinas, e, quando uma é energizada, ela cria um campo magnético e um lado do imã é atraído para ela. Portanto, se duas bobinas forem energizadas ao mesmo tempo, o rotor fica na posição entre elas. Dessa forma, podemos ter diferentes tipos de passos.

Movimentação

Para realizar a movimentação deste motor de passo, devemos seguir as seguintes etapas:

  1. phase IN4
  2. phase IN4 and IN3
  3. phase IN3
  4. phase IN3 and IN2
  5. phase IN2
  6. phase IN2 and IN1
  7. phase IN1
  8. phase IN1 and IN4

Classe Arquivo

Construtor

Por padrão, ao criar um objeto do tipo StepMotor os pinos utilizados do Roberval serão:

PIN1 = 18
PIN2 = 19
PIN3 = 22
PIN4 = 23

class StepMotor:
    
    def __init__(self, PIN1=18, PIN2=19, PIN3=22, PIN4=23):
	pass

Mover

Para mover o motor, deve-se utilizar o método step, informando a sua direção (True = Esquerda | False = Direita). Pode-se ainda informar a velocidade do movimento em milisegundos, através do parâmetro sleepMs, e também a quantidade de passos que devem ser dadas, informando o parâmetro stepCount. Note que ambos já possuem um valor padrão.

    def step(self, left, sleepMs=5, stepCount=1):
        pass

Utilização

Para utilização da classe, é necessário criar uma instância da mesma e em seguida executar a função step, podendo ser executada das 5 formas destacadas abaixo.

stepMotor = StepMotor()  

# Movimento = direita | velocidade = 5ms | passos = 1  
stepMotor.step(False)  

# Movimento = direita | velocidade = 10ms | passos = 1
stepMotor.step(False, 10)  

# Movimento = esquerda | velocidade = 10ms | passos = 100  
stepMotor.step(True, 10, 100)  

# Movimento = direita | velocidade = 5ms | passos = 100  
stepMotor.step(False, stepCount=100)  

# Movimento = esquerda | velocidade = 10ms | passos = 1  
stepMotor.step(True, sleepMs=100)  

Referências

https://pt.wikipedia.org/wiki/Motor_de_passo
https://athoselectronics.com/motor-de-passo-como-funciona/