Informe Nº 17 Proyectos de Arduino, Servo-Motor, Displays LCD PDF

Title Informe Nº 17 Proyectos de Arduino, Servo-Motor, Displays LCD
Author Juan Rojas Q
Course Sistemas Digitales
Institution Universidad Nacional de Ingeniería
Pages 11
File Size 769.5 KB
File Type PDF
Total Downloads 39
Total Views 135

Summary

Este informe se muestra, los programas desarrollados en Arduino tales como control de servo motor, y uso de los displays con Arduino...


Description

INFORME Nº 15. Proyectos de Arduino Servo Motor y Sensor Ultrasónico. IF471-B SISTEMAS DIGITALES

Juan Carlos Rojas Quispe, [email protected] Universidad Nacional de Ingeniería, Facultad de Ciencias

Fecha: 28-10-2021

1.

la diferencia de los motores asincrónicos convencionales, puesto que, si quisiéramos mantener la posición en un motor común, necesitaríamos recurrir a dispositivos adicionales como ser frenos, reductores de velocidad, etc. 1En cambio, un servomotor aplicaría todo su torque disponible para conservar la posición de la carga, independiente de la velocidad de funcionamiento del servomotor, es decir, que se puede conservar la posición de la carga a cero revoluciones por minuto (0 rpm) sin la necesidad de dispositivos agregados. Esta facultad también es aplicable para mover cargas a velocidades bajas. 1Conjuntamente, se suma otra condición particular referida a los niveles de aceleración y desaceleración que se pueden adquirir, teniendo en cuenta que el torque es una relación entre el momento de inercia de la carga y la aceleración angular.

Objetivos Analizar el funcionamiento de un Servo Motor, así como también el funcionamiento de un Sensor Ultrasónico. Así mismo Desarrollar tres programas en Arduino, capas de controlar un circuito con los dos dispositivos anteriormente mencionados.

2.

Fundamento Teórico

2.1.

Servo Motor

1Un servomotor es un motor, con características especiales en su estructura. La principal propiedad es que cuenta con un sistema de realimentación, el cual le indica al controlador del servomotor (servo drive) la posición en la que se encuentra el eje del servomotor y le corrija la posición, en caso que no fuese la correcta. De este modo, puede enmendar los errores de posición, y obtener una muy alta precisión.

• • •

Características 1Además de su precisión, los servomotores mantener un torque constante en toda su gama de revoluciones (hasta 3.000 rpm). Esta característica

𝑇 = 𝐼 ∙𝑎 𝑇: torque (Nm) 𝐼: momento de inercia (Kg.m2) 𝑎: aceleración angular (rad/s2)

1En esta relación, se logra ver que, para una aceleración mayor con el mismo nivel de carga, precisaríamos más torque para poder mover la misma carga.

Figura2: Curva torque característico de un servo motor

Figura1: Servo motor comercial

1

que implica herramientas diferentes, para poder controlar servomotores de forma bastante sencilla. De esta manera, uno puede controlar un servomotor con tan solo una línea de programación, consiguiendo toda la precisión y velocidad que el servo puede brindar.

1Los servomotores soportan hasta un trescientos por ciento (300%) de sobrecarga por un determinado período de tiempo, y esto les posibilita romper la inercia con aceleraciones o desaceleraciones bruscas.

Funcionamiento 1Una de las inquietudes más frecuentes que surge al momento de hablar de servomotores es conocer la manera de controlarlos y la forma de indicarles la posición que se desea alcanzar, así como la velocidad. 1Para ello, existen distintos métodos de control. El más común y más utilizado (por su sencillez) es el control por pulso y frecuencia. 1¿Qué implica este procedimiento? Por lo general, hablamos de milímetros, pulgadas, metros, etcétera, pero el servo drive no entiende qué significan estas magnitudes, ya que solo interpreta los pulsos que recibe y con qué velocidad los recibe (frecuencia). 1Supongamos que nuestro sistema mecánico avanza cien milímetros (por cada vuelta del motor) y el motor da una vuelta cada mil pulsos recibidos, o sea que, si le entregamos mil pulsos al servo drive, desde un controlador superior como ser un controlador lógico programable, el motor hará que la carga avance cien milímetros. Ahora bien, si precisamos que avance doscientos milímetros (200 mm), tendríamos que enviarle dos mil pulsos al servo drive y así sucesivamente. De este modo, estaremos controlando la posición del servomotor de una manera muy sencilla. 1Por otro lado, solo nos faltaría controlar la velocidad del servomotor. Esta tarea es simple, porque únicamente necesitaríamos modificar la frecuencia con la que se entregan los pulsos. 1Si la frecuencia con la que se generan los pulsos es mayor, la carga logrará la posición deseada rápidamente. A diferencia, si la frecuencia es menor, la carga tardará más tiempo en alcanzar la posición. 1Para este tipo de control, se desarrolla software

