Monitoring Camera Temperature

Introduction

Zivid cameras expose the temperatures of several internal components through the camera state (Camera::state()).

You do not need to monitor these temperatures to protect the camera. The camera firmware has built-in thermal protection and keeps the camera within safe operating conditions on its own.

When to monitor temperatures

A typical use case is when the camera is integrated into a custom enclosure or protective housing, for example an air-conditioned housing that lets the camera operate in an environment that is otherwise outside its specified temperature range (too hot or too cold). In such a setup, the camera’s temperature sensors can be used as feedback to regulate the air conditioning and keep the camera within its operating range.

The following temperatures are available:

Component

Description

DMD

Temperature of the DMD (the projector chip).

General

General internal temperature of the camera.

LED

Temperature of the projector LED.

Lens

Temperature near the camera lens.

PCB

Temperature of the main printed circuit board.

Note

The temperatures are reported in degrees Celsius.

Note

None of these temperatures are the ambient (room) temperature. They are temperatures of internal camera components, so it is normal and expected that they read higher than the ambient temperature. The operating temperature range in the datasheet (for example 0–40 °C or 0–45 °C) refers to the ambient temperature, and should not be compared directly against these component temperatures.

What happens when a component overheats

The camera firmware continuously checks the projector LED and DMD temperatures before each capture. If either temperature is too high, the firmware rejects the capture instead of running it, and the SDK throws an exception on the capture call. This matches the Error severity reported for these components by the camera health check, which is LED above 70 °C and DMD above 60 °C.

The firmware also applies thermal throttling before either limit is reached. Under a high duty cycle, the camera may automatically pause between acquisitions to cool down and prevent overheating. This is normal behavior and does not raise an exception. See Projector Brightness for details on thermal throttling.

Reading the temperatures

The temperatures are read from the camera state, so no capture is required. After connecting to the camera, read each temperature from camera.state().temperature():

Go to source

source

const auto temperature = camera.state().temperature();
std::cout << "Temperatures:" << std::endl;
std::cout << "  DMD:     " << temperature.dmd().value() << " °C" << std::endl;
std::cout << "  LED:     " << temperature.led().value() << " °C" << std::endl;
std::cout << "  Lens:    " << temperature.lens().value() << " °C" << std::endl;
std::cout << "  PCB:     " << temperature.pcb().value() << " °C" << std::endl;
std::cout << "  General: " << temperature.general().value() << " °C" << std::endl;
Go to source

source

var temperature = camera.State.Temperature;
Console.WriteLine("Temperatures:");
Console.WriteLine("  DMD:     {0} °C", temperature.DMD);
Console.WriteLine("  LED:     {0} °C", temperature.LED);
Console.WriteLine("  Lens:    {0} °C", temperature.Lens);
Console.WriteLine("  PCB:     {0} °C", temperature.PCB);
Console.WriteLine("  General: {0} °C", temperature.General);
Go to source

source

temperature = camera.state.temperature
print("Temperatures:")
print(f"  DMD:     {temperature.dmd} °C")
print(f"  LED:     {temperature.led} °C")
print(f"  Lens:    {temperature.lens} °C")
print(f"  PCB:     {temperature.pcb} °C")
print(f"  General: {temperature.general} °C")

Printing the full camera state (camera.state()) also includes these temperatures, alongside the camera’s connection and network information.

Note

To get the status of the camera’s temperatures (and other health indicators) as an aggregated, easy-to-interpret report rather than raw values, see the Camera Health Check.