MODULAIR-UFP

Product manual for the MODULAIR-UFP ultrafine particle monitor.

Key
Valu

Product Name

MODULAIR-UFP

SKU(s)

MOD-UFP-NORAM

For use in North America.

MOD-UFP-GLOBAL

For use outside North America. Please contact QuantAQ Sales for specific country support.

Datasheet

1. Introduction and Specs

The MODULAIR™-UFP provides real-time, direct measurement of total particle number concentration (~5-3,000 nm), temperature, humidity, pressure, wind direction, and wind speed in an easy-to-use, easy-to-deploy, internet-connected system.

1.1 Specifications

1.1.1 Air Quality Measurements

PARAMETER
RANGE
ACCURACY

Total Number Concentration

0 to 100,000 p/cc

+/- 10%

Temperature*

-40ºC to 70ºC

+/- 0.3ºC

Relative Humidity

0 to 100%

+/- 2%

Pressure

300 to 1,250 hPa

0.4 hPa

Wind Direction

0 to 60 m/s

3% RMSE

Wind Speed

0º to 360º

+/- 3º

*This is the specification for the temperature measurement itself provided by the GMX500 weather station, not the safe operating temperature of the MODULAIR-UFP.

For more information on the operating principle of the CPC, please refer to Hering et al, 2025.

1.1.2 Power and Communications

PARAMETER
DETAILS

🔋 Power

12V 5W average consumption

📶 Communication

North America LTE Cat M1 with 2G fallback Wi-Fi (2.4GHz or 5GHz) EMEAA LTE CAT1 with 2G/3G fallback Wi-Fi (2.4GHz or 5GHz)

📈 Data

Web interface (quant-aq.com) Programmatic access (QuantAQ API) Local storage (16GB µSD card)

1.1.3 Operating Specifications

PARAMETER
DETAILS

Weatherproof rating

IP67

Operating temperature

5ºC to 45ºC*

Operating humidity

05 to 95%, non-condensing

Dimensions

25.34" x 10.6" x 5.22"

Weight

10 lbs (4.5 kg)

It is important to note that using the MODULAIR-UFP without proper winterization can lead to permanent, irreversible damage. The MODULAIR-UFP uses water as its operating liquid, and the instrument can be damaged if water internal to the system freezes and expands.

1.2 Certifications

Coming soon.

2. Sensor Overview

2.1 Front View

Below is a front view of the MODULAIR-UFP. Air is pulled in through the inlet on the base of the unit (see 2.2 Base View for a more detailed view). The top of the unit features the Gill MaxiMet GMX500 weather station.

Figure 2.1. Front view of the MODULAIR-UFP.

2.2 Base View

The base of the MODULAIR-UFP highlights the inlet (with insect screen installed) and the M12 Power Cable.

Figure 2.2. Base view of the MODULAIR-UFP.

2.3 Internal View

2.3.1 Sensor View

The internals of the MODULAIR-UFP can be accessed by opening the outer lid of the MODULAIR-UFP enclosure. Near the top (closest to the weather station, external), you will see the power switch, status LED, µUSB debugging port, and µSD card. On the right-hand side, you will see the condensation particle counter (CPC). On the left-hand side, you will see the water reservoir and the load cell. Near the bottom, you will see the purge port.

Figure 2.3. Internal sensor view of the MODULAIR-UFP.

2.3.2 Core Board

Under normal operating circumstances, it should not be necessary to access the Core Board directly. You should only do so under the advisement of the QuantAQ Support team.

The Core Board is mounted to the main chassis internal to the MODULAIR-UFP. A top-down view can be seen in Figure 2.3, where the µSD card, debugging port, Status LED, and power switch are accessible.

Figure 2.4. The Core Board that runs all MODULAIR-X series devices.

3. Installation and Hardware Setup

3.1 Unpacking

Your MODULAIR-UFP arrives in a custom Seahorse shipping case that is designed to keep your MODULAIR-UFP safe during transport. It is essential that you keep this case as-is in the event you need to transport the MODULAIR-UFP or ship it back to QuantAQ for calibration or repair. For shipping purposes, with all components in place, the enclosure measures 31" x 21" x 11" and weighs 45 lb.