2.2.

Sensor Ultrasónico

Como su nombre lo indica, los sensores Ultrasónicas son sensores capas de detectar la presencia de objetos cercanos utilizando ondas ultrasónicas. Funcionamiento de los sensores ultrasónicos 2Los ultrasonidos son sonidos con frecuencias mayores a 20KHz. El funcionamiento básico de los ultrasonidos como medidores de distancia se muestra a continuación. Figura 1.3.1. Donde se tiene un transmisor que envía una señal ultrasónica y esta a su vez se refleja sobre un determinado objeto y la reflexión es detectada por un receptor. 2La mayoría de los sensores de ultrasonido de bajo costo se basan en la emisión de un pulso de ultrasonido cuyo lóbulo, o campo de acción, es de forma cónica. Midiendo el tiempo que transcurre entre la emisión del sonido y la percepción del eco se puede establecer la distancia a la que se encuentra el obstáculo que ha producido la reflexión de la onda sonora, mediante la siguiente fórmula. 1 𝑑 = 𝑣∙𝑡 2 Donde: 𝑑 : Distancia recorrida por el sonido 𝑣: Velocidad del sonido 𝑡: tiempo transcurrido entre la emisión y la recepción del aire

Figura 3: Diagrama de procedimiento, para el funcionamiento de un servo-motor

Figura 4: Diagrama de funcionamiento de sensor ultrasónico 2

Funcionamiento y diagrama de temporización 3En el diagrama de temporización se aprecia como solo es necesario aplicar un pulso de 10uS en el pin trigger para comenzar con la medición. 3A continuación, el sensor envía una serie de 8 pulsos de 40KHz y pone el pin de Echo a nivel alto. 3El pin Echo permanecerá a nivel alto hasta que se reciba el eco de los pulsos de 40KHz. 3Para saber a la distancia a la que se encuentra el objeto, solo hay que medir el tiempo al que está el pin Echo a nivel alto y aplicar la siguiente formula.

Sensor ultrasónico HC-SR04 3El sensor HC-SR04 esta compuesto por un emisor y un receptor de ultrasonidos. Estos nos ayudan a medir la distancia a la que se encuentra un objeto justo al frente de el enviando un pulso de ultrasonidos y midiendo el tiempo que transcurre hasta que vuelve dicho pulso. Descripción pines del sensor • Vcc: Pin de alimentación. (5V) • Trigger: Pin de disparo. Este pin es una entrada, por lo que, en el sistema de control, por ejemplo, Arduino, se tiene que conectar a una salida. • Echo: Este pin es una salida del sensor, por lo que ha de ser conectado a una entrada del sistema de control. • Gnd: Pin negativo de alimentación.

𝐶𝑒𝑛𝑡𝑖𝑚𝑒𝑡𝑟𝑜𝑠 = 𝑢𝑆 ∗ 0.01715

2.3.

librería Servo sirve para facilitar al programador de la placa Arduino el control de servomotores. Concretamente, permite manejar hasta 12 servomotores en la placa Arduino UNO (¡y hasta 48 en la Arduino Mega!). Solo hay que tener en cuenta el pequeño detalle de que el uso de esta librería en la placa Arduino UNO deshabilita la funcionalidad PWM de los pines 9 y 10 aunque no haya ningún servomotor conectado allí. La librería Stepper, por su parte, sirve para controlar motores tipo “paso a paso” (en inglés, “steppers”), tanto de tipo unipolar como bipolar.

