Buy an Axon, Axon II, or Axon Mote and build a great robot, while helping to support SoR.
0 Members and 1 Guest are viewing this topic.
Do you use ramp up and ramp down algorithms?If not, it is quite common to loose steps.Further, you need more power (especially more current here, to "fill up" the larger inductance) than for the "old" motor, since it eats more.Perhaps a ramp up will get you through, but more power should be in your mind.Btw. do you use single step, power step or what?
#include <Stepper.h>#define motorPin1 8#define motorPin2 9#define motorPin3 10#define motorPin4 11#define motorSteps 200 // change this depending on the number of steps per revolution of your motor#define ledPin 13 Stepper myStepper(motorSteps, motorPin1, motorPin2, motorPin3, motorPin4); int beamSensor = 2;int val = 0; void setup() { myStepper.setSpeed(60); // set the motor speed at 60RPMSerial.begin(9600);pinMode(ledPin, OUTPUT);blink(3);} void loop() { val = analogRead(beamSensor); if (val < 100) { Serial.println("Forward"); myStepper.step(200); delay(500); } } // Blink the reset LED:void blink(int howManyTimes) { int i; for (i=0; i< howManyTimes; i++) { digitalWrite(ledPin, HIGH); delay(200); digitalWrite(ledPin, LOW); delay(200); }}
In case I reduce the speed of the motor, the motor spins fine. No buzzing at all.But, that is the case when I set the speed at 30rpm and 100steps(which is the half of full revolution of my motors).So, this is too slow and short stepping for my application.I need to increase the speed as well as the number of stepping.
PauseVal = MaxDelayNeededDo take a single step Pause(PauseVal) Decrement PauseVal (with the value needed to get a ramp up time about 20% longer than where you loose steps)Loop Until MinimumPauseValReached
Could you advise me how much voltage and current should I supply to ULN2003 chips in order use the motors with increased speed and steps?
for (int i=1; i<50; i++) { myStepper.Step(1); delay(50-i);}myStepper.Steps(150);
Code: [Select]PauseVal = MaxDelayNeededDo take a single step Pause(PauseVal) Decrement PauseVal (with the value needed to get a ramp up time about 20% longer than where you loose steps)Loop Until MinimumPauseValReachedThat way the motor inertia will be overcome "little by little".First off, use a ramp up routine though, as it might solve your issue without any hardware changes.
The Stepper function will wait until the motor stops moving before it continues to the next line of code. So, for one step it will wait 5ms. To ramp up, we will add a delay that will be decreased after each step. You need to determine the number of steps needed until it reaches the max speed.Quotefor (int i=1; i<50; i++) { myStepper.Step(1); delay(50-i);}myStepper.Steps(150);
#include <Stepper.h>#define motorPin1 8#define motorPin2 9#define motorPin3 10#define motorPin4 11#define motorSteps 200 // change this depending on the number of steps per revolution of your motor#define ledPin 13 Stepper myStepper(motorSteps, motorPin1, motorPin2, motorPin3, motorPin4); int beamSensor = 2;int val = 0;void setup() { myStepper.setSpeed(60); // set the motor speed at 60RPMSerial.begin(9600);pinMode(ledPin, OUTPUT);} void loop() { val = analogRead(beamSensor); if (val < 100) { Serial.println("Forward"); myStepper.step(200); delay(500); } }for (int i=1; i<50; i++) { myStepper.Step(1); delay(50-i);}myStepper.Steps(150);
myStepper.steps(200);delay(500);
#include <Stepper.h>#define motorPin1 8#define motorPin2 9#define motorPin3 10#define motorPin4 11#define motorSteps 200 // change this depending on the number of steps per revolution of your motor#define ledPin 13 Stepper myStepper(motorSteps, motorPin1, motorPin2, motorPin3, motorPin4); int beamSensor = 2;int val = 0; void setup() { myStepper.setSpeed(60); // set the motor speed at 60RPMSerial.begin(9600);pinMode(ledPin, OUTPUT);} void loop() { val = analogRead(beamSensor); if (val < 100) { Serial.println("Forward");myStepper.steps(200);delay(500); } for (int i=1; i<50; i++) { myStepper.Step(1); delay(50-i);}myStepper.Steps(150); }
#include <Stepper.h>#define motorPin1 8#define motorPin2 9#define motorPin3 10#define motorPin4 11#define motorSteps 200 // change this depending on the number of steps per revolution of your motor#define ledPin 13 Stepper myStepper(motorSteps, motorPin1, motorPin2, motorPin3, motorPin4); int beamSensor = 2;int val = 0; void setup() { myStepper.setSpeed(60); // set the motor speed at 60RPMSerial.begin(9600);pinMode(ledPin, OUTPUT);} void loop() { val = analogRead(beamSensor); if (val < 100) { Serial.println("Forward"); for (int i=1; i<50; i++) { myStepper.Step(1); delay(50-i); } myStepper.Steps(150); } else { //turn around... } }
int beamSensor 2;
#define beamSensor 2
In function 'void loop()':error: 'class Stepper' has no member named 'Step
#include <Stepper.h>#define motorPin1 8#define motorPin2 9#define motorPin3 10#define motorPin4 11#define motorSteps 200#define ledPin 13 Stepper myStepper(motorSteps, motorPin1, motorPin2, motorPin3, motorPin4); #define beamSensor 2int val = 0;void setup() { myStepper.setSpeed(60);Serial.begin(9600);pinMode(ledPin, OUTPUT);} void loop() { val = analogRead(beamSensor); if (val < 100) { Serial.println("Forward"); for (int i=1; i<50; i++) { myStepper.Step(1); delay(50-i); } myStepper.Steps(150); } else { //turn around... } }
#include <Stepper.h>#define motorPin1 8#define motorPin2 9#define motorPin3 10#define motorPin4 11#define motorSteps 200#define ledPin 13 Stepper myStepper(motorSteps, motorPin1, motorPin2, motorPin3, motorPin4); #define beamSensor 2int val = 0;void setup() { myStepper.setSpeed(60);Serial.begin(9600);pinMode(ledPin, OUTPUT);} void loop() { val = analogRead(beamSensor); if (val < 100) { Serial.println("Forward"); for (int i=1; i<50; i++) { myStepper.Steps(1); delay(50-i); } myStepper.Steps(150); } else { //turn around... } }
#include <Stepper.h>#define motorPin1 8#define motorPin2 9#define motorPin3 10#define motorPin4 11#define motorSteps 200#define ledPin 13 Stepper myStepper(motorSteps, motorPin1, motorPin2, motorPin3, motorPin4); #define beamSensor 2int val = 0;void setup() { myStepper.setSpeed(60);Serial.begin(9600);pinMode(ledPin, OUTPUT);} void loop() { val = analogRead(beamSensor); if (val < 100) { Serial.println("Forward"); for (int i=1; i<50; i++) { myStepper.step(1); delay(50-i); } myStepper.step(150); } else { //turn around... } }
Almost it looks as if it is spinned(for 1step)and then spinned back(for 1step) and it goes on like this for the remaining 150 steps.Do you have any suggestions?
#define motorPin1 8#define motorPin2 9
#define motorPin1 9#define motorPin2 8
#define motorPin3 10#define motorPin4 11
#define motorPin3 11#define motorPin4 10