Ir al contenido

← Todas las funcionalidades

Seguidores solares de dos ejesRaspberry PLC 21CANopenControl

Seguimiento solar astronómico con PyEphem en un Raspberry PLC 21

Un seguidor solar de dos ejes solo compensa si apunta al sol todo el día sin un sensor de luz que se empañe o derive. Este ejemplo usa seguimiento solar astronómico con PyEphem en un Raspberry PLC 21: a partir de latitud, longitud y altitud, calcula la elevación y el azimut del sol para cualquier instante y actualiza ambos ejes cada 300 segundos. El código procede de un despliegue real de seguidor solar de dos ejes, incluida la posición de reposo nocturna y el rearme automático al amanecer.

Por qué seguimiento astronómico y no basado en sensores

Los seguidores con fotodiodos persiguen el punto más brillante del cielo, que en días nublados puede ser un reflejo o un claro entre las nubes. Un cálculo de efemérides nunca se confunde: la posición del sol es pura geometría a partir de las coordenadas GPS y la hora. PyEphem lo resuelve en microsegundos en el PLC, así que un periodo de actualización de 300 segundos apenas cuesta CPU y no necesita hardware adicional.

De los ángulos solares a las consignas de eje

El objeto observer contiene la latitud, longitud y altitud de la planta. Dos funciones auxiliares devuelven la elevación y el azimut en grados para la hora UTC actual. Antes de comandar los motores, cada consigna se recorta a los límites mecánicos del eje — finales de carrera por software que protegen la estructura incluso si las matemáticas dicen que el sol está en un punto que el seguidor no puede alcanzar.

Reposo nocturno y rearme al amanecer

Cuando la elevación solar cae por debajo de 5 grados, el seguidor realiza un único movimiento a su posición de reposo: mesa plana, orientada al este. Un flag de estado evita que la maniobra de reposo se repita en cada ciclo durante la noche. Al alba, el mismo flag detecta el sol de nuevo por encima del umbral y rearma automáticamente el seguimiento normal — sin intervención del operador y sin cron jobs.

Un fragmento de la implementación

Tal cual del ejemplo desplegado en el Raspberry PLC 21 — cópialo libremente:

def get_sun_angle(t):
    """Sun elevation (degrees) at instant t (UTC)."""
    obs.date = t.strftime('%Y/%m/%d %H:%M:%S')
    sun.compute(obs)
    return math.degrees(float(sun.alt))

El ejemplo completo es un programa entero — cabecera de conexionado, setup y bucle principal — listo para adaptar a tu aplicación.

Preguntas frecuentes

¿Qué precisión tiene PyEphem para el seguimiento solar?

La precisión de las efemérides es muy superior a una décima de grado, muy por debajo de la tolerancia mecánica de cualquier seguidor. En la práctica, los factores limitantes son la calibración de los encoders y las holguras de la estructura, no la astronomía.

¿Por qué actualizar cada 300 segundos en lugar de continuamente?

El sol se mueve como mucho unos 0,25 grados por minuto, así que un periodo de 5 minutos mantiene el error de apuntamiento en torno a un grado mientras reduce drásticamente los arranques de motor, lo que alarga la vida del variador y de los reductores.

¿Necesita el PLC conexión a internet para que esto funcione?

No. PyEphem lo calcula todo en local. Solo necesitas un reloj fiable, así que se recomienda un módulo RTC o una sincronización NTP periódica en instalaciones sin conectividad permanente.

Funcionalidades relacionadas