Manual de usuario ProyectoDIYSunflower · En las próximas secciones se utilizarán nombres en...

14
PC Factory Área de profesionales y especialistas Equipo de computación y electrónica Manual de usuario Proyecto DIY Sunflower Guía de conceptos y armado

Transcript of Manual de usuario ProyectoDIYSunflower · En las próximas secciones se utilizarán nombres en...

Page 1: Manual de usuario ProyectoDIYSunflower · En las próximas secciones se utilizarán nombres en inglés de algunas componentes para evitar ambigüedades 2. Esquemático y componentes

PC FactoryÁrea de profesionales y especialistasEquipo de computación y electrónica

Manual de usuarioProyecto DIY Sunflower

Guía de conceptos y armado

Page 2: Manual de usuario ProyectoDIYSunflower · En las próximas secciones se utilizarán nombres en inglés de algunas componentes para evitar ambigüedades 2. Esquemático y componentes

Índice1 Introducción............................................................................................... 2

2 Esquemático y componentes ...................................................................... 2

3 Conceptos claves ........................................................................................ 33.1 Funcionamiento de fototransistores..................................................................... 33.2 Lectura de variables analógicas........................................................................... 43.3 Seguridad en conexiones eléctricas y uso de relés ............................................... 63.4 Funcionamiento y uso de servomotores (PWM) ................................................. 73.5 Comunicación serial con PC (UART) ................................................................. 83.6 Interrupciones en el programa............................................................................. 9

4 Ensamblado................................................................................................ 94.1 Conexiones módulo relé ...................................................................................... 94.2 Prueba de funcionamiento................................................................................... 10

5 Código Arduino.......................................................................................... 11

1

Page 3: Manual de usuario ProyectoDIYSunflower · En las próximas secciones se utilizarán nombres en inglés de algunas componentes para evitar ambigüedades 2. Esquemático y componentes

1. Introducción

Con este proyecto aprenderás acerca del funcionamiento de servomotores y serás capaz deutilizarlos de forma segura a través de estructuras de desacoplamiento. Además, adquirirásconceptos básicos acerca del uso de sensores de luz y como realizar una lectura de sus datos.Esto será logrado a través de la programación de un microcontrolador en C o algún otrolenguaje compatible.

Este proyecto consiste en armar un seguidor de luz básico a través del control de un servo-motor de giro continuo con un Arduino UNO, todo esto en base a mediciones de luminosidadpercibida por fototransistores.

Los conceptos asociados a esta actividad son:

Funcionamiento de fototransistores

Lectura de variables analógicas

Fundamentos de uso de relés

Funcionamiento y uso de servomotores (PWM)

Comunicación serial con PC (UART)

En las próximas secciones se utilizarán nombres en inglés de algunas componentes paraevitar ambigüedades

2. Esquemático y componentes

En la Tabla 1 se presenta el listado de componentes necesarias para el armado de esteproyecto, en la tercera columna están los IDs de los productos de PC Factory compatiblescon cada requerimiento.

Cantidad Nombre PCF ID Compatibles1 Arduino UNO 269181 Servo Motor 273772 Fototransistor 275791 Pack Resistencias 1k -1 Módulo Relé 273911 Protoboard 27378, 27569, 275971 USB-B to USB Cable 278291 Pack cables Dupont/Jumper M-M 273791 Pack cables Dupont/Jumper M-H 273801 Fuente de alimentación 5V 24764, 27728, 27729, 27555

Tabla 1: Componentes necesarias para el proyecto

Proyecto DIY Sunflower 2

Page 4: Manual de usuario ProyectoDIYSunflower · En las próximas secciones se utilizarán nombres en inglés de algunas componentes para evitar ambigüedades 2. Esquemático y componentes

En la Figura 1 se encuentra el esquemático del circuito, en este se han de tener lassiguientes consideraciones:

La FUENTE_EXTERNA representa a la fuente de alimentación de 5V para el motor

La pieza RELAY-SPDT-JQX-15F representa uno de los canales del módulo relé

Los componentes FOTO_SX corresponden a fototransistores

30-04-2018 10:30 C:\Users\rmunoz\Documents\eagle\Sunflower\Sunflower.sch (Sheet: 1/1)

