Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Seguidor solar Arduino

Componentes y suministros

Arduino UNO
× 1
Micro-servo motor SG90
× 2
LDR, 5 Mohm
× 4
Resistencia de 330 ohmios
× 4
Potenciómetro giratorio (genérico)
× 1
Interruptor pulsador, pulsador
× 2
Mini panel solar
× 1

Herramientas y máquinas necesarias

Arduino IDE
Parallax PLX-DAQ

Acerca de este proyecto

Este proyecto presenta un banco de pruebas de hardware / software abierto para seguidor solar. El prototipo propuesto se basa en un seguidor solar de doble eje controlado con Arduino Uno, que es una plataforma de creación de prototipos de código abierto basada en hardware y software fáciles de usar. El seguidor solar se puede controlar automáticamente con la ayuda de sensores de resistencia dependiente de la luz (LDR) o manualmente mediante un potenciómetro. Además, este banco de pruebas proporciona instrumentación virtual basada en Excel en la que se pueden registrar y presentar los datos de su seguidor solar. El hardware utilizado se ha elegido para que sea económico, compacto y versátil. El banco de pruebas propuesto está diseñado para ayudar a los estudiantes a desarrollar su comprensión de la teoría de control y su aplicación.

El banco de pruebas propuesto se presenta en la Fig. 1. Se basa en un seguidor solar que puede rotar automáticamente para seguir el sol con la ayuda de cuatro sensores LDR y dos servomotores (SM1 y SM2), o manualmente usando un potenciómetro. Para cambiar entre los dos modos (automático y manual), se utiliza un pulsador. Otro pulsador se utiliza para conectar el SM1 (servomotor arriba-abajo) o SM2 (servomotor izquierda-derecha) al potenciómetro para controlar su movimiento. Además, una computadora se utiliza como instrumento virtual para visualizar el modo y la corriente, el voltaje y la potencia del panel fotovoltaico según el tiempo en MS Excel. La placa Arduino Uno se utiliza para implementar todos los requisitos de software del sistema.

Diseño mecánico

Como se muestra en la Fig. 2, el modelo 3D de diseño asistido por computadora (CAD) del seguidor solar está diseñado en CATIA. Está compuesto por el panel fotovoltaico, los servomotores izquierda-derecha y arriba-abajo y cuatro sensores LDR. Para el eje horizontal, se fija un rodamiento en paralelo con el servomotor up-down para una mayor flexibilidad. El seguidor solar está diseñado para tener dos grados de libertad, de este a oeste por el servomotor izquierda-derecha y de sur a norte por el servomotor arriba-abajo. Los sensores LDR se colocan en las cuatro esquinas del panel fotovoltaico y se colocan en tubos oscuros con un pequeño orificio en la parte superior para detectar la iluminación del sol. Estos tubos oscuros también se consideran un concentrador de radiación y se utilizan para aumentar la robustez del seguidor solar.

Sistema de hardware

La figura 3 presenta el circuito electrónico del banco de pruebas propuesto. Para el modo automático, el microcontrolador convierte los valores analógicos de los sensores LDR (pines A0 a A3) en digitales. Luego controla dos servomotores (arriba-abajo e izquierda-derecha) usando dos señales de modulación de ancho de pulso (PWM) (pines 5 y 6) para rastrear el sol. Los movimientos de rotación ocurren en dos ejes, en acimut de este a oeste según la trayectoria diaria del sol y en elevación de sur a norte según la trayectoria del sol estacional. Para el modo manual, se utiliza un potenciómetro (pin A4) para controlar el movimiento de los dos servomotores, se despliega un pulsador (pin 11) para conectar el potenciómetro al servomotor arriba-abajo o al servomotor izquierda-derecha. Además, se utiliza otro pulsador (pin 12) para cambiar entre los dos modos. Además, el voltaje PV se mide a través del pin analógico A5 del Arduino, luego se calcula la corriente PV ya que la resistencia de la carga ya se conoce. A continuación, la corriente fotovoltaica, el voltaje y la potencia frente al tiempo y el modo real se envían a la computadora para presentarlos en tiempo real en MS Excel.

