Thursday, 20 February 2014

Interface Bench Test - Part 3

I thought it would be a good idea to check through my program code on paper, checking the stepper motor sequencing is ready, and guess what....   I discovered a few bugs design limitations which had to be resolved before commencing the test.




To confirm the Arduino/Armdroid interface wiring used, the following connections have been made:

ARDUINO PIN
FUNCTION
ARMDROID PIN
2
D1
4
3
D2
3
4
D3
6
5
D4
5
6
D5
8
7
D6
7
8
D7
10
9
D8
9

The common grounds have been connected together - that's Pin 2 on the Armdroid interface, connected to any of the Ardunio's GND power pins.


Normally, I have some good news, and bad news.....  But, in this case, it's only good news to report....

The interface board is working faultlessly.

Motor addressing worked as expected for this generation of interface board.   I checked every motor channel, making sure the motor spins clockwise/counter-clockwise.   I also made certain that selecting a motor channel, doesn't inadvertently activate another motor channel.  I couldn't actually be happier with the results of my bench test!


If your wondering how this was done....   In my last post, I mentioned the Ardunio will be responding to commands sent via the Serial Port.   I have designed a simple communications protocol, which is the backbone to this.

The following functions have currently been implemented:
  • Select a motor channel
  • Drive a motor with a specified number of steps
  • Set the motor speed in RPM
  • Write a value directly to the Armdroid interface port


This is a screen shot of the Serial Monitor showing the waveform outputs (in binary) in use when pulsing the stepper motor on channel six :


This level of tracing proved to be invaluable for diagnosing a few other issues in the software.   This certainly helps to visualize whats happening on the Armdroid interface.

I intend to develop this protocol further to support driving multiple motors (necessary for pitching/rolling the gripper) and tracking motor offsets counters which can be used to return the arm to a predefined home position.


The source code will be published shortly.   I'm currently moving all my source code into a new GitHub Repository, so please check back later.....