(Descibe pololu calibration)
Line 26: Line 26:


==Calibration==
==Calibration==
* The actuator driver has hard-coded values for the number of steps per revolution and the pitch of the lead screw.  Dividing those gives the number of steps per mm; with 200 steps per revolution and .8 mm pitch, there's 250 steps per mm.  For calibration, we want to compute the number of steps, so we set the ml/mm to this number.  That way, instructing to move a number of ml will actually move that number of steps.
* The actuator driver has hard-coded values for the number of steps per revolution and the pitch of the lead screw.  Dividing those gives the number of steps per mm; with 3200 steps per revolution and .8 mm pitch, there's 4000 steps per mm.  For calibration, we want to compute the number of steps, so we set the ml/mm to this number.  That way, instructing to move a number of ml will actually move that number of steps.  In fact any number will work here (it's corrected out later anyway), but having an integral number of steps makes sure there are no rounding errors.
* Move the motor so the syringe is pulled out to the end of the syringe's scale, then push it back to the last division.  Get it as precise as possible, but don't pull; if you go over the division, pull back a mm and then push again until you hit it.
* Move the motor so the syringe is pushed in as far as it can go, then pull it back to a division.  Get it as precise as possible, but don't push; if you go over the division, push back a mm and then pull again until you hit it.
* Set the position to 0.
* Set the position to 0.
* Move the motor so the syringe is pushed in to the farthest division it can reach without hitting the idler end.  Use only pushing to get there.  If you've pushed too far, pull at least a mm too far back and push it again.  If you've hit the idler end, restart by calibrating the zero position.
* Move the motor so the syringe is pushed in to the farthest division.  Use only pulling to get there.  If you've pulled too far, push at least a mm too far back and push it again.
* Read the position.  Divide the actual distance in ml (start position minus end position) by this number; that is the number of ml per mm that you should use as calibration for this syringe type.
* Read the position.  This is the number of steps the motor has moved.  Divide the actual distance in ml (end position minus start position, as read on the syringe's scale) by this number; that is the number of ml per step.  Multiply this by the number of steps per mm (4000) gives the number of ml/mm that you should use as calibration for this syringe type.

Revision as of 16:19, 22 July 2013

This page describes the linear actuator that the MOST group made from 3-D printed parts. In particular, it explains how to use it as a syringe pump and a microscope stage.

Hardware

The length of the actuator is defined by two smooth rods, diameter 6 mm, and one threaded rod, M5, which is used as a lead screw. A carriage moves over those rods, with linear bearings (LM6UU) on the smooth rods and one or two trapped nut on the lead screw.

The idler end clamps on the smooth rods, and holds the lead screw with two 628ZZ bearings. The motor end also clamps on the smooth rods, and attaches a NEMA11 motor to the lead screw with a flexible coupling.

For the syringe pump, a printed clamping mechanism is used to clamp the syringe body to the idler end, and the piston to the carriage.

The motor is driven by a Pololu stepper motor driver, which is controlled by the GPIO pins of a Raspberry Pi.

The NEMA11 motor we used has a maximum current of 0.67 A. The pololu voltage has to be set to the current * 0.4 V/A = .268 V. Make sure to set it; the default is higher and will burn out the motor.

Software

On the Raspberry Pi, a server is running which accepts connections from programs written in python. This client program can make remote procedure calls to control the actuator. This is the most low-level and most powerful method of controlling the actuator; it allows easy integration with other actuators and sensors, resulting in a fully automated measurement.

For manual control, there is a program named wsserver; it connects to the Raspberry Pi using its python interface, and hosts a web site to monitor and control the state of the actuator. The terminology it uses is set up for a syringe pump.

Web Interface

In the web interface, there are three lines: calibration, position, and speed, which are all set up the same way. First, they show the current value of the variable; position is red while it's moving. Then there's an input field to enter a new value. Pressing the Set button will send this value to the server; the current value (left of the input field) shows that the server has updated. Note that setting the position in this way does not move the actuator; it only shifts the server's scale, such that the current position is what it was requested to be.

The bottom line is used for moving the actuator. Putting a number in the field and clicking the Pull or Push button will make the motor move.

Calibration

  • The actuator driver has hard-coded values for the number of steps per revolution and the pitch of the lead screw. Dividing those gives the number of steps per mm; with 3200 steps per revolution and .8 mm pitch, there's 4000 steps per mm. For calibration, we want to compute the number of steps, so we set the ml/mm to this number. That way, instructing to move a number of ml will actually move that number of steps. In fact any number will work here (it's corrected out later anyway), but having an integral number of steps makes sure there are no rounding errors.
  • Move the motor so the syringe is pushed in as far as it can go, then pull it back to a division. Get it as precise as possible, but don't push; if you go over the division, push back a mm and then pull again until you hit it.
  • Set the position to 0.
  • Move the motor so the syringe is pushed in to the farthest division. Use only pulling to get there. If you've pulled too far, push at least a mm too far back and push it again.
  • Read the position. This is the number of steps the motor has moved. Divide the actual distance in ml (end position minus start position, as read on the syringe's scale) by this number; that is the number of ml per step. Multiply this by the number of steps per mm (4000) gives the number of ml/mm that you should use as calibration for this syringe type.
Cookies help us deliver our services. By using our services, you agree to our use of cookies.