Team:Grenoble-Alpes/pipetting module

Template loop detected: Template:Grenoble-Alpes



In our system, we need to pipette automatically different volumes to execute our biological process.

The solution we chose is to use an electronic pipette Biohit e10. The main advantage is that after removing the cap of the pipette, we can solder wires to the electronic card to control the different buttons of the pipette and it will work by itself!

The button functions are described in the following figure:

Figure 1:Soldering of the pipette and Figure 2: Pipette Biohit e10 [1]

To make the pipette work, we need a power supply of 5 Volts and 1.5 Ampers at least. Wires are connected from an Arduino card (microcontroller) to the buttons to control them later.

Figure 3: Pipette electronic system


We needed a pipetting system moving vertically above the samples on the circular plate. For that, we used a linear guide with a lead screw and a motor allowing to move the pipette vertically with a good precision. All the pieces, like the guiding bars, the coupler and the lead screw have been bought on a professional website [2] to guarantee us a fluid and precise movement. It provides the precision required to pipette at the wanted depth in the Eppendorf tubes. The precision reached is about one-tenth of mm.

This linear guide system has been fixed on a wooden plate between two aluminum bars. The plate has been first engraved with a laser-cutting machine to mark the positions to drill the holes for the screws at the right position.

The vertical movement of the pipette is realized by a motor controlled with an Arduino microcontroller.

Figure 4: guide system of the pipette


We printed a piece in 3D to hold the pipette and to fix it to the linear guide.

A piece designed on a Computer-Aided Design (CAD) software and printed 3D is fixed on the linear guide and holds the pipette. The dimensions have been measured carefully to fit perfectly with the pipette. Some foam rubber is added to get a better fixation of the pipette with higher pressure forces.

Figure 5: pipette fixation

One issue of this system was to take a pipette tip on the circular plate with the pipette. The pipette had to go down, insert in the tip and push a bit to attach. However, the force required to push was too strong and instead of inserting in the tip, the pipette was detaching from the 3D-printed holding piece. This problem was solved by drilling a hole at the back of the 3D-printed piece. With a screw passing through this hole and nuts, the pipette is now perfectly fixed.


About the pipette choice

In the first stage of the project development, we thought of 3 main ideas to realize the functions of the pipetting module.

A simple syringe, whose piston is connected to a motor.

The use of a simple syringe with a motor pulling or pushing the piston has the advantage of being an affordable solution. However, we cannot control how much we really pull or push the piston with our motor: if our stepper motor misses a step, it would be very difficult for us to notice it. Hence, there is no repeatability of the biological process possible.

Figure 7 : A simple syringe [3]

A regular pipette with an “artificial thumb” that would control it

Another system would have been to use a regular pipette and create a mechanical system able to push and turn the button to pipette and change the volume. The challenge here is to get enough precision on the system to pipette the right volume. We realized that it would have needed too much time to create such a system with at least one stepper motor, and many mechanics. Moreover, there was still with the uncertainty that we could reach the needed precision. Hence, we had to find another way to make our pipetting module.

Figure 8 : Regular mechnical pipettes [4]

An electronic pipette connected to our Arduino microcontroller

Finally, we decided to use an electronic pipette and simply connect the physical buttons to our microcontroller (Arduino). By sending an electronic signal, we can trigger the pipette buttons and let the internal system of the electronic pipette handle the actual pipetting.

This method allows us to have a guaranteed accuracy on our pipetting (the same as if we were manually triggering the different buttons of the pipette). The primary goal of this module is to be precise, and an electronic pipette connected to our Arduino is the best way to obtain this accuracy. Below, one can find the specifications of the pipettes with the systematic and random errors in function of the volume.

Figure 9 : Specifications of the eLine pipettes that we possess [5]

For us, the big advantage of some electronic pipette models is that even the tip ejection is electronically controlled and saves us from adding another mechanical system.

