Si busca una bomba peristáltica de precisión capaz de gestionar múltiples canales simultáneamente (hasta 24), es recomendable que consulte la Longer BT100-1L. Esta bomba puede proporcionar caudales que van desde 2 µl/min hasta 366,7 ml/min, dependiendo del número de rodillos en el cabezal de la bomba. Asimismo, se trata de una bomba peristáltica relativamente económica con una amplia gama de aplicaciones.
La BT100-1L se puede controlar de forma remota desde su ordenador, lo que le otorga mayor flexibilidad y comodidad, especialmente si desea ejecutar programas de impulsión complejos con bucles, pausas y caudales variables.
En esta entrada del blog, le mostraremos cómo comunicarse con la BT100-1L empleando el protocolo LONGER RS485, un protocolo de comunicación serie que le permite enviar comandos y recibir respuestas de la bomba. También proporcionaremos algunos ejemplos y fragmentos de código sobre cómo utilizar Python para redactar y enviar cadenas de comandos de control a la bomba.
ÍNDICE
¿Qué necesita para comunicarse con la BT100-1L?
Para comunicarse con la BT100-1L mediante el protocolo LONGER RS485, necesitará lo siguiente:
- Una bomba BT100-1L con un cabezal de bomba y un tube de su elección
- Un módulo de control RS485 que se conecta al puerto DB15 de la parte posterior de la bomba
- Un cable serie que conecta el módulo de control RS485 a su ordenador o dispositivo
- Una plataforma de programación (Python en este caso)
- Una comprensión básica del formato de datos, el formato de comandos y el formato PDU del protocolo LONGER RS485 (explicado a continuación 👇)
¿Cómo configurar el puerto de comunicación?
Antes de comenzar a enviar y recibir datos de la bomba, debe configurar el puerto de comunicación correctamente. Siga estos pasos:
- Conecte el conector DB15 al puerto DB15 situado en la parte posterior de la bomba
- Encienda la bomba y pulse el botón de ajuste en el panel frontal para acceder a la interfaz de configuración del control remoto y habilitar dicho modo 🕹️
- Asegúrese de que los parámetros de comunicación en su plataforma de programación coincidan con los de la BT100-1L, los cuales son:
- 1 bit de inicio
- 8 bits de datos
- 1 bit de paridad par
- 1 bit de parada
- una velocidad en baudios de 1200 bits/s
¿Cómo redactar las cadenas de comandos de control para la BT100-1L?
Una vez que haya configurado el puerto de comunicación, puede comenzar a redactar 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, el cual consta de:
- un indicador de inicio (E9H)
- una dirección de bomba (de 1 a 30, o 31 para difusión)
- una longitud de la PDU (unidad de datos de protocolo)
- una PDU, que contiene los caracteres de comando y los parámetros para la aplicación deseada
- una secuencia de verificación de trama (FCS), que se obtiene calculando el XOR de la dirección de la bomba, la longitud de la PDU y la PDU en sí (calcule su FCS utilizando nuestra calculadora XOR de secuencia de verificación de trama en línea)
La PDU y su longitud dependen de la aplicación requerida para la bomba. Algunas de las aplicaciones comunes son:
- Establecer parámetro de funcionamiento (velocidad de rotación)
- Leer parámetro de funcionamiento (velocidad de rotación)
- Establecer el parámetro de funcionamiento (caudal) con el cabezal de bomba y el tube
- Leer el parámetro de funcionamiento (caudal) con el cabezal de bomba y el tube
- Calibración del caudal
Para cada aplicación, existe un conjunto correspondiente de caracteres de comando y parámetros que debe incluir en la PDU. Estos parámetros se detallan a continuación.
Establecer parámetro de funcionamiento (velocidad de rotación)
Esta aplicación consiste en escribir en la bomba. La longitud total de la PDU es de 6 bytes donde la cadena de comandos de control consta de (en el mismo orden exacto):
| XL | Establecer velocidad | Estado 1 | Estado 2 |
| 2 bytes | 2 bytes | 1 byte | 1 byte |
- XL, cadena de comandos de control de 2 bytes, 58 4C
- Establecer la velocidad (2 bytes) con una unidad de velocidad de 0,1 rpm y una velocidad máxima de 100 rpm (03 E8)
- Estado 1 (1 byte):
- bit 0 – bit de inicio/parada, donde 1 es para iniciar la bomba y 0 es para detenerla
- bit 1 – bit de cebado, donde 1 sirve para cebar la bomba a la velocidad máxima de 100 rpm y 0 para hacer funcionar la bomba a velocidad normal
- Estado 2 (1 byte):
- bit 0 – establece el sentido de rotación, donde 1 corresponde al sentido horario y 0 al antihorario
La bomba responderá con XL y mostrará en su pantalla frontal la velocidad y el sentido de rotación tras recibir la cadena de comandos de control.
Leer parámetro de funcionamiento (velocidad de rotación)
Esta aplicación consiste en realizar una lectura desde la bomba. La longitud total de la PDU es de 2 bytes y la cadena de comandos de control es DL.
La respuesta de la bomba consta de:
| DL | Mostrar velocidad | Estado 1 | Estado 2 |
| 2 bytes | 2 bytes | 1 byte | 1 byte |
- DL, cadena de comandos de control de 2 bytes, 44 4C
Establecer el parámetro de funcionamiento (caudal) con el cabezal de bomba y el tube
Esta aplicación consiste en realizar una escritura en la bomba. La longitud total de la PDU es de 10 bytes y la cadena de comandos de control consta de:
| WL | 2 bytes |
| Establecer el caudal | 4 bytes |
| Estado 1 | 1 byte |
| Estado 2 | 1 byte |
| Número de cabezal de bomba | 1 byte |
| Número de tube | 1 byte |
- WL, cadena de comandos de control de 2 bytes, 57 4C
- Establecer el caudal (4 bytes) utilizando la unidad de caudal nL/min
- Estado 1 (1 byte) y Estado 2 (1 byte) tal como se ha explicado anteriormente
- Número del cabezal de bomba (1 byte), como se muestra en las tablas siguientes:
| Cabezal de bomba | Caracteres |
|---|---|
| DG (6 rodillos) | 01 |
| DG (10 rodillos) | 02 |
| YZ1515/YZ2515 | 03 |
| 313D | 04 |
| DG15 | 05 |
- Número de tube (1 byte), como se presenta en la tabla siguiente:
| ID de tube (mm) 01: DG (6 rodillos) 02: DG (10 rodillos) 05: DG15 | Número de tube |
|---|---|
| 0.13 | 01 |
| 0.19 | 02 |
| 0.25 | 03 |
| 0.38 | 04 |
| 0.44 | 05 |
| 0.51 | 06 |
| 0.57 | 07 |
| 0.64 | 08 |
| 0.76 | 09 |
| 0.89 | 10 |
| 0.95 | 11 |
| 1.02 | 12 |
| 1.09 | 13 |
| 1.14 | 14 |
| 1.22 | 15 |
| 1.30 | 16 |
| 1.42 | 17 |
| 1.54 | 18 |
| 1.65 | 19 |
| 1.75 | 20 |
| 1.85 | 21 |
| 2.06 | 22 |
| 2.29 | 23 |
| 2.54 | 24 |
| 2.79 | 25 |
| 3.17 | 26 |
| ID de tube (mm) 3: YZ1515/YZ2515 4: 313D | Caracteres |
|---|---|
| 0.8 | 01 |
| 1.6 | 02 |
| 2.4 | 03 |
| 3.1 | 04 |
| 4.8 | 05 |
| 6.4 | 06 |
| 7.9 | 07 |
| 9.6 | 08 |
La bomba responderá con WL Mostrar caudal (4 bytes) y mostrará en su pantalla frontal el caudal, la velocidad de rotación correspondiente y el sentido de giro tras recibir la cadena de comandos de control.
Leer el parámetro de funcionamiento (caudal) con el cabezal de bomba y el tube
Esta aplicación consiste en leer de la bomba. La longitud total de la PDU es de 2 bytes donde la cadena de comandos de control es RL.
La respuesta de la bomba consta de:
| RL | 2 bytes |
| Mostrar caudal | 4 bytes |
| Estado 1 | 1 byte |
| Estado 2 | 1 byte |
| Número de cabezal de bomba | 1 byte |
| Número de tube | 1 byte |
- RL, cadena de comandos de control de 2 bytes, 52 4C
Calibración del caudal
Esta aplicación consiste en escribir en la bomba. La longitud total de la PDU es de 6 bytes donde la cadena de comandos de control consta de:
| CL | Probar caudal |
| 2 bytes | 4 bytes |
- CL, cadena de comandos de control de 2 bytes, 43 4C
- Probar caudal (4 bytes) con una unidad de caudal en nL/min
Ejemplos de cadenas de comandos de control
- Configurar el BT100-1L para que funcione en sentido horario a una velocidad de rotación de 20 rpm
Cadena de comandos de control: E9 01 06 58 4C 00 C8 01 01 DB
- E9 como indicador (flag)
- 01 como la dirección 1 de la bomba
- 06 como longitud de la PDU (58 4C 00 C8 01 01)
- 58 4C como caracteres de comando XL
- 00 C8 se refiere a la velocidad de rotación, 00 C8 (hex) = 200 (dec); siendo la unidad de velocidad 0,1 rpm ⇒ la velocidad de rotación = 20 rpm (consulte nuestra herramienta de conversión de bases en línea)
- 01 para poner en marcha la bomba a velocidad normal
- 01 para hacer funcionar la bomba en sentido horario
- DB como resultado XOR de 01 (dirección de la bomba), 06 (longitud de la PDU) y 58 4C 00 C8 01 01 (PDU)
- Configure el BT100-1L para que funcione en sentido antihorario a un caudal de 3 mL/min con un cabezal de bomba DG (10 rodillos) y un diámetro interior de tube de 0.25 mm
Cadena de comandos de control: E9 01 0A 57 4C 00 2D C6 C0 01 00 02 03 3B
- E9 como indicador (flag)
- 01 como la dirección 1 de la bomba
- 0A como la longitud de la pdu (57 4C 00 2D C6 C0 01 00 02 03)
- 57 4C como los caracteres de comando WL
- 00 2D C6 C0 se refiere al caudal, 00 2D C6 C0(hex) = 3000000(dec); siendo la unidad de caudal nL/min ⇒ el caudal = 3000000 nL/min = 3 mL/min
- 01 para poner en marcha la bomba a velocidad normal
- 00 para hacer funcionar la bomba en sentido antihorario
- 02 para el cabezal de bomba DG (10 rodillos)
- 03 para el diámetro interior de tube de 0.25 mm
- 3B como el resultado XOR de 01 (dirección de la bomba), 0A (longitud de pdu) y 57 4C 00 2D C6 C0 01 00 02 03 (pdu)
🚨No dude en utilizar nuestro generador de cadenas de comandos en línea y fácil de usar para generar sin esfuerzo cadenas de comandos de control precisas para su BT100-1L.
¿Cómo comunicarse con el BT100-1L usando 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 redactar un programa de bombeo sencillo.
A partir del primer ejemplo presentado anteriormente, el siguiente fragmento de código en Python hace que el BT100-1L funcione en sentido horario a una velocidad de rotación de 20 rpm.
### RUN PUMP 1, CLOCKWISE, AT A ROTATING SPEED OF 20 RPM
# To use the pySerial package
import serial
# Open the serial port with the data format corresponding to the BT100-1L
ser = serial.Serial('COM6', 1200, parity=serial.PARITY_EVEN, bytesize=8, stopbits=1, timeout=None, xonxoff=0, rtscts=0)
# Write the corresponding control command string in hexadecimal
Data = bytearray(b'\xE9\x01\x06\x58\x4C\x00\xC8\x01\x01\xDB')
# Write the Data to the pump
ser.write(Data)
- En un segundo fragmento de código, hagamos que la bomba funcione en sentido horario a una velocidad de rotación de 10 rpm durante 10s, luego hagá-la funcionar en sentido antihorario a una velocidad de rotación de 5 rpm durante 30s antes de detenerla.
### RUN PUMP 1 CLOCKWISE AT A ROTATING SPEED OF 10 RPM FOR 10s, THEN COUNTER−CLOCKWISE AT A ROTATING SPEED OF 5 RPM FOR 30s BEFORE STOPPING IT
# To use the pySerial package
import serial
# To use the time package
import time
# Open the serial port with the data format corresponding to the BT100-1L
ser = serial.Serial('COM6', 1200, parity=serial.PARITY_EVEN, bytesize=8, stopbits=1, timeout=None, xonxoff=0, rtscts=0)
# Run pump 1 clockwise at a rotating speed of 10 rpm for 10s
Data = bytearray(b'\xE9\x01\x06\x58\x4C\x00\x64\x01\x01\x77') # corresponding control command string in hexadecimal
ser.write(Data) # write the Data to the pump
Pumping_time = 10;
while Pumping_time > 0:
print(Pumping_time)
time.sleep(1)
Pumping_time = Pumping_time − 1
end # 10s delay with a visible timer
# Run pump 1 counter-clockwise at a rotating speed of 5 rpm for 30s
Data = bytearray(b'\xE9\x01\x06\x58\x4C\x00\x32\x01\x00\x20')
ser.write(Data) # write the Data to the pump
Pumping_time = 30;
while Pumping_time > 0:
print(Pumping_time)
time.sleep(1)
Pumping_time = Pumping_time − 1
end # 30s delay with a visible timer
# Stop the pump
Data = bytearray(b'\xE9\x01\x06\x58\x4C\x00\x32\x00\x00\x21') # 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 le haya ayudado a comprender cómo controlar la bomba peristáltica multicanal Longer BT100-1L de forma remota mediante Python utilizando el protocolo LONGER RS485. También puede 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, consulte nuestra entrada de blog “How to Control the Longer BT100-1L Pump via Matlab ?”.
Si tiene alguna pregunta o comentario, no dude en ponerse en contacto con nosotros en contact@darwin-microfluidics.com.



How to Control the Longer WT600-2J(1J)(3J) Pump via Python ? - Darwin Microfluidics
[...] Esperamos que esta entrada de blog le haya ayudado a comprender cómo controlar la bomba peristáltica multicanal Longer WT600-2J de forma remota mediante Python utilizando el protocolo RS485 de LONGER. También puede 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, consulte nuestra entrada de blog «How to Control the Longer WT600-2J Pump via Matlab ?». [...]
¿Cómo controlar la bomba Longer BT100-1L a través de Matlab?
[…] Esperamos que esta entrada del blog le haya ayudado a comprender cómo controlar la bomba peristáltica multicanal Longer BT100-1L de forma remota mediante Matlab utilizando el protocolo LONGER RS485. También puede utilizar otras plataformas de programación como Python 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, consulte nuestra entrada de blog “How to Control the Longer BT100-1L Pump via Python ?”. […]
¿Cómo controlar de forma remota sus bombas peristálticas Longer?
[…] How to Control the Longer BT100-1L Pump via Python ? […]