Seguidor Solar con motores a paso + Arduino

Con el enorme gusto de que algunas personas les haya agradado mi primer instructable: Deshidratador solar + Arduino les comparto un nuevo proyecto que realice, se trata de un seguidor solar, no sin antes mencionar que mi inspiración fueron los dispositivos de geo bruce y aplavins, con la diferencia que en mi caso utilice motores a pasos, los cuales permiten reducir el precio de los motores y aumentar la capacidad tanto de carga como de movimiento ;) .

Todos sabemos que los seguidores solares tienen la ventaja de incrementar la eficiencia de captación de la energía solar, mientras la Tierra sigue su noble movimiento, el proyecto refleja la importancia de este fenómeno y procura el diseño de un sistema de seguimiento sencillo para que pueda facilitar la instalación del mismo. Espero que pueda ser lo mas explicito posible y tratar de erradicar todas las dudas.

Step 1: Materiales

  • Placa de aluminio
  • Barra de aluminio
  • Angulo de aluminio
  • Cilindro de acero inoxidable 316
  • Placa de acero inoxidable 316
  • Barra de Nylon 6.6
  • Tornillo 1/2" x 21/2"
  • Pijas 1" de largo
  • Tornillo 7/16" x 21/2"
  • Tuerca 7/16"
  • Rondana de presión 7/16"
  • Rodamiento R10RS
  • Chumacera UCF 3/4"
  • Poleas
  • Correas dentadas
  • Sistema tornillo sin fin-piñón
  • Fotorresistenciass
  • Interruptores fin de carrera
  • Conectores tipo SLIM
  • Resistencias (10K, 1K, 100Ω, 800Ω)
  • Par de motores a pasos
  • ULN2803
  • L298N
  • LM324N
  • Fotodiodo BPW34
  • Diodos Schottky
  • Transistor BC547C
  • Capacitor (220pf, 1nf)
  • Arduino UNO R3
  • Cable
  • Madera
  • Pintura
  • Seguro truack p/exterior 5/8"

    Step 2: Diseno de la estructura

    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino

    El diseño propuesto consiste de un sistema biaxial con giro azimutal y cenital con una base cilíndrica, la cual permita realizar el seguimiento del Sol de forma eficiente, además de ser compacta para evitar la mayor área posible de espacio.

    En principio, vamos a simular el prototipo, es una forma que he adoptado para evitar el menor número de errores, (aunque muchas veces se cuelan :) ), intenten utilizar otro tipo de materiales si lo creen conveniente, siempre y cuando permitan ejecutar los movimientos acordes.

    Step 3: Base del panel solar

    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino

    Para la sujeción del panel solar se empleará una base formada por perfiles en L, más conocido en el mercado como ángulo, en la cual descansará el módulo fotovoltaico. Esta base estará soportada por un par de barras cuadradas a los extremos de este, de forma que el peso pueda equilibrarse en todo el sistema y a su vez estas estarán sometidas a un eje que permitirá realizar el movimiento azimutal. Es importante señalar nuevamente que todo el conjunto descrito será muy ligero para evitar el uso de motores con grandes dimensiones, ya que aumentaría el costo y la complejidad del sistema.

    El par de rodamientos facilitara su funcionamiento, los cuales estarán en la parte superior del cilindro. Para esto se emplearan un par de chumaceras que se mantendrán fijas a la base. El uso de las chumaceras permite asentar los rodamientos de bolas y que el eje gire y descanse a la vez.

    Step 4: Movimiento azimutal

    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino

    Para poder asentar las chumaceras, se emplean unos pedazos de acero inoxidable que tienen el mismo diámetro externo que tiene la base cilíndrica, de esta forma, las chumaceras pueden descansar sobre las pequeñas superficies, es importante notar los cortes realizados en la base, unos permitirán que cruce el eje, mientras los otros son únicamente para disminuir el peso del dispositivo (tambi n lo hice por est tica ;) ).

    Con estos elementos podemos lograr el giro azimutal, solo falta disponer de un mecanismo de transmisión circular, ya sea mediante un sistema de engranes o de poleas con correa. Por su sencillez y suavidad, se precisa utilizar el segundo sistema, es decir, podemos sujetar al eje que sostiene a la base del panel solar por en medio, mediante una polea conductora. Para evitar el patinaje que provocan las correas se empleará una polea dentada y una correa con la misma característica.

    Step 5: Movimiento cenital

    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino

    El siguiente paso será ejecutar el otro movimiento (cenital), este por su parte no muestra gran problema y puede ser realizado con distintos elementos mecánicos. Se ha optado por utilizar un mecanismo de transmisión circular mediante un sistema de tornillo sin fin-piñón en la parte inferior de la estructura. Se utiliza este conjunto cuando se desea transmitir grandes esfuerzos y aumentar la potencia de transmisión. Generalmente trabaja en ejes que se cruzan a 90?.

    Existen múltiples dificultades cuando se utiliza un sistema de engranes, pero la problemática más común es cuando se trabajan con variación entre sus centros de operación, por lo que debe de ensamblarse de manera precisa para garantizar un buen funcionamiento.

    El sistema de tornillo sin fin-piñón permitirá girar al dispositivo, gracias a que se acoplara al disco de polímero, es decir, el eje de la corona se acopla como macho, mientras que disco de polímero encaja como hembra (ojala que se pueda apreciar en las imágenes :( ) Dado que el diámetro del disco es semejante al diámetro interno del cilindro y este es muy grande, el disco de polímero deberá reducirse de forma que se pueda asentar a un rodamiento con un diámetro menor.

    En realidad la chumacera UCF sujeta al disco mediante un prisionero, mientras que el cilindro es sostenido por este último a trav s de prisioneros. Básicamente, con ayuda de estos dos sistemas podemos proporcionar los movimientos requeridos en el proyecto.

    Step 6: Prototipo

    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino

    Finalmente se puede notar el ensamble del dispositivo, en la primer figura pongo los materiales de forma transparente para que puedan apreciarse el ensamble de los elementos mecánicos, en cuanto a la segunda figura, es una simulación del prototipo.

    Para que puedan apreciar más vistas del prototipo, le dejo el siguiente video:

    [Play Video]

    Step 7: Funcionamiento

    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino

    Los LDR (fotorresistencias) ayudan a determinar en que lugar existe más luminosidad durante el día, estas se colocaron en los v rtices del panel, agrupados de tal manera que se puede observar en la figura anterior, es decir, un par en la parte superior y un par en la parte inferior. Para lograr una mayor exactitud en cuanto a la medición de la luminosidad se deben cubrir las fotorresistencias alrededor para evitar la captación de la radiación solar difusa, en otras palabras, la propagación de las luz (ondas electromagn ticas) que se encuentran esparcidas y reflejadas en la atmósfera.

    La agrupación de los sensores permite determinar y ejecutar los dos movimientos, por ejemplo, los grupos de LDR llamados izquierda y derecha, son comparadas y si existe una diferencia mayor o menor al rango de sensibilidad determinado, entonces habrá de ejecutarse un movimiento correspondiente, de igual forma para los grupos de sensores arriba y abajo, solo que estos determinaran el movimiento del otro eje.

    Tambi n determino el promedio de radiación entre los cuatro sensores, ¿esto para que?, la idea es que al final del día, digamos que cuando la proyección solar es nula, la base del panel gire en sentido opuesto, en la alborada, esperando que al día siguiente,salga nuevamente el astro solar.

    OPCIONAL

    Tambi n hago uso de un fotodiodo, se trata del BPW34, aunque tambi n se ocupa en el control, si desean, puede omitir este sensor, ya que la aplicación principal por el cual lo utilice fue para medir el espectro solar y registrar las cantidades de radiación solar a las que está sometido el módulo fotovoltaico. Recuerden modificar el código si es que no lo utilizan.

    Step 8: Diseno electronico

    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Show All 12 Items

    En este paso les muestro los circuitos que se emplearon para el desarrollo del prototipo, los interruptores simulan los fines de carrera, no olviden revisar los datasheets de los drivers, esto para que determinen si son capaces de mover los motores que vayan a ocupar.

    Step 9: Codigo

    Seguidor Solar con motores a paso + Arduino

    Les dejo el código de control, espero no haber omitido nada, ya que el editor me revolvió todo jaja XD.

    //Stepper Motor Solar Tracker by HHG

    #include //Integración de la librería Stepper.h para manejar motores a pasos

    #include //Integración de la librería math.h para diseño de operaciones matemáticas básicas

    //Declaración de constantes

    #define motorStephor 200 //Número de pasos del motor horizontal

    #define motorStepver 200 //Número de pasos del motor vertical

    //Uso de las entradas digitales de Arduino

    #define motor1hor 6

    #define motor2hor 7

    #define motor1ver 8

    #define motor2ver 9

    //Declaración de variables

    int prom; //Promedio de los cuatroLDR

    int pyr; //Valor del fotodiodo

    int h=60; //Pasos ejecutados por el motor horizontal

    int v=5; //Pasos ejecutados por el motor vertical

    int ltsensor; //Valor del LDR superior izquierdo

    int rtsensor; //Valor del LDR superior derecho

    int rdsensor; //Valor del LDR inferior izquierdo

    int ldsensor; //Valor del LDR inferior derecho

    int sen=50; //Sensibilidad

    int dil; //Promedio del conjunto de LDR izquierdo

    int dit; //Promedio del conjunto de LDR arriba

    int dir; //Promedio del conjunto de LDR derecho

    int did; //Promedio del conjunto de LDR abajo

    int diff; //Diferencia entre los LDR de arriba con los abajo

    int diff2; //Diferencia entre los LDR de la izquierda con los de la derecha

    int pup; //Interruptor superior

    int pdown; //Interruptor inferior

    Stepper horStep (motorStephor, motor1hor, motor2hor); //Inicia la librería Stepper

    Stepper verStep (motorStepver, motor1ver, motor2ver);

    //Inicialización del programa

    void setup ()

    {

    horStep.setSpeed (30); //RPM del motor horizontal

    verStep.setSpeed (10); //RPM del motor vertical

    //Inicialización del puerto Serial COM

    Serial.begin(9600);

    //Configuración de pines como entradas

    pinMode (pyr, INPUT);

    pinMode(ltsensor, INPUT);

    pinMode(rtsensor, INPUT);

    pinMode(ldsensor, INPUT);

    pinMode(rdsensor, INPUT);

    pinMode(pup, INPUT);

    pinMode(pdown, INPUT);

    }

    //Inicialización del bucle

    void loop ()

    {

    do //Comienza la estructura de control repetitiva do-while

    while ( (pyr==0)&&(pup==HIGH)&&(prom

    //Mientras el valor de pyr sea cero y el promedio de los sensores sea igual o menor a 8 y los interruptores tengan el rango, sigue ejecutándose el bucle

    if (-1*sen > diff || diff > sen) //Si la diferencia medida entre el conjunto de sensores es mayor o menor al valor de la sensibilidad

    {

    if(dit < did) //Si el valor medio de los sensores de arriba es más pequeña que la de los sensores de abajo

    {

    if (pdown==HIGH) //Si pdown se activa

    {

    verStep.step (0); //Parar el motor en el sentido vertical

    delay (10);

    }

    else if (pdown==LOW) //Si pdown esta inactivo

    {

    verStep.step (v); //Gira el motor hacia arriba

    delay (50);

    }

    }

    else if(dit > did)

    //Si el valor medio de los sensores de abajo es más pequeña que la de los sensores de arriba

    {

    if (pup==HIGH) //Si pup se activa

    {

    verStep.step (0); //Para el motor en el sentido vertical

    delay (10);

    }

    else if (pup==LOW) //Si pup esta inactivo

    {

    verStep.step (-v); //Gira el motor hacia abajo

    delay (50);

    }

    }

    else //Para cualquier otro caso

    {

    verStep.step (0); //Parar el motor en el sentido vertical

    delay (10);

    }

    }

    delay (10);

    pyr = analogRead (0); //Lectura de los sensores nuevamente por posible cambio

    ltsensor = analogRead(1)*1.022;

    rtsensor = analogRead(2)*1.007;

    ldsensor = analogRead(3);

    rdsensor= analogRead(4)*1.013;

    dil = (ltsensor + ldsensor)/2; //Promedio de los sensores de la izquierda

    dir = (rtsensor + rdsensor)/2; //Promedio de los sensores de la derecha

    diff2 = (dil - dir); //Diferencia entre el nivel de radiación

    delay (50);

    if (-1*sen > diff2 || diff2 > sen) //Si la diferencia medida entre el conjunto de sensores es mayor o menor al valor de la sensibilidad

    {

    if(dil < dir) //Si el valor medio de los sensores de la izquierda es más pequeña que la de los sensores de la derecha

    {

    horStep.step (h); //Girar motor hacia la derecha

    delay (10);

    }

    else if(dil > dir)

    //Si el valor medio de los sensores de la izquierda es más grande que la de los sensores de la derecha

    {

    horStep.step (-h); //Girar el motor hacia la izquierda

    delay (10);

    }

    else //Para cualquier otro caso

    {

    horStep.step (0); //Parar el motor en el sentido horizontal

    delay (10);

    }

    }

    delay(10);

    }

    //Función "mov"

    void mov ()

    {

    if (pup==HIGH) //Si pup está activo

    {

    verStep.step (72); //Gira 72 pasos hacia arriba

    delay (50);

    }

    else if (pdown==HIGH) //Si pdown está activo

    {

    verStep.step (-72); //Gira 72 pasos hacia abajo

    delay (50);

    }

    delay (10);

    }

    Step 10: Proceso y ensamblado de las piezas mecanicas

    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Show All 23 Items

    Bueno, llego la hora de pasar las ideas a la realidad ;) . No hace falta hacer hincapi al acoplamiento de los elementos mecánicos (espero que se haya entendido en la simulación), solo les muestro algunos de los procesos de maquinado que emplee para crear las piezas. Y les puedo asegurar que trabajar con acero inoxidable es muy difícil :( , pero el acabado es genial, además de ser un material que soporta las inclemencias extremadamente.

    Olvide este detalle, les comparto los archivos de diseño:

    Seguidor Solar con motores a paso + Arduino
    solar tracker.pdf1 MB

    Step 11: Pruebas finales!

    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Seguidor Solar con motores a paso + Arduino
    Show All 10 Items

    Finalmente, cuando se tenga la parte mecánica, es hora de colocar cada uno de los sensores y la parte electrónica. Por el momento no tengo un panel solar :( , pero hice uso de una placa de unicel :) que finalmente pinte, quedo excelente, ¿no creen? XD. Les sugiero que las resistencias que tienen la configuración de pull ups para los LDR y los interruptores, los coloquen lo más cercanos a estos, me di cuenta que generaban datos errados cuando los puse a una distancia más larga.

    ¿Para que sirven los interruptores de final de carrera?, son para evitar que el panel se desplace hacia abajo y este pueda colisionar con la base del prototipo, es por eso que se colocó un pedazo de rondana conc ntrico al eje y mientras este gira, llega el punto en que presiona a los interruptores que se encuentran sujetos a la chumacera, de forma que limitan el desplazamiento del panel solar.

    Guarden todos los componentes electrónicos en un estuche, sigan haciendo magia quienes tengan impresoras 3D o laser cutters y eviten utilizar una cajita de chocolate como yo ;( jaja.

    Para cerrar con broche de oro, les dejo un vídeo donde realizo unas pruebas del seguidor :). Hasta pronto!

    [Play Video]

  •  
     

    Tag cloud

    make build easy simple arduino making homemade solar laser printed portable cheap mini building custom cardboard wooden create super lego turn paracord chocolate your paper light intel