EQSP32-controlled dual-axis heliostat directing sunlight to a fixed target
The heliostat installation in Rjukan, Norway — three large mirrors redirect winter sunlight onto the town square below. This professional installation cost 850 000 EUR for 17 m² of mirror. The same control principle, implemented with the EQSP32, can be replicated at a fraction of that cost.

The Engineering Challenge

A heliostat is a mirror that tracks the sun and redirects its reflection to a fixed target: a building facade, a solar receiver, a process heat collector, or a concentrating solar power plant. Unlike a solar panel tracker — which simply points the panel at the sun — a heliostat must hold its reflection at a specific, arbitrary point in space while the sun moves across the sky. The required mirror orientation is not the sun's position; it is computed from both the sun's position and the target's angular position relative to the mirror, and it changes by roughly 0.3 to 0.5 degrees every minute.

Residential pole-mounted heliostat with segmented mirrors redirecting sunlight to two north-facing windows of a house
Heliostats are not only for municipal or utility projects. This residential unit redirects sunlight onto two north-facing windows of the house, bringing direct sun into rooms that would otherwise never receive it.

That seemingly small angular rate still demands a closed-loop position controller capable of resolving fractions of a degree, running reliably outdoors for years, and doing so without a large bill of materials. Precision actuators with built-in encoders are expensive and mechanically complex. Motor drives add cost and panel space. Dedicated motion controllers add yet another layer. The EQSP32 eliminates all of these.

I/O Inventory

Channel Signal Type Notes
POUT 1–4 Tilt actuator — speed POUT ×4 Four outputs paralleled; combined 4 A headroom for motor startup
POUT 5–8 Pan actuator — speed POUT ×4 Four outputs paralleled; same arrangement as tilt
DO 9 Tilt direction relay DO Energises DPDT relay to reverse tilt motor polarity
DO 10 Pan direction relay DO Energises DPDT relay to reverse pan motor polarity
RS485 IMU — WinMotion SINDT-485 Modbus RTU X/Y inclination at 0.001° resolution; 5 V powered from EQSP32 aux output
Wi-Fi Sun position API HTTPS ipgeolocation.io — azimuth and altitude, fetched every minute
AIN 11 Wind speed sensor 0–10V Optional — park mirror when wind exceeds threshold
DO 12–16 Spare – Available for auxiliary functions

IMU as Position Feedback: Simpler, More Accurate, More Reliable than Encoders

The standard approach to position feedback on a linear actuator is a built-in potentiometer or an external encoder. Both create mechanical coupling problems: potentiometers drift with temperature and wear, encoders require precise shaft alignment, and any backlash in the linkage between the encoder and the mirror introduces deadband that degrades pointing accuracy. Neither technology is suited for unprotected outdoor use — potentiometers corrode and encoders accumulate contamination in their optical or magnetic gaps. A heliostat lives outside, year-round.

There is a deeper problem too: actuator stroke does not translate cleanly into mirror angle. Even with a perfect, zero-backlash linkage, the relationship between linear extension and angular rotation is nonlinear and depends on the exact geometry of the pivot and arm lengths. Any manufacturing tolerance or thermal growth shifts that geometry, rendering a stroke-based position calculation inaccurate without recalibration.

The IMU approach sidesteps both problems entirely. A dual-axis inclinometer mounted directly on the mirror frame measures the actual orientation of the mirror — not the actuator stroke. Mechanical slop, linkage flex, thermal expansion, and geometric nonlinearity are all automatically compensated because the sensor measures the end result, not an intermediate mechanical quantity.

WinMotion SINDT-485 RS485 Modbus IMU inclinometer connected to EQSP32
The WinMotion SINDT-485 connected directly to the EQSP32 RS485 port. The sensor speaks Modbus RTU natively — no adapter, no level shifter. The EQSP32's 5 V auxiliary output powers it from the same terminals.
IMU mirror inclination feedback axes diagram
X and Y inclination axes reported by the IMU map directly to mirror pitch and roll. Resolution is 0.001° — well below the sun's 0.3–0.5°/min movement rate.

The WinMotion SINDT-485 used here is a dual-axis industrial inclinometer that speaks Modbus RTU over RS485 — the same bus the EQSP32 exposes natively on its screw terminals. No adapter, no level shifter, no breakout board: the sensor wires connect directly to the EQSP32's RS485 terminals, and the EQSP32's 5 V auxiliary output powers it. The Modbus master function in the EQSP32 library handles periodic polling in two lines of code and returns X and Y inclination resolved to 0.001°. At 60 EUR the SINDT-485 costs a fraction of what encoder-equipped actuators would add to the bill of materials.