1k

BP103

GND

1k

BP103

GND

GND

GN

D

GNDD0D1D2D3D4D5D6D7

D8D9

D10D11D12D13GNDAREF

A5/SCLA4/SDAA3A2A1A0

VINGND1GND25V3V/RESETIOREFRESERVED

SCLSDA

R1

FOTO_S2

SIGV+GND

FUENTE_EXTERNA

R2

FOTO_S1

GND

VDD

VCC

PWM

ARD

UIN

OU

NO

R3

WRB

Figura 1: Esquemático

3. Conceptos claves

A continuación se explicarán conceptos y formas de uso de diferentes componentes eléc-tricos.

3.1. Funcionamiento de fototransistores

Un fototransistor es un componente electrónico basado en la física de semiconductorespara obtener un comportamiento y propiedades específicas al momento de ser expuesto adiferentes niveles de luz en el ambiente. El fototransistor recibe su nombre debido a sucomportamiento semejante al de un transistor bipolar cuya región de base ha sido cambiadapor una sensible a la luz, esto quiere decir que a medida que el componente recibe rayos deluz se excita un flujo de corriente de Colector (C) a Emisor (E) (ver Figura 2). Una formade entender este funcionamiento es verlo como una válvula, la cual deja pasar más corrientea medida que aumenta la luminosidad del ambiente.

Proyecto DIY Sunflower 3

Page 5: Manual de usuario ProyectoDIYSunflower · En las próximas secciones se utilizarán nombres en inglés de algunas componentes para evitar ambigüedades 2. Esquemático y componentes

(a) Ejemplo de componente (b) Identificación partes

Figura 2: Fototransistor

Debido a este comportamiento, las mediciones de luminosidad de este sensor correspondena variaciones de corriente y para convertirlo en un voltaje que pueda leer un microcontroladorse requiere de un circuito de transducción. Típicamente como circuito de transducción seutiliza el presentado en la Figura 3, en donde se utiliza un resistor (R1) conectado a tierrapara generar un voltaje de salida (Vo) referido a los rieles de alimentación del circuito (Vdd

y GND). Con esto, el voltaje Vo se calcula como Vo = I · R1 y corresponde a una señalanalógica que representa la cantidad de luz medida por el fototransistor (más luz = mayorcorriente = mayor voltaje).

Figura 3: Circuito de transducción

3.2. Lectura de variables analógicas

Para que la adquisición de datos obtenidos mediante señales analógicas se requiere dealgún dispositivo capaz transformar dichas señales en señales digitales. Antes de esto esnecesario entender lo que son las señales analógicas y las señales digitales.

Proyecto DIY Sunflower 4

Page 6: Manual de usuario ProyectoDIYSunflower · En las próximas secciones se utilizarán nombres en inglés de algunas componentes para evitar ambigüedades 2. Esquemático y componentes

Las señales analógicas son aquellas que pertenecen al mundo analógico, es decir, a lanaturaleza. Estas tienen la característica de ser continuas y, por tanto, abarcar una infinidadde valores intermedios. Por ejemplo, si colocamos agua fría (5°C) en un hervidor hasta queebulla (100°C), la temperatura del agua irá variando desde 5°C hasta 100°C pasando portodos los valores intermedios en el camino (5.1°C, 6.2831853°C, 16.18°C, 46°C, etc).

Por otro lado, las señales digitales son aquellas pertenecientes al mundo digital, es decir,un mundo virtual creado por el humano con los sistemas informáticos. Este mundo tienela característica de ser discreto y además binario, por lo que sus valores están limitadosa secuencias de 2 opciones (típicamente 0 y 1). Por ejemplo, si asumimos que 1 = ONy 0 = OFF podemos describir la secuencia de encendido de un semáforo de la siguientemanera:

Semáforo Rojo Amarillo Verde Señal digitalLuz roja (Alto) ON OFF OFF 100Luz amarilla (Transición) OFF ON OFF 010Luz verde (Pase) OFF OFF ON 001

Tabla 2: Codificación de luces de un semáforo