When unpacking your MODULAIR-UFP, you should expect to find the following:

  • MODULAIR-UFP Ultrafine Particle Monitor

  • Pole Mount Bracket

  • Components Box

    • Device registration card

    • AC/DC 12VDC Power Brick

    • M12 Power Cable

    • 6 mL syringe

    • Pole Mount Components Bag

      • (2) Pole Mount Back Plates

      • (4) 1/4"-20, 3" Carriage Bolts

      • (4) 1/4"-20 nuts

      • (4) 10-32, 3/8" screws

Figure 3.1. The MODULAIR-UFP is shipped in a custom Seahorse enclosure.

In the cardboard components box (lower right of Figure 3.1), you will find the loose components, including the power cable, power brick, registration card, and liquid syringe. These components are shown in Figure 3.2.

Figure 3.2. The components found inside the Components Box.

When removing the MODULAIR-UFP from its case, it is important not to lift by the Weather Station. This also applies when putting the MODULAIR-UFP back inside its case. Lift by either grabbing the sides of the polycarbonate enclosure or by the aluminum weather station mount, located between the polycarbonate enclosure and the weather station.

Once you remove the MODULAIR-UFP from its case, you will see a thin sheet of foam that sits below the sensor. After removing this layer of foam, you will find the Pole Mount Bracket. Please see Figure 3.3 for more instructions.

Figure 3.3. Instructions for packing and unpacking the MODULAIR-UFP.

A video overview of how to best pack and unpack your MODULAIR-UFP can be found below.

3.2 Device Registration

You do not need to physically have your sensor present to complete the device registration process. The process can also be completed without powering on your sensor.

Each device ships with a Registration Card containing a QR code and a short confirmation code. Follow the instructions below to register your device.

1

Scan the QR code

Using an internet-connected phone, tablet, or computer, scan the QR code on your Registration Card. It is best to first log in to quant-aq.com on the same device. The QR code should direct you to the registration page on the QuantAQ Cloud.

2

Fill out the device registration form

Fill out the form presented to you on your screen.

3

Enter the claim code

The form will ask you for a Claim Code, which can be found on your Registration Card. It is a 6-digit alphanumeric code. This ensures only the person in possession can register it.

Once completed, press "Register".

3.3 Configuring Wi-Fi

To use our web-based configuration tool, you must use a computer operating system and browser that supports WebUSB technology. Examples include Chrome, Edge, and Opera browsers on Windows, Mac, Linux, or Chromebook devices.

To configure Wi-Fi credentials for your device, use our web-based configuration tool or visit https://app.quant-aq.com/wifi-setup. Complete instructions can be found in our Help Center. The MODULAIR can store up to ten separate credentials before they begin to be overwritten.

3.4 Installation

If the provided installation hardware does not work for your deployment, please contact QuantAQ Support via the in-app chat, and we will help to find a solution.

The MODULAIR-UFP ships with a Pole Mount Kit specifically designed to support the unit. It is designed to be attached to a pole or Post with a diameter between 1.25" and 2". The MODULAIR-UFP should be mounted toward the top of a pole or post such that the weather station is not impeded by anything and can provide accurate data (see Figure 3.4).

Figure 3.4. An image of a well-installed MODULAIR-UFP instrument.

To physically install your sensor, follow the instructions below.

1

Secure the Pole Mount Kit

Secure the Pole Mount Bracket to the pole using the included carriage bolts and back plates.

2

Pre-install the 3/8" 10-32 screws to the MODULAIR-UFP

Using the provided 3/8", 10-32 screws, partially screw each one into the fasteners in each corner on the back of the MODULAIR-UFP.

3

Secure the MODULAIR-UFP

Slide the four screws through the slots on the Pole Mount Bracket and secure using a 1/8" driver.

4

Install the Power Cable

Plug the M12 to USB-C power cable into the base of the MODULAIR-UFP.

