Si buscas una bomba peristáltica de precisión diseñada para aplicaciones de laboratorio precisas, con caudales que van desde menos de 1 µL/min hasta 366,7 mL/min —dependiendo del número de rodillos del cabezal de la bomba—, quizá te interese echar un vistazo a la Longer L100-1S-2. Esta bomba suministra los fluidos con la máxima precisión en una amplia gama de caudales y, además, es relativamente económica.
Se puede controlar de forma remota desde tu ordenador, lo que te ofrece mayor flexibilidad y comodidad, sobre todo si deseas ejecutar programas de bombeo complejos con bucles, pausas y caudales variables.
En esta entrada del blog, te mostraremos cómo comunicarte con el modelo L100-1S-2 mediante el protocolo LONGER RS485, un protocolo de comunicación en serie que permite enviar comandos y recibir respuestas de la bomba. También te proporcionaremos algunos ejemplos y fragmentos de código sobre cómo utilizar Python para escribir y enviar cadenas de comandos de control a la bomba.
¿Qué se necesita para comunicarse con el L100-1S-2?
Para comunicarte con el L100-1S-2 mediante el protocolo LONGER RS485, necesitarás lo siguiente:
- Una bomba L100-1S-2 con una cabeza de bombeo y una tube de tu elección
- Un módulo de control RS485 que se conecta al puerto DB15 situado en la parte trasera de la bomba
- Un cable serie que conecta el módulo de control RS485 a tu ordenador o dispositivo
- Una plataforma de programación (Python, en este caso)
- Conocimientos básicos sobre el formato de datos, el formato de comandos y el formato de PDU del protocolo LONGER RS485 (que se explican a continuación 👇)
¿Cómo se configura el puerto de comunicación?
Antes de poder empezar a enviar y recibir datos de la bomba, debes configurar correctamente el puerto de comunicación. Estos son los pasos que debes seguir:
- Conecta el conector DB15 al puerto DB15 situado en la parte trasera de la bomba
- Enciende la bomba y utiliza el teclado situado en la parte frontal de la misma para acceder a la interfaz de configuración del mando a distancia y configura el modo de mando a distancia en «COM» 🕹️
- Asegúrate de que los parámetros de comunicación de tu plataforma de programación coincidan con los del L100-1S-2 (tal y como se muestra en la siguiente figura), que son:
- 1 bit de inicio
- 8 bits de datos
- Paridad: P-n (sin paridad), P-O (paridad impar) o P-E (paridad par)
- Bit de parada: S-1 (1 bit de parada) o S-2 (2 bits de parada)
- Velocidad de transmisión: 12 (1200 bits/s), 24 (2400 bits/s), 48 (4800 bits/s), 96 (9600 bits/s), 192 (19200 bits/s) o 384 (38400 bits/s)
¿Cómo escribir cadenas de comandos de control en el L100-1S-2?
Una vez que hayas configurado el puerto de comunicación, podrás empezar a escribir y enviar cadenas de comandos de control a la bomba. Una cadena de comandos de control es una secuencia de caracteres hexadecimales que sigue un formato específico, compuesto por:
- una bandera de salida (E9H)
- una dirección de bomba (del 1 al 30)
- la longitud de la PDU (unidad de datos de protocolo)
- una PDU, que contiene los caracteres de comando y los parámetros de la aplicación deseada
- una secuencia de comprobación de trama (FCS), que se obtiene calculando el XOR de la dirección de bombeo, la longitud de la PDU y la propia PDU (calcula tu FCS utilizando nuestra calculadora en línea de secuencia de comprobación de trama XOR)
La unidad de potencia (PDU) y su longitud dependen de la aplicación para la que se utilice la bomba. Algunas de las aplicaciones más habituales son:
- Ajustar el parámetro de funcionamiento (velocidad de rotación)
- Leer parámetro de funcionamiento (velocidad de rotación)
- Configurar el parámetro de funcionamiento (caudal)
- Leer el parámetro de funcionamiento (caudal)
- Configurar los parámetros de comunicación de la bomba
Para cada aplicación, existe un conjunto correspondiente de caracteres de comando y parámetros que debes incluir en la PDU. A continuación se detallan estos parámetros.
Configurar el parámetro de funcionamiento (velocidad de rotación)
Esta aplicación consiste en enviar datos a la bomba. La longitud total de la unidad de datos (PDU) es de 6 bytes, y la cadena del comando de control está compuesta por (en este mismo orden):
| WJ | Ajustar la velocidad | Estado 1 | Estado 2 |
| 2 bytes | 2 bytes | 1 byte | 1 byte |
- WJ, cadena de comando de control de 2 bytes, 57 4A
- Establecer la velocidad (2 bytes) con una unidad de velocidad de 0,01 rpm y una velocidad máxima de 100 rpm
- Estado 1 (1 byte):
- bit 0: bit de arranque/parada; un 1 pone en marcha la bomba y un 0 la detiene
- bit 1: bit de arranque; cuando es 1, la bomba arranca a plena velocidad (100 rpm) y, cuando es 0, funciona a velocidad normal
- Estado 2 (1 byte):
- bit 0: establece el sentido de rotación, donde 0 corresponde a la rotación en el sentido de las agujas del reloj y 1, a la rotación en sentido contrario a las agujas del reloj
La bomba responderá con WJ y mostrará en su pantalla frontal la velocidad de rotación y el sentido de giro tras recibir la cadena de comandos de control.
Leer parámetro de funcionamiento (velocidad de rotación)
Esta aplicación consiste en leer datos de la bomba. La longitud total de la PDU es de 2 bytes, y la cadena del comando de control es RJ.
La respuesta de la bomba consiste en:
| RJ | Mostrar velocidad | Estado 1 | Estado 2 |
| 2 bytes | 2 bytes | 1 byte | 1 byte |
- RJ, cadena de comando de control de 2 bytes, 52 4A
Configurar el parámetro de funcionamiento (caudal)
Esta aplicación consiste en enviar datos a la bomba. La longitud total de la PDU es de 8 bytes, y la cadena del comando de control está compuesta por:
| WL | Ajustar el caudal | Estado 1 | Estado 2 |
| 2 bytes | 4 bytes | 1 byte | 1 byte |
- WL, cadena de comando de control de 2 bytes, 57 4C
- Establecer el caudal (4 bytes) con la unidad de medida «nL/min»
La bomba responderá con WL Mostrar caudal (4 bytes) y mostrará en su pantalla frontal el caudal y el sentido de giro tras recibir la cadena de comandos de control.
Leer parámetro de funcionamiento (caudal)
Esta aplicación consiste en la lectura de datos de la bomba. La longitud total de la PDU es de 2 bytes, y la cadena del comando de control es RL.
La respuesta de la bomba consiste en:
| RL | Mostrar caudal | Estado 1 | Estado 2 |
| 2 bytes | 4 bytes | 1 byte | 1 byte |
- RL, cadena de comando de control de 2 bytes: 52 4C.
Configurar los parámetros de comunicación de la bomba
Esta aplicación consiste en enviar datos a la bomba para configurar los distintos parámetros de comunicación. La longitud total de la PDU es de 8 bytes, y la cadena de comandos de control está compuesta por:
| WID | Dirección | Velocidad de transmisión | Paridad | Bit de parada |
| 3 bytes | 1 byte | 2 bytes | 1 byte | 1 byte |
- WID, cadena de comando de control de 3 bytes: 57 49 44
- Dirección de la bomba (1 byte), rango válido: 1-30
- Velocidad de transmisión (2 bytes): el byte alto es 00H y el byte bajo es el que se indica en la tabla siguiente:
| Byte menor | Velocidad de transmisión (bits/s) |
|---|---|
| 01H | 1200 |
| 02H | 2400 |
| 03H | 4800 |
| 04H | 9600 |
| 05H | 19200 |
| 06H | 38400 |
| Otro valor | No válido |
- Paridad (1 byte), configuración según la tabla siguiente:
| Escenario | Paridad |
|---|---|
| 01H | Sin paridad |
| 02H | Paridad impar |
| 03H | Paridad igual |
| Otro valor | No válido |
- Bit de parada (1 byte), configuración según la tabla siguiente:
| Escenario | Bit de parada |
|---|---|
| 01H | 1 bit de parada |
| 02H | 2 bits de parada |
| Otro valor | No válido |
Ejemplos de cadenas de comandos de control
- Configura el L100-1S-2 para que gire en sentido antihorario a una velocidad de 20 rpm.
Cadena de comando de control: E9 01 06 57 4A 07 D0 01 01 CD
- E9como indicador
- 01como dirección 1 de la bomba
- 06como longitud de la PDU (57 4A 07 D0 01 01)
- 57 4A como caracteres de comando WJ
- 07 D0se refiere a la velocidad de rotación; 07 D0 (hex) = 2000 (dec); la unidad de velocidad es 0,01 rpm ⇒ la velocidad de rotación = 20 rpm (consulta nuestraherramienta en líneade conversión de sistemas numéricos)
- 01para poner en marcha la bomba a velocidad normal
- 01: para hacer girar la bomba en sentido antihorario
- CDcomo resultado de la operación XOR entre01(dirección de la bomba),06(longitud de la PDU) y57 4A 07 D0 01 01(PDU)
- Configura el L100-1S-2 para que funcione en el sentido de las agujas del reloj a un caudal de 3 ml/min.
Cadena de comandos de control: E9 01 08 57 4C 00 2D C6 C0 01 00 38
- E9como indicador
- 01 como la dirección 1 de la bomba
- 08 como longitud de la PDU (57 4C 00 2D C6 C0 01 00)
- 57 4C como caracteres de comando WL
- 00 2D C6 C0hace referencia al caudal; 00 2D C6 C0 (hex) = 3000000 (dec); la unidad de caudal es nL/min ⇒ el caudal = 3000000 nL/min = 3 mL/min
- 01para poner en marcha la bomba a velocidad normal
- 00 para hacer funcionar la bomba en el sentido de las agujas del reloj
- 38como resultado de la operación XOR entre01(dirección de la bomba),08(longitud de la PDU) y 57 4C 00 2D C6 C0 01 00(PDU)
🚨No dudes en utilizar nuestro sencillo generador de cadenas de comandos en línea para crear sin esfuerzo cadenas de comandos de control precisas para tu L100-1S-2.
¿Cómo comunicarse con el L100-1S-2 utilizando Python?
A continuación se presentan fragmentos de código en Python que muestran cómo abrir el puerto serie, escribir y enviar cadenas de comandos de control a la bomba, así como escribir un programa sencillo de bombeo.
A partir del primer ejemplo que acabamos de presentar, el siguiente fragmento de código en Python hace que el L100-1S-2 gire en sentido antihorario a una velocidad de rotación de 20 rpm.
### RUN PUMP 1, COUNTER-CLOCKWISE, AT A ROTATING SPEED OF 20 RPM
# To use the pySerial package
import serial
# Open the serial port with tha data format corresponding to the L100-1S-2
# The parameters in the command need to be the same as the communication parameters set for the pump
ser = serial.Serial('COM3', 9600, parity=serial.PARITY_NONE, bytesize=8, stopbits=1, timeout=None, xonxoff=0, rtscts=0)
# Write the corresponding control command string in hexadecimal
Data = bytearray(b'\xE9\x01\x06\x57\x4A\x07\xD0\x01\x01\xCD')
# Write the Data to the pump
ser.write(Data)
- En un segundo fragmento de código, hagamos que la bomba gire en sentido antihorario a un caudal de 5 ml/min durante 10 s; a continuación, hagamos que gire en sentido horario a un caudal de 3 ml/min durante 30 s antes de detenerla.
### RUN PUMP 1 COUNTER-CLOCKWISE AT A FLOW RATE OF 5 mL/min FOR 10s, THEN CLOCKWISE AT A FLOW RATE OF 3 mL/min FOR 30s BEFORE STOPPING IT
# To use the pySerial package
import serial
# To use the time package
import time
# Open the serial port with tha data format corresponding to the L100-1S-2
# The parameters in the command need to be the same as the communication parameters set for the pump
ser = serial.Serial('COM3', 9600, parity=serial.PARITY_NONE, bytesize=8, stopbits=1, timeout=None, xonxoff=0, rtscts=0)
# Run pump 1 counter-clockwise at a flow rate of 5 mL/min for 10s
Data = bytearray(b'\xE9\x01\x08\x57\x4C\x00\x4C\x4B\x40\x01\x01\x55') # corresponding control command string in hexadecimal
ser.write(Data) # Write the Data to the pump
# 10s delay with a visible timer
for Pumping_time in range(10, 0, -1):
print(Pumping_time)
time.sleep(1)
# Run pump 1 clockwise at a flow rate of 3 mL/min for 30s
Data = bytearray(b'\xE9\x01\x08\x57\x4C\x00\x2D\xC6\xC0\x01\x00\x38') # corresponding control command string in hexadecimal
ser.write(Data) # Write the Data to the pump
# 30s delay with a visible timer
for Pumping_time in range(30, 0, -1):
print(Pumping_time)
time.sleep(1)
# Stop the pump
Data = bytearray(b'\xE9\x01\x08\x57\x4C\x00\x2D\xC6\xC0\x00\x00\x39') # corresponding control command string in hexadecimal: we took the previous command string and changed the 'State 1' byte from 01 (start the pump) to 00 (stop the pump) and of course computed the new fcs
ser.write(Data) # Write the Data to the pump
Conclusión
Esperamos que esta entrada del blog te haya ayudado a comprender cómo controlar de forma remota la bomba peristáltica L100-1S-2 de Longer mediante Python y utilizando el protocolo RS485 de LONGER. También puedes utilizar otras plataformas de programación, como Matlab, para escribir y enviar cadenas de comandos de control a la bomba, así como para leer e interpretar las respuestas de la misma. Para obtener más detalles sobre este tema, consulta nuestra entrada del blog «¿Cómo controlar la bomba L100-1S-2 de Longer a través de Matlab?».
Si tienes alguna pregunta o comentario, no dudes en ponerte en contacto con nosotros en contact@darwin-microfluidics.com.



¿Cómo controlar a distancia tus bombas peristálticas « Longer »?
[…] ¿Cómo controlar la bomba L100-1S-2 de Longer mediante Python? […]
¿Cómo controlar la bomba L100-1S-2 deLonger a través de MATLAB?
[…] interpretar las respuestas de la bomba. Para obtener más información sobre este tema, consulta nuestra entrada del blog «¿Cómo controlar la bomba L100-1S-2 de Longer mediante Python?». Si tienes alguna pregunta o comentario, no dudes en ponerte en contacto con nosotros en […]