Shop OBEX P1 Docs P2 Docs Learn Events
[ActivityBot] - Right wheel always on — Parallax Forums

[ActivityBot] - Right wheel always on

Hi All, absolute newbie here :). I hope to have posted in the right category, I wasn't quite sure where to post this question.

Here's the problem:
Right wheel starts to spin full speed if no speed instruction is given or if speed is set to 0.
I think calibration had problems since I saw the robot spin on itself, something that does not happens on the videos neither on other posts I've read from this forum.

I've followed troubleshooting instructions for the calibration problem (last issue) because my calibration table was exactly as described (is at the end of the post).
I've also double checked jumpers, encoders cables and everything seems right (attached photo).

Would really appreciate some help!

Thanks!

Eduardo.

=== LEFT SERVO ===

Table Entries = 88
Zero Speed Index = 47

Index Servo Drive Encoder Ticks/Second


0 -194 1000
1 -189 186
2 -184 190
3 -179 185
4 -174 181
5 -169 183
6 -164 183
7 -159 185
8 -154 185
9 -149 185
10 -144 185
11 -139 183
12 -134 179
13 -129 187
14 -124 181
15 -119 179
16 -114 179
17 -109 175
18 -104 179
19 -99 173
20 -94 171
21 -89 169
22 -84 164
23 -79 163
24 -74 155
25 -69 155
26 -64 144
27 -59 146
28 -54 139
29 -49 135
30 -44 122
31 -39 118
32 -34 110
33 -29 100
34 -24 93
35 -19 83
36 -14 74
37 -9 66
38 -4 56
39 1 46
40 6 36
41 11 27
42 16 17
43 18 13
44 20 10
45 22 6
46 24 4
47 30 0
48 36 10
49 38 14
50 40 19
51 42 23
52 47 33
53 52 40
54 57 54
55 62 59
56 67 67
57 72 76
58 77 85
59 82 92
60 87 100
61 92 111
62 97 119
63 102 127
64 107 135
65 112 138
66 117 143
67 122 151
68 127 154
69 132 159
70 137 159
71 142 164
72 147 165
73 152 172
74 157 174
75 162 172
76 167 174
77 172 178
78 177 176
79 182 180
80 187 182
81 192 180
82 197 182
83 202 186
84 187 182
85 192 180
86 197 182
87 202 1000


=== RIGHT SERVO ===

Table Entries = 88
Zero Speed Index = 33

Index Servo Drive Encoder Ticks/Second


0 -195 1000
1 -190 178
2 -185 178
3 -180 174
4 -175 174
5 -170 176
6 -165 170
7 -160 172
8 -155 169
9 -150 172
10 -145 162
11 -140 159
12 -135 154
13 -130 156
14 -125 150
15 -120 143
16 -115 145
17 -110 135
18 -105 126
19 -100 121
20 -95 110
21 -90 103
22 -85 97
23 -80 84
24 -75 76
25 -70 67
26 -65 59
27 -60 50
28 -55 45
29 -50 35
30 -45 23
31 -40 12
32 -38 9
33 -31 0
34 -24 5
35 -22 11
36 -20 14
37 -18 17
38 -16 21
39 -11 31
40 -6 41
41 -1 50
42 4 61
43 9 68
44 14 78
45 19 89
46 24 97
47 29 102
48 34 112
49 39 119
50 44 125
51 49 131
52 54 135
53 59 143
54 64 148
55 69 148
56 74 157
57 79 157
58 84 163
59 89 162
60 94 165
61 99 169
62 104 168
63 109 172
64 114 174
65 119 172
66 124 175
67 129 174
68 134 175
69 139 179
70 144 178
71 149 176
72 154 178
73 159 176
74 164 180
75 169 177
76 174 179
77 179 175
78 184 178
79 189 176
80 194 178
81 199 174
82 204 177
83 184 178
84 189 176
85 194 178
86 199 174
87 204 1000
1836 x 3264 - 2M

