Test Activity Board Arlo’s Encoder Connections
The Arlo has encoders that track distance in 144th increments of a full wheel rotation. These increments are commonly called “counts”, and the Arlo’s encoders send 144 counts per revolution. The Arlo’s encoders are quadrature, meaning that the two encoder sensors are offset by ¼ of a count. By monitoring the pattern of low-high-low transitions for both sensors, the DHB-10 can also determine which direction the wheel is turning. For a given wheel, 144 counts would mean a full forward rotation, and -144 counts would mean a full backward rotation.
The next program will display the status of your encoder connections in the SimpleIDE Terminal. If there is a problem, it may indicate that the encoder cables have been swapped or that there is some other wiring problem. Here are examples of what you might see:

- We want the wheels to be able to spin freely during this test, so set your Arlo on a box, stands, or some other stable platform that prevents its wheels from coming into contact with the table top.
- Open Test Encoder Connections.side and click “Run with Terminal”.
- Check the SimpleIDE Terminal’s messages. It’ll either tell you that the Arlo is ready for the next step, or describe the error it encountered and suggest either a fix, or at least where to look for a potential problem.
/*
Arlo - Test Encoder Connections.c
This program tests to make sure the Arlo's wheel encoder connections
are correct. The Arlo will not be ready for the next step until you
have verified that the number of encoder transitions (ticks) for both
wheels are positive when the wheels roll forward.
If you have not already completed Test Arlo Motor Connections.c,
complete it first, then continue from here.
Use SimpleIDE's Run with Terminal button to run this program. If the
SimpleIDE Terminal displays the "Encoder connections are correct!..."
message, your Arlo is ready for the next step, which is running
navigation programs.
If the SimpleIDE Terminal instead displays one or more "ERROR..."
messages, those encoder encoder connections will need to be
corrected. For example, if the messages says, "ERROR: Motor 1
encoder connections are reversed!", you will need to unplug and
swap the two 3-wire encoder cables next to the Motor 1 terminal
on the DHB-10, swap them, and plug them back in.
Make sure to test between each adjustment. Your arlo will not be
ready for the next step until you get the success message from
this test.
*/
#include "simpletools.h" // Include simpletools library
#include "arlodrive.h" // Include arlodrive library
int ticksL, ticksR; // Encoder tick counts
int main() // Main function
{
print("Testing...\n\n"); // Display status
drive_feedback(0); // Disable encoder feedback
drive_clearTicks(); // Clear encoder values
drive_speed(32, 32); // Drive motors at 1/4 power
pause(4000); // ...for 4 seconds
drive_speed(0, 0); // Cut power to motors
drive_getTicks(&ticksL, &ticksR); // Get encoder measurements
print("ticksL = %d, ticksR = %d\n\n", // Display encoder measurements
ticksL, ticksR);
if((ticksL > 175) && (ticksL < 325) && // Both distances positive?
(ticksR > 175) && (ticksR < 325))
{
print("Encoder connections are \n"); // Success message
print("correct! Your Arlo is \n");
print("ready for the next step.\n\n");
}
else
{
if(ticksL > 175 && ticksL < 325) // Left encoders cables correct?
{
print("Motor 1 encoder cables \n"); // Correct encoder message
print("are connected correctly.\n\n");
}
else if(ticksL > -325 && ticksL < -125) // Left encoders cables swapped?
{
print("ERROR: Motor 1 encoder \n"); // Swapped encoder message
print("connections are reversed!\n\n");
}
else // Other problem
{
print("ERROR: Motor 1 encoder \n"); // Other encoder error message
print("values out of range. \n");
print("Recheck encoder connections\n");
print(" and assemblies.\n\n");
}
if(ticksR > 175 && ticksR < 325) // Right encoders cables correct?
{
print("Motor 2 encoder cables\n"); // Correct encoder message
print("are connected correctly.\n\n");
}
else if(ticksR > -325 && ticksR < -125) // Right encoders cables swapped?
{
print("ERROR: Motor 2 encoder\n"); // Swapped encoder message
print("connections are reversed!\n\n");
}
else // Other problem
{
print("ERROR: Motor 2 encoder\n"); // Other encoder error message
print("values out of range.\n");
print("Recheck encoder connections\n");
print("and assemblies.\n\n");
}
}
print("Test done.\n\n"); // Display status
}