You are on page 1of 10

6

Universidad Nacional
Mayor de San Marcos
(Universidad del Per, DECANA DE AMRICA)

Facultad de Ingeniera Electrnica y


Elctrica

E.A.P. INGENIERIA ELECTRNICA

CONTROL PI DISCRETO DE
ILUMINACION CON ARDUINO

Curso

Ingeniera de control 1

Profesor

Sifuentes

Integrantes

: Zaga Ttito Armando


Tornero Cruzatt Yndira H.

Horario

Lunes de 8 a 10pm

-2014-

08190093
10190031

UNMSM FIEE

Ingeniera de Control 1

CONTROL PI DISCRETO DE ILUMINACION CON ARDUINO


OBJETIVO:
El objetivo del proyecto es controlar el ngulo de disparo de un TRIAC que estar conectado en
serie con el bombillo, mediante el controlador PI, de acuerdo a la intensidad de luz que perciba
un sensor LDR.

PROCESO:
El control PI discreto de iluminacin con Arduino consta de 5 etapas como se muestra en la
Figura 1:
1. Entrada de referencia.
2. Sensor LDR
3. Cruce por cero.
4. Etapa de control (ARDUINO UNO).
5. Etapa de potencia.

microcontrolandos.blogspot.com

REFERENCIA

RESET

1. ENTRADA DE REFERENCIA

RV1
70%

RV1(3)

5k

A0
A1
A2
A3
A4
A5

ANALOG IN

Vamos a disear un circuito como el mostrado en la


Figura con el fin de obtener un voltaje de referencia
que nos represente una variacin dentro del
intervalo 0v a 5v con el cual se regulara la
intensidad de luminosidad a ingresar por el pin A0
por el arduino.

PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL
ARDUINO UNO R3

Profesor: Sifuentes

Laboratorio No3

1121

DUINO1

UNMSM FIEE
2. SENSOR LDR

Ingeniera de Control 1

R1

U1:B(+IP)

SENSOR

U1:B
4

100k
5

SENSOR

TORCH_LDR

LM324

R2

11

LDR2

100k

R3

R4

10k

20k

El sensor que se utiliza es una fotorresistencia, el cual vara su valor, dependiendo de la


intensidad de luz que se le aplique. La seal de salida alta en caso de baja intensidad de luz, y
baja en caso contrario.
Como la salida del sensor (LDR) varia de 0-2.5v y la entrada del ARDUINO recibe voltajes de
0-5v, amplificamos este valor en un factor de 2 para aprovechar la sensibilidad del ADC del
microcontrolador.
3. CRUCE POR CERO
Se utiliza el siguiente circuito registra el cruce por scero de la seal sinosoidal de entrada. Por
la salida del circuito cruce por cero tenemos una seal rectangular con un ancho de cruce de
0.75ms el cual servira para activar la interrupcion INT1 del arduino.
R9
INVERTIDA

TR1

U1:A

1k

D1

D2

1N4007

1N4007

R7

U2:A

3
1

10k

D4

TRAN-2P2S

1N4007

U2:B
2

RV2

7404

R8
10k

92%

1N4007

INT1

2
11

D3

LM324

7404

R10
10k

1k

Profesor: Sifuentes

Laboratorio No3

UNMSM FIEE

Ingeniera de Control 1

4. ETAPA DE CONTROL (ARDUINO UNO)


La etapa de control del Arduino se divide en dos partes o dos programas:
- CONTROLADOR:
Dentro del programa controlador tenemos el controlador PI:
L= Pk + Ik

(Pk parte proporcional, Ik parte integral)

Pk= A*Error
Ik= Ik_anterior + B*(Error + Error_anterior)
Donde A=Kp= 1 cte proporcional.
B= Ki*T/2 cte integral.
Para T= 8.33333ms, Ki=0.04
-

ESCALON:

El escaln la rampa dividi en 32 escalones para un tiempo que se introducir por el Compare1a.
Para el tiempo
Calculo del tiempo por el Compare1a:
El programa debe ejecutar una interrupcin por comparacin cada:
t= T- 0.75ms = 7.5833333 ms

(0.75ms ancho del cruce por cero)

t = 7.5833333 ms / (32 escalones) = 0.23698 ms


Frecuencia de Timer1:

Profesor: Sifuentes

Laboratorio No3

UNMSM FIEE
f = 16 MHz/8 = 2MHz

Ingeniera de Control 1

Valor numrico en Compare1a:


Compare1a = (2MHz)*( 0.23698 ms) = 473.96 redondeando se tiene
Compare1a = 474
Para la amplitud
La amplitud del nivel de la rampa est dividida en 32 escalones al igual que en el tiempo para
ello calculamos para cada escaln

= 1024/(32 escalones) = 32 valores a sumar cada vez que se ejecute el compare1a teniendo

como:
Rampa= Rampa + 32
1. ETAPA DE POTENCIA
En la etapa de potencia se utiliz el MOC3021 para poder controlar el TRIAC con la siguiente
configuracin.

R5
SALIDA

U3

220

R6

U3(A)
TRIAC

330
2

4
MOC3021

L1
220V

U4
Q2025R5
GATE
L

La salida por el pin 9 del Arduino es el que controla la etapa de potencia de acurdo al siguiente
diagrama variando su atenuacin y de esta forma regulando la iluminacin del foco:

Profesor: Sifuentes

Laboratorio No3

UNMSM FIEE

Ingeniera de Control 1

EL CDIGO DEL PROGRAMA EN BASCOM