One drawback of electronic pipettes is their price: count at least 600€ for a new one. However, those devices work on battery that tends to stop working before the rest. As a result, a lot of functioning second-hand electronic pipette without a battery can be found on the internet. We were lucky to have partners who gave us electronic pipettes for free. We first worked on the pipette Biohit e10 that can pipette up to 10μL but to execute the biological process entirely with only one pipette, the ideal volume range is from 10μL to 300μL.

We bought a first Biohit e300 pipette from the US that somehow stopped working from one day to another. Then we stopped looking because this model was sold out everywhere. We asked a partner company if they had any pipette, and they had the same model, but also non-functional. And here is the nice story, we saw that one electronic component was burnt and we managed to replace it with the component of the other pipette. To sum up, from to broken pipettes, we built one working pipette.

About the pipette choice


An electronic pipette is composed of 3 main parts:

- A motorized syringe

- A microcontroller

- A power supply

The first step for us was to connect our pipette to a power supply in order to get rid of the batteries. The batteries used by those pipettes deliver a 4.8V nominal tension, we therefore simply had to connect the battery connectors of the pipette to a 5V power supply in order to make it work. (the power supply needs to be a bit higher than the nominal tension, as the nominal tension is the minimal tension supplied by batteries and is therefore interpreted as a “low battery” by the device).


The second step was to open up the pipette in order to reveal the physical switches that a normal user would press, we did not succeed in doing this step properly and had to actually saw a bit of plastic to reveal the switches. We then proceeded to solder every switch to cables.   

    Finally, in order to trigger the switches, we used a simple optocoupler.

Figure 9 : Electronic scheme of an electrocoupler [5] and electronic circuit to control a button [5]

This is how an optocoupler works: We send a current through the diode that will emit some light. On the other side, a phototransistor receives the light and converts it into a current that will finally close the circuit from the 5V to the GND of the button like a switch and like that trigger the button.

About how to initialize the pipette position

An initialisation of the pipette position is needed to have a program that can realise the biological process entirely. It is also really important for the safety of the machine to avoid the pipette going too low or too high which risks to damage several parts of the machine.

To do this initialization, we are using a magnetic switch and a magnet. When the magnet – moving with the pipette – gets close enough to the magnetic switch, the output electric tension of the switch changes its value from 0V to 5V. There is a small span at which the tension is at 5V and the informatics code finds the extremities of it and moves the pipette so that the magnet is at the middle.

Figure 11: Magnetic switch and a magnet

About the Arduino code

An Arduino program allows the system, and more precisely the pipette module to work entirely automatically.  It contains different sections. One part contains the functions to move the pipette up and down controlling the motor of the linear guide. Another part contains the functions to control the buttons of the pipette and to set the parameters like the aspirated volume, the absorption and dispensing speeds. All these functions can be found in the Annex part.

There is a function that took a bit more time to write than the others. It is the function triggerButton_Delay.

Well, you know that sometimes when you keep pushing on a button, the value displayed on the screen increments faster. That is the case for the Biohit e10 pipette. That is to say, at first when we push the button up or down to change the volume, it goes really slowly and then after a certain time, it starts to go faster at a constant speed. To clarify, it is much faster to keep pushing on the button than to push it many times in a row. As pipetting is probably the most repeated action in our biological process, the implementation of a function that computes the delay we have to keep triggering the button allows us to reduce a bit the time of realization of the whole process.

So to change the volume from one value to one another, the delay the button has to be triggered can be estimated. To do so, we did several tests with different delays and wrote in a table the associated shifts for the volume. After that, a linear regression gives the function that links the shift in volume to the delay we keep triggering the button.

Figure 12 calibration table

To do the linear regression, we used only the values above a threshold at which the rapidity is stable, that’s to say 150 *(0.01μL).

Figure 13: calibration curve and linear regression (for a volume shift > 150*(0.01μL))

The function obtained gives the delay associated with a volume shift. To verify this function we did some tests with the delays found by the function and the volume shift obtained has always been the one wanted. Hence, this part has been validated.

Figure 14: delays computed for specific volume shifts and tests to validate the function obtained


[1] :

[2] :

[3] :

[4] :

[5] :

[6] :