Entonces se requiere un dispositivo o mecanismo capaz de traspasar una señal del mun-do natural al mundo virtual, para este proyecto, ocuparemos el más común utilizado paratransducciones de voltaje analógico a voltaje digital: el ADC (Analog-Digital Converter). UnADC corresponde a un dispositivo que recibe entradas de voltajes analógicas y a través dealgún circuito interno (generalmente un arreglo de comparadores de voltaje) obtener salidasdigitales. Generalmente, esta transducción (o codificación) se realiza comparando el voltajemedido con respecto a una escala de referencia y la cantidad de memoria disponible paraguardarla. Entonces, si tenemos como referencia el intervalo [Vss, Vdd] y un espacio de me-moria de n kB para guardar la medición, la lectura digital de una medición de Vi será x convalor de:

x =Vi − Vss

Vdd − Vss

n

De esta manera, un voltaje de 1.25V con referencia de 0V a 5V y 10bits (hasta el n°210 = 1024) de espacio para almacenar el dato se traduce en un valor digital de:

Proyecto DIY Sunflower 5

Page 7: Manual de usuario ProyectoDIYSunflower · En las próximas secciones se utilizarán nombres en inglés de algunas componentes para evitar ambigüedades 2. Esquemático y componentes

x =1.25V − 0V

5V − 0V· 210

x =1.25

5· 210

x = 0.25 · 210

x = 0.25 · 1024x = 256

Finalmente, en el proyecto utilizaremos un microcontrolador Arduino UNO R3 el cualtiene un modulo ADC integrado y realiza este tipo de conversiones por defecto al momentode utilizar funciones como analogRead(analogPin) dentro del código de programación.

3.3. Seguridad en conexiones eléctricas y uso de relés

Al momento de realizar conexiones eléctricas es de crucial importancia el tener las aisla-ciones y protecciones apropiadas dentro de los diferentes circuitos presentes en un sistema,esto se debe a la posible eventualidad de eventos como corto circuitos, interferencia en lasseñales y flujos no deseados de corriente. Para tener una mayor conciencia de estos conceptosrevisemos casos donde una mala aislación genera un problema de cada tipo:

Supongamos que tenemos debido a conectar un aparato defectuoso a la red eléctricadel hogar se genera un corto circuito, el no contar con la debida protección en forma defusibles o similares provocará que esta falla afecte la integridad de la red eléctrica misma yse provoquen alzas y/o bajas de voltaje. Con estas últimas, no será solo el primer aparatoel afectado sino que todos los que estén conectados a la red y, de este modo, la falla de unsector se propague a todo el sistema.

Tomemos el caso en que las terminaciones eléctricas (el diseño de pistas, soldado decomponentes, etc) no están rigurosamente realizadas dentro de la circuitería de un celular.En este caso, podrían ocurrir efectos de interferencia tanto eléctrica como magnética lascuales se podrían evidenciar en comportamientos tales como: ruido excesivo al momento dellamar telefónicamente a alguien, cambios de brillo en la pantalla al momento de encender oapagar los altavoces del celular, mala recepción de señal WiFi cerca de una antena, etc.

Otro caso en donde una correcta aislación eléctrica es notorio es al momento de diseñarcircuitos de control para maquinaria. Generalmente, los valores de voltaje y corriente quemaneja un microcontrolador o algún otro tipo de sistema de procesamiento que calculelos parámetros de control están muy por debajo de las necesidades de la maquinaria, porlo que se requieren dispositivos que realicen conversiones de voltaje y/o interruptores queconecten diferentes circuitos entre sí. Es en estas conexiones de circuitos que deben estarcorrectamente aislados los voltajes de referencia de cada uno, para evitar flujos de corrienteen direcciones no deseadas. En específico, en este proyecto se trabajará una situación comoesta, en donde el microcontrolador Arduino UNO trabaja con 5V y corrientes menores a

Proyecto DIY Sunflower 6

Page 8: Manual de usuario ProyectoDIYSunflower · En las próximas secciones se utilizarán nombres en inglés de algunas componentes para evitar ambigüedades 2. Esquemático y componentes