5

Make sure the Insect Shield is Installed Properly

During shipping and installation, the insect shield can become wedged against the base of the MODULAIR-UFP. Make sure it is properly seated, approximately 1" away from the base of the Swagelok fitting. See the image below for an example of how it should be positioned. When seated properly, you will feel the internal o-ring slip into place.

6

Fill the Water Reservoir

Disconnect the water line that runs from the CPC to the water reservoir by pressing the button on the front of the fitting attached to the lid of the water reservoir. Carefully remove the water reservoir from its cradle and fill it with up to 500 mL of distilled water (or cleaner). Reinsert the water reservoir by sliding it into the cradle, while pushing up on the cradle from underneath to prevent the load cell from being depressed too hard. Then, reattach the water line that connects the water reservoir to the CPC. A detailed view of this step can be seen in the video located in Section 3.5.1 below.

7

Purge the Water Line

Connect the provided 6 mL syringe to the Purge Port near the bottom of the MODULAIR-UFP. Extract water until there are no air bubbles remaining in the water line that connects the water reservoir to the CPC. This may take up to three pulls. Dispose of the water safely.

8

Power On the MODULAIR-UFP

Inside the MODULAIR-UFP, you will see the power switch toward the upper left-hand side. Slide the power switch to the right into the on position.

At this point, the Status LED will begin blinking, and within a few minutes, it should begin breathing cyan, which indicates it is connected to the internet and to the QuantAQ Cloud.

3.5 Operation

3.5.1 Refilling the Water Reservoir

The water reservoir holds up to 500 mL of distilled water. Under normal operating conditions, you should expect the water reservoir to last for ~120 days between refills. The video and instructions below cover how to refill the water reservoir.

1

Disconnect the water line

Disconnect the water line that runs from the CPC to the water reservoir by pressing the button on the front of the fitting attached to the lid of the water reservoir.

2

Remove the water reservoir

Carefully remove the water reservoir from its cradle by pulling it up and out toward you. You can use a second hand to hold the cradle in place or wiggle the reservoir back and forth if it is a tight fit.

3

Refill the water reservoir

Fill the reservoir with up to 500 mL of distilled (or cleaner) water. When complete, reattach the lid of the Nalgene bottle.

4

Reinstall the water reservoir

Reinsert the water reservoir by sliding it into the cradle, while pushing up on the cradle from underneath to prevent the load cell from being depressed too hard. Then, reattach the water line that connects the water reservoir to the CPC

5

Purge the water line

Connect the provided 6 mL syringe to the Purge Port near the bottom of the MODULAIR-UFP. Extract water until there are no air bubbles remaining in the water line that connects the water reservoir to the CPC. This may take up to three pulls. Dispose of the water safely.

3.5.2 Storing or shipping your MODULAIR-UFP

Before storing or shipping your MODULAIR-UFP, it is important to ensure water is removed from the internals of the system to avoid breaking internal components. When water freezes, it expands, which can cause some internal subcomponents (e.g., the Nafion) to break. Before putting the MODULAIR-UFP in its shipping case, purge the water line several times as described in Step 6 of Section 3.5.1 above.

3.6 Connectivity Considerations

As all QuantAQ products are internet-connected, it is important to consider connectivity when choosing an installation location. There are three primary things to consider:

  1. Antenna Connection. If your device has an external antenna, ensure it is seated securely and placed at a 90º angle pointing toward the sky.

  2. Antenna Placement. Do not place the device near metal objects or other sources of RF (i.e., antenna). Keep the antenna at least 18" away from metal objects as they can cause distortions and reflections.

  3. Location and Cellular Availability. Install your sensor in a location with a known cellular signal on the carriers we support.

4. Software and Data

4.1 Data Structure and Outputs

There are three ways in which you can access data for the MODULAIR-UFP:

  1. Local Storage. Raw, 10-second resolution data is available for download directly from the onboard 16GB µSD card.

  2. Web User Interface. Data can be downloaded directly from the QuantAQ Cloud in CSV format.

  3. API. Data can be accessed programmatically via the QuantAQ API.

