Cavro Xp 3000 Manual

Posted on admin

Hey guys, As the subject suggests, I'm trying to control a syringe pump with an Arduino. And failing, so far.

Cavro pump manual

I have the manual for the Cavro pump. It communicates via fairly straightforward RS232. The manual describes in solid detail the packet of bytes you need to send to the Cavro. For instance, a move command is 0x02 0x31 0x01 'A5000R' 0x03. I'm quite familiar with UART/SPI/I2C so I thought, no problem. I bought a Mega, an RS232 converter off Amazon, and I got to work. Note that one of my colleagues have a C# library for this pump running on his Windows PC.

The user is encouraged to consult the manual for an overview on. Detailed list of the pump commands for the RS. The plunger to abs. Position 3000.

Cavro Xl 3000 Manual

Once I wrote my Arduino code, I compared it to his library to make sure we were shifting out the same sequence of bytes, and we are. When he hooks his computer up to the pump (via a USB to RS232 converter) it works. But from my Arduino, nothing.

We've run several tests. I used my Saleae logic analyzer to capture exactly the sequence of bytes, including checksum, that he was sending to make the pump move from top to bottom. Then we set the pump back to the top, and sent that exact sequence of bytes over to the pump from my Arduino through the RS232 converter, once again using the logic analyzer to make sure no funny business was going on. And yet, the pump doesn't move! I'm at a loss.

I've swapped out three different TTL to RS232 converters to make sure it's not a bad board. I've tried the code on a Mega and an Uno. I've double checked against my friend's C# code running from his Windows machine to make sure we're shifting out the same sequence of bytes. And yet he can make this pump move, and I cannot. Does anyone have any clue what the problem might be?

Thanks for the response! Big problem back is I'm not getting anything back from the pump.

I'm totally blind. I'm also not really able to see the output from my RS232 converter.

At the moment I don't have a working oscilloscope which is why all of my troubleshooting is using my logic analyzer and reading serial output to the screen. My multimeter is showing me that something is going on on the output of the RS232 (leading me to think it's not just a dead board) but I can't display a waveform. When I try using my logic analyzer, I don't see anything. However, when I hooked my logic analyzer up to the RS232 output of my friend's computer (after it ran through the uSB-rs232 adapter) I did indeed see the correct waveform AND responses from the pump. Seeing the correct RS232 waveform from my friend's computer but not on the RS232 output side of my arduino converter board(s) should be enough for me to conclude it's a bad arduino-rs232 converter. Especially since I've verified the correct waveform before it goes into the converter. However, Saleae says their logic analyzer isn't entirely reliable with RS232.

So it's possible a slightly cleaner waveform is coming from the bulky USB-RS232 converter, allowing the Saleae to capture it. I'm really having a hard time pinpointing the problem! I suppose it's a far jump to check your pumps are actually RS232. And not RS485 (like the ones i was working with) First thing is cut everything back down to the basics. See if you can talk from PuTTY or similar to the pumps (ideally without the Arduino in the middle). Eliminate as many variables as possible. Confirm tx/rx pins, handshaking if needed, and bit-rate.

Then write a simple bidirectional pass-thru sketch to talk between PuTTY on USB Serial and the pump port(s). Once you have that working, chances are you'll be on the home stretch for your code.