PicoLog Data Logger + Raspberry Pi 4 (included) - Review

Table of contents

RoadTest: PicoLog Data Logger + Raspberry Pi 4 (included)

Author: redcharly

Creation date:

Evaluation Type: Test Equipment

Did you receive all parts the manufacturer stated would be included in the package?: True

What other parts do you consider comparable to this product?:

What were the biggest problems encountered?: No problem

Detailed Review:



Table of Contents




Kit description


The kit is composed of:

  • 1 Picolog Data Logger ADC-20
  • 1 Raspberry pi 4
  • 1 16 GB SD card.

All the material, well placed in a box well protected by high-quality packaging, arrived in a few days.









It is a data logger with a 20-bit resolution and capable of detecting small signals. It manages 8 single-ended inputs or up to 4 differential signals. The sampling rate can be set via software to optimize the resolution by minimizing noise in order to obtain accurate and reliable measurements.

The user can set the acquisition voltage range. While in the ADC-24 model we can choose between 7 different voltage ranges, in the ADC-20 we can choose between 2 ranges, from -1.25V to 1.25V or from -2.5V to 2.5V with conversion times ranging from 60 ms to 660 ms.

The input impedance is 1MΩ for single-ended inputs and 2 MΩ for differential pair inputs. The ADC-20 data logger is powered by the USB1.1 port used for connection to the PC and has an absorption of about 100 mA.


The software used is called Picolog and is compatible with Windows, macOS, and Linux systems. It can also be used on Raspberry without any problem. It has a very simple graphical interface and allows you to use the data logger after a few minutes after installation.



The PICOLOG ADC 20 is fully described by means of rich documentation easily available on the website https://www.picotech.com/.  The drivers for 32 or 64 bit Microsoft Windows versions are also provided to be able to use and control the data logger using self-produced software.

This allows you to create prototypes created specifically to perform a well-defined task using the least possible resources.

From a functional point of view, the ADC-20, through its drivers, can perform data recording in three different ways. They are:

  • Streaming: the driver continuously requests data from the card and the individual samples are stored in a buffer from which they will be taken from our application. The acquisition times will be controlled directly from the card and will not require external software intervention;
  • Single value (blocking): only one sample is requested by our software and the thread used for the call remains blocked until the data from the driver is returned to the application;
  • Single Value (non-blocking): only one sample is requested by our software, as in the previous case, but the thread is not blocked pending that the acquired value is supplied by the driver to the application.

The Windows library that allows you to use and program the Picolog ADC-20 datalogger is the picohrdl.dll, contained in the lib folder of the SDK. This library contains the definitions of the functions in standard C but can be used with any programming language that supports standard calls to C. An interesting use could be that within programs such as Microsoft Excel to be able to use the statistical and graphical tools of the Excel environment.


Examples of codes are represented by the "Picotech" organization on GitHub. There are indeed many examples of applications for Picotech products, written in different languages, for example, Visual C, Python, and VB.




The ADC-20 and Data Sheet contained in the paper version in the kit, is a short but complete guide for the use of the ADC-20 and ADC-24. In just 8 pages full of examples and images, it allows the user to start using the data logger without problems.


The ADC-20 / ADC-24 Programmer's Guide file is the fundamental guide to get to know this device and make the best use of it. It helps the user in all phases of the use of the ADC-20, starting from the installation.



The Terminal Board manual is very useful, too as it guides the user in the correct configuration of the most commonly used sensors. The steps to make correct voltage and current measurements are described, the voltage dividers are sized both in the single-ended case and in the case of differential measurements and the connection methods of:

  • Light-Dependent Resistors (LDR),
  • pH probes, 
  • LM35 (temperature sensor),
  • Negative Temperature Coefficient (NTC) and
  • type K thermocouple using AD595 IC are described.


The board allows us to weld the resistors, the LM35, and the AD595.




The Software


Software installation is quick and simple. I was able to verify it both on Windows 8.1 and on Windows 10 and obviously on Raspberry pi4. In all cases, it took just a few minutes to have the software perfectly installed and functional. After installing the operating system on the Raspberry and making the updates, installing Picolog software was quite immediate following the instructions on the website's page; the only drawback was having to install gconf2 and then everything fell into place.


The main window allows simple and effective navigation of the data logger functions.

We can use the Equation Editor image

functionality to obtain a signal that depends on other signals according to a certain mathematical law. For example, you could think of using this feature to display the temperature in degrees Fahrenheit using an LM35 temperature sensor which provides a voltage signal proportional to the temperature in degrees Celsius.

The Picolog software also allows you to set alarms if the voltage at a certain input exceeds a certain threshold or if the input is disconnected or based on a logical expression. When the alarm occurs, an acoustic alarm can be activated or an alarm window can be displayed or an application chosen by the user can be run, for example sending an email or switching on an air conditioner or opening a valve or a relay.

