Seguidor solar (tracker)

Solar tracker, funciona aún sin sol...
Estimadísimos colegas,

estoy trabajando en un seguidor solar (solar tracker) que esta listo la parte mecanica. Falta el "cerebro" electrónico. O sea, la parte de electrónica de potencia para mover los motores y la parte de control del tracker.

Ok, hay montones de esos en internet, pero ninguno que cumpla con lo siguiente: a ver si me entienden la secuencia de los hechos:

Este tracker sigue el sol, cuando HAY sol a través de sus sensores de luz. Pero cuando no hay, porque hay nubes, este tracker igual debe seguir el sol. Por lo tanto, debo meter dentro del PIC una función matemática que describa la trayectoria del sol en el cielo por todo un año, y el tracker se debe mover según esa función. Existe.

Para esto debo utilizar un PIC:
1) Calcular posición según Lat, Long, fecha, tiempo, etc, lo cual me obliga a agregar librerías matemáticas al programa, que puede que ocupen demasiada memoria.
2) Utilizar una tabla con los resultados calculados que esté dentro de una memoria externa. Estas tablas también existen, y existen de esas que con pocos datos y cálculos de interpolación simples tienen un error porcentual de ... poquísimo, lo cual me serviría.

Ahora la pregunta:
Alguien conoce una de estas tablas o sabe como se llama? No tengo idea como buscar una de estas en internet. Existen al alcance de todos. y como puedo introducirlas al pic
Les agradezco mucho!
 
En mi opinión debes usar un seguidor con sensores o uno con cálculo...si ya tienes elaborado éste último ¿para qué te serviría el de sensores?

Estoy trabajando en ello y utilizo un PIC con bastante memoria y realizo el cálculo día a día ya que para guardar todo el año se requiere mucha memoria. Es necesario tener un RTC (reloj) y las coordenadas de ubicación (latitud y longitud). Por otro lado, es importante definir si utilizarás motores DC, Servomotores o motores PAP (paso a paso) ya que la programación y el manejo interno de los datos depende de ello.

No conozco sobre las tablas que mencionas. Nunca he escuchado sobre ellas.
 
te hago una consulta ???
por que debe haceerr eso ??
si no hay sol y haces mover los motores inutilmente solo gastas energia.

por que lo haces ??
sera por si el sol alarece solo un ratito que el equipo este "posicionado" para aprovecharlo ?? es por eso ?? o hay otro motivo .
 
Concordando con fernandob en esta oportunidad, creo que es la primera, mientrás más "preciso" sea tu seguimiento , más ON/OFF de tus motores , y ya sabes la energía que se consume en los arranques, es comun desde hace varios años 3 a 7 posiciones en total , siendo la de mayor duración ( como es obvio ) la posición horizontal . Si "exageramos" y asumimos 12 horas de sol ( un día de verano, cerca de la línea ecuatorial ) la posición horizontal permanece 6 horas(50%) aproximadamente consiguendo más del 80% de la energía "posible" absorbida ; el resto (20%) se obtiene de la inclinaciones de seguimento , si les descuentas la potencia del accionamiento de tus motores ON/OFF( si consideramos 3 movimientos para cada lado + la posición horizontal = 7 posiciones ) te queda menos del 10%. Con 7 posiciones tendrías aprox 80% + 10% = 90%. En un día con "poco sol" gastas la misma cantidad de energía en los On/OFF de tus motores y tendrías que sacar la energía de tu acumulador " lease baterías".
La gente que sacó las estadisticas hace mas de dos décadas recomienda una posición fija con una ligera inclinación "mirando al saliente", la inclinación dependerá de la latitud geográfica de cada pais.
 
te hago una consulta ???
por que debe haceerr eso ??
si no hay sol y haces mover los motores inutilmente solo gastas energia.

por que lo haces ??
sera por si el sol alarece solo un ratito que el equipo este "posicionado" para aprovecharlo ?? es por eso ?? o hay otro motivo .

buenas efectivamente lo hago por si el sol llegara a salir el panel pueda eficientar la potencia de salida



En mi opinión debes usar un seguidor con sensores o uno con cálculo...si ya tienes elaborado éste último ¿para qué te serviría el de sensores?

Estoy trabajando en ello y utilizo un PIC con bastante memoria y realizo el cálculo día a día ya que para guardar todo el año se requiere mucha memoria. Es necesario tener un RTC (reloj) y las coordenadas de ubicación (latitud y longitud). Por otro lado, es importante definir si utilizarás motores DC, Servomotores o motores PAP (paso a paso) ya que la programación y el manejo interno de los datos depende de ello.

No conozco sobre las tablas que mencionas. Nunca he escuchado sobre ellas.

y como realizarte tus calculos o en base a que lo haces? para poder realizar el seguimiento solar por medio del pic

Me refiero a formulas o como le dices al pic que esta en cierto dia y en cierta hora del mes y año?
 
Última edición:
Hola a todos! El principal de la pagina lograstes hacer lo del pic dias,meses, horas,etc. Estoy en ese proyecto y quisiera saber como seria..
 
