Si estás buscando una bomba peristáltica de precisión capaz de gestionar varios canales a la vez (hasta 24), quizá te interese echar un vistazo a la Longer BT100-1L. Esta bomba puede proporcionar caudales que van desde los 2 µL/min hasta los 366,7 mL/min, dependiendo del número de rodillos del cabezal de la bomba. Además, es una bomba peristáltica relativamente económica que ofrece una amplia gama de aplicaciones.
El BT100-1L 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 la BT100-1L 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 Matlab para escribir 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 (Matlab 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 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 con nuestra calculadora en línea de secuencias de comprobación de trama XOR)
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 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):
| XL | Establecer velocidad | Estado 1 | Estado 2 |
| 2 bytes | 2 bytes | 1 byte | 1 byte |
- XL, cadena de comando de control de 2 bytes, 58 4C
- Ajustar 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 la dirección de rotación, donde 1 es para sentido horario y 0 es para sentido 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 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 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 comando de control de 2 bytes, 43 4C
- Caudal de prueba (4 bytes) con la unidad de medida 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); la unidad de velocidad es 0,1 rpm ⇒ la velocidad de rotación = 20 rpm (consulta nuestra herramienta en línea de conversión de sistemas numéricos)
- 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 utilizando Matlab?
A continuación se presentan fragmentos de código en Matlab que muestran cómo abrir el puerto serie, escribir y enviar cadenas de comandos de control a la bomba y redactar un programa de bombeo sencillo.
A partir del primer ejemplo que acabamos de presentar, el siguiente fragmento de código de MATLAB hace que el BT100-1L gire en el sentido de las agujas del reloj a una velocidad de rotación de 20 rpm.
%%% RUN PUMP 1, CLOCKWISE, AT A ROTATING SPEED OF 20 RPM
% Open the serial port with the data format corresponding to the BT100-1L
s = serialport('COM6', 1200, 'Parity', 'Even', 'DataBits', 8, 'StopBits', 1);
% Write the corresponding control command string
Str = 'E9 01 06 58 4C 00 C8 01 01 DB';
% Read data from Str, convert it according to the format specified '%2x' (hexadecimal conversion), transpose and return the results in an array
Data = sscanf(Str, '%2x').';
% Write the Data to the pump in the form of an unsigned integer 8bits
write(s, Data, uint8);
- 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
% Open the serial port with the data format corresponding to the BT100-1L
s = serialport('COM6', 1200, 'Parity', 'Even', 'DataBits', 8, 'StopBits', 1);
% Run pump 1 clockwise at a rotating speed of 10 rpm for 10s
Str = 'E9 01 06 58 4C 00 64 01 01 77'; % corresponding control command string
Data = sscanf(Str, '%2x').';
write(s, Data, uint8); % write the Data to the pump
Pumping_time = 10;
while Pumping_time > 0
pause(1)
Pumping_time = Pumping_time − 1;
disp(['Remaining_time:' num2str(Pumping_time)])
end % 10s delay with a visible timer
% Run pump 1 counter-clockwise at a rotating speed of 5 rpm for 30s
Str = 'E9 01 06 58 4C 00 32 01 00 20'; % corresponding control command string
Data = sscanf(Str, '%2x').';
write(s, Data, uint8); % write the Data to the pump
Pumping_time = 30;
while Pumping_time > 0
pause(1)
Pumping_time = Pumping_time − 1;
disp(['Remaining_time:' num2str(Pumping_time)])
end % 30s delay with a visible timer
% Stop the pump
Str = 'E9 01 06 58 4C 00 32 00 00 21'; % corresponding control command string; 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
Data = sscanf(Str, '%2x').';
write(s, Data, uint8); % 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 multicanal BT100-1L de Longer a través de MATLAB utilizando el protocolo RS485 de LONGER. También puedes 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, consulta nuestra entrada del blog «¿Cómo controlar la bomba BT100-1L de Longer mediante Python?».
Si tiene alguna pregunta o comentario, no dude en ponerse en contacto con nosotros en contact@darwin-microfluidics.com.



¿Cómo controlar de forma remota sus bombas peristálticas Longer?
[…] ¿Cómo controlar la bomba BT100-1L de Longer a través de Matlab? […]
¿Cómo controlar la bomba Longer BT100-1L a través de Python? - Darwin Microfluidics
[…] Esperamos que esta entrada del blog te haya ayudado a comprender cómo controlar de forma remota la bomba peristáltica multicanal BT100-1L 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 BT100-1L de Longer mediante Matlab?». […]