4.1.1 Local Storage

Data is collected and saved to an onboard µSD card every 10 seconds. Each minute, these values are averaged and pushed to the QuantAQ Cloud, where they are available for you to view, interact with, and download. It is unlikely you will ever need the locally stored data, but it is available to you if you would like to use it.

On the µSD card, you will find files with names like DATA_{YYYYMMDD}@FW{VERSION}.csv where YYYYMMDD represents the UTC date and VERSION represents the firmware version of the device. In the event a firmware update takes place mid-day, a new file will be created for that date.

Figure 4.1. Sample of a data file header. The first three rows are metadata with subsequent rows containing the header and data.

Data files are written each day and can be read or analyzed using any programming language or spreadsheet program (e.g., Microsoft Excel). Each file begins with three metadata rows describing the device model (row 1), device ID (row 2), and device serial number (row 3). Row 4 contains the data header columns, and rows 5 and higher contain data. Each row corresponds to a new record.

Table 4.1 below documents the columns available in the downloaded data, their units, and their description.

ID
COLUMN
UNIT
Description
1

timestamp

Timestamp, UTC, ISO format

2

fw

Firmare version

3

flag

MODULAIR-UFP flag

4

soc

%

LiPo battery State of Charge

5

sample_temp

ºC

Internal box temperature

6

sample_rh

%

Internal box relative humidity

7

wx_ws

m/s

Vector Wind speed, as measured by the MaxiMet GMX500

8

wx_wd

deg

Vector Wind direction, as measured by the MaxiMet GMX500

9

wx_ws_scalar

m/s

Scalar wind speed, as measured by the MaxiMet GMX500

10

wx_u

The u-component of the wind speed/direction

11

wx_v

The v-component of the wind speed/direction

12

wx_pressure

hPa

Ambient pressure, as measured by the MaxiMet GMX500

13

wx_temp

ºC

Ambient temperature, as measured by the MaxiMet GMX500

14

wx_rh

%

Ambient relative humidity, as measured by the MaxiMet GMX500

15

wx_dew_point

ºC

Ambient dew point, as measured by the MaxiMet GMX500

16

cpc_elapsed_seconds

s

Seconds since the CPC started up.

17

cpc_serial_number

Serial Number of the CPC subcomponent.

18

cpc_particle_number_conc

p/cc

Raw particle number concentration

19

cpc_particle_number_conc_corr

p/cc

Particle number concentration with nominal correction for high concentrations.

20

cpc_sample_number

The sample number, auto-incrementing

21

cpc_flag

The current flag of the CPC subcomponent

22

cpc_pressure_at_beginning

hPa

Pressure reading in cell when particle counting begins

23

cpc_pressure_at_end

hPa

Pressure reading in cell when particle counting ends

24

cpc_pressure_ambient

hPa

Ambient pressure, as measured by the CPC subcomponent

25

cpc_temperature_ambient

ºC

Ambient temperature, as measured by the CPC subcomponent

26

cpc_temperature_at_input

ºC

Temperature at the CPC input valve

27

cpc_humidity_at_input

%

Relative humidity at the CPC input valve

28

cpc_dew_point_at_input

ºC

Dew point at CPC input valve

29

cpc_temperature_at_output

ºC

Temperature at the CPC output valve

30

cpc_humidity_at_output

%

Relative humidity at the CPC output valve

31

cpc_dew_point_at_output

ºC

Dew point at the CPC output valve

32

cpc_particle_count

Number of detected particles during the count interval

33

cpc_particle_count_corr

Dead-time corrected particle count

34

cpc_flush_time_ms

ms

Cell flush time

35

cpc_humidification_time_ms

ms

Cell humidification time

36

cpc_expansion_time_start

Time after start of expansion that counting starts

37

cpc_expansion_time_end

Time after start of expansion that counting ends

38

cpc_dead_time_corr_factor

Dead-time correction factor

39

cpc_power_to_pump

%

Power to the pump