20mA (ver datasheet), en cambio el servomotor puede trabajar con voltajes de 4.8V a 7V ycorrientes de hasta 900mA. Por ello se utilizará un módulo relé optoacoplado para manejarlos motores de forma segura (ver Figura 7 (b)).

Los relés corresponden a dispositivos electromagnéticos que tienen como objetivo serinterruptores mecánicos activados por medio de corrientes eléctricas. Están basados en elprincipio de inducción magnética para su funcionamiento, en donde el energizar una bobinaproduce un campo magnético proporcional en magnitud y con sentido dado por la ’Leyde Lens’. De esta manera, al conectar el relé a una fuente de energía se consigue que uninterruptor sea atraído magnéticamente y se cambie la posición de un interruptor (ver Figura7 (a)).

(a) Mecanismo de funcionamiento (b) Módulo Relé

Figura 4: Relés

3.4. Funcionamiento y uso de servomotores (PWM)

Un servomotor es un actuador rotatorio o lineal el cual permite control preciso de posi-ción, velocidad y aceleración. Estos consisten de un conjunto motor-sensor de posición queutiliza un lazo de control con retroalimentación negativa para obtener el desempeño espe-rado. Usualmente, estos corresponden a motores de corriente continua (DC) con sistemasencoder-controlador integrados que manejan internamente la posición del motor de acuerdoa alguna señal de referencia externa, de esta manera el usuario solo requiere enviar las señalescorrectas de posicionamiento para su uso. Con estas consideraciones, las conexiones de unservomotor suelen ser: Vdd, Sig y GND.

Los servomotores requieren que la señal de utilizada como referencia de posición sea untren de pulsos del tipo PWM (Pulse Modulated Width), en donde el duty cycle contiene lainformación correspondiente a la posición deseada. La modulación de ancho de pulso (PWM)es una técnica utilizada para construir señales digitales que sirvan para reconstruir señalesanalógicas, en esta se compara una señal modulante con una entrada externa a lo largo deltiempo y, dependiendo de cual sea mayor, se determina si la salida es 1 o 0 (ver Figura 5(a)).En especifico, para el caso de servomotores el valor del duty cycle (% de tiempo en que la

Proyecto DIY Sunflower 7

Page 9: Manual de usuario ProyectoDIYSunflower · En las próximas secciones se utilizarán nombres en inglés de algunas componentes para evitar ambigüedades 2. Esquemático y componentes

PWM esta encendida, ver Figura 5 (b)) corresponde a la referencia a utilizar para determinarla nueva posición del motor, por ejemplo si el duty cycle es de 50% el motor interpretaráque debe colocarse a la mitad de su rango de movimiento.

Dentro del mundo de servomotores existen aquellos de giro continuo, estos se carac-terizan por interpretar el duty cycle como la rapidez a la que deben girar en vez de quéposición han de tomar. Por ejemplo, la misma referencia de duty cycle = 50% se ha deinterpretar como una rapidez nula en ambas direcciones, en otro caso un duty = 25% seha de interpretar como avanzar hacia al izquierda a la mitad de rápidez (si tuviéramos unmotor en donde 0-50% se reparte para las velocidad hacia la izquierda y 50-100% para lasvelocidades hacia la derecha)

(a) Generación PWM (b) PWM con diferente Duty Cycle

Figura 5: Fundamentos PWM

3.5. Comunicación serial con PC (UART)

Un aspecto relevante al momento de construir un dispositivo es la posibilidad de comu-nicar los datos al usuario. Dentro de los diversos tipos de comunicación, para efectos de esteproyecto, se utilizará comunicación serial con el PC. El microcontrolador Arduino UNO autilizar cuenta con un chip integrado que maneja la conversión de datos para tener una salidade información serial UART via USB.

La comunicación serial UART consiste de separar la información en bytes y enviarlossecuencialmente a través de un protocolo determinado (ver Figura 6). El protocolo UARTconsiste de dos bits de señalización, el de comienzo (start bit) y el de término (stop bit)y 8 bits (1 byte) de datos (bit 0 - bit 7). Esta comunicación requiere definir la velocidada la que se envian los datos, a esta se le suele denominar baud rate.

Proyecto DIY Sunflower 8

