Está en la página 1de 7

1

Control velocidad de un Motor DC con


fotodiodo utilizando controlador PID
Unidades Tecnológicas de Santander
Pereira Saavedra Juan Sebastián y Morales Suarez Angel Steven
juan_se_12@gmail.com
stevenmorsu@gmail.com

1. DRIVER L293D.
Driver puente H para motores L293D es un circuito integrado
de cuatro canales diseñado para manejar cargas inductivas tales
Resumen: El circuito implementado en la etapa de entrada está
configurado como amplificador, el cual permite recibir una señal
como relevadores, solenoides, motores DC y motores paso a
optima proveniente de una fuente de luz, esta luz es detectada por paso hasta con una salida máxima de corriente de 600mA por
un fotodiodo el cual por medio de su configuración y una canal en la configuración conocida como puente
resistencia la corriente se convertirá en un voltaje, el cual será H. Es posible configurarlo para manejar hasta 2 puentes H. El
evaluado por los puertos de la placa Arduino Nano con el fin de control de las entradas digitales del L293 puede hacerse desde
lograr hacer la respectiva activación de la posición de un motor cualquier microcontrolador, Arduino, Raspberry pi, TI
DC, el cual posee una caja de reducción, que permita relacionar el Launchpad, BeagleBone, o cualquier otro sistema embebido.
voltaje capturado que produce un potenciómetro lineal, y así a Permite controlar la dirección de giro y la velocidad de cada
partir de esta lectura el panel pueda ser ubicado en la mejor
motor de forma independiente. [1]
posición donde se encuentra la mayor intensidad de radiación.

Índice de términos— ARDUINO, FOTODIODO, POSICION, 1.1 Características


MONITOR SERIAL. • Salida de corriente por canal pico(No repetitivo):
1.2A
I. INTRODUCCIÓN • Salida de corriente por canal de forma continua: 600 mA.
• Máximo voltaje soportado por los pines Enable: 7
El propósito general del proyecto es implementar un
Vdc.
controlador proporcional, integral y derivativo (PID), el cual
• Protección de sobrecalentamiento.
logre modificar la velocidad de un motor de corriente directa,
• Rango de voltaje de alimentación: 4.5 Vdc a 36 Vdc.
mientras se detecta un cambio en el nivel de iluminación sobre
• Rango de temperatura de operación: -40°C a 150°C.
el fotodiodo y de acuerdo a esto se establece una referencia
• Encapsulado: DIP-16.
que permita determinar en qué posición se debe colocar el
• Fabricante: STMicroelectronics. [2]
motor para ubicar el fotodiodo y de esta manera este recibe la
máxima cantidad de radiación; el sistema logra responder ante
un error o anomalía externo, ya sea el movimiento forzado del
panel, logrando así recuperar su posición de trabajo.
El sistema en su totalidad está conformado por tres circuitos,
en donde el primero de ellos está dado por el fotodiodo, el
cual sirve de transductor, convirtiendo la luz incidente sobre el
en una corriente eléctrica; posteriormente el amplificador
operacional recibe la señal entrante y la amplifica, para luego
enviarla al microprocesador donde este la interpreta de manera Figura 1. Pines del integrado L293D
que modifique de la velocidad del motor utilizando la
ecuación matemática para un controlador PID; por otra parte
se encuentra un dispositivo que controla el giro del motor
llamado puente H, el cual puede accionar el motor utilizando 2. AMPLIFICADOR OPERACIONAL.
un voltaje lógico (5v) o un PWM como en el proyecto El objeto de un amplificador electrónico, es elevar el valor de
presente variando así la velocidad del motor, mientras que el la tensión, corriente o potencia de una señal variable en el
motor puede estar alimentado a una fuente externa para tiempo, procurando mantenerla lo más fiel posible. [3]
obtener mayor torque aplicado; seguido del driver puente H se
encuentra en operación un potenciómetro lineal como sensor En la actualidad tienen dos grandes campos de aplicación:
de posición en donde se evalúa la resistencia que cambia de
acuerdo al movimiento que produce al estar acoplada al motor,  Circuitos para el procesamiento de señales
de esta forma esa variación es interpretada en voltaje por el analógicas: amplificación, filtrado, comparadores,
microcontrolador Arduino Nano dando lugar así al etc.
funcionamiento del prototipo propuesto para el curso de  Circuitos osciladores y temporizadores.
sistemas de control digital.
El proyecto tendrá la finalidad de usarse como un piranómetro
que se implementara para controlar la posición en la que se
encuentran los paneles solares, logrando así mejorar la
eficiencia del sistema fotovoltaico.
2
interruptores, codificadores y sensores de posición. [6]
El amplificador operacional empleado para este proyecto es la
referencia LM358.El integrado LM358 internamente está
compuesto de dos amplificadores operacionales
independientes de alta ganancia y con compensación de
frecuencia interna, que fueron diseñados específicamente para
operar desde una única o dual fuente de alimentación en un
amplio rango de voltaje y tienen un bajo consumo de potencia.
[4] Figura 2. Fotodiodo TEDF 4300