Se Utiliz el programa BASCOM AVR con el siguiente cdigo:
'****************************************************************************
***
'
CONTROL DE LUMINOSIDAD CON ARDUINO UNO
(YZ)
'****************************************************************************
***
$regfile = "m328pdef.dat"
del arduino
$crystal = 16000000
del reloj (16MHz)
$baud = 19200

'Indica el admega

Config Portb = Output


salida
Config Portc = Input
entrada

'Puerto B como

'DECLARACION DE VARIABLES
Dim W0 As Word
referencia

Profesor: Sifuentes

'La frecuencia

'Puerto C como

'Voltaje de

Laboratorio No3

UNMSM FIEE

Ingeniera de Control 1

Dim W1 As Word
sensor
Dim E As Single
diferencia de W0 y W1
Dim E1 As Single
Dim Pk As Single
Proporcional
Dim Ik As Single
Integral actual
Dim Ik1 As Single
Integral anterior
Dim A As Single
Proporcional
Dim B As Single
Integral
Dim L As Word
(Level)
Dim Ldig As Word
digital
Dim Rampa As Word
(Rampa)

'voltaje del
'Error de
'Error anterior
'Componente
'Componente
'Componente
'Ganancia
'Ganancia
'Seal de control
'Seal de control
'Seal escaln

Dim Letra As String * 6


'CONFIGURACION DEL ADC
Config Adc = Single , Prescaler = Auto , Reference = Avcc
del ADC
Start Adc
'CONFIGURACION DE LAS INTERRUPCIONES
Config Timer1 = Counter , Prescale = 8 , Clear Timer = 1
prescala a 1024
Timer1 = 0
timer1 en cero.
On Compare1a Escalon
interrupcion al programa tiempo
Compare1a = 474
de interrupcion
Enable Compare1a
interrupcion de COMPARE1A
Config Int1 = Low Level
mientras se encuentre en bajo
On Int1 Controlador
externa INT1 (Controlador)
Enable Int1
INT1
Enable Interrupts
interrupciones en general

'Configuracion
'Enciende el Adc

'Configura la
'Inicializa el
'Indica la
'Indica el tiempo
'Habilita la
'Interrumpe
'Interrupcin
'Habilitacin
'Habilita las

'CONDICIONES INICIALES
Ik1 = 0
E1 = 0
A = 1
B = 0.000166

Profesor: Sifuentes

Laboratorio No3

UNMSM FIEE

Ingeniera de Control 1

'PROGRAMA PRINCIPAL
Do
Letra = Str(l)
Print Letra
Wait 1
Loop
End
'INTERRUPCION DEL PRIMER TIEMPO
Controlador:
Rampa = 0
Portb.1 = 0
Disable Compare1a
W0 = Getadc(0)
referencia ADC0
W1 = Getadc(1)
sensro LDR en ADC1
E = W0 - W1
Pk = A *
Ik = E +
Ik = B *
Ik = Ik1
L = Pk +

'Voltaje de
'Voltaje del

E
E1
Ik
+ Ik
Ik

'Hallamos el error

Ik1 = Ik
E1 = E
If L > 1023 Then
L = 1023
Elseif L < 0 Then
L = 0
End If
Enable Compare1a
Timer1 = 0
Return

'CONTROL DEL LEVEL MAX Y MIN

'INTERRUPCION DEL SEGUNDO TIEMPO


Escalon:
If L >= Rampa Then
Portb.1 = 0
End If
If L < Rampa Then
Portb.1 = 1
End If
Rampa = Rampa + 32
Return

EL DIAGRAMA DE FLUJO

Profesor: Sifuentes

Laboratorio No3

UNMSM FIEE

Ingeniera de Control 1

IMPLEMENTACION

Profesor: Sifuentes

Laboratorio No3

UNMSM FIEE

Ingeniera de Control 1
DUINO1

PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL

12%

REFERENCIA

A0
A1
A2
A3
A4
A5

DIGITAL (~PWM)

RV1

ANALOG IN

REFERENCIA

1121
ATMEGA328P-PU

PD7/AIN1

~ PD6/AIN0
PD5/T1
~

PD4/T0/XCK
~ PD3/INT1
PD2/INT0

TX PD1/TXD
RX PD0/RXD

13
12
11
10
9
8

R5

U3

SALIDA

R6

220

7
6
5
4
3
2
1
0

U3(A)
a

microcontrolandos.blogspot.com

RESET

AREF
PB5/SCK
PB4/MISO
~PB3/MOSI/OC2A
~ PB2/SS/OC1B
~ PB1/OC1A
PB0/ICP1/CLKO

TRIAC

330
2

4
MOC3021

L1
220V

SALIDA

U4

SALIDA

Q2025R5

ARDUINO UNO R3
5k

GATE
SENSOR

L
INT1

R11
SALIDA
220

R1

U1:B(+IP)

SENSOR

D5

U1:B

LED-RED

100k
5
1

B
C

LM324

R2
100k
2

INT1
SALIDA

SENSOR

TORCH_LDR

11

LDR2

INVERTIDA

R3

R4

10k

20k

R9
TR1

INVERTIDA

1N4007

1N4007

U1:A

1k

R7

10k

TRAN-2P2S

D4

1N4007

U2:B
2

INT1

RV2

7404

R8
10k

83%

1N4007

U2:A

11

D3

D2

D1

LM324

7404

R10
10k

1k

Profesor: Sifuentes

Laboratorio No3

You might also like