Controle de motor de passo bipolar Arduino PDF

Title Controle de motor de passo bipolar Arduino
Author Rudnei Barbosa
Course Eletrônica de Potência
Institution Universidade Estadual Paulista
Pages 7
File Size 390.5 KB
File Type PDF
Total Downloads 67
Total Views 147

Summary

Download Controle de motor de passo bipolar Arduino PDF


Description

Controle de motor de passo bipolar Arduino Como controlar a velocidade e a direção de rotação do motor de passo bipolar usando a placa Arduino UNO e o chip do driver do motor L293D. O motor de passo usado neste exemplo é apenas uma unidade de CD-ROM (ou DVD-ROM) de PC que possui 4 fios. A simulação Proteus do exemplo é fornecida no final do tópico. Basicamente, existem dois tipos de motores de passo: bipolares e unipolares. O motor de passo bipolar é um motor sem escovas bifásico que possui duas bobinas (enrolamentos), este motor possui 4 fios (2 fios para cada bobina). O outro tipo é o motor de passo unipolar, é um motor sem escova de 4 fases que possui 5 ou 6 fios. Os modos de controle populares do motor de passo são: passo completo e meio passo . A etapa completa pode ser dividida em 2 tipos: monofásica e bifásica . No modo monofásico de passo completo, o driver energiza uma bobina por vez. Este tipo de controle requer a menor quantidade de energia, mas fornece o mínimo de torque. No modo full step de duas fases, o driver energiza as duas bobinas ao mesmo tempo. Este modo fornece o torque mais alto, mas requer o dobro da potência do modo monofásico. O modo de meio passo é uma combinação dos dois modos de passo completo (uma fase e duas fases). Este modo aumenta a precisão dividindo cada etapa por 2. ele requer energia entre os modos monofásico e bifásico, o torque também está entre os dois. Existe outro tipo de controle chamado microstepping , este tipo é mais preciso do que o modo de meio passo, requer duas fontes de corrente senoidal com deslocamento de 90 °. Neste exemplo, vou usar o modo de duas fases de etapa completa para controlar o motor de passo bipolar.

A imagem a seguir mostra um esquema simples do motor de passo bipolar:

Para poder controlar o motor de passo bipolar, são necessários dois circuitos em ponte H. Neste exemplo, vou usar o driver L293D quadruple half-H, que pode funcionar como driver H-bridge duplo. Este chip é pequeno, de baixo custo e fácil de usar, o que o torna uma boa escolha para estudantes e amadores, neste blog, usei em alguns projetos de controle de motor DC. No modo de controle de etapa completa, sempre os dois enrolamentos são energizados ao mesmo tempo de acordo com as duas tabelas a seguir, onde a primeira tabela mostra a sequência de acionamento para uma direção de rotação e a segunda tabela para a outra direção:

Hardware necessário:        

Placa Arduino UNO Motor de passo bipolar Chip do driver do motor L293D -> folha de dados Potenciômetro de 10k ohm Botão de apertar Fonte de alimentação com tensão igual à tensão nominal do motor Protoboard Fios de ligação

Circuito de controle do motor de passo bipolar Arduino: Um exemplo de diagrama de circuito é mostrado abaixo.

Todos os terminais aterrados são conectados juntos. O chip L293D possui 16 pinos com 4 entradas (IN1, IN2, IN3 e IN4) e 4 saídas (OUT1, OUT2, OUT3 e OUT4). As 4 saídas são conectadas ao motor de passo bipolar conforme mostrado no diagrama do circuito. As 4 entradas são conectadas da seguinte forma: IN1 para Arduino pino 8 IN2 para Arduino pino 9 IN3 para Arduino pino 10 IN4 para Arduino pino 11 O L293D possui 2 pinos VCC: VCC1 (pino nº 16) e VCC2 (pino nº 8). VCC1 está conectado ao pino Arduino + 5V. O VCC2 está conectado a outra fonte de alimentação (terminal positivo) com tensão igual à tensão nominal do motor, é rotulado no diagrama de circuito como V_Motor (V_Motor = tensão do motor). Portanto, se tivermos um motor de passo com tensão nominal de 5V, devemos conectar VCC2 a + 5V (a saída do Arduino 5V não deve ser usada) e se a tensão nominal do motor de passo for 12V devemos conectar VCC2 a + 12V ( terminal negativo desta fonte está conectado ao terra do circuito) ...

O potenciômetro de 10k ohm é usado para controlar a velocidade do motor de passo, seu pino de saída é conectado ao pino 0 analógico do Arduino. O botão que está conectado ao pino 4 do Arduino é usado para alterar a direção de rotação do motor de passo.

Código de controle do motor de passo bipolar Arduino: Neste exemplo eu usei a biblioteca de motor de passo Arduino (embutida) que simplifica o código, está incluída no código usando a seguinte linha: C 1 #include

O motor de passo que usei neste projeto tem 20 passos por uma revolução, ele é definido no código conforme mostrado abaixo: C 1 #define STEPS 20

e a conexão das linhas de controle do motor de passo são definidas como: C 1 Stepper stepper(STEPS, 8, 9, 10, 11);

Usando a função stepper.step (direction_), o motor de passo se move de acordo com a variável direction_ , neste exemplo esta variável pode ser 1 ou 1. Se direction_ = 1, o motor se moverá na primeira direção e se direction_ = 1, o motor se moverá na outra direção. Sempre que o botão for pressionado, a variável direction_ será invertida (1 ou -1).

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

/* * Bipolar stepper motor speed and direction control with Arduino. * Full step control. * This is a free software with NO WARRANTY. * https://simple-circuit.com/ */ // include Arduino stepper motor library #include // change this to the number of steps on your motor #define STEPS 20 // create an instance of the stepper class, specifying // the number of steps of the motor and the pins it's // attached to Stepper stepper(STEPS, 8, 9, 10, 11); const int button = 4; // direction control button is connected to Arduino pin 4 const int pot = A0; // speed control potentiometer is connected to analog pin 0 void setup() { // configure button pin as input with internal pull up enabled pinMode(button, INPUT_PULLUP); } int direction_ = 1, speed_ = 0; void loop() { if ( digitalRead(button) == 0 ) // if button is pressed if ( debounce() ) // debounce button signal { direction_ *= -1; // reverse direction variable while ( debounce() ) ; // wait for button release } // read analog value from the potentiometer int val = analogRead(pot); // map digital value from [0, 1023] to [5, 100] // ===> min speed = 5 and max speed = 100 rpm if ( speed_ != map(val, 0, 1023, 5, 100) ) { // if the speed was changed speed_ = map(val, 0, 1023, 5, 100); // set the speed of the motor stepper.setSpeed(speed_); } // move the stepper motor stepper.step(direction_); } // a small function for button debounce bool debounce () { byte count = 0; for(byte i = 0; i < 5; i++) { if (digitalRead(button) == 0) count ++; delay(10); } if(count > 2) return 1; else return 0; }...


Similar Free PDFs