Aplicaciones

• Multímetros digitales.
• Control de motores.
• Interfaces transductoras.
• Sistemas de adquisición de datos.
• Procesos de control industrial.
• Televisores y Home Theaters.

Figura 3. Estructura fotodiodo TEDF 4300

3.1 Características
 Tipo de paquete: Con plomo
 Forma del paquete: T-1
 Dimensiones (en mm): Ø 3
Figura 1. Pines del integrado LM358  Alta sensibilidad radiante
 Adecuado para radiación visible y cercana a la de
1.1. Características infrarrojos
 Amplio rango de suministro  Tiempos de respuesta rápidos
Fuente única: 3 V a 32 V  Ángulo de media sensibilidad: Φ = ± 20°
Fuentes duales: ±1.5 V a ±16  Paquete con emisor ir serie VSLB3940
V
 Drenaje de corriente de suministro baja 3.2 Aplicaciones
independiente del voltaje de suministro: 0.7 mA
típica • Fotodetector de alta velocidad para transmisión de
 Ancho de banda de ganancia de unidad: 0.7 MHz datos
 El rango de voltaje de modo común de entrada • Interruptores ópticos
incluye tierra, lo que permite detección directa cerca • Contadores y clasificadores
de tierra. • Interruptores
 Bajo sesgo de entrada y parámetros de • Codificadores
desplazamiento • Sensores De Posición.
Voltaje de entrada Offset: 3 mV
Corriente de entrada Offset: 2
nA Corriente de entrada Bias: 20 3.3 Curvas características
nA
 Rango de voltaje de entrada diferencial igual
al voltaje de alimentación de rango máximo:
32 V
 Ganancia de voltaje diferencial de lazo abierto:
100 dB típica.
 Compensación de frecuencia interna. [5]

3. FOTODIODO TEFD 4300.


La serie TEFD4300 de Vishay Semiconductor está integrada
por fotodiodos PIN de silicio con una alta sensibilidad
radiante. Se suministran en encapsulados estándares de 3
mm (T-1) de orificio pasante en dos opciones: transparente
y con filtro diurno. Las aplicaciones adecuadas incluyen: Figura 4. Corriente Inversa de Luz vs. Irradiancia
fotodetectores de alta velocidad para transmisión de datos, •
interruptores ópticos, contadores y clasificadores,
3
• Longitud del Eje: 20.63 mm
• Referencia de producto: 3590S-2-103L

1. FOTODIODO VS FOTORRESISTENCIA

Al hacer la debida comparación entre el fotodiodo y la


fotorresistencia se tiene primero que la fotorresistencia trabaja
con base en su resistencia es decir que esta varia con respecto a
la cantidad de luz que le entra, por lo tanto, esto hace que en
algunos casos los cambios que se necesitan sean retardados ya
que la variación no se realiza a la misma velocidad cuando
pasa de estar totalmente iluminada a estar totalmente a oscuras.
En cuanto al fotodiodo la sensibilidad aumenta ya que
responde con más rapidez a los cambios de luz, solo que en
este si se debe tener en cuenta la polaridad ya que, si se
conecta de forma normal solo funcionaria como un diodo
común, en cambio sí se conecta de manera inversa la variación
en los cambios de luz permite que este conduzca una corriente
que se genera con dicha variación.
Figura 5. Intensidad Relativa de Radiación vs. Desplazamiento Angular

2. CODIGO ARDUINO NANO


