Cryocooler HMI serial interface

Hey folks, im trying to decide what path to take in regards to making a small touch screen HMI for my STI Superfilter cryocooler pump. Up to now ive had to use my laptop to control the unit, but would like to graft in a small touch screen into the unit cabinet to do basic controls and temp readings.

Long story short i have a cryocooler pump originally used as a telecomunications superconducting transmitter booster filter. It is now comfortably in my shop and im planning to use it as a compact at home liquid nitrogen generator. The unit itself is pretty basic, it consist of the helium refigeration pump (about the size of a 2L coke bottle), and the control driver to run the mag drive piston inside the pump.

There are 2 hardware versions of the unit, the newer unit uses a proprietary STI software to communicate thru serial port. Thankfully mine is the older version and uses the serial connection to communicate thru hyperterminal.

I was able to send basic commands thru the serial port, and recieve temperature and sytem parameters.

For example if i send the letter l
it responds as this:

0:00:30:33> l
System Control-Loop Status Report:

  • System Error: -5.06V*
  • Cooler V (RMS): 75V*
  • Supply Voltage: 25.5V*
  • Back Off Count: 0*
  • DAC Back Off: 1160*
  • (Int)LNA I(mA): 3*
  • (Ext)LNA I(mA): 0*

If i send an s for example

0:00:30:37> s
Use 'Set' to set the state of system parameters as in:
> (S)et (B)ypass {On|Off}
> (S)et Motor (D)rive Type {PWM|CRD}
> (S)et (F)orced (Bypass) {On|Off}
> (S)et (L)NA {On|Off}
> (S)et (M)otor {On|Off|Reset}
> (S)et (S)tate {0..10}
Items in {}, e.g. {On|Off} denote a choice: type 'On' or 'Off'

And the best of them all a t

0:00:33:58> t
System Temperature Report:

  • #1*
  • Cold Stage: 89.25K*
  • NR Cold Finger: 86.44K*
  • WR Cold Finger: 285K*
  • Motor Temp: 30.5C*
  • Ambient Temp: +21C*

Yep thats 89.25 Kelvin approx -184c. it will go past -200c

Ok the plan... Im thinking i can use an arduino to constantly poll the serial port and read the system values. So i can have a constantly updating screen.

Is this possible, or are there much simplier ways to achieve this? I also wouldnt be against using an industrial HMI screen if it was easier to interface. I have done Omron HMI stuff before, and have the software.

Raptorex writes:

So i can have a constantly updating screen.

What sort of screen would you be thinking of ?

There are other options as well.
You could write a small program to do this on a computer to do this, a laptop might be ideal if you need some sort of portability.
The program could be written in C or C++ or maybe even simpler, write it in Python. There are many examples for Python, with communicating with the serial port, even here on the forums.

Another option I have used myself is to use a Redlion Graphite HMI panel.
These are not necessarily a cheap unit, but have over 300 communication protocols built in.
The Redlion Graphite can also have user function code which allows you to do some pretty interesting things as well.

If your idea is to use a small LCD on the Arduino, then that is a viable way to go too.
You could use a simple character based LCD, say like a 20x4, which is 20 characters by 4 lines.
Also, there are nice pixel based LCDs, and I use these on various projects, but in these situations I prefer to use a DUE rather that AVR Arduino boards, primarily as the DUE has DMA and that speeds up the update of these type of screens.

Sounds like an interesting project.
Be sure to take a look into Python.


Paul - VK7KPA

rockwallaby:
What sort of screen would you be thinking of ?

Any sort of small lcd would be fine. when you mentioned a 20x4 display it gave me an ideal of something similar I had used in the past, I remember using a cheapy Kinco HMI MD224L for a assembly line project I did a while ago, unfortunately I don't have one to tinker with in the shop. With that said, my history of programming is a bit spotty with the majority of my working history dealing with mechanical design instead of programming, I was able to easily learn ladder logic, and just now learning arduino and more advanced stuff. One of my good friends knows Python well so ill bounce the ideal off of him to see what he thinks.

I got a few of the colour lcd touch panels, and a lcd character panel in my arduino goodie box, and I have a couple DUE's in the mail on their way for a WS2812b led project I am planning. I could experiment with a whole bunch of different combos with the leftovers.

Just to note, I would consider myself a beginner when it comes to the hard coding for stuff like this, and I understand that this could be a pretty intense project just to get basic temperature readings, power readings, and a on/off command to show up on a screen.

With that said, if it all works, it would be pretty cool to be able to easily semi-automate liquid nitrogen or liquid oxygen production at home. The unit works as it is, I just want it to be user friendly for myself in a nice bench top enclosure. There's a 2nd stage to this project that is not directly related to this HMI screen, but in case anyone is interested; to feed the unit with 99.9% pure N2 or O2, im designing a compact pressure swing absorber to purify N2 or O2 for use. Very similar to the large scale systems used to purify air and generate nitrogen for tire inflation systems.