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:
- Relutância Variável: Estator com Enrolamentos e Rotor com várias polaridades;
- Imã Permanente: Parecido com o motor de Relutância Variável, porém possui um imã fixo no rotor;
- 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:
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:
- phase IN4
- phase IN4 and IN3
- phase IN3
- phase IN3 and IN2
- phase IN2
- phase IN2 and IN1
- phase IN1
- phase IN1 and IN4
Arquivo
ClasseConstrutor
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/