Pages: [1]   Go Down
Author Topic: motore passo passo  (Read 1195 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 0
Posts: 64
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao a tutti.. ho un problema con questo codice.
il motore deve eseguire un ciclo in avanti se si trova nella posizione corretta ovvero se il finecorsa 7 che per mia comodita ho chiamato pulsante e impegnato altrimenti deve ruotare in senso contrario fino a impegnare il finecorsa e poi eseguire il ciclo in avanti. funziona pero ripete il ciclo e io ho la necessita di farlo eseguire una sola volta.Ho provato mettendolo nel void setup funziona in parte, diciamo se lui e in posizione quindi il pulsante e HIGH esegue il ciclo con il comando for se pero deve tornare in dietro esegue solamente uno stepp.
 int motorPin2 = 11;
int motorPin3 = 12;
int motorPin4  = 13;
int delayTime = 20; // velocita motore
int pulsante;       //finecorsa
int ciclo=40;
void setup()
  {
  pinMode(8,INPUT);
  pinMode(motorPin1, OUTPUT); 
  pinMode(motorPin2, OUTPUT);
  pinMode(motorPin3, OUTPUT); 
  pinMode(motorPin4, OUTPUT);
  }
  void loop()
{
 pulsante=digitalRead( 8 );
if (pulsante==LOW)
{
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(delayTime); 
digitalWrite(motorPin1, LOW); 
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW); 
digitalWrite(motorPin4, LOW); 
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH); 
digitalWrite(motorPin4, LOW); 
delay(delayTime);
digitalWrite(motorPin1, HIGH); 
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW); 
digitalWrite(motorPin4, LOW); 
delay(delayTime); 
}
pulsante=digitalRead  ( 8 );
if (pulsante==HIGH)
{
 for (int i=1; i <= ciclo; i++)
{
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime); 
digitalWrite(motorPin1, LOW); 
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH); 
digitalWrite(motorPin4, LOW); 
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW); 
digitalWrite(motorPin4, LOW); 
delay(delayTime);
digitalWrite(motorPin1, LOW); 
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW); 
digitalWrite(motorPin4, HIGH); 
delay(delayTime);
}
}
}
« Last Edit: July 20, 2012, 01:42:02 pm by veroda » Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 64
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

risolto  smiley-lol smiley-lol mettendo un contatore,semplice no? comunque se qualcuno a idee  in merito ben venga. Grazie e buona serata a tutti

int motorPin1 = 10;
int motorPin2 = 11;
int motorPin3 = 12;
int motorPin4  = 13;
int delayTime = 20; // velocita motore
int pulsante;       //finecorsa
int ciclo=40;
int contatore=0;
void setup()
  {
  pinMode(8,INPUT);
  pinMode(motorPin1, OUTPUT); 
  pinMode(motorPin2, OUTPUT);
  pinMode(motorPin3, OUTPUT); 
  pinMode(motorPin4, OUTPUT);
  }
  void loop()

{
if (contatore <= 0 )
{
pulsante=digitalRead( 8 );
if (pulsante==HIGH)
{
 for (int i=1; i <= ciclo; i++)
{
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime); 
digitalWrite(motorPin1, LOW); 
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH); 
digitalWrite(motorPin4, LOW); 
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW); 
digitalWrite(motorPin4, LOW); 
delay(delayTime);
digitalWrite(motorPin1, LOW); 
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW); 
digitalWrite(motorPin4, HIGH); 
delay(delayTime);
}
contatore=contatore+1;
}

else
{
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(delayTime); 
digitalWrite(motorPin1, LOW); 
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW); 
digitalWrite(motorPin4, LOW); 
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH); 
digitalWrite(motorPin4, LOW); 
delay(delayTime);
digitalWrite(motorPin1, HIGH); 
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW); 
digitalWrite(motorPin4, LOW); 
delay(delayTime);
}
}
}
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 84
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao scusami ma non ho risposta alla tua domanda smiley-neutral
Ero comunque interessato però e ho deciso di rispondere, vorrei capire quello che stai facendo.
Tu stai controllando uno stepper motor come quelli che si trovano nelle stampanti con arduino senza alcun IC esterno?
Ciao smiley-grin
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 64
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao...sto facendo una torre di raffreddamento, ho messo un sistema di alette che si aprono quando avvio il sistema e di conseguenza si devono richiudere,spero!!!
ecco perche l'esigenza di arrestare gli steep del motore.
si sto usanto un motore di una stampante con un driver sn754410.
 scusa  ma cosa intendi ic esterno? smiley-grin
« Last Edit: July 23, 2012, 12:28:28 pm by veroda » Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 270
Posts: 21861
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Se usi la libreria stepper si semplifica molto il codice.
http://arduino.cc/en/Reference/Stepper
e schema di collegamneto:
http://arduino.cc/en/Reference/StepperBipolarCircuit circuito in basso a 4 pin.
Se vuoi risparmiare pin dia rduino puoi aggiungere 2 transitori e pilotare il sn754410 con 2 pin

Ciao Uwe
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 64
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

grazie per le dritte..sicuramte andro a utilizzare i due transistor perche non ho piu pin a disposizione, per la libreria provero a giocarci un po e vediamo cosa esce. ciai ciao
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 84
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

scusami intendevo senza nessun driver, ma mi hai risposto xDD
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 64
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

vi ho detto un ....... il driver del motore  L 293 DNE  pero il risultato non cambia!
ciao ciao
Logged

Pages: [1]   Go Up
Jump to: