Two-axis solar tracker with CANopen
Astronomical positioning without light sensors: ephemeris + CANopen drive + inclinometers, with on-site configuration over WiFi.
Runs on: Raspberry PLC 21 — Python 3 scripts (Linux PLC).
The application
A photovoltaic plant with two-axis trackers needed robust, maintainable control. Each Raspberry PLC computes the sun position from ephemeris data (no light sensors that get dirty), drives the LOVATO variable frequency drive over CANopen, adjusting frequency and ramps according to the distance to the target, and closes the loop with two CANopen inclinometers. A physical button raises a WiFi access point for 15 minutes for on-site configuration, and the local Node-RED dashboard allows manual control and calibration.
Architecture
- Astronomical elevation/azimuth calculation (PyEphem) every 300 s
- LOVATO VLB3 drive over CANopen SDO (run, frequency, ramps, diagnostics)
- 2× CANopen inclinometer as position feedback
- Night stow position with automatic resume at sunrise
- Push-button WiFi AP (15 min) + Node-RED dashboard + systemd services
Bill of materials
- Raspberry PLC 21 — Industrial Shields controller
- LOVATO VLB3 drive — motors for both axes
- 2× TY7953 CANopen inclinometer — actual position
- Central Mosquitto broker — plant-wide supervision
What is in the pack
canopen-encoder-inclinometer-reading.pycentral-mosquitto-broker.shlovato-vlb3-vfd-canopen-sdo.pysolar-tracker.servicesolar-tracking-pyephem.pytcp-socket-node-red.pywifi-access-point-button.py- Bill of materials + README
Get the pack by email — free
Fill in the form and we will send the complete pack to your inbox within minutes.