El circuito del sensor LDR está diseñado como un circuito divisor de voltaje. La variación en la intensidad de la luz es proporcional a la variación del voltaje de salida del divisor. La parte superior del divisor de potencial es de 5 V, la tierra está a 0 V y la salida del divisor de voltaje está conectada a una entrada analógica ( A 0 por ejemplo) del microcontrolador. Posteriormente, el convertidor analógico a digital (ADC) del microcontrolador convierte el valor analógico leído por A 0 a un valor digital entre 0 y 1023 porque el ADC está codificado en 10 bits, y de acuerdo con este valor, es posible conocer el nivel de luz. El valor de las resistencias utilizadas en los divisores de voltaje es 330 Ω.

Se utilizan dos servomotores de 180 grados. Un servomotor (MG996R) para controlar el seguidor solar según el eje vertical, que es el servomotor izquierdo-derecho. Y un micro servo motor (SG90) para controlar el seguidor solar según el eje horizontal, que es el servomotor up-down. La ventaja del servomotor es que podemos controlar su parada, marcha, sentido de giro y velocidad mediante un único cable de baja corriente conectado directamente a una salida del microcontrolador sin necesidad de ningún driver. Los servomotores usados ​​son controlados por la placa Arduino UNO a través de un cable eléctrico de 3 hilos como se muestra en la Fig. 3, dos hilos para suministro y un hilo para PWM para controlar sus posiciones.

El diseño del software integrado

El software integrado es la pieza que se integrará en el hardware (Arduino Uno) para controlar y monitorear el banco de pruebas del seguidor solar. El software integrado está diseñado para cubrir los siguientes requisitos:

1. El banco de pruebas tiene dos modos:manual y automático. Un botón está conectado al pin 12 para cambiar entre los dos modos.

2. Si el modo manual está activo, el potenciómetro puede controlar los servomotores de este a oeste para el motor de izquierda a derecha o de sur a norte para el motor de arriba hacia abajo. Un botón está conectado al pin 11 para cambiar el potenciómetro entre los dos motores, ya sea que controle el servomotor izquierdo-derecho o el servomotor arriba-abajo.

3. Si el modo automático está activo, se ejecutará el algoritmo presentado en la Fig. 4. Este último utiliza los valores analógicos devueltos por los sensores LDR. Por ejemplo, considerando el acimut o el eje vertical, se comparan los valores promedio de dos LDR derechos y dos LDR izquierdos y si el conjunto izquierdo de LDR recibe más luz, el seguidor solar se moverá en esa dirección a través del servomotor izquierdo-derecho. Este último continuará girando hasta que el resultado de la diferencia esté en el rango [−10, 10]. Este rango se utiliza para estabilizar el controlador y una vez que el seguidor solar está perpendicular al sol, no se realizan más controles. Por otro lado, si el conjunto derecho de LDR recibe más luz, el seguidor solar se mueve en esa dirección a través del servomotor izquierdo-derecho y continuará girando hasta que el resultado de la diferencia esté en el rango [−10, 10]. De la misma forma se utiliza para el eje de elevación. Además, también determinamos la radiación promedio entre los cuatro sensores LDR y si este valor es menor que un valor pequeño (8:un valor que se ha ajustado y probado prácticamente y se devuelve cuando la irradiación es nula). Es decir, ha llegado la noche. En este caso, el seguidor solar debe volver a la posición de salida del sol. Por ejemplo, si la posición de salida del sol se puede alcanzar estableciendo 0 grados en el servomotor izquierda-derecha y 30 grados en el servomotor arriba-abajo. Esto se puede hacer fácilmente a través de la función C “servox. write (angle) ”proporcionado por Arduino IDE.

4. El voltaje fotovoltaico adquirido a través del pin analógico A5 debe tratarse y usarse para calcular la corriente fotovoltaica y la potencia. Luego, todos estos datos y el modo real deben enviarse a través de un cable USB a la computadora y luego presentarlos en MS Excel.

