Accelstepper - How to count steps of a motor when you use .runSpeed();

Hi there!

I am using a stepper motor and the accelstepper library and I need to count the steps until a motor touches a limit switch.
The problem seems to be that I cant count the steps using stepper.runSpeed();

How can I just turn the motor and count the steps?

I need to do that so I know whats the motor working range and then use it in stepper.moveTo(counter);

I tried the code above so I can count the steps, but unfortunately it doesn’t work as expected. The terminal shows what you read until the motor makes 5 steps.

Here is the code:

#include <AccelStepper.h>

AccelStepper stepper(AccelStepper::FULL2WIRE, 6, 7);
int counter =100;

void setup()
{  
  Serial.begin(9600);
  stepper.moveTo(50);
   stepper.setMaxSpeed(1000);
   stepper.setSpeed(10);	
}

void loop()
{  

   Serial.println(counter);
   stepper.runSpeed();
   counter--;
  
}

And here is the terminal:

100
99
98
97
96
95
94
93
92
91
90
89
88
87
86
85
84
83
82
81
80
79
78
77
76
75
74
73
72
71
70
69
68
67
66
65
64
63
62
61
60
59
58
57
56
55
54
53
52
51
50
49
48
47
46
45
44
43
42
41
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
-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
-68
-69
-70
-71
-72
-73
-74
-75
-76
-77
-78
-79
-80
-81
-82
-83
-84
-85
-86
-87
-88
-89
-90
-91
-92
-93
-94
-95
-96
-97
-98
-99
-100
-101
-102
-103
-104
-105
-106
-107
-108
-109
-110
-111
-112
-113
-114
-115
-116
-117
-118
-119
-120
-121
-122
-123
-124
-125
-126
-127
-128
-129
-130
-131
-132
-133
-134
-135
-136
-137
-138
-139
-140
-141
-142
-143
-144
-145
-146
-147
-148
-149
-150
-151
-152
-153
-154
-155
-156
-157
-158
-159
-160
-161
-162
-163
-164
-165
-166
-167
-168
-169
-170
-171
-172
-173
-174
-175
-176
-177
-178
-179
-180
-181
-182
-183
-184
-185
-186
-187
-188
-189
-190
-191
-192
-193
-194
-195
-196
-197
-198
-199
-200
-201
-202
-203
-204
-205
-206
-207
-208
-209
-210
-211
-212
-213
-214
-215
-216
-217
-218
-219
-220
-221
-222
-223
-224
-225
-226
-227
-228
-229
-230
-231
-232
-233
-234
-235
-236
-237
-238
-239
-240
-241
-242
-243
-244
-245
-246
-247
-248
-249
-250
-251
-252
-253
-254
-255
-256
-257
-258
-259
-260
-261
-262
-263
-264

If you want to detect when you get to a limit switch you need to move one step, check, one step, check etc etc.

If the device can pass the limit switch it is common to run fast towards it (still on the step-check-step-check system) not caring if the device overruns a little. Then slowly back-up clear of the switch followed by slow motion until it is detected in the correct direction and the limit position is accurately established.

You need to design your code so it works regardless of whether it takes 3 or 3000 steps to get to the switch.

...R

stepper.currentPosition () returns a long

Perhaps you should look inside AccelStepper.h? Its all there with copious comments...

Robin2:
If you want to detect when you get to a limit switch you need to move one step, check, one step, check etc etc.

If the device can pass the limit switch it is common to run fast towards it (still on the step-check-step-check system) not caring if the device overruns a little. Then slowly back-up clear of the switch followed by slow motion until it is detected in the correct direction and the limit position is accurately established.

You need to design your code so it works regardless of whether it takes 3 or 3000 steps to get to the switch.

...R

Thats exactly what I want to do. I want in the setup proccess to move the motors and checkfor the rane using limit switches. Then when its all setup, in the loop function I am going to use just the steps to be sure about accuracy.

nathanas:
Thats exactly what I want to do.

So what is the problem?

If you are only moving one step why do you need to count steps - as in your original post?

And it is not really necessary to use AccelStepper for that. Look at this simple stepper code.

...R