Características eléctricas • Voltaje de trabajo: 5V. • Corriente de trabajo: 15mA. • Frecuencia de trabajo: 40KHz • Rango de funcionamiento: 2 a 500 cm •

Librería Servo y Stepper 4La

Ángulo de detección: 15 a 20 grados.

3.

Procedimiento Experimental El procedimiento experimental consistió en el desarrollo de programas en Arduino, capas de controlar circuitos útiles, que se muestran el software Proteus.

Figura 5: Sensor ultrasónico HC-SR04, y sus respectivos pines de entrada

Figura 7: El circuito muestra controlando un servo-motor

Figura 6: Diagrama de temporización de un sensor ultrasónico HC-SR04

3

el

Arduino

3.1.

Hacer un programa que controlo un servo motor, primero gire 90° de grado en grado en un sentido y luego y luego volver a su posición inicial (abre y cierra una puerta).

#include Servo mot1; int ape = 0; int angulo = 0; void setup() { mot1.attach(9); pinMode(ape, INPUT); }

Para el desarrollo de este ejercicio haremos uso de la librería servo.h, donde este nos permitirá el control del servomotor por medio del Arduino. El programa desarrollado se muestra a continuación: #include Servo mot1; int angulo=0;

void loop() { if(digitalRead(ape) ==1) { mot1.write(90); } else { mot1.write(0); }

void setup() { mot1.attach(9); } void loop() { for (int i = 0; i 0; i--) { mot1.write(i); delay(25); } exit(0); }

3.3. Hacer un programa que mida la distancia d en cm. Si d=100 cm se cierra la puerta. Para resolver este ejercicio, haremos uso de dos componentes, un servo-motor y un sensor ultrasónico HC-SR04 y tenemos que relacionar la lectura hecha por parte del sensor y con esa

El circuito el cual controla este programa se muestra en la Figura 7:

3.2.

A partir del ejercicio anterior, agregar una entrada digital, tal que, estando en alta permita abrir la puerta y en baja cerrar la puerta.

Nosotros podemos trabajar a partir del ejercicio anterior, pero dado que la solicitud del ejercicio es la apertura de una puerta cuando la entrada digital este en alta y cerrada cuando la entrada digital este en baja, pues únicamente en el programa desarrollaremos la apertura del servomotor relacionada a una estrada digital, y analógicamente con el cierre del servo motor. El programa desarrollado se muestra a continuación.

Figura 8: El circuito muestra el Arduino controlando un servo-motor, y una entrada digital que controla el sentido de rotación del servo motor 4

condición aplicamos el programa desarrollado en el ejercicio 3.2. El programa desarrollado para resolver este ejercicio se muestra a continuación:

{ mot1.write(0); } delay(200); }

#include Servo mot1; const int Inicio=6; const int Eco=4; const float v=0.0343; float tiempo; float distancia;

El circuito que controla este programa se muestra en la Figura 9.

4.

Aplicaciones Como se puede observar en los ejercicios desarrollados, las aplicaciones tanto de los servos motores, como los sensores ultrasónicos pueden ser muy diversas, tales como se mostraron en este informe, así como también los usos de los servomotores, se dan en el campo comercial, electrónica, industria, etc., tale como el desarrollo de robots y otros, y los usos de los sensores ultrasónicos es aun mayor tales como el campo de minería, para el mapeo de estructuras y otros.