El PLX-DAQ La macro de Excel se utiliza para la adquisición de datos desde el microcontrolador Arduino a una hoja de cálculo de Excel. Solo necesitamos descargarlo. Después de la instalación, se creará automáticamente una carpeta llamada "PLX-DAQ" en la PC en la que se encuentra dentro un acceso directo llamado "PLX-DAQ Spreadsheet". Luego, para establecer la comunicación entre la placa y Excel, solo necesitamos abrir la Hoja de Cálculo y definir la configuración de las conexiones (Baud rate y puerto) en la ventana PLX-DAQ (Fig.5). A partir de entonces, después de hacer clic en "conectar", los datos de salida se recopilarán y se mostrarán en tiempo real en la hoja de cálculo de Excel

El prototipo

La figura 6 muestra el seguidor solar en estado desmontado y ensamblado. Tal como se presenta, toda la estructura ha sido fabricada con placas de madera, y está claro que todos los componentes mencionados se han utilizado para construir el seguidor solar con modos manual y automático (sensores LDR, Arduino Uno, servomotores, potenciómetro, pulsadores y el pequeño panel fotovoltaico).

La Figura 7 muestra el banco de pruebas completo, el seguidor solar con instrumentación virtual y una lámpara artificial que puede exponer luz para probar el seguidor solar. El seguidor solar y la computadora están conectados a través de un cable USB. Una vez que se adquiere el voltaje fotovoltaico, el controlador trata esta información y la usa para calcular la corriente y la potencia fotovoltaica. Luego, todos estos datos se envían a la computadora para presentarlos en MSExcel. De las Figs. 5 y 6, está claro que el banco de pruebas propuesto es pequeño, flexible y fácil de usar. Puede permitir que los estudiantes, investigadores e ingenieros apliquen sus algoritmos de una manera fácil antes de proceder con la implementación de un gran dispositivo de seguimiento solar.


Código

  • Banco de pruebas de seguimiento solar del sistema operativo integrado del software