Última edición por un moderador:
Buenas a todos electrónicos. Les cuento, estoy haciendo un proyecto de un seguidor solar de dos servomotores (uno horizontal y otro vertical) y 4 LDR con Proton IDE; vi bastantes proyectos iguales pero con Arduino pero ninguno me sirve por el lenguaje utilizado. Vi que hay un comando para servomotores en el proton pero no encontré más información acerca de su funcionamiento.

Entiendo que el ángulo que tendrá el servo dependerá del PWM que se le aplique. En Arduino parece muy sencillo pero en Proton IDE no encuentro nada de información.

Hice una parte guiándome de un proyecto de Arduino pero la parte de los ciclos FOR creo que debo sustituirlo con el comando Servo que mencioné anteriormente. (La parte de los ciclos FOR tiene error de sintaxis). Apreciaría mucho su ayuda, gracias de antemano.
Device 16F877A
XTAL 4

TRISA = 255
TRISB = $0

Dim servohori As DWord
Dim servoverti As DWord
Dim ldrTL As Byte
Dim ldrBL As Byte
Dim ldrTR As Byte
Dim ldrBR As Byte

PORTA.0 = ldrTL
PORTA.1 = ldrBL
PORTA.2 = ldrTR
PORTA.3 = ldrBR

Dim avgtop As Float
Dim avgleft As Float
Dim avgbottom As Float
Dim avgright As Float

avgtop = (ldrTL + ldrTR) / 2
avgleft = (ldrTL + ldrBL) / 2
avgbottom = (ldrBL + ldrBR) / 2
avgright = (ldrTR + ldrBR) / 2

Inicio:
If avgtop < avgbottom Then
For servoverti Step +1
DelayMS 100
ElseIf avgbottom < avgtop Then
For servoverti Step -1
DelayMS 100


If avgleft > avgright Then
For servohori Step +1
Servo
DelayMS 100
ElseIf avgright > avgleft Then
For servohori Step -1
DelayMS 100

GoTo Inicio
 
En Arduino parece muy sencillo pero en Proton IDE no encuentro nada de información.
En la carpeta PDS de Proton IDE se encuentran los ejemplos para el entorno.
Para servos se incluye: "Servo.bas" y una carpeta "Multi_Servo_Controller" con el ejemplo "Servo_Demo.bas" que sirve para controlar varios servos por medio de la librería "Servos.inc"
 
En la carpeta PDS de Proton IDE se encuentran los ejemplos para el entorno.
Para servos se incluye: "Servo.bas" y una carpeta "Multi_Servo_Controller" con el ejemplo "Servo_Demo.bas" que sirve para controlar varios servos por medio de la librería "Servos.inc"
Hola D@rkbytes. Gracias por responder.
¿Dónde puedo encontrar esa carpeta del Multi_Servo_Controller?
Encontré solo la de Servo.bas y tampoco encontré información acerca de esa librería.
 
Hola a todos, por lo que he visto e investigado dentro del foro no he encontrado nada parecido a este seguidor solar y mucho menos en el lenguaje de programación de Proton IDE.

Estoy haciendo un seguidor solar con dos servomotores, uno para el movimiento vertical y otro para el movimiento horizontal, en conjunto con cuatro fotorresistencias y el microcontrolador 16F877A. He hecho un código de programación con ayuda de la poca información de internet y unos cuantos manuales pero no logro hacer que funcione bien. Estuve leyendo que utilizara entradas analógicas para los LDR, lo hice pero aún no lo logro. Espero me puedan ayudar y que el moderador me deje publicar este tema tan interesante.

Adjunto mi código y una foto del circuito en proteus:

Device 16F877A
XTAL 4

ADCON1 = %11001011
TRISA = $FF
TRISB = %0000000
PORTB = 0

Dim servoH As Word
Dim servoV As Word
Dim ldrTL As Float
Dim ldrBL As Float
Dim ldrTR As Float
Dim ldrBR As Float

Symbol servohori = PORTB.0
Symbol servoverti = PORTB.1

PORTA.0 = ldrTL
PORTA.1 = ldrBL
PORTA.2 = ldrTR
PORTA.3 = ldrBR

Dim avgtop As Float
Dim avgleft As Float
Dim avgbottom As Float
Dim avgright As Float

avgtop = (ldrTL + ldrTR) / 2
avgleft = (ldrTL + ldrBL) / 2
avgbottom = (ldrBL + ldrBR) / 2
avgright = (ldrTR + ldrBR) / 2

servoV = 200
servoH = 200

Inicio:
If avgtop < avgbottom Then
servoV = servoV + 1
DelayMS 5
ElseIf avgbottom < avgtop Then
servoV = servoV - 1
DelayMS 5
EndIf
Servo servoverti, servoV


If avgleft > avgright Then
servoH = servoH + 1
DelayMS 5
ElseIf avgright > avgleft Then
servoH = servoH - 1
DelayMS 5
EndIf
Servo servohori, servoH

GoTo Inicio
 

Adjuntos

  • servocircu.png
    servocircu.png
    177.6 KB · Visitas: 11
Atrás
Arriba