void setup() { Serial.begin(9600); pinMode(Inicio, OUTPUT); pinMode(Eco, INPUT); digitalWrite(Inicio, LOW); mot1.attach(9); } void loop() { digitalWrite(Inicio, HIGH); delayMicroseconds(10); digitalWrite(Inicio, LOW); tiempo=pulseIn(Eco, HIGH); distancia=v*tiempo/2; Serial.print(distancia); Serial.println(" cm"); if(distancia =100)

2. Cuamatzi Flores, X., Jiménez Muñiz, M. A., & Navarrete González, F. J. (2010, diciembre). SISTEMA DE PROXIMIDAD ULTRASÓNICO. 3. leantec. (2020, noviembre). Datasheet HC-SR04. 4. Artero, O. T. (2013). Arduino curso práctico de formación. Alfaomega Grupo Editor.

Figura 9: Figura 7: El circuito muestra el Arduino controlando un servo-motor, y como según la lectura del sensomotor se abrirá o cerrara el servo-motor

5

6

INFORME Nº 16. Proyectos de Arduino Display LCD, I2C IF471-B SISTEMAS DIGITALES

Juan Carlos Rojas Quispe, [email protected] Universidad Nacional de Ingeniería, Facultad de Ciencias

Fecha: 28-10-2021

1.

características generales. De todas formas, lo más habitual es que una LCD estándar ofrezca: Un pin para recibir la alimentación y otro pin para conectar la pantalla a tierra. Es conveniente conectar un divisor de tensión entre la fuente de alimentación y el pin de alimentación de la pantalla para evitar posibles daños. Para calcular el valor óptimo de esta resistencia, se deben consultar dos valores en el datasheet del LCD: la corriente máxima soportada para la luz de fondo y la caída de tensión causada por esta. Haciendo uso de la Ley de Ohm, si se resta dicha caída de tensión de los 5 V y se divide el resultado entre esa corriente máxima, obtendremos el valor de la resistencia. Un pin para regular el contraste de la pantalla. Este pin se debe conectar a la patilla central de un potenciómetro de nuestro circuito, de manera que regulando el potenciómetro podremos regular el contraste de la pantalla. Tres pines de control generalmente marcados como “RS”, “EN” y “RW”, que se deberán conectar cada uno a un pin digital de la placa Arduino. El pin “RS” sirve para que el microcontrolador le diga a la LCD si quiere mostrar caracteres o si lo que quiere es enviar comandos de control. Concretamente, si por ese pin el LCD detecta una señal LOW, los datos recibidos serán tratados como comandos a ejecutar, y si detecta una señal HIGH, los datos recibidos serán el texto a mostrar en la pantalla. El pin “EN” establece la línea “enable”, la cual sirve para advertir a la LCD que el microcontrolador le va a enviar datos. Esta advertencia se produce cada vez que la señal recibida por ese pin cambia de HIGH a LOW. Finalmente, el pin “RW” sirve para definir si se desea enviar datos a la LCD (lo más común) o recibirlos de ella (muy poco común); si estamos en el primer caso, este pin deberá recibir una señal LOW y en el segundo caso deberá recibir una señal HIGH, por lo que, como normalmente no lo necesitaremos para nada, lo conectaremos casi siempre a tierra. Varios pines (4 u 8, según si la LCD es de “4-bit” o “8-bit”) que se deberán conectar también cada uno a un pin digital de la placa Arduino. Se usan para establecer las líneas de comunicación en paralelo por donde se transfieren los datos y los comandos de control de la placa Arduino hacia el LCD. Hay que

Objetivos Manejo y uso de los displays, así como también el manejo de datos para una visualización concreta de estos. Entender, y aplicar el flujo de datos bus I2C, aplicando el integrado PCF8574.

2.

Fundamento Teórico

2.1.

Pantallas de cristal líquido (LCD) 1Las

pantallas de cristal líquido ofrecen una manera muy rápida y vistosa de mostrar mensajes. Las podemos clasificar en LCDs de caracteres y LCDs gráficas. Las primeras sirven para mostrar texto ASCII y se comercializan en diferentes tamaños (16x2, 20x4...) donde el primer número indica la cantidad de caracteres que caben en una fila, y el segundo número es el número de filas que caben en la pantalla. Las segundas sirven para mostrar, además de texto, dibujos e imágenes, y también se comercializan en diferentes tamaños, los cuales están definidos por la cantidad de píxeles que pueden mostrar (128x64, 128x128...). Las LCDs de caracteres, por su parte, pueden mostrar pequeños iconos de 5x7 píxeles o similar. 1Las LCDs de caracteres más habituales son de 4bit o 8-bit, dependiendo del número de cables (bits) que necesitan tener conectados al circuito para poder recibir o enviar datos. Cada modelo de LCD es diferente, por lo que es imprescindible consultar su datasheet concreto para poder distinguir los diferentes pines de conexión que ofrece y sus

Figura 1: Display LCD con sus respectivos pines de conexión

7

saber que una LCD de 8 bits puede funcionar perfectamente con solo cuatro cables de datos conectados (es decir, funcionando como una LCD de 4 bits), pero lo hará a una velocidad menor. Dos pines exclusivos para el circuito de la luz de fondo (uno para recibir la alimentación y el otro pin para conectar a tierra). Si la pantalla no dispone de luz de fondo (también llamada de “retroalimentación”), estos pines o no existirán o no serán usados para nada.

2.2.

(llamada línea “SCL”) sirve para enviar la señal de reloj. En realidad, también se necesitarían dos líneas más: la de alimentación y la de tierra común, pero estas ya se presuponen existentes en el circuito. 1Por “señal de reloj” se entiende una señal binaria de una frecuencia periódica muy precisa que sirve para coordinar y sincronizar los elementos integrantes de una comunicación (es decir, los emisores y receptores) de forma que todos sepan cuándo empieza, cuánto dura y cuándo acaba la transferencia de información. En hojas técnicas y diagramas a la señal de reloj en general se le suele describir como CLK (del inglés “clock”). 1Cada dispositivo conectado al bus I²C tiene una dirección única que lo identifica respecto el resto de dispositivos, y puede estar configurado como “maestro” o como “esclavo”. Un dispositivo maestro es el que inicia la transmisión de datos y además genera la señal de reloj, pero no es necesario que el maestro sea siempre el mismo dispositivo: esta característica se la pueden ir intercambiando ordenadamente los dispositivos que tengan esa capacidad.

Protocolo de comunicación I2C 1Cuando

se desea transmitir un conjunto de datos desde un componente electrónico a otro, se puede hacer de múltiples formas. Una de ellas es estableciendo una comunicación “serie”; en este tipo de comunicación la información es transmitida bit a bit (uno tras otro) por un único canal, enviando por tanto un solo bit en cada momento. Otra manera de transferir datos es mediante la llamada comunicación “paralela”, en la cual se envían varios bits simultáneamente, cada uno por un canal separado y sincronizado con el resto. El microcontrolador, a través de algunos de sus pines de E/S, utiliza el sistema de comunicación serie para transmitir y recibir órdenes y datos hacia/desde otros componentes electrónicos. Esto es debido sobre todo a que en una comunicación serie solo se necesita en teoría un único canal (un único “cable”), mientras que en una comunicación en paralelo se necesitan varios cables, con el correspondiente incremento de complejidad, tamaño y coste del circuito resultante.

2.3.

Modulo PCF8574

2El módulo PCF8574 permite expandir las entradas o salidas digitales de Arduino utilizando solo 2 líneas del bus I2C (SDA y SCL). El chip PCF8574 permite convertir datos en paralelo (8 E/S) a I2C y viceversa, por lo que es ideal para el manejo de dispositivos como: Displays LCD alfanuméricos, teclados matriciales, Leds, relays y más. Puede compartir el bus I2C con otros dispositivos y asi ahorrar pines, por ejemplo: RTC, Memoria, Sensores. Se pueden manejar hasta 8 expansores PCF8574 en un mismo bus I2C y de esa forma manejar un total de 64 E/S utilizando tan solo 2 pines. 2Las salidas del módulo PCF8574 son de tipo Latch, por lo que mantienen el valor asignado sin necesidad de refresco constante, reduciendo la carga computacional. Las salidas latch son especialmente útiles al trabajar con Relays o Leds. Las entradas pueden ser configuradas para activar la salida de Interrupción (INT) y asi manejar una respuesta rápida. Especificaciones técnicas • Voltaje de Operación: 5V DC • Chip: PCF8574A • 8 entradas/Salidas configurables • Interfaz de comunicación: I2C • Dirección I2C: 0x30-0x37 (Configurable por jumpers) • Hasta 8 dispositivos en el mismo bus • Salidas tipo Latch

I2C (Inter-Integrated Circuit, también conocido con el nombre de TWI –de “TWo-wIre”, literalmente “dos cables” en inglés–): es un sistema muy utilizado en la industria principalmente para comunicar circuitos integrados entre sí. Su principal característica es que utiliza dos líneas para transmitir la información: una (llamada línea “SDA”) sirve para transferir los datos (los 0...


Similar Free PDFs