Banco de pruebas de seguimiento solar del sistema operativo integrado del software Arduino
 // La biblioteca del servomotor # incluye  // Inicializar variablesint mode =0; int ax =0; int buttonState1 =0; int buttonState2 =0; int prevButtonState1 =0; int prevButtonState2 =0; int ldrtopr =0; // LDR superior derecha int ldrtopl =1; // LDR superior izquierda int ldrbotr =2; // LDR inferior derecha int ldrbotl =3; // LDR inferior izquierda int topl =0; int topr =0; int botl =0; int botr =0; // Declarar dos servos Servo servo_updown; Servo servo_rightleft; int umbral_valor =10; // configuración de la sensibilidad de la mediciónvoid () {Serial.begin (9600); // configuración de la conexión en serie // abre el puerto en serie, establece la velocidad de datos en 9600 bps Serial.println ("CLEARDATA"); // borra todos los datos que ya se han colocado en Serial.println ("LABEL, t, voltage, current, power, Mode"); // definir los encabezados de las columnas (comando PLX-DAQ) pinMode (12, INPUT); // Botón de cambio de modo pinMode (11, INPUT); // Interruptor de eje pinMode (A4, INPUT); // Potenciómetro para movimiento derecha-izquierda y para movimiento arriba-abajo servo_updown.attach (5); // Movimiento arriba-abajo del servomotor servo_rightleft.attach (6); // Movimiento de derecha a izquierda del servomotor} void loop () {// pv_power (); char Mode; voltio flotante =analogRead (A5) * 5.0 / 1023; voltaje de flotación =2 * voltios; // Volt =(R1 / R1 + R2) * Voltaje / R1 =R2 =10Ohms => voltaje =2 * voltio) corriente flotante =voltaje / 20; // I =voltaje / (R1 + R2) potencia flotante =voltaje * corriente; Serial.print ("DATOS, HORA,"); // Comando PLX-DAQ Serial.print (voltaje); // envía el voltaje al puerto serial Serial.print (","); Serial.print (actual); // envía la corriente al puerto serie Serial.print (","); Serial.print (potencia); // envía la energía al puerto serial Serial.print (","); // Serial.println (Modo); buttonState1 =digitalRead (12); if (buttonState1! =prevButtonState1) {if (buttonState1 ==HIGH) {// Cambia el modo y enciende el indicador correcto if (mode ==1) {mode =0; } else {modo =1; }}} prevButtonState1 =buttonState1; retraso (50); // Espere 50 milisegundos (s) if (mode ==0) {Mode ='M'; Serial.println (modo); // enviar Modo "Manual" al puerto serie manualsolartracker (); } else {// modo automático Mode ='A'; Serial.println (modo); automaticsolartracker (); // enviar Modo "Automático" al puerto serie}} void automaticsolartracker () {// captura de valores analógicos de cada LDR topr =analogRead (ldrtopr); // captura de valor analógico de LDR superior derecha topl =analogRead (ldrtopl); // capturando el valor analógico del LDR superior izquierdo botr =analogRead (ldrbotr); // capturando el valor analógico del bot derecho LDR botl =analogRead (ldrbotl); // capturando el valor analógico del bot izquierdo LDR // calculando el promedio int avgtop =(topr + topl) / 2; // promedio de los mejores LDR int avgbot =(botr + botl) / 2; // promedio de los LDR inferiores int avgleft =(topl + botl) / 2; // promedio de LDR izquierdos int avgright =(topr + botr) / 2; // promedio de los LDR correctos // Obtenga los diferentes int diffelev =avgtop - avgbot; // Obtener el promedio diferente entre los LDR top y los LDR bot int diffazi =avgright - avgleft; // Obtenga el promedio diferente entre los LDR a la derecha y los LDR a la izquierda // movimiento de izquierda a derecha del seguidor solar if (abs (diffazi)> =umbral_valor) {// Cambie la posición solo si la diferencia de luz es mayor que el umbral_valor si (diffazi> 0 ) {if (servo_rightleft.read () <180) {servo_rightleft.write ((servo_updown.read () + 2)); }} if (diffazi <0) {if (servo_rightleft.read ()> 0) {servo_rightleft.write ((servo_updown.read () - 2)); }}} // movimiento hacia arriba y hacia abajo del seguidor solar if (abs (diffelev)> =umbral_valor) {// Cambie la posición solo si la diferencia de luz es mayor que el valor umbral if (diffelev> 0) {if (servo_updown.read () <180) {servo_updown.write ((servo_rightleft.read () - 2)); }} if (diffelev <0) {if (servo_updown.read ()> 0) {servo_updown.write ((servo_rightleft.read () + 2)); }}}} void manualsolartracker () {buttonState2 =digitalRead (13); if (buttonState2! =prevButtonState2) {if (buttonState2 ==HIGH) {// Cambia el modo y enciende el indicador correcto if (ax ==1) {ax =0; } más {ax =1; }}} prevButtonState2 =buttonState2; retraso (50); // Espera 50 milisegundos (s) if (ax ==0) {// controla el movimiento derecha-izquierda servo_rightleft.write (map (analogRead (A4), 0, 1023, 0, 180)); } else {// // controla el movimiento arriba-abajo servo_updown.write (map (analogRead (A4), 0, 1023, 0, 180)); }} 

Esquemas


Proceso de manufactura

  1. Dados digitales Arduino
  2. Controlador de juego Arduino
  3. Seguidor solar V2.0
  4. Pixel Chaser Game
  5. Seguidor solar basado en Internet de las cosas (IoT)
  6. Levitación electromagnética repulsiva Arduino
  7. Controlador Arduino Home activado por Alexa
  8. NeoMatrix Arduino Pong
  9. Medición de la radiación solar con Arduino
  10. Juego de ruleta LED
  11. Sistema solar de seguimiento solar