- Motor de passo
- Girando um motor de passo COM ARM7-LPC2148
- Componentes necessários
- Motor de passo (28BYJ-48)
- Driver de motor de passo ULN2003
- Diagrama de circuito
- Programando ARM7-LPC2148 para motor de passo
No mundo da automação atual, o motor de passo e o servo motor são os dois motores mais comumente usados em sistemas embarcados. Ambos são usados em várias máquinas de automação como braços robóticos, máquinas CNC, câmeras, etc. Neste tutorial veremos como fazer a interface do motor de passo com o ARM7-LPC2148 e como controlar a velocidade dele. Se você é novo no ARM7, comece aprendendo sobre o ARM7-LPC2148 e suas ferramentas de programação.
Motor de passo
O motor de passo é um motor DC sem escovas, que pode ser girado em pequenos ângulos, esses ângulos são chamados de etapas. Podemos girar o motor passo a passo, dando pulsos digitais a seus pinos. Os motores de passo são baratos e possuem um design robusto. A velocidade do motor pode ser controlada alterando a frequência dos pulsos digitais.
Existem dois tipos de motores de passo disponíveis com base no tipo de enrolamento do estator: UNIPOLAR e BIPOLAR. Aqui, estamos usando o motor de passo UNIPOLAR, que é o motor de passo mais comumente usado . Para girar o motor de passo, precisamos energizar as bobinas do motor de passo em sequência. Com base na operação de rotação, eles são classificados em dois modos:
- Modo de etapa completa: (sequência de 4 etapas)
- One-Phase On Stepping (WAVE STEPPING)
- Duas fases na pisada
- Modo de meio passo (sequência de 8 passos)
Para saber mais sobre o motor de passo e seu funcionamento, acesse o link.
Girando um motor de passo COM ARM7-LPC2148
Aqui, usaremos o modo FULL STEP: ONE PHASE ON ou WAVE STEPPING para girar o motor de passo com ARM7-LPC2148
Neste método, iremos energizar apenas uma bobina (um pino do LPC2148) por vez. Ou seja, se a primeira bobina A for energizada por um pequeno período, o eixo mudará sua posição e, em seguida, a bobina B será energizada ao mesmo tempo e o eixo mudará novamente sua posição. Da mesma forma, a bobina C e a bobina D são energizadas para mover o eixo ainda mais. Isso faz com que o eixo do motor de passo gire passo a passo, energizando uma bobina de cada vez.
Por este método, giramos o eixo passo a passo, energizando a bobina em sequência. Isso é chamado de sequência de quatro etapas, pois leva quatro etapas.
Você pode girar o motor de passo usando o método HALF STEP (método de 8 sequências) de acordo com os valores fornecidos abaixo.
Degrau |
Bobina A |
Bobina B |
Bobina C |
Bobina D |
1 |
1 |
0 |
0 |
0 |
2 |
1 |
1 |
0 |
0 |
3 |
0 |
1 |
0 |
0 |
4 |
0 |
1 |
1 |
0 |
5 |
0 |
0 |
1 |
1 |
6 |
0 |
0 |
0 |
1 |
7 |
1 |
0 |
0 |
1 |
8 |
1 |
0 |
0 |
0 |
Componentes necessários
Hardware:
- ARM7-LPC2148
- ULN2003 Motor Driver IC
- LED - 4
- MOTOR DE PASSO (28BYJ-48)
- BREADBOARD
- CONECTANDO FIOS
Programas:
- Keil uVision5
- Flasic Magic Tool
Motor de passo (28BYJ-48)
O motor de passo 28BYJ-48 já é mostrado na imagem acima. É um motor de passo unipolar que requer alimentação de 5V. O motor tem um arranjo unipolar de 4 bobinas e cada bobina é classificada para + 5V, portanto, é relativamente fácil de controlar com qualquer microcontrolador como Arduino, Raspberry Pi, STM32, ARM etc.
Mas precisamos de um Motor Drive IC como o ULN2003 para acioná-lo, porque os motores de passo consomem alta corrente e podem danificar os microcontroladores.
As especificações de 28BYJ-48 são fornecidas na folha de dados abaixo:
Verifique também a interface com o motor de passo com outros microcontroladores:
- Interface do motor de passo com o Arduino Uno
- Controle de motor de passo com Raspberry Pi
- Interface de motor de passo com microcontrolador 8051
- Interface do motor de passo com o microcontrolador PIC
- Interface do motor de passo com MSP430G2
O motor de passo também pode ser controlado sem qualquer microcontrolador, consulte este Circuito do driver do motor de passo.
Driver de motor de passo ULN2003
A maioria dos motores de passo operará apenas com a ajuda de um módulo driver. Isso ocorre porque o módulo do controlador (em nosso caso LPC2148) não será capaz de fornecer corrente suficiente de seus pinos de E / S para o motor operar. Portanto, usaremos um módulo externo como o módulo ULN2003 como driver de motor de passo.
Neste projeto, usaremos o IC do driver de motor ULN2003. O diagrama de pinos do IC é fornecido abaixo:
Os pinos (IN1 a IN7) são pinos de entrada para conectar a saída do microcontrolador e OUT1 a OUT7 são pinos de saída correspondentes para conectar a entrada de motores de passo. COM recebe a tensão de fonte positiva necessária para dispositivos de saída e para fonte de entrada de energia externa.
Diagrama de circuito
O diagrama do circuito para a interface do motor de passo com ARM-7 LPC2148 é fornecido abaixo
ARM7-LPC2148 com ULN2003 Motor Driver IC
Os pinos GPIO de LPC2148 (P0.7 a P0.10) são considerados como pinos de saída que são conectados aos pinos de entrada (IN1-IN4) do IC ULN2003.
Pinos LPC2148 |
PINOS DE ULN2003 IC |
P0.7 |
EM 1 |
P0.8 |
EM 2 |
P0.9 |
IN3 |
P.10 |
IN4 |
5V |
COM |
GND |
GND |
Conexões de ULN2003 IC com motor de passo (28BYJ-48)
Os pinos de saída (OUT1-OUT4) do ULN2003 IC são conectados aos pinos do motor de passo (azul, rosa, amarelo e laranja).
ULN2003 IC PINS |
PINOS DO MOTOR DE STEPPER |
OUT1 |
AZUL |
OUT2 |
ROSA |
OUT3 |
AMARELO |
OUT4 |
LARANJA |
COM |
VERMELHO (+ 5V) |
LEDs com IN1 a IN4 de ULN2003
Quatro pinos de ânodo de LED (LED1, LED2, LED4, LED 4) são conectados com os pinos IN1, IN2, IN3 e IN4 de ULN2003, respectivamente, e o cátodo dos LEDs está conectado ao GND, que deve indicar os pulsos do LPC2148. Podemos notar o padrão dos pulsos fornecidos. O padrão é mostrado no vídeo de demonstração anexado ao final.
Programando ARM7-LPC2148 para motor de passo
Para programar o ARM7-LPC2148, precisamos da ferramenta Keil uVision e Flash Magic. Estamos usando o cabo USB para programar o ARM7 Stick via porta micro USB. Nós escrevemos código usando Keil e criamos um arquivo hexadecimal e então o arquivo HEX é enviado para o stick ARM7 usando Flash Magic. Para saber mais sobre como instalar keil uVision e Flash Magic e como usá-los, siga o link Getting Started With ARM7 LPC2148 Microcontroller e programe-o usando Keil uVision.
O código completo para controlar o motor de passo com ARM 7 é fornecido no final deste tutorial, aqui estamos explicando algumas partes dele.
1. Para usar o método FULL STEP-ONE PHASE ON, precisamos incluir o comando abaixo. Portanto, usamos a seguinte linha no programa
caractere unsigned no sentido horário = {0x1,0x2,0x4,0x8}; // Comandos para rotação no sentido horário unsigned char anticlockwise = {0x8,0x4,0x2,0x1}; // Comandos para rotação anti-horária
2. As linhas a seguir são usadas para inicializar os pinos PORT0 como saída e configurá-los para BAIXO
PINSEL0 = 0x00000000; // Configurando pinos PORT0 IO0DIR - = 0x00000780; // Configurando os pinos P0.7, P0.8, P0.9, P0.10 como OUTPUT IO0CLR = 0x00000780; // Configurando P0.7, P0.8, P0.9, P0.10 pinos OUTPUT como LOW
3. Defina os pinos PORT (P0.7 a P0.10) HIGH de acordo com os comandos no sentido horário usando isso para o loop com atraso
para (int j = 0; j
O mesmo para Anti-clock Wise
para (int z = 0; z
4. Altere o tempo de atraso para alterar a velocidade de rotação do motor de passo
atraso (0x10000); // Altere este valor para alterar a velocidade de rotação (0x10000) -Velocidade total (0x50000) -Fica lento (0x90000) -Fica lento que o anterior. Portanto, ao aumentar o atraso , reduzimos a velocidade de rotação.
5. O número de etapas para uma rotação completa pode ser alterado com o código abaixo
int no_of_steps = 550; // Altere este valor para o número necessário de etapas de rotação (550 dá uma rotação completa)
Para meu motor de passo, obtive 550 passos para rotação completa e 225 para meia rotação. Portanto, altere-o de acordo com suas necessidades.
6. Esta função é usada para criar tempo de atraso.
void delay (unsigned int value) // Função para gerar delay { unsigned int z; para (z = 0; z
O código completo com vídeo de demonstração é fornecido abaixo.