A design choice that characterizes this datalogger is to store the logs not in a text file but in a robust database. This means that even if the computer suddenly reboots, only the data captured during the blackout phase would be lost. This allows you to have no corrupt or lost data but makes the management and analysis of logs using external tools less flexible. A particularly useful feature is that it is not necessary to save the files since the capture and saving of data continue until the user finishes the session. There is the possibility to save partial data that can be used for data trend analysis and it must also be said that the fact of not using simple text files to store logs is not a limit to the user's freedom since the Picolog software is free and can, therefore, be used by anyone to view and graph the acquired data.

The datalogger can be exploited to the maximum using a Software Development Kit (SDK) called PicoSDK which allows you to interface Picotech products with third-party products or with self-produced software. The repositories contained on GitHub contain numerous examples that show copies that you can easily make the datalogger interact with Microsoft Excel, with the LabVIEW software from National Instrument, with MATLAB from Mathworks or with many programming languages, such as C, C ++, C #, Visual Basib.NET, Python, etc.




The Tests


I am an IT teacher and I am participating in this roadtest as I think this kit could be used in school to manage sensors in remote control applications. Thanks to the combined use of a Raspberry, this data logger can be powered and configured at the same time, it makes this kit even more interesting for use in a school environment where, for economic and logistical reasons, it is appreciated to be able to work with small and independent equipment.

The kit is suitable for multiple applications from the teaching point of view.


The first thing I can do using this kit at school is to download and read the datasheets, to install both the Raspberry operating system and the Picolog and PicoSDK software.

The first application is relating to the measurement of signals from analog sensors. There are many analog sensors, from photoresistors to microphones to thermocouples and NTCs. One of the most interesting things could be to use many sensors (up to 8 with the ADC-20) to have many different real-time measurements relating to an environment.

This kind of application can be useful, didactically speaking, to explore from a practical and laboratory point of view the design of the conditioning circuits suitable for coupling the sensors to the data logger.


The second application is related to the realization of a measure. Once the work environment is ready and input is configured, acquisitions can be started. As a sensor I would use a photoresistor, a sensor very simple to understand and use, and having a dynamic fast enough to allow you to follow the changes in real-time, just move a hand between the sensor and a light source to be able to instantly view the voltage variations. Even an excellent temperature sensor such as the LM35 would not be suitable for the first contact with the kit because the temperature measurements are characterized by a significantly larger time constant which would make it less immediate to detect the relationship between the temperature and the output voltage.


The third application concerns the use of the PicoSDK to interface the data logger to a program made by students. You could do a real-time analysis of the logs or create and use a Syslog server to collect all the logs from multiple kits and multiple sensors together. For example, by analyzing the readings from temperature sensors placed in precise positions, inside a rack of servers or even the noise picked up by a microphone placed near the cooling fans which depend on the wear of the bearings or the presence of dust, we may obtain useful information to be able to carry out preventive maintenance. Obviously, in these examples, we will underutilize the precision of the data logger but it is in my opinion very useful to show how, starting from acquired measures, using a little statistics or some simple notion of artificial intelligence, you can get very useful information on the behavior of a complex system.





First application: explore the kit and software installation


First, you need to know the contents of the kit and start to see what can be done with it. The first phase is obviously the installation of the software. Regarding the installation of the Raspberry, there is no need to add any information since it is an operation already well known to students who have already used Raspberry. The installation of the ADC-20 board management software in Raspberry is also immediate. In reality, the first attempt fails due to the lack of gconf2. After installing this package, the installation is completed in a few seconds. Once the software has been started, which we will find in the "accessories" menu, simply connect the data logger to one of the USB ports of the Raspberry. After a few moments, the datalogger will be recognized and ready to work.


At first use, the Picolog V6 software appears to have a very simple and clear graphic interface. All the functions of the data logger are easily accessible and can be used intuitively. Just connect a sensor to the "Terminal Board" and configure the input to see the temporal evolution of the signal.



Second application: starting with the Picolog ADC-20


To start, just click on the image of the device you want to configure. In the case of the ADC-20, we have 8 inputs available.

The Picolog software allows you to use demo versions of some Picotech products. This is in order to familiarize yourself with the other products of the company or even just to try the working environment of Picotech devices in order to decide whether to buy these products or those of the competition. To make this software free and free to download I think it is a successful marketing move as it shows the user how simple and at the same time accurate and professional Picotech devices are. The value for money of these devices is really high.


image                                 image


The first choice to make is that of the type of input. We can use the single inputs for single-ended signals or work on pairs to be able to measure a differential type input, for example signals from temperature measurements with thermocouples, Strain Gauge-based force sensing, bridge-based pressure sensing resistor, applications in environments with electromagnetic and radio frequency noise and applications that require long signal paths between sensors and datalogger.


image                   imageimage





