Arduino L293D shield ile 2 adet step motor kontrolü

2 adet, 6 kablolu unipolar step motoru bilgisayardan, delphi ile seri port üstünden gönderdiğim verilerle sürmek için bir devreye ihtiyacım var. Arduino l293d motor sürücü shieldi bu motor ve bağlatıları için uygunmudur? bahsettiğim shield bu http://hacker.instanet.net/Store/index.php?main\_page=popup\_image&pID=37&zenid=bde15g950a0k34sr3dpkg3c4n2 özellikleri

özellikleride bunlar Arduino için 2 çıkışlı 5V servo sürücüsü. 4 DC motor, 2 step motor veya 2 servoya kumanda edebilir. Pulldown dirençler ile güçlenme sırasında motorları korur. Reset düğmesi vardır. 4 adet H-bridge, her biri termal korumalı 0.6A (1.2A peak) verir, 4.5V-36VDC motorları çalıştırabilir.

motorun bobin sargı sırası veya şeması lazım olur yoksa motoru doğru kutuplamadığın için çalışmayabilir 6 pinli motor sürer diyor mu devre? ve motor sürücünün de örnek programı olması lazım.

2 ay önce ardiuno uno r3 yeni ver kart ve ardino L293D shied dk elek. ver 1.0 aldım amacım 4 adet DC motoru birbirinden farklı çalşmasını sağlamaktı yani şöyle motor1 sola dönerken motor3 sağa motor2-4 stopta motor1 stop motor2sağa motor4 sola v.b v.b kısaca motorlar bağımsız çalışacak bu arada motorlarda hız kontrolleri olmayacak yazılımın basitce yapılabileceğini hissediyorum ancak programcılık hakkında fazla bilgim olmadığından dolayı başaramıyorum bir kaç satırlık bir örnek program yazan bir arkadaş olursa çok memnun olurum aşağıdaki programı benim gibi acemi bir arkadaşıma faydası olur diye yazıyorum teşekkürler http://pastebin.com/ // Arduino pins for the shift register define MOTORLATCH 12 define MOTORCLK 4 define MOTORENABLE 7 define MOTORDATA 8 // 8-bit bus after the 74HC595 shift register // (not Arduino pins) // These are used to set the direction of the bridge driver. define MOTOR1_A 2 define MOTOR1_B 3 define MOTOR2_A 1 define MOTOR2_B 4 define MOTOR3_A 5 define MOTOR3_B 7 define MOTOR4_A 0 define MOTOR4_B 6 define MOTOR1_PWM 11 define MOTOR2_PWM 3 define MOTOR3_PWM 6 define MOTOR4_PWM 5 // Codes for the motor function. define FORWARD 1 define BACKWARD 2 define BRAKE 3 define RELEASE 4 // Declare classes for Servo connectors of the MotorShield. void setup() { Serial.begin(9600); Serial.println(“Simple Adafruit Motor Shield sketch”); // Use the default “Servo” library of Arduino. // Attach the pin number to the servo library. // This might also set the servo in the middle position. } void loop() { motor(1, FORWARD, 255); motor(2, FORWARD, 255); motor(3, FORWARD, 255); motor(4, FORWARD, 255); delay(2000); // Be friendly to the motor: stop it before reverse. motor(1, RELEASE, 0); motor(2, RELEASE, 0); motor(3, RELEASE, 0); motor(4, RELEASE, 0); delay(100); motor(1, BACKWARD, 128); motor(2, BACKWARD, 128); motor(3, BACKWARD, 128); motor(4, BACKWARD, 128); delay(2000); motor(1, RELEASE, 0); motor(2, RELEASE, 0); motor(3, RELEASE, 0); motor(4, RELEASE, 0); delay(100); // Suppose there are two servo motors connected. // Let them move 180 degrees. delay(2000); motor_output(MOTOR3_A, HIGH, 255); delay(2000); motor_output(MOTOR3_A, LOW, 255); motor(1, FORWARD, 255); delay(2000); // Be friendly to the motor: stop it before reverse. motor(1, RELEASE, 0); delay(500); motor(1, BACKWARD, 225); delay(2000); motor(1, RELEASE, 0); } void motor(int nMotor, int command, int speed) { int motorA, motorB; if (nMotor >= 1 && nMotor <= 4) { switch (nMotor) { case 1: motorA = MOTOR1_A; motorB = MOTOR1_B; break; case 2: motorA = MOTOR2_A; motorB = MOTOR2_B; break; case 3: motorA = MOTOR3_A; motorB = MOTOR3_B; break; case 4: motorA = MOTOR4_A; motorB = MOTOR4_B; break; default: break; } switch (command) { case FORWARD: motor_output (motorA, HIGH, speed); motor_output (motorB, LOW, -1); // -1: no PWM set break; case BACKWARD: motor_output (motorA, LOW, speed); motor_output (motorB, HIGH, -1); // -1: no PWM set break; case BRAKE: motor_output (motorA, LOW, 255); // 255: fully on. motor_output (motorB, LOW, -1); // -1: no PWM set break; case RELEASE: motor_output (motorA, LOW, 0); // 0: output floating. motor_output (motorB, LOW, -1); // -1: no PWM set break; default: break; } } } void motor_output (int output, int high_low, int speed) { int motorPWM; switch (output) { case MOTOR1_A: case MOTOR1_B: motorPWM = MOTOR1_PWM; break; case MOTOR2_A: case MOTOR2_B: motorPWM = MOTOR2_PWM; break; case MOTOR3_A: case MOTOR3_B: motorPWM = MOTOR3_PWM; break; case MOTOR4_A: case MOTOR4_B: motorPWM = MOTOR4_PWM; break; default: // Use speed as error flag, -3333 = invalid output. speed = -3333; break; } if (speed != -3333) { shiftWrite(output, high_low); // set PWM only if it is valid if (speed >= 0 && speed <= 255) { } } } // void shiftWrite(int output, int high_low) { static int latch_copy; static int shift_register_initialized = false; // Do the initialization on the fly, // at the first time it is used. if (!shift_register_initialized) { // Set pins for shift register to output pinMode(MOTORLATCH, OUTPUT); pinMode(MOTORENABLE, OUTPUT); pinMode(MOTORDATA, OUTPUT); pinMode(MOTORCLK, OUTPUT); // Set pins for shift register to default value (low); digitalWrite(MOTORDATA, LOW); digitalWrite(MOTORLATCH, LOW); digitalWrite(MOTORCLK, LOW); // Enable the shift register, set Enable pin Low. digitalWrite(MOTORENABLE, LOW); // start with all outputs (of the shift register) low latch_copy = 0; shift_register_initialized = true; } // The defines HIGH and LOW are 1 and 0. // So this is valid. bitWrite(latch_copy, output, high_low); shiftOut(MOTORDATA, MOTORCLK, MSBFIRST, latch_copy); delayMicroseconds(5); // For safety, not really needed. digitalWrite(MOTORLATCH, HIGH); delayMicroseconds(5); // For safety, not really needed. digitalWrite(MOTORLATCH, LOW); }