Page 10: Manual de usuario ProyectoDIYSunflower · En las próximas secciones se utilizarán nombres en inglés de algunas componentes para evitar ambigüedades 2. Esquemático y componentes

Figura 6: Protocolo UART

En este proyecto visualizaremos la comunicación UART a través de monitor serial del soft-ware Arduino, para esto utilizaremos las funciones Serial.begin(baudRate), configuraciónde la comunicación, y Serial.println(texto), función para enviar un mensaje.

3.6. Interrupciones en el programa

En general los procesadores tienen unos registros dedicados a alertar acerca de eventosprioritarios dentro del funcionamiento normal de este, por ejemplo cuando en un computadorcon Windows se presiona Ctrl+Alt+Supr y se detienen los procesos para abrir el administra-dor de tareas. De esta misma manera, en los microcontroladores hay registros de interrupciónque son habilitables para ejecutar funciones prioritarias en determinados momentos.

Las interrupciones tienen el comportamiento de detener el flujo normal de un programay redireccionarlo hacia la ejecución de una función de interrupción, mejor conocida comoInterrupt Service Routine (ISR). Esta función tiene una prioridad mayor a aquellasejecutadas en el flujo normal del programa y, dentro de ella, se pueden alterar variablesy registros utilizados en el programa normal. Es por esto, que hay que ser cuidadosos encomo se utilizan, pues se podría alterar una variable que sea fundamental para el correctofuncionamiento del programa normal.

En este proyecto se utilizarán interrupciones provenientes de un contador interno (timer),para asegurar una tasa de actualización constante para la señal de movimiento del servo-motor. Para esto habrá una sección dedicada a configurar los registros necesarios dentro delcódigo.

4. Ensamblado

4.1. Conexiones módulo relé

En la figura Figura 7 se muestran: el módulo relé y sus terminales (a) y un ejemplo deconexión de este (b). Las terminales que tiene este módulo corresponden a los interruptoresK1 y K2, donde el pin central K1B es aquel que cambia de estado, y las entradas de control[GND IN1 IN2 VCC]. De esta manera, las conexiones del módulo relé se ven representadasen el esquemático como se muestra en (a).

Proyecto DIY Sunflower 9

Page 11: Manual de usuario ProyectoDIYSunflower · En las próximas secciones se utilizarán nombres en inglés de algunas componentes para evitar ambigüedades 2. Esquemático y componentes

(a) Vista frontal y esquematico actualizado (b) Ejemplo de conexiones

Figura 7: Módulo Relé

4.2. Prueba de funcionamiento

A modo de prueba, se reemplazan los fototransistores y sus resistores por potenciómetrosque realicen un divisor de voltaje entre VDD y GND (ver Figura 8) para tener controldetallado de los valores analógicos leídos por el microcontrolador. En la Figura 9 se muestranimágenes de este circuito armado con estas consideraciones.

(a) Potenciómetro (b) Divisor de voltaje con poten-ciómetro

Figura 8: Piezas para divisor de prueba

El divisor de voltaje se consigue por medio de conectar las terminales 1 y 3 a VDD yGND, respectivamente. De esta manera, el terminal 2 corresponderá a un voltaje intermedioentre GND y VDD determinado por la posición del potenciómetro (giro). Esto es ocupadopara generar un voltaje analógico controlable por el usuario (por medio de girar la perilla)que sirva para probar el circuito. En resumen, los terminales 2 de cada potenciómetro debenir conectados a A0 y A1 para simular las mediciones de FOTO_S1 y FOTO_S2.

Proyecto DIY Sunflower 10

Page 12: Manual de usuario ProyectoDIYSunflower · En las próximas secciones se utilizarán nombres en inglés de algunas componentes para evitar ambigüedades 2. Esquemático y componentes

(a) Vista con perspectiva (b) Vista frontal

Figura 9: Circuito de prueba armado

5. Código Arduino

A continuación esta el código utilizado para este proyecto.

#define F_CPU 16000000UL#include <avr/io.h>#include <avr/interrupt.h>

/* Variables globables a utilizar */int count = 0; // Contador de tiempo/* Pines en donde se conectaran los sensores de luz */int lightSensor1 = A0;int lightSensor2 = A1;/* Variables en las cuales se guardaran las mediciones de los sensores