40

cpc_k_factor

Conversion factor used to calculate the number concentration including cell volume and conversion of pressure reading into appropriate units

4.1.2 Data Stored on the QuantAQ Cloud

Data are pushed to the QuantAQ Cloud with 1-minute time resolution and can be downloaded via the API or via the web app as a CSV. When downloading data, you can select whether you would like to download the raw data, final data, or raw+final data. Generally, the final data is what is desired, as it contains the final, cleaned data that is ready for analysis. The raw data is well-suited for researchers trying to investigate specific questions. When downloaded, the data is exported as a CSV and contains the following columns:

COLUMN
FILE LOCATION
UNIT
DESCRIPTIO

timestamp

rawfinal

id

rawfinal

timestamp_local

rawfinal

sn

rawfinal

sample_rh

rawfinal

%

sample_temp

rawfinal

ºC

lat

rawfinal

lon

rawfinal

device_state

rawfinal

wx_ws

rawfinal

wx_wd

rawfinal

wx_ws_scalar

rawfinal

wx_u

wx_v

wx_pressure

hPa

wx_temp

ºC

wx_rh

%

wx_dew_point

ºC

cpc_elapsed_seconds

cpc_serial_number

cpc_flag

cpc_pressure_at_beginning

hPa

cpc_pressure_at_end

hPa

cpc_pressure_ambient

hPa

cpc_temperature_ambient

ºC

cpc_temperature_at_input

ºC

cpc_temperature_at_output

ºC

cpc_humidity_at_input

%

cpc_humidity_at_output

%

cpc_dew_point_at_input

ºC

cpc_dew_point_at_output

ºC

cpc_particle_count

cpc_particle_count_corr

cpc_particle_number_conc

cpc_flush_time_ms

cpc_humidification_time_ms

cpc_expansion_time_start

cpc_expansion_time_end

cpc_dead_time_corr_factor

cpc_power_to_pump

cpc_k_factor

cpc_particle_number_conc_corr

final

p/cc

4.1.3 Data Downloaded via API

For details on how to use the API to download data, please view the API docs here. The names, units, and descriptions for key-value pairs retrieved via the API are identical to those found in the section above, though they may be embedded beneath a key (e.g., all meteorological data is shown under the met key). Data is returned as JSON, as shown in the example below:

// Some code
{
  "data": [
    {
      "cpc_particle_number_conc_corr": 54960,
      "geo": {
        "lat": null,
        "lon": null
      },
      "met": {
        "wx_dew_point": 14.37,
        "wx_pressure": 1011.68,
        "wx_rh": 39.43,
        "wx_temp": 29.6,
        "wx_u": -0.309,
        "wx_v": 2.256,
        "wx_wd": 352.21,
        "wx_ws": 2.28,
        "wx_ws_scalar": 2.35
      },
      "raw_data_id": 1,
      "sn": "MOD-UFP-00003",
      "timestamp": "2025-06-12T23:36:45",
      "timestamp_local": "2025-06-12T19:36:45",
      "url": "https://api.quant-aq.com/v1/devices/MOD-UFP-00003/data/1"
    },
    ...
  ],
  "meta": {
    "first_url": "https://api.quant-aq.com/device-api/v1/devices/MOD-UFP-00003/data/?page=1&per_page=50&limit=3",
    "last_url": "https://api.quant-aq.com/device-api/v1/devices/MOD-UFP-00003/data/?page=1&per_page=50&limit=3",
    "next_url": null,
    "page": 1,
    "pages": 1,
    "per_page": 50,
    "prev_url": null,
    "total": 3
  }
}

4.2 Understanding the Status Flag

Each record contains a status flag, stored as an unsigned integer, that describes the state of the device for that exact record. Flags contain encoded information about each of the sub-components onboard the device. They are generated via a bitmask and can be decoded by reversing the procedure. To determine whether a specific flag is set, you can use the bitwise AND operator. If the value of the flag is returned, then the flag is set. If a zero is returned, the flag is not set.

