The new openQCM Q-1 Python Software: real-time monitoring of frequency and dissipation variations of a Quartz Crystal Microbalance through the analysis of the resonance curve

 

Hello, everybody! I'm Vittorio Laguzza, electronic engineer of the openQCM team and, from today, with a series of post on this blog, I will introduce you the new Python software for the openQCM Q-1 device. I hope that these posts can be interesting and for further information, you can reply with a message under the post or contact me at laguzza@novaetech.com

 

In this first post, the diagram of the real-time data acquisition and processing cycle that describes the structure of our new software that controls the openQCM Q-1 Quartz Crystal Microbalance with dissipation monitoring is presented: an open-source package written in Python programming language (https://www.python.org), to display, process and store data in real-time from the openQCM Q-1 Device.

(For more information, visit our site https://openqcm.com/about-openqcm-q-1 or refer to the user guide https://openqcm.com/shared/q-1/openQCM_Q-1-userguide-v2.0.pdf, you can download the software at this link https://openqcm.com/shared/q-1/openQCM_Q-1_py_v2.0.zip)

The main functionality of the Python software is the real-time monitoring of frequency and dissipation variations (including temperature monitoring) of a quartz crystal microbalance through the analysis of the resonance curve. The application performs some main processing (e.g. filtering, baseline correction, peak detection, calibration) before obtaining and displaying results (frequency/dissipation evaluation and monitoring and also temperature monitoring) or saving data. The software has a modular design, with a separation among its different functionalities (e.g. communication and visualization code, etc.), making it easy to add new signal processing tasks, to use also different communication protocols, and customize the user interface for the specific needs of the application.

The software package has a multi-process architecture, based on the multiprocessing Python Standard library (https://docs.python.org/3/library/multiprocessing.html) that allows to take advantage of multiple cores and to be able to handle data rates typically encountered during the acquisition and processing of the real-time signals.

Each module of the software architecture will be presented and described in the later posts.

 

Diagram of real-time data acquisition and processing cycle

 

The data cycle consists of the following phases:

- Real-time data acquisition
- Data pre-processing
- Data processing and analysis
- Results Description

Analyzing the identified phases and the data processing cycle, we can see that the described process is consistent with Knowledge Discovery in Databases. KDD is the process of discovering and acquiring useful knowledge from a collection of data. This data mining technique is a process that includes data preparation and selection, data cleansing, incorporating prior knowledge of data sets and interpreting accurate solutions from the observed results.

The first two steps, Real-time data acquisition and Data pre-processing, involve both the hardware and the software as they allow the communication protocol between the heart of the openQCM Q-1 device, Teensy 3.6 Development board (https://www.pjrc.com/teensy/techspecs.html) and our software. The communication protocol (a common subsection to both first two steps, see figure below) works through the dialogue between the firmware of the Teensy board and the serial communication package (PySerial Python external library - https://pypi.org/project/pyserial/) integrated into our Python software.

Serial Communication Protocol Subsection

The other two steps, Data processing and analysis and Results description involve only the software. Device calibration (a subsection of Data processing and analysis) includes baseline estimation and correction, peak detection and data storage (including baseline corrected and peak detected). The figure below shows the device calibration section.

Device Calibration subsection

 

Data processing and analysis also include Data filtering and Data oversampling and subsequent extraction of desired features (Data features extraction): resonance frequency and amplitude, bandwidth and dissipation evaluation. Oversampling is used in order to improve the accuracy of peak level estimates for sampled signals. The results are then displayed in an appropriate window and, if necessary, can be stored (Results description).

 

Data filtering (Savitzky-Golay filter) and data oversampling (spline interpolation) Section

 

Data features extraction subsection

In the following posts, each section of the previous diagram will be described. The algorithms for obtaining the results will also be presented and discussed.

To get an idea of what we are discussing, you can see some examples in the following figures:

 

Amplitude signal (overall frequency range, 50MHz): raw data and estimate baseline standard quartz frequency @5MHz

Amplitude signal (overall frequency range, 50MHz): baseline corrected standard quartz frequency @5MHHz

Peak Detection (standard quartz frequency @5MHz)

Peak Detection (standard quartz frequency @10MHz)

Data filtering (Savitzky-Golay filter): original noisy (red) and filtered (blue) signal

Amplitude signal with peak and cut-off frequencies (f1, f2) and bandwidth for different evaluated curves describing an evaporation process of a water droplet on the surface of the quartz sensor, recorded by openQCM Q-1 (https://www.youtube.com/watch?v=Yx2w0tE732A)

 

We chose to develop the new application for the openQCM Q-1 in the Python programming language because we believe that this language is suitable for the development of scientific applications and, at the same time, allows it to be easily improved and customized by the community.

In particular, the use of the multiprocessing Python Standard library allowed us to optimize the execution of simultaneous processes and also to drastically increase the sweep rate for the acquisition-processing of a resonance curve. In this way, we were able to obtain a simultaneous measurement of frequency and dissipation with a sampling time of less than one second.

The availability of a considerable number of software packages in Python language, together with their fast development by the scientific community, has allowed us to develop a post-processing algorithm based on data filtering and oversampling capable of improving the monitoring of the fundamental frequency and its overtones.

Here is the GUI of the new Python Software (V2.0) !

 

openQCM Q-1 python software version 2.0 for quartz crystal microbalance with dissipation monitoring

 

Blog
Raffaele Battaglia

An exciting year

Hello, everyone. This 2018 has been a very exciting year. The openQCM project is growing beyond our expectations. We have launched 2 new devices and

Read More »