Comments

  • I don't own an ActivityBot, but this is a common problem, and is usually caused by the servo not being calibrated. Did you run a centering program on the servo and adjust the potentiometer until the wheel stopped spinning?
  • I run the calibrating program. Where can I find a centring program for the servo? This program will also adjust the potentiometer?

    Thanks Martin.
  • Oh, I got it. I just need to set drive_speed(0,0) and adjust the potentiometer (did a quick googleing and found where it is in the servo) until the servo stops, right?
  • Martin_HMartin_H Posts: 4,051
    edited 2015-10-10 21:00
    I don't know as I don't own an ActivityBot. I skimmed the documents on learn.Parallax.com and didn't see anything. I was expecting to find something like this http://learn.parallax.com/node/185 which is used for the BOE shield not.
  • eguliasegulias Posts: 11
    edited 2015-10-11 13:57
    Hi,
    I'm trying that but right servo refuses to completely stop. However, if I switch right servo connection with that of left servo, then left servo starts to spin. Can be there a problem with P13?
    I'll remove all the connections I added, may be there's something interfering, since the servo stops but then starts to spin again.
    It is not only when set speed to 0. It ignores any speed set up.
  • Hal AlbachHal Albach Posts: 747
    edited 2015-10-11 14:46
    You have two 1K resistors going from P12 & P13 to what looks like the IR sensors. In the web tutorials I looked at shows these connections going to P10 & P11.
  • ercoerco Posts: 20,254
    edited 2015-10-11 20:11
    It's most likely a case of an uncentered servo, which needs adjustment of the pot. Do you own a cheapie servo tester? These have a setting for generating a center 1.5 ms pulse which will allow you to "null" (center) your high speed CR servo easily. Eliminates any programming or Activity Board wiring errors to speed up your debug process.

    If you don't, get yourself one. Very handy now and later on. http://www.ebay.com/itm/Multi-Servo-Tester-3CH-ECS-Consistency-Speed-Controler-Power-Channels-CCPM-DY-/262047015681?hash=item3d03382301

  • Thanks erco, I just bought it. I'll let you know the results.
  • @Hal Albach I removed all of the connections I had and left the bot with the bare minimum to test the servos.
    @erco If I switch P12 servo to P13 and vice versa the one failing is the "left" servo. Is this relevant?
  • Although the ActivityBot's servos have adjustment screws, the preferred way to null them out is via the software calibration program. If you use that, there should be no reason to touch the adjustment screws. I once made the mistake myself of fiddling with an ActivityBot adjustment screw. They're really touchy, and it's unlikely that you will be able to adjust it closer than it was adjusted at the factory. If your null point is between, say, 1485 and 1515 usec, leave the screw alone.

    -Phil
  • ercoerco Posts: 20,254
    egulias wrote: »
    @Hal Albach I removed all of the connections I had and left the bot with the bare minimum to test the servos.
    @erco If I switch P12 servo to P13 and vice versa the one failing is the "left" servo. Is this relevant?

    If you swap servos and the bad servo becomes the good servo, then they are probably OK and you likely have a hardware or software issue.

  • eguliasegulias Posts: 11
    edited 2015-12-08 12:14
    Hi again.
    Here's what I found.
    If I switch the whole setup then the left servo continues to work properly. I will test the encoder to see if that's what's not working.
    Thanks!
  • Courtney JacobsCourtney Jacobs Posts: 903
    edited 2015-12-08 17:28
    egulias,

    First, I would recommend you remove every connection shown on your breadboard except the servo/encoder cables, and resistors at P14&15 (see this tutorial page for connection details, if needed). Start simple when identifying your issue; your breadboard is full of connections that are not necessary for calibration and I cannot identify which might be affecting your robot from the picture you included. Once everything is removed, try a fresh calibration and see what happens.

    If that doesn't work, there have been cases where the servo is so out of center that it cannot be calibrated properly via the calibration program. I happen to have encountered this issue yesterday myself. Try the following code, making sure your power switch is set to 2 (also, have the robot's wheels off the ground in case it tries to take off).
    #include "simpletools.h"                      // Include simple tools
    #include "servo.h"
    
    int main()                                    // Main function
    {
      servo_set(12, 1500);
      servo_set(13, 1500);
    }  
    

    If the affected wheel spins while this program is running, gently use a screwdriver to adjust the potentiometer until the wheel stops. You may have to remove the battery pack to gain better access.

    Then, run the calibration program again and see if that fixes the problem. Do not forget to calibrate again after you have manually adjusted the servo's potentiometer. If this does not fix the issue, please call or email technical support at 888-997-8267 (support@parallax.com) and they can help you further isolate the cause of the runaway servo.
  • Hi Courtney!
    Thanks for your help, worked like charm. Calibrated the servos and run the calibration program, worked as expected. However the calibration table still looks as in the troubleshooting section
    (run the calibration twice, just in case) and yes, pins are right.

    === LEFT SERVO ===

    Table Entries = 89
    Zero Speed Index = 40

    Index Servo Drive Encoder Ticks/Second


    0 -194 1000
    1 -189 178
    2 -184 181
    3 -179 174
    4 -174 174
    5 -169 173
    6 -164 173
    7 -159 173
    8 -154 170
    9 -149 172
    10 -144 170
    11 -139 170
    12 -134 168
    13 -129 168
    14 -124 166
    15 -119 164
    16 -114 166
    17 -109 158
    18 -104 160
    19 -99 152
    20 -94 147
    21 -89 144
    22 -84 138
    23 -79 128
    24 -74 124
    25 -69 114
    26 -64 107
    27 -59 99
    28 -54 91
    29 -49 83
    30 -44 76
    31 -39 62
    32 -34 55
    33 -29 45
    34 -24 35
    35 -19 26
    36 -14 16
    37 -12 12
    38 -10 8
    39 -8 5
    40 -1 0
    41 6 6
    42 8 11
    43 10 15
    44 12 19
    45 14 23
    46 19 33
    47 24 41
    48 29 50
    49 34 60
    50 39 68
    51 44 78
    52 49 87
    53 54 94
    54 59 103
    55 64 108
    56 69 117
    57 74 126
    58 79 129
    59 84 133
    60 89 141
    61 94 145
    62 99 146
    63 104 153
    64 109 157
    65 114 157
    66 119 160
    67 124 162
    68 129 165
    69 134 162
    70 139 169
    71 144 169
    72 149 169
    73 154 170
    74 159 172
    75 164 174
    76 169 169
    77 174 172
    78 179 172
    79 184 172
    80 189 174
    81 194 172
    82 199 172
    83 204 172
    84 184 172
    85 189 174
    86 194 172
    87 199 172
    88 204 1000


    === RIGHT SERVO ===

    Table Entries = 89
    Zero Speed Index = 40

    Index Servo Drive Encoder Ticks/Second


    0 -195 1000
    1 -190 178
    2 -185 175
    3 -180 177
    4 -175 173
    5 -170 175
    6 -165 177
    7 -160 175
    8 -155 173
    9 -150 171
    10 -145 171
    11 -140 171
    12 -135 173
    13 -130 166
    14 -125 166
    15 -120 164
    16 -115 161
    17 -110 159
    18 -105 161
    19 -100 155
    20 -95 153
    21 -90 141
    22 -85 141
    23 -80 136
    24 -75 127
    25 -70 126
    26 -65 113
    27 -60 108
    28 -55 101
    29 -50 88
    30 -45 81
    31 -40 73
    32 -35 63
    33 -30 54
    34 -25 44
    35 -20 35
    36 -15 25
    37 -10 16
    38 -8 11
    39 -6 7
    40 2 0
    41 10 8
    42 12 13
    43 14 17
    44 16 20
    45 18 24
    46 23 33
    47 28 45
    48 33 52
    49 38 60
    50 43 71
    51 48 77
    52 53 91
    53 58 96
    54 63 105
    55 68 112
    56 73 124
    57 78 127
    58 83 133
    59 88 140
    60 93 145
    61 98 149
    62 103 155
    63 108 155
    64 113 161
    65 118 161
    66 123 165
    67 128 169
    68 133 170
    69 138 172
    70 143 174
    71 148 174
    72 153 172
    73 158 176
    74 163 176
    75 168 176
    76 173 180
    77 178 174
    78 183 176
    79 188 176
    80 193 176
    81 198 176
    82 203 174
    83 178 174
    84 183 176
    85 188 176
    86 193 176
    87 198 176
    88 203 1000
  • Your calibration table looks perfect here. If everything behaves as expected I believe you have solved your robot's problems.

  • Aren't lower and upper (1000) bounds too high? From the guide they should stop at ~176.
  • Our code changed a while back to initialize with an outrageous, (hopefully) unobtainable top speed to prevent the calibration program from looking for a value that is outside of its bounds.

    If your robot managed to reach speeds far beyond what it originally calibrated for (by turning off encoder feedback), you would very quickly lose accuracy in your experienced speed values without this high upper/lower limit.

    The troubleshooting screenshot has not yet been updated to reflect the change to the code, but I will make note to update it asap to prevent further confusion.
Sign In or Register to comment.