Documente Academic
Documente Profesional
Documente Cultură
Isso o que acontece em um motor de passo bipolar. Ele tem apenas dois
enrolamentos em vez de quatro em um passo unipolar. Ambos os
enrolamentos podem ser activados todo o tempo, mas a sua polaridade
comutada em quatro passos. Isto significa que este tipo de motor s tem quatro
fios em vez de 5 (ou 6 ou 8). A parte difcil mudar a polaridade. Isso no pode
ser alcanado pelo conselho simples motorista que veio com este motor. Ele s
ativa uma ou duas das quatro sadas, mas sempre atual flui em uma direo.
Mas agora temos um motor sem uma placa de motorista. O que voc precisa
de um tipo H-ponte que felizmente existe em pacotes pequenos se voc no
est indo para conduzir mquinas pesadas. Eu usei um L293D chip de 16 pinos
DIP que encontrei on-line por US $ 5,5 por dez fichas.
Eu elaborou este esquema que eu usei para acionar o motor com um Arduino
(na verdade, eu usei um Atmega8 em uma placa de ensaio fazendo
exatamente a mesma coisa, s que um pouco mais lento). Eu estou usando 9V
no motor neste teste desde enrolamentos so duas vezes, enquanto na verso
original. Eu acho que voc poderia ir muito mais elevado do que isso, essa
coisa nunca mais aquecido no meu teste.
Meu exemplo de cdigo simples para dirigi-lo pode ser encontrada aqui.
int A = 0;
int B = 1;
int C = 2;
int D = 3;
long del = 2000;
int stap = 1;
void setup()
pinMode(A,
pinMode(B,
pinMode(C,
pinMode(D,
}
{
OUTPUT);
OUTPUT);
OUTPUT);
OUTPUT);
void een(){
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
delayMicroseconds(del);
}
void twee(){
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
delayMicroseconds(del);
}
void drie(){
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
delayMicroseconds(del);
}
void vier(){
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
delayMicroseconds(del);
}
void motorOff(){
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
}
// the loop routine runs over and over again forever:
void loop() {
for (int i=0; i<=500; i++){
een();
twee();
drie();
vier();
}
motorOff();
delay(2000);
}