To make this a bit clearer, let's follow this example. Let's assume the value of the flag is set to "4". We can perform a bitwise AND operation to check the result to see if FLAG_STARTUP is set.

# bit AND - is FLAG_STARTUP set?
>>> 4 & 1
0

# bit AND - is FLAG_NEPH set?
>>> 4 & 4
4

The table below describes the available flags, flag values, and a description of what they mean and what action should be taken when they are set.

Flags are consistent across all QuantAQ products, so there may be flags in the table below that irrelevant to your product.

FLAG
VALUE
WHY IS IT SET?
WHAT TO DO?

FLAG_STARTUP

1

This flag is set when the device powers on.

Remove any rows where this flag is set.

FLAG_OPC

2

This flag is set when the OPC has indicated the data failed to transfer correctly. This can be caused by the fan being off, the laser being off, or the checksum not validating properly.

Remove any rows where this flag is set.

FLAG_NEPH

4

This flag is set when the nephelometer has indicated the data failed to transfer correctly.

Remove any rows where this flag is set.

FLAG_RHTP

8

This flag is set when the relative humidity and temperature sensor has failed.

Remove any rows where this flag is set.

FLAG_CO

16

This flag is set when the CO sensor has failed or data does not meet initial on-board QA/QC.

Remove any rows where this flag is set.

FLAG_NO

32

This flag is set when the NO sensor has failed or data does not meet initial on-board QA/QC.

Remove any rows where this flag is set.

FLAG_NO2

64

This flag is set when the NO2 sensor has failed or data does not meet initial on-board QA/QC.

Remove any rows where this flag is set.

FLAG_O3

128

This flag is set when the O3 sensor has failed or data does not meet initial on-board QA/QC.

Remove any rows where this flag is set.

FLAG_CO2

256

This flag is set when the CO2 sensor has failed or data does not meet initial on-board QA/QC.

Remove any rows where this flag is set.

FLAG_SO2

512

This flag is set when the SO2 sensor has failed or data does not meet initial on-board QA/QC.

Remove any rows where this flag is set.

FLAG_H2S

1024

This flag is set when the H2S sensor has failed or data does not meet initial on-board QA/QC.

Remove any rows where this flag is set.

FLAG_BAT

2048

This flag is set when the internal LiPo battery is low or dead.

None.

FLAG_OVERHEAT

4096

This flag is set when the OPC has overheated.

Contact QuantAQ.

FLAG_SD

8192

This flag is set when the SD card has failed.

Replace the SD card.

5. Maintenance and Service

Coming soon.

6. Changelog

Please see our public changelog for a full history of all firmware changes.

7. Appendix

7.1 Status LED

The Status LED on the front panel is used to communicate the status of the internet connection. The LED changes color and pattern, each of which indicates a different state as outlined below. The rate at which the LED blinks comes in two flavors: blinking and breathing, where breathing implies a slow pulse where the color of the LED fades in and out.

LED COLOR
PATTERN
MODE
DESCRIPTION

Green

Blinking

Looking for Internet

If your device is blinking green, it is trying to connect to the cellular network. There is no need to take any action.

Breathing

Cloud not Connected

If your device is breathing green, it has a cellular connection but has not been able to connect to the cloud.

Cyan

Blinking

Connecting to the Cloud

Blinking cyan indicates the device has a cellular connection and is attempting to connect to the cloud. There is no need to take any action. This will happen each time on device startup.

Breathing

Connected

When your device is breathing cyan, everything is good and you are happily connected to the internet and the QuantAQ Cloud.

Magenta

Blinking

Firmware Update

When your device is blinking magenta, it is undergoing an over-the-air firmware update. DO NOT power off when this is happening.

White

Breathing

Internet Off

If the LED is breathing white, the cellular connection has been turned off. If you did not explicitly turn off the cellular connection via the onboard switch, please notify QuantAQ.

Red

Blinking

System Failure

A system failure has occurred. This is likely caused by faulty on-board firmware or corrupted memory. Please contact QuantAQ for next steps.

Last updated

Was this helpful?