Se state cercando una pompa peristaltica di precisione in grado di gestire più canali contemporaneamente (fino a 24), potreste prendere in considerazione la Longer BT100-1L. Questa pompa è in grado di erogare portate comprese tra 2 µL/min e 366,7 mL/min a seconda del numero di rulli presenti nella testina. Si tratta inoltre di una pompa peristaltica relativamente economica che offre un'ampia gamma di applicazioni.
Il BT100-1L può essere controllato in remoto dal computer, garantendo maggiore flessibilità e praticità, soprattutto se si desidera eseguire programmi di pompaggio complessi con cicli, pause e portate variabili.
In questo articolo del blog vi mostreremo come comunicare con il BT100-1L utilizzando il protocollo LONGER RS485, un protocollo di comunicazione seriale che consente di inviare comandi e ricevere risposte dalla pompa. Forniremo inoltre alcuni esempi e frammenti di codice su come utilizzare Python per scrivere e inviare stringhe di comandi di controllo alla pompa.
SOMMARIO
Cosa serve per comunicare con il BT100-1L?
Per comunicare con il BT100-1L utilizzando il protocollo LONGER RS485, è necessario disporre di quanto segue:
- Una pompa BT100-1L con una testa di pompaggio e una tube a scelta
- Un modulo di controllo RS485 che si collega alla porta DB15 sul retro della pompa
- Un cavo seriale che collega il modulo di controllo RS485 al computer o al dispositivo
- Una piattaforma di programmazione (Python in questo caso)
- Una comprensione di base del formato dei dati, del formato dei comandi e del formato pdu del protocollo LONGER RS485 (illustrato di seguito 👇)
Come configurare la porta di comunicazione?
Prima di poter iniziare a inviare e ricevere dati dalla pompa, è necessario configurare correttamente la porta di comunicazione. Ecco i passaggi da seguire:
- Collegare il connettore DB15 alla porta DB15 sul retro della pompa
- Accendere la pompa e premere la manopola di regolazione situata sulla parte anteriore della pompa per accedere all'interfaccia di configurazione del telecomando e attivare la modalità telecomando 🕹️
- Assicurati che i parametri di comunicazione della tua piattaforma di programmazione corrispondano a quelli del BT100-1L, ovvero:
- 1 bit di start
- 8 bit di dati
- 1 bit di parità pari
- 1 bit di stop
- una velocità di trasmissione (baud rate) di 1200 bit/s
Come scrivere stringhe di comando di controllo sul BT100-1L?
Una volta configurata la porta di comunicazione, è possibile iniziare a scrivere e inviare stringhe di comando di controllo alla pompa. Una stringa di comando di controllo è una sequenza di caratteri esadecimali che segue un formato specifico, costituito da:
- un flag di inizio (E9H)
- un indirizzo della pompa (da 1 a 30, o 31 per il broadcast)
- una lunghezza della PDU (protocol data unit)
- una PDU, che contiene i caratteri di comando e i parametri per l'applicazione desiderata
- una frame check sequence (FCS), ottenuta calcolando lo XOR tra l'indirizzo della pompa, la lunghezza della PDU e la PDU stessa (calcola l'FCS utilizzando il nostro calcolatore XOR per frame check sequence online)
La potenza nominale (PDU) e la sua durata dipendono dall'applicazione prevista per la pompa. Alcune delle applicazioni più comuni sono:
- Impostazione del parametro di marcia (velocità di rotazione)
- Lettura del parametro di marcia (velocità di rotazione)
- Impostare il parametro di funzionamento (portata) in base alla prevalenza della pompa e al tubo
- Lettura del parametro di funzionamento (portata) tramite la testa della pompa e il tubo
- Taratura della portata
A ciascuna applicazione corrisponde un insieme di caratteri di comando e parametri da includere nella PDU. Tali parametri sono dettagliati di seguito.
Impostazione del parametro di marcia (velocità di rotazione)
Questa applicazione consiste nella scrittura sulla pompa. La lunghezza complessiva della PDU è di 6 byte, in cui la stringa di comando di controllo è composta da (nell'esatto ordine):
| XL | Imposta velocità | Stato 1 | Stato 2 |
| 2 byte | 2 byte | 1 byte | 1 byte |
- XL, stringa di comando di controllo di 2 byte, 58 4C
- Impostare la velocità (2 byte) con un'unità di misura pari a 0,1 giri/min e una velocità massima di 100 giri/min (03 E8)
- Stato 1 (1 byte):
- bit 0 – bit di start/stop, dove 1 avvia la pompa e 0 la arresta
- bit 1 – bit di avviamento: il valore 1 serve ad avviare la pompa alla velocità massima di 100 giri/min, mentre il valore 0 serve a farla funzionare a velocità normale
- Stato 2 (1 byte):
- bit 0 – definisce il senso di rotazione: 1 indica il senso orario, mentre 0 indica il senso antiorario
La pompa risponderà con XL e visualizzerà sul display frontale la velocità di rotazione e il senso di rotazione dopo aver ricevuto la stringa di comando.
Lettura del parametro di marcia (velocità di rotazione)
Questa applicazione consiste nella lettura dei dati dalla pompa. La lunghezza complessiva della PDU è di 2 byte, dove la stringa del comando di controllo è DL.
La risposta della pompa consiste in:
| DL | Mostra velocità | Stato 1 | Stato 2 |
| 2 byte | 2 byte | 1 byte | 1 byte |
- DL, stringa di comando di controllo di 2 byte, 44 4C
Impostare il parametro di funzionamento (portata) in base alla prevalenza della pompa e al tubo
Questa applicazione consiste nell'inviare comandi alla pompa. La lunghezza complessiva della PDU è di 10 byte, dove la stringa del comando di controllo è composta da:
| WL | 2 byte |
| Impostare la portata | 4 byte |
| Stato 1 | 1 byte |
| Stato 2 | 1 byte |
| Numero della testa della pompa | 1 byte |
| Numero del tubo | 1 byte |
- WL, stringa di comando di controllo di 2 byte, 57 4C
- Imposta la portata (4 byte) con l'unità di misura nL/min
- Stato 1 (1 byte) e Stato 2 (1 byte) come già spiegato
- Numero della testa della pompa (1 byte), come riportato nelle tabelle sottostanti:
| Testata | Personaggi |
|---|---|
| DG (6 rulli) | 01 |
| DG (10 rulli) | 02 |
| YZ1515/YZ2515 | 03 |
| 313D | 04 |
| DG15 | 05 |
- Numero del tubo (1 byte), come indicato nella tabella sottostante:
| tube ID (mm) 01: DG (6 rulli) 02: DG (10 rulli) 05: DG15 | Numero del tubo |
|---|---|
| 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 |
| tube ID (mm) 3: YZ1515/YZ2515 4: 313D | Personaggi |
|---|---|
| 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 pompa risponderà con WL Visualizza portata (4 byte) e, dopo aver ricevuto la stringa di comando di controllo, visualizzerà sul display frontale la portata, la velocità di rotazione corrispondente e il senso di rotazione.
Lettura del parametro di funzionamento (portata) tramite la testa della pompa e il tubo
Questa applicazione consiste nella lettura dei dati dalla pompa. La lunghezza complessiva della PDU è di 2 byte, dove la stringa del comando di controllo è RL.
La risposta della pompa consiste in:
| RL | 2 byte |
| Visualizza la portata | 4 byte |
| Stato 1 | 1 byte |
| Stato 2 | 1 byte |
| Numero della testa della pompa | 1 byte |
| Numero del tubo | 1 byte |
- RL, stringa di comando di controllo di 2 byte, 52 4C
Taratura della portata
Questa applicazione consiste nell'inviare comandi alla pompa. La lunghezza complessiva della PDU è di 6 byte, dove la stringa del comando di controllo è composta da:
| CL | Misura della portata |
| 2 byte | 4 byte |
- CL, stringa di comando di controllo di 2 byte, 43 4C
- Portata di prova (4 byte) con unità di misura della portata in nL/min
Esempi di stringhe di comando di controllo
- Impostare il BT100-1L in modo che ruoti in senso orario a una velocità di rotazione di 20 giri al minuto
Stringa di comando di controllo: E9 01 06 58 4C 00 C8 01 01 DB
- E9come indicatore
- 01come indirizzo 1 della pompa
- 06come lunghezza della PDU (58 4C 00 C8 01 01)
- 58 4C come caratteri di comando XL
- 00 C8indica la velocità di rotazione, 00 C8 (esadecimale) = 200 (decimale); l'unità di misura della velocità è 0,1 giri/min ⇒ la velocità di rotazione è pari a 20 giri/min (consultail nostrostrumento onlineper la conversione tra sistemi numerici)
- 01per avviare la pompa a velocità normale
- 01 per avviare la pompa in senso orario
- DB come risultato dell'operazione XOR tra01(indirizzo della pompa),06(lunghezza della PDU) e58 4C 00 C8 01 01(PDU)
- Impostare il BT100-1L in modo che ruoti in senso antiorario a una portata di 3 mL/min con una testa della pompa DG (10 rulli) e un diametro interno (ID) dell’ tube e pari a 0,25 mm
Stringa di comando di controllo: E9 01 0A 57 4C 00 2D C6 C0 01 00 02 03 3B
- E9come indicatore
- 01 come indirizzo 1 della pompa
- 0A come lunghezza della PDU (57 4C 00 2D C6 C0 01 00 02 03)
- 57 4C come caratteri di comando WL
- 00 2D C6 C0indica la portata; 00 2D C6 C0 (esadecimale) = 3000000 (decimale); l'unità di misura della portata è nL/min ⇒ la portata = 3000000 nL/min = 3 mL/min
- 01per avviare la pompa a velocità normale
- 00per far funzionare la pompa in senso antiorario
- 02per la testa della pompa DG (10 rulli)
- 03per l'ID " tube " da 0,25 mm
- 3B come risultato dell'operazione XOR tra01(indirizzo della pompa),0A(lunghezza della PDU) e 57 4C 00 2D C6 C0 01 00 02 03(PDU)
🚨Non esitate a utilizzare il nostro generatore di stringhe di comando online, facile da usare, per generare senza sforzo stringhe di comando precise per il vostro BT100-1L.
Come comunicare con il BT100-1L utilizzando Python?
Di seguito sono riportati i frammenti di codice Python che mostrano come aprire la porta seriale, scrivere e inviare stringhe di comando di controllo alla pompa e scrivere un semplice programma di pompaggio.
Come illustrato nel primo esempio appena presentato, il seguente frammento di codice Python fa ruotare il BT100-1L in senso orario a una velocità di rotazione di 20 giri al minuto.
### 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)
- In un secondo frammento di codice, facciamo funzionare la pompa in senso orario a una velocità di rotazione di 10 giri al minuto per 10 secondi, poi in senso antiorario a una velocità di rotazione di 5 giri al minuto per 30 secondi, prima di arrestarla.
### 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
Conclusione
Ci auguriamo che questo articolo del blog vi abbia aiutato a comprendere come controllare in remoto la pompa peristaltica multicanale BT100-1L di Longer tramite Python, utilizzando il protocollo RS485 di LONGER. È inoltre possibile utilizzare altre piattaforme di programmazione, come Matlab, per scrivere e inviare stringhe di comandi di controllo alla pompa, nonché per leggere e interpretare le risposte provenienti dalla pompa. Per ulteriori dettagli su questo argomento, consultate il nostro articolo del blog “Come controllare la pompa Longer BT100-1L tramite Matlab?”.
Se avete domande o commenti, non esitate a contattarci all'indirizzo contact@darwin-microfluidics.com.



How to Control the Longer WT600-2J(1J)(3J) Pump via Python ? - Darwin Microfluidics
[…] Ci auguriamo che questo articolo del blog vi sia stato utile per comprendere come controllare da remoto la pompa peristaltica multicanale Longer WT600-2J tramite Python utilizzando il protocollo LONGER RS485. È inoltre possibile utilizzare altre piattaforme di programmazione come Matlab per scrivere e inviare stringhe di comando di controllo alla pompa, nonché per leggere e interpretare le risposte provenienti dalla stessa. Per ulteriori dettagli su questo argomento, consultate il nostro articolo del blog “How to Control the Longer WT600-2J Pump via Matlab ?”. […]
How to Control the Longer BT100-1L Pump via Matlab ?
[…] Ci auguriamo che questo articolo del blog vi abbia aiutato a capire come controllare in remoto la pompa peristaltica multicanale BT100-1L di Longer tramite Matlab, utilizzando il protocollo RS485 di LONGER. È inoltre possibile utilizzare altre piattaforme di programmazione, come Python, per scrivere e inviare stringhe di comandi di controllo alla pompa, nonché per leggere e interpretare le risposte provenienti dalla pompa. Per ulteriori dettagli su questo argomento, consultate il nostro post sul blog “Come controllare la pompa BT100-1L di Longer tramite Python?”. […]
Come controllare da remoto le vostre pompe peristaltiche Longer?
[…] Come controllare la pompa BT100-1L di Longer tramite Python? […]