Key insight: Mounting the IMU on the mirror frame, not on the actuator, makes the control loop inherently insensitive to mechanical tolerances. Any source of positioning error — backlash, linkage flex, thermal growth — is visible in the feedback and automatically corrected at the next control cycle.

Driving Linear Actuators: Paralleled Outputs and PWM Speed Control

Each linear actuator draws up to 2 A at startup. A single EQSP32 solid-state output is rated at 1 A continuous. Rather than adding an external motor driver, four outputs are wired in parallel for each actuator, bringing the combined current rating comfortably above the motor's peak demand. The wiring is straightforward: all four output terminals connect to the same motor lead.

PWM duty cycle control of linear actuator speed for precise heliostat positioning
PWM at 10% duty cycle (approximately 2.5 V effective) slows the actuator to a crawl for fine positioning. The motor is pulsed in 50 ms bursts every second, producing incremental steps of approximately 0.1°, well below the sun's angular movement rate.

Precise angular positioning requires slow, controllable actuator movement. The EQSP32's PWM outputs solve this without any additional hardware. At 10% duty cycle the effective voltage applied to the 24 V actuator is approximately 2.5 V, reducing motor speed to a crawl. The control loop issues 50 ms PWM pulses once per second, each producing a mirror movement of roughly 0.1°. This is smaller than the sun's movement in one minute, giving the controller enough resolution to correct any accumulated error at each update cycle.

Direction reversal with a simple DPDT relay

A DC motor reverses direction when its supply polarity is swapped. A single DPDT relay wired across each motor does exactly this: one state drives the actuator to extend, the other retracts it. One digital output per actuator is all that is required.

DPDT relay wiring for DC motor direction reversal on heliostat linear actuator
A DPDT relay swaps the motor supply polarity to select direction. In normal daytime operation, each actuator moves predominantly in one direction — azimuth tracks east to west across the day — so direction changes are infrequent and relay wear is minimal.

An important practical note: during normal daytime tracking, each actuator moves mostly in one direction. The pan axis sweeps from east to west over the course of a day; the tilt axis rises in the morning and falls in the afternoon. Relay switching events are therefore far fewer than the number of PWM steps, keeping relay wear negligible across the lifetime of the installation.

Sun Position via Wi-Fi: The Most Accurate Method

Computing the sun's position on-chip using an astronomical algorithm is possible, but published implementations are approximations that can deviate from the true position by a degree or more, depending on the formula and the time of year. For heliostat pointing, where the objective is to keep a reflection on a target within a few centimetres at several metres of distance, this error matters.

The EQSP32's native Wi-Fi connectivity makes a better approach trivial: call the ipgeolocation.io astronomy API with the installation's GPS coordinates, and receive the exact sun azimuth and altitude for that location at that moment. The API accounts for atmospheric refraction, the observer's altitude, and all higher-order corrections. The free tier allows up to 1000 API calls per day. At one call per minute and a tracking window from 08:00 to 20:00, the daily call count is 720, comfortably within the free limit.

Accuracy note: In field testing with a mirror at 5 metres from the target wall, the reflection remained within a few centimetres of the target for a full hour of continuous tracking — even on a windy day that caused minor mechanical vibration in the stand. The system corrects accumulated error at every one-minute API call, so small disturbances do not compound.

Timelapse showing tracked mirror reflection staying fixed while untracked mirror drifts
One hour compressed into a timelapse. The tracked mirror's reflection (right) stays locked on target while the fixed reference mirror (left) drifts by approximately two metres over the same period.

Closed-Loop Control: How It All Works Together

The control loop runs as follows. Every minute the EQSP32 calls the sun position API and retrieves the current azimuth and altitude. Using the known angular position of the target and the rules of specular reflection, it computes the required mirror pitch and roll angles. It then reads the current mirror orientation from the IMU over RS485 Modbus RTU. If the error exceeds the step threshold, the appropriate actuator is pulsed at reduced PWM until the IMU confirms that the mirror has reached the target angle. The direction relay is set before each move and cleared when the move is complete.

Because the sun moves only 0.3 to 0.5 degrees per minute, most corrections are small: a few PWM pulses per axis, per cycle. The actuators are stationary most of the time, drawing no current and generating no heat. Motor and relay service life is extended accordingly.

CAD model of pole-mounted dual-axis heliostat with azimuth and inclination linear actuators
The mirror mount in CAD: a single pole carries the mirror frame, with one linear actuator driving azimuth and a second driving inclination. The IMU is mounted directly on the mirror frame.

The mount is a straightforward pole design: a single vertical mast carries the mirror frame, the azimuth actuator swings the frame around the mast, and the inclination actuator sets its tilt. It is compact, rigid, and simple to fabricate. Because the IMU sits on the mirror frame and reports the resulting orientation directly, actuator stroke and linkage geometry never enter the control math: the loop simply drives each actuator until the measured angles match the computed setpoints.