The voltage ranges available are two and suitable for managing voltages from -2.5 V to +2.5 V and from -1.25 V to 1.25 V. The only consideration I can make is that it would be convenient to have an input voltage range from -5 V to + 5 V or even from 0 V to 5 V. We at school often work on Arduino and compatible boards so it would have been convenient to have an input already prepared for these boards. In reality, the "Terminal Board" card is designed to accommodate resistors that allow you to vary the input range, and also the manual is of great help in this regard. The fact that the IoT market is full of sensors designed for signals in the 0-5V range, I think it should direct Picotech to predict this voltage range.

Once the input range has been set, the sampling period can be set. We can sample with periods ranging from 1 sample every 100 ms up to 1 sample/hour.

The measurements taken are displayed in real-time. Once all the inputs we need have been configured you can start saving the acquired data to disk. We have the ability to store a certain fixed amount of data or write to the disk as long as there is free space.



Math Channel  

An interesting feature of the Picolog software is that it allows you to create a "Math Channel", ie a virtual signal obtained by applying mathematical operators and mathematical functions to the acquired inputs.                                                                                                              

The most common mathematical functions, exponentials, powers, logarithms, trigonometric functions, etc. can be used.     


This feature could be effectively used, for example, to measure the ambient temperature using an LM35 sensor. We know from the datasheet that the sensor output depends on the temperature according to the law shown in the figure.


If we wanted to have the result directly in degrees Celsius, it would be enough to define a Math Channel that we would call Celsius Temperature and it is defined as follows:




If then we wanted to have the temperature in degrees Fahrenheit I could define another Math Channel, called Farhenheit Temperature, thus obtained:


                              Temperature[°F]=95 (100×Vout)+32










Another interesting feature of the Picolog software is that it allows the user to configure both acoustic and visual alarms that warn when certain conditions occur. The alarms can be associated with one or more input channels and are configured using a window that also allows the use of mathematical laws. When the alarm is triggered, the system can perform one or more of the following operations:

  • produce a sound beep
  • display a pop-up window that warns you of exceeding the threshold,
  • run a program or script.










Graphs and Tables


Once the acquisition has started, the measurements obtained will be displayed on a real-time graph

The graphic display is very useful for having an instant perception of the progress of the acquired signals. If we use "fast" sensors such as a photodiode, the trend of the output voltage will instantly follow the amount of light that affects the photodiode and just shake a hand in front of the photodiode to obtain significant voltage excursions.

Another representation that Picolog V6 provides us is the tabular representation that represents the data in tables that we can configure. In particular, we can associate the acquisition time with each acquisition or simply the progressive number of the sample. Such a representation can be useful for investigations using statistical or artificial intelligence tools.






Another possibility that this program offers us is to set alarms that can make a beep sound with the system speaker or can even start executing a command. Just set a threshold on one or more inputs or on a combination thereof and when this threshold is exceeded, a beep is produced, or a pop-up is displayed with an explanatory message or a command is launched. This feature could be used for real-time control of the environment we are measuring, for example, if I have equipped a greenhouse with humidity, temperature, and brightness sensors, if the humidity or temperature should be too high I could expect to automatically open the ventilation windows.




Third application: exploring the SDK



The code that Picotech makes available to users is organized on GitHub and allows developers to interface with Picotech devices using the most common programming languages, such as C, C #, and Python. Among the examples I would like to talk about picohrdlCon, a project written in C that in almost 1300 lines of well-written and commented code. This file represents the prototype of good programming for its clarity, the use of comments, the modularity of its functions, etc.





Presenting a code so made at school is really helpful to teaching because when a student sees "real" code, written by professionals, he understands that some things that are often said in a class by the teacher but underestimated because they are considered useless, actually represent the standards of professional code production.


This example which, when running, allows you to manage Picotech devices from the CLI, uses almost all the driver functions present in the ADC-20 / ADC-24 Programmer's Guide.


It is a truly feature-rich example and can be used as a basis for creating more specific codes, for example, applied to a certain particular device, or using a certain number of inputs or reading a single sample or a stream of samples, etc.











Here is an example of a simple application that reads input 1 every second and writes the voltage value obtained to a text file. This example, in addition to being a good exercise to learn how to use the PicoSDK, is useful as it allows you to have a text file as output which is more easily managed and usable in simple applications than the database used by Picolog.















In recent weeks I have used this kit on multiple occasions and using both the Raspberry and the PC. I used many different sensors and was able to admire the simplicity of operation and the precision of this device.

I am sure that the next school year will arouse a lot of interest in my students and we will find many applications for its use, maybe so I can add some other applications to this roadtest.

I thank all the members of the "element14 Team" for their availability and all the members of element14 who, like me, love electronics and IT and are a continuous source of ideas and inspiration.

Thanks to you all these sad months are spending more peaceful.