Test BOE Arlo Encoder Connections
The Arlo has built-in encoders that can count how far the Arlo travels in terms of 144ths of a wheel revolution. Although it’s not needed to run Boe-Bot code, it’s best to make sure they are functioning correctly in case you want to improve the accuracy of the Arlo’s maneuvers later. The next program will display the status of your encoder connections in the Debug 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, stand, or some other stable platform that prevents its wheels from coming into contact with the table top.
- Run Test Encoder Connections.bs2.
- Check the Debug 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.bs2 ' Run this program to verify that the Arlo's encoders have been connected. ' to the DHB-10 board correctly. ' {$STAMP BS2} ' {$PBASIC 2.5} left VAR Word right VAR Word n VAR Byte ' Stores index of serial exchange FREQOUT 4, 2000, 3000 ' Beep -> program starting DEBUG "Program running...", CR, CR ' Display program running ' Pace setting not required if Test BOE and DHB-10 Communication.bs2 has ' already been run (successfully). n = 1 ' First exchange DEBUG "PACE 1", CR ' Set serial pace for BS2 SEROUT 13, 32800, ["PACE 1", CR] ' Set serial pace for BS2 SERIN 13, 32800, 50, ERR, [WAIT(CR)] ' Get DHB-10's confirmation n = 2 ' Second exchange DEBUG "RST", CR SEROUT 13, 32800, ["RST", CR] ' Send reset encoders message SERIN 13, 32800, 50, ERR, [WAIT(CR)] ' Wait for DHB-10's confirmation n = 3 ' Third exchange DEBUG "GO 32 32", CR SEROUT 13, 32800, ["GO 32 32", CR] ' Send reset encoders message SERIN 13, 32800, 50, ERR, [WAIT(CR)] ' Wait for DHB-10's confirmation DEBUG "...for 4 s", CR PAUSE 4000 ' ...for 4 seconds n = 4 ' Fourth exchange DEBUG "GO 0 0", CR SEROUT 13, 32800, ["GO 0 0", CR] ' Send reset encoders message SERIN 13, 32800, 50, ERR, [WAIT(CR)] ' Wait for DHB-10's confirmation n = 5 ' Fifth exchange DEBUG "DIST", CR SEROUT 13, 32800, ["DIST", CR] ' Request distance SERIN 13, 32800, 50, ERR, ' Get left & right distances [SDEC left, SDEC right] DEBUG "left = ", SDEC left, ' Display left & right distances ", right = ", SDEC right, CR n = 6 ' Sixth exchange DEBUG "PULSE", CR SEROUT 13, 32800, ["PULSE", CR] ' Change modes, serial to pulse SERIN 13, 32800, 50, ERR, [WAIT(CR)] ' Wait for confirmation DEBUG CR ' Add a carriage return ' If all distances in range, then display success. IF left > 175 AND left < 325 AND right > 175 AND right < 325 THEN DEBUG "Encoder connections are ", CR DEBUG "correct! Your Arlo is ready ", CR DEBUG "for the next step.", CR, CR ELSE ' If not, find errors IF left > 175 AND left < 325 THEN ' If left good, say so DEBUG "Motor 1 encoder cables ", CR DEBUG "are connected correctly.", CR, CR ELSEIF left > -325 AND left < -125 THEN ' Negative? Cables reversed DEBUG "ERROR: Motor 1 encoder ", CR DEBUG "connections are reversed!", CR, CR ELSE ' Else, unknown error DEBUG "ERROR: Motor 1 encoder ", CR DEBUG "values out of range. Recheck ", CR DEBUG "encoder connections and ", CR DEBUG "assemblies.", CR ENDIF IF right > 175 AND right < 325 THEN ' Repeat for right encoders DEBUG "Motor 2 encoder cables ", CR DEBUG "are connected correctly.", CR, CR ELSEIF right > -325 AND right < -125 THEN DEBUG "ERROR: Motor 2 encoder ", CR DEBUG "connections are reversed!", CR, CR ELSE DEBUG "ERROR: Motor 2 encoder.", CR DEBUG "values out of range. Recheck ", CR DEBUG "encoder connections and ", CR DEBUG "assemblies", CR ENDIF ENDIF END ERR: ' Error routine DEBUG "ERROR, no reply from DHB-10.", CR ' Error message DEBUG "n = ", DEC n ' Index of exchange that failed STOP ' End program