*/int lux1 = 0;int lux2 = 0;

void startUP(void);void toogle_ON(void);

/* Seccion de inicializacian de registros y modulos */void setup(){

/* Aqui se configura el microcontrolador a partir de los parametros* presentes en la funcion startUP()* Adicionalmente, la funcion sei() permite activar las interrupciones*/

Proyecto DIY Sunflower 11

Page 13: Manual de usuario ProyectoDIYSunflower · En las próximas secciones se utilizarán nombres en inglés de algunas componentes para evitar ambigüedades 2. Esquemático y componentes

startUP();sei();

}

/* Seccion en la que se coloca la rutina a realizar en cada ciclo delmicrocontrolador */

void loop(){/* Lectura del valor analogico de los sensores */lux1 = analogRead(lightSensor1);lux2 = analogRead(lightSensor2);

/* Enviado de datos a traves de UART (USB) */Serial.print("lux1: ");Serial.print(lux1);Serial.print(" | lux2: ");Serial.print(lux2);Serial.print(" | OCR1A: ");Serial.print(OCR1A);Serial.print("\n");

}

/* Funcion startUP() encargada de configurar los registros necesariospara:

* 1.- Configurar los pines D7, D13, D9 como salidas* 2.- Configurar los pines A0, A1 como entradas* 3.- Generar una senal PWM de 50Hz en el pin D9* 4.- Habilitar las interrupciones del Timer1* 5.- Configurar la comunicacion serial con un baud rate de 57600 */void startUP(void){

/* Salidas digitales */DDRB |= _BV(PB1); // D9: PWMDDRB |= _BV(PB5); // D13: LEDDDRD |= _BV(PD7); // D7: ON/OFF Modulo RelePORTB &=~ _BV(PB5);PORTD &=~ _BV(PD7);/* Entradas analogicas (sensores)*/pinMode(lightSensor1,INPUT);pinMode(lightSensor2,INPUT);/* Timer/Contador1 de 16-bit* DDRB |= 0b00000010 -> PB1 = Salida (OCR1A esta en el PB1)* WGM13:0 = 0b1110 -> PWM Rapida con periodo variable (TOP =ICR1A)

Proyecto DIY Sunflower 12

Page 14: Manual de usuario ProyectoDIYSunflower · En las próximas secciones se utilizarán nombres en inglés de algunas componentes para evitar ambigüedades 2. Esquemático y componentes

* COM1A1:0 = 0b10 -> OC1A (contador del timer1) pasa a cero(0) cuando llega al valor de OCR1A* COM1B1:0 = 0b00 -> OC1B desconectado (PB2)* CS12:0 = 0b100 -> Divisor de clock de 256 -> clk_IO/256* f_PWM = 16MHz/Pre-scalar/ICR1 = 16MHz/256/1250 = 50Hz */

TCCR1A = _BV(COM1A1) | _BV(WGM11);TCCR1B = _BV(WGM12) | _BV(WGM13) | _BV(CS12);ICR1 = 1250; // 62500;(1Hz) // 1250;(50Hz) // 142;(440Hz) // 3125;(20Hz)

OCR1A = 91; // 91=medium; 92 = K+; 89 = K-;/* Registros para configurar la interrupcion timer1 */TIFR1 &=~ _BV(TOV1);TIMSK1 |= _BV(TOIE1); //DO NOT ENABLE ISR THAT ARE NOT USED:Timer1 Interrupt Enable

/* Comunicacion serial a 57600 baud/s */Serial.begin(57600);

}

/* Funcion que cambia de ON a OFF (y viceversa) el led en D13 */void toogle_ON(void){

PORTB ^= _BV(PB5);}

/* Funcion a ejecutar durante una interrupcion del Timer1 */ISR(TIMER1_OVF_vect){

count++;if(count>5){

toogle_ON();/* Se actualiza OCR1A (duty cycle), y con ello la direccion de girodel motor, de acuerdo a la cantidadde luz medida por cada sensor */OCR1A = 90*(1 + (lux1-lux2)/1023.0);count = 0;

}}

Proyecto DIY Sunflower 13