4. POTENCIOMETRO LINEAL. TABLA I
Este potenciómetro 10 vueltas de alta precisión ha sido diseñado
para aplicaciones exigiendo una alta resolución, un bajo #include "ctr_motor.h"
coeficiente de temperatura y una fina linealidad. Con una potencia
de 2W a 70°C y una linealidad de 0.1%, este potenciómetro #include <TimerOne.h>
multivuelta es una importante adquisición para nuestra gama de #define Kp 2.2//Constante Proporcional
potenciómetros para aplicaciones profesionales.
#define Ki 1//Constante Integral
Este es un potenciómetro de precisión con montaje de casquillo, #define Kd 0.6//Constante Derivativa
con cuerpo completamente sellado y pines para PCB. El
float V_pot = 0;
potenciómetro de precisión está diseñado para utilizarse en
aplicaciones donde se requieran cambios pequeños en la unsigned int Rad_Luz = 0;//Radiacion LED
resistencia con el movimiento del eje. [1]
float e=0; //error
float Pot_pos = 0;
unsigned char P = 0;
byte s = 0;
float Luz = 0;
float vect_filt[7]={0};
//int i,c;
float Ctrl_PID = 0;
Figura 6. Potenciómetro lineal 3590S loat e_1 = 0;
4.1 Características float u_1= 0;
float e_2= 0;
• Eje y casquillos de plástico o metal
• Bobinado float u_2= 0;
• Lengüetas de soldadura o pines de PC float ts = 0.005;
• Cuerpo completamente sellado
float n = 0.0184;
4.2 Especificaciones técnicas float K1 = n*ts;
float K2 = n*ts-1;
• Resistencia: 10 kOhm
• Numero de Giros: 10 Vueltas float K3 =n*ts+1;
• Variación: Lineal void setup(void){
• Potencia Nominal: 2 W
• Tolerancia de Resistencia: ± 5 % Timer1.initialize(5000);
• Rango de producto: Serie 3590S Potenciómetro //1/300=.003333 calculo para interrupcion 300Hz
• Montaje: Bushing
• Núm. De Gangs: 1 Timer1.attachInterrupt(timer_Rad);
• Tipo de Ajuste: Slot para Atornillador // llama la Rutina de interrupcion Timer ISR
4
Serial.begin(115200); {
pinMode(Giro_1,OUTPUT); P=255;
pinMode(Giro_2,OUTPUT); }
digitalWrite(Giro_1,HIGH); if(P<0)
digitalWrite(Giro_2,HIGH); {
control_adc=muestreo; P=0;
inicio_timer2(); }
} analogWrite(PWM_Motor,Ctrl_PID);
void loop(void) { digitalWrite(Giro_1,LOW);
if(tareas.ctr_adc){ digitalWrite(Giro_2,HIGH);
muestra_adc(); Serial.print(" Proporcional: ");
V_pot = (muestra_pos*5)/1023; Serial.print(Ctrl_PID);
Pot_pos = 500*(V_pot-2.32); Serial.print("\n");
Serial.print(" Posicion POT: "); if (Rad_Luz>700)
Serial.print(V_pot); {
Serial.print(" Radiacion: "); disable_motor();
Serial.println(Luz); }
if(s==0) else if (V_pot>2.68)
{ {
if (V_pot>2.32) disable_motor();
{ s=2;
analogWrite(PWM_Motor,200); }
digitalWrite(Giro_1,HIGH); }
digitalWrite(Giro_2,LOW); }
} if (s==2)//Regresar a 0º
else if (V_pot<=2.32) {
{ analogWrite(PWM_Motor,200);
disable_motor(); digitalWrite(Giro_1,HIGH);
s=1; digitalWrite(Giro_2,LOW);
} if (V_pot<=2.32)
} {
if(s==1)//Iniciar PID, buscar max umbral de Radicion disable_motor();
{ //s=0;
if (V_pot>=2.32) }
{ }
e=700-Rad_Luz; }
//P=abs(Kp*e); }
Ctrl_PID=abs(Kp*(e+(K1*e_1)- void muestra_adc(void){
…(K2*e_2))+Ki*ts*(e_1-e_2+(K3*e_2))+ tareas.ctr_adc=0;
…Kd*n*(e-(2*e_1)+e_2)-K1*u_1+K2*u_2); muestra_pos=analogRead(POT_POS);
e_1=e; }
u_1=Ctrl_PID; void timer_Rad(void){
e_2=e_1; Rad_Luz=analogRead(Diodo);
u_2=u_1; // vect_filt[0]=Rad_Luz;
if(P>255) // c=0;
5
// for (i=0;1<4;i++)
// {
// c=vect_filt[4-i]+c;
// vect_filt[4-i]=vect_filt[3-i];
// }
// Luz=c/5;
for(byte i=0; i<10; i++){
Luz += Rad_Luz;
}
Figura 7. Lectura Fotodiodo con poca presencia de luz
Luz /= 10;
}
void inicio_timer2(void){
TCCR2A=0x00; Inicialmente se realizó la prueba de la lectura del fotodiodo
// Modo de operación por rebosamiento. cuando no existe ninguna presencia lumínica, en donde el valor
tomado fue de 0 y para una segunda prueba la exposición se
TCCR2B=0x04;
hizo con una intensidad alta que fue de aproximadamente 3.7
// prescaler(4)=64 -> 1,024 mSeg@16MHz. V(760 valor digital), la cual produce la linterna de un celular.
TIMSK2=0x01;
// Habilita interrupción por rebosamiento en timer2A.
}
ISR(TIMER2_OVF_vect){
control_adc--;
if(!control_adc){
control_adc=muestreo;
tareas.ctr_adc=1;
}
} Figura 8. . Lectura Fotodiodo expuesto ante la fuente de luz producida
por un celular
void disable_motor(void)
{ Tomando de referencia un potenciómetro lineal de 10 vueltas, se
digitalWrite(Giro_1,HIGH); procede a situar el centro del mismo, de tal forma que en cada
extremo se obtenga un valor máximo de resistencia igual a 5
digitalWrite(Giro_2,HIGH); kOhm. Para esto se establece una relación entre los valores
} tomados en los extremos y el valor medido (512 para un valor
digital) para decir luego que el rango de valores para el
desplazamiento que se empleó, es desde 476 hasta 548.
El código que se encuentra en la anterior tabla es el encargado
de recopilar señales de entrada y posteriormente visualizarlas
haciendo la respectiva conversión por medio del puerto serial
en donde se mostrara el comportamiento de la señal tomada
desde los puertos analógicos de la placa de Arduino,
proveniente de la variación del nivel de iluminación presente
en el fotodiodo y del voltaje del potenciómetro lineal, de esta
forma también se tiene en el monitor serial la señal de control
la cual es aplicada a el motor DC, además del error presente.
La lectura analógica del fotodiodo y potenciómetro lineal es
posible gracias al conversor Analógico-Digital, con una
resolución de 10 bits. Por otra parte fue necesario tomar dos Figura 9. Rango de valores digitales asignados a partir del voltaje medido en
mediciones muy importantes para configurar el controlador el potenciómetro lineal.
proporcional, que involucra el nivel máximo y mínimo que
puede capturar el fotodiodo.
6
3. CIRCUITO CON AMPLIFICADOR.

La corriente generada por el fotodiodo (IPD) se amplifica en el


amplificador de transimpedancia y se convierte en una tensión
de salida mediante la resistencia de ganancia de
transimpedancia (también denominado resistencia de
realimentación o RF). Idealmente toda esta corriente circula a
través de RF (por tanto, IFB = IPD), pero en la práctica el
amplificador “roba” parte de esta corriente en forma de
corriente de polarización de entrada del amplificador
operacional. Esta corriente de polarización da como resultado
una tensión de error a la salida y limita el rango dinámico.
Cuanto mayor es la resistencia de ganancia, mayor es su efecto.
Es importante seleccionar un amplificador con una corriente de
polarización suficientemente baja (al igual que la tensión de
Figura 10. Diagrama del circuito Convertidor corriente- offset de entrada y la deriva de tensión del offset de entrada)
voltaje del sensor de luz para lograr el rango dinámico y la precisión total que se
requieren. [5]

Para poder realizar la lectura analógica proveniente del


El montaje mostrado en la Figura 10 está construido con base potenciómetro lineal, fue necesario acoplar al rotor del
en un amplificador LM358 , y la configuración del circuito se motoreductor empleado en el proyecto un piñón y un sinfín
encuentra basada en un circuito amplificador inversor, en este como se logra apreciar en la figura 11, debido a que el motor de
caso se colocó una resistencia de 2MΩ, un fotodiodo TEFD corriente continua por si solo generaba altas revoluciones por
4300 conectado en inversa y un Arduino situado a la salida minuto, lo cual impedía efectuar la lectura del fotodiodo y del
del amplificador, esto con el fin de poder leer las señales y potenciómetro lineal a la par. Al aplicar la reducción de
transformarlas a valores numéricos y en una gráfica donde se velocidad y aumento de par aplicado en el motor, pudimos
puede mostrar la variación del voltaje con respecto a los observar una mejoría en las lecturas del arduino nano.
cambios de la luz que inciden sobre el fotodiodo. Por otro
lado, el led tiene como función que de acuerdo a la intensidad
recibida hace disminuir o aumentar la velocidad del motor DC
por medio de un controlador proporcional establecido en la
programación que se le ha subido al Arduino. En este caso
dicha programación el controlador tipo proporcional que se
está implementado es la señal que nos permite ir variando el
ancho de pulso que genera el Arduino a partir de la incidencia
de luz presente del fotodiodo y la referencia asignada de 760.
Esto con el fin de aplicar el PWM a través del puente H al
motor DC para que este modifique su velocidad a partir la
intensidad de lumínica irradiada por el sol, de manera que
cuando la diferencia algebraica de la lectura de la intensidad
de la luz con la de referencia es pequeña, la velocidad del
motor se reduce, y si la intensidad de la luz es baja, su
velocidad aumenta, es decir que entre menor sea el error que
hay, la posición en la cual se encuentra la mayor intensidad
está cerca. El circuito se encuentra alimentado con 5 volts
provenientes de la placa Arduino.

Figura 12. Diagrama del circuito de control

En la figura 12 podremos apreciar el circuito encargado de


realizar el control del motor, la placa arduino nano por medio
de programación anteriormente referida, logra enviar la señal
del controlador resultante mediante una constante
comparación entre la referencia y la salida del sistema,
logrando de forma autónoma que la señal del controlador se
aproxime a la señal de referencia, manteniendo así la
estabilidad en el dispositivo. Para nuestro caso la referencia
será la lectura que realiza el microcontrolador cuando el
Figura 11. Acople de piñón-sinfín reductor al fotodiodo está expuesto a la mayor irradiación de luz en el
motoreductor. ambiente, con ello podremos generar la señal de error, para lo
7
cual la referencia del controlador debemos restarle la lectura II. CONCLUSIONES
que se está efectuando y así obtener la ganancia proporcional,
integral y derivativa. Por otra parte tenemos el puente H de  Se logró implementar el controlador PID en el circuito
referencia L293D, con el cual controlaremos el giro del motor de control del piranometro, hallando de forma
y a la vez su velocidad por medio de la señal resultante, experimental cada una de las constantes del
proveniente del PWM del arduino siendo esta la repuesta del controlador, aplicándolas al modelo matemático
controlador PID ante un error leído o aplicado; El motor tiene planteado para generar la respuesta del controlador y
acoplado a su rotor el potenciómetro lineal, generando así la así mejorar la respuesta del sistema ante
realimentación del controlador. perturbaciones en el medio.
Para una lectura óptima de los datos provenientes del
fotodiodo se aplicó mediante programación un filtro de media,  El potenciómetro lineal fue utilizado para lograr
generando un muestreo de 5 milisegundos y eliminando gran conocer la posición en la que se encuentra el motor y
parte del ruido que pueda estar presente, el filtro posee la así determinar el grado de irradiancia al que está
siguiente estructura. expuesto el fotodiodo.

Rad_Luz=analogRead(Diodo);  Fue necesario utilizar un motor con caja reductora, y


vect_filt[0]=Rad_Luz; adicionarle un sistema de piñones los cuales se
c=0; encargaron de reducir la velocidad del motor y
for (i=0;1<4;i++) aumentar su par aplicado. Esto se requerido para que
{ el microcontrolador fuse capaz de hacer la lectura de
c=vect_filt[4-i]+c; los cambios que se presentaban al haber una variación
vect_filt[4-i]=vect_filt[3-i]; del sistema cuando se encuentra en estado estable.
} .
Rad_Luz=c/5; III. REFERENCIAS

[1] «ELECTRONICA PLUG AND PLAY,» [En línea].


Available:
https://www.electronicaplugandplay.com/circuitos-
integrados/product/517-driver-l293d. [Último acceso: 10 9
2019].
[2] «ELECTRONICA PLUG AND PLAY,» [En línea].
Available:
https://www.electronicaplugandplay.com/circuitos-
integrados/product/322-amplificador-operacional-lm358.
[Último acceso: 10 09 2019].
[3] «TECNOLOGÍA,» [En línea]. Available:
https://www.areatecnologia.com/amplificadores-
operacionales/amplificador-operacional-introduccion.htm.
[Último acceso: 10 9 2019].
[4] «FERRETRÓNICA,» [En línea]. Available:
https://ferretronica.com/products/lm358-amplificador-
operacional-proposito-general-dip8. [Último acceso: 10
09
2019].
[5] Texas Instruments Incorporated, «LM358, LM258,
LM158, LM2904 Dual Operational Amplifiers,» Texas,
1976.
[6] «RS,» [En línea]. Available: https://es.rs-
Figura 12. Montaje del circuito de controlador PID online.com/web/p/fotodiodos/7730418/. [Último acceso:
10 9 2019].
Al probar el controlador PID ejecutado desde la placa de
arduino nano, se realizaron los respectivos ajustes a cada una
de las constantes del modelo matemático del controlador,
siendo la constante proporcional Kp ajustada a 2.2, la contante
integral Ki con un valor de 1 y la contante derivativa Kd se
ajustó finalmente a un valor de 0.6.

También podría gustarte