A compact, weatherproof control panel

The complete controller fits neatly in a standard waterproof DIN-rail enclosure: one EQSP32, one 24 V DIN-rail power supply, and two low-cost DPDT relays. There is no motor driver module, no motion controller card, and no dedicated communication gateway. Because the enclosure is rated IP65 or better, it can be mounted outdoors directly next to the mirror structure, keeping actuator cable runs short and eliminating the need to route low-voltage motor wiring back to a protected indoor panel.

EQSP32 heliostat controller DIN-rail panel inside IP65 waterproof outdoor enclosure with power supply and direction relays
The complete control panel: EQSP32, 24 V Meanwell DIN power supply, and two DPDT direction relays. Everything snaps onto a standard DIN rail. The waterproof enclosure can be installed outdoors, directly adjacent to the mirror mount.

Wiring Overview

EQSP32 heliostat wiring diagram showing paralleled outputs, DPDT relays, and IMU RS485 connection
Wiring diagram for the complete heliostat controller. The RS485 bus connects directly to the IMU. Four POUT terminals parallel into each actuator motor lead. Two DPDT relays handle direction. The 5 V auxiliary output on the EQSP32 powers the IMU directly.

Taking the System Further

The architecture described here uses 10 of the EQSP32's 16 I/O channels. The remaining channels and the built-in MQTT client leave considerable room for operational extensions without any hardware changes.

SCADA integration

The EQSP32's built-in MQTT client publishes mirror position, actuator state, and current sun coordinates to any MQTT broker. A standard SCADA or HMI can subscribe to these topics and display live mirror pitch and roll alongside a historical trend, making it easy to verify tracking performance and detect mechanical drift over time.

Weather-aware operation

On heavily overcast days, tracking serves no useful purpose and can be paused to reduce actuator wear. A call to a weather API — the same Wi-Fi connection already in use for sun position — can return cloud cover data for the installation's location. If cloud cover exceeds a configurable threshold, the controller holds the mirror in its last position and resumes tracking when the sky clears.

Wind protection

A standard 0–10 V anemometer connects directly to one of the spare analog inputs on the EQSP32. When wind speed exceeds a safe threshold, the controller can park the mirror in a low-drag orientation: flat, face-down, or sheltered depending on the mechanical design. The same input can be used for a simple reed-switch wind flag if a calibrated anemometer is not required. No additional hardware or signal conditioning is needed.

Bill of Materials

Component Description Cost (EUR)
EQSP32CE Industrial IoT controller — 16 I/O, RS485, Wi-Fi, DIN-rail 155
WinMotion SINDT-485 Dual-axis RS485 inclinometer, 0.001° resolution 60
Linear actuators ×2 24 V DC, generic DIN-compatible 74
DPDT relays ×2 DIN-rail mount, 24 V coil 22
Meanwell HDR-30-24 24 V / 1.5 A DIN-rail PSU 17
Waterproof DIN cabinet Legrand IP65 enclosure, 1–2 DIN rows 42
Aluminium profile + 3D-printed joints 20×20 mm extrusion, pan/tilt frame ~30
Controller subsystem total ~400

For a full-scale installation with a solar tracker mount and one or more square-metre mirrors, the complete system lands in the 1 000–1 500 EUR range — compared to the 50 000 EUR per square metre of purpose-built professional heliostat installations such as the Rjukan, Norway sunlight mirrors project.

Why EQSP32

Paralleled outputs — no motor driver

Four 1 A solid-state outputs paralleled give 4 A combined drive per actuator. Eliminating the motor driver module reduces cost, panel space, and wiring complexity.

PWM speed control — built in

All 16 EQSP32 outputs are PWM-capable. Duty cycle control of actuator speed requires no external circuitry — just a single function call in the library.

RS485 Modbus RTU master

Native RS485 with Modbus master support connects directly to the industrial-grade IMU. The 5 V auxiliary output powers the sensor. No adapters or additional boards required.

Wi-Fi — native, not an add-on

Wi-Fi connectivity for the sun position API and MQTT telemetry is built into every EQSP32. No external Wi-Fi module, no extra power supply, no additional programming.

DIN-rail — professional grade

Every component in the panel mounts on a standard DIN rail. The result is a compact, professionally wired enclosure that is easy to service and meets industrial installation standards.

Spare I/O for operational extensions

After the two actuator pairs and the IMU, six I/O channels remain free for wind sensors, additional mirrors, status outputs, or any other field instrumentation.

Ready to build your heliostat controller?

The EQSP32CE includes RS485, Wi-Fi, 16 PWM-capable outputs, and the full software library. Start with the datasheet or order directly.

View the EQSP32 →