ENCICLOPEDIA DE RADIOELECTRÓNICA E INGENIERÍA ELÉCTRICA Arduino. Operaciones de entrada-salida analógica, trabajo con un sonido. Enciclopedia de radioelectrónica e ingeniería eléctrica. Enciclopedia de radioelectrónica e ingeniería eléctrica. / diseñador radioaficionado Aunque las operaciones de entrada y salida digitales permiten resolver una amplia gama de problemas, la presencia de un convertidor analógico a digital (ADC) incorporado en el microcontrolador de la placa Arduino y la capacidad de generar señales analógicas mediante modulación de ancho de pulso ( PWM) garantizan el trabajo con sensores analógicos y todo tipo de actuadores, influyendo en el objeto en proporción a la señal de control. Estrictamente hablando, en el modo de salida, todas las líneas del puerto Arduino solo pueden transmitir señales discretas que tienen solo dos estados. Pero el microcontrolador es capaz de cambiar estos estados muy rápidamente, generando pulsos rectangulares. Si estos pulsos se aplican a cualquier dispositivo que tenga propiedades inerciales, entonces comenzará a comportarse como si el voltaje que se le suministra fuera constante, igual al valor promedio del pulso, y cambiara suavemente, y no con saltos entre alto y bajo. niveles lógicos. En el modo PWM, el puerto genera una señal de pulso de frecuencia constante y ciclo de trabajo variable (esta es la relación entre el período de repetición de los pulsos y su duración). A menudo, en lugar del ciclo de trabajo, funcionan con su valor inverso: el ciclo de trabajo, que se puede cambiar de 0 (sin pulsos) a 100% (los pulsos se suceden, se fusionan, sin pausas). Por tanto, aunque en un momento dado la tensión de salida corresponda a un nivel lógico alto o bajo, su valor medio es proporcional al ciclo de trabajo. Si conecta un multímetro normal a esta salida, mostrará este valor (por supuesto, si la frecuencia del pulso es lo suficientemente alta). En Arduino UNO, las salidas D3, D5, D6, D9, D10 y D11 pueden funcionar en modo PWM. Suelen estar marcados en el tablero con los signos "~" o las abreviaturas "PWM". Cabe señalar que las placas Arduino de otras modificaciones pueden tener más o menos salidas de este tipo. En el caso más sencillo, se puede utilizar PWM para controlar el brillo de un LED. Este dispositivo prácticamente no tiene inercia, pero la visión humana tiene suficiente inercia para que una secuencia de rápidos destellos del LED se perciba como un brillo continuo con un brillo que depende del factor de llenado. Las salidas discretas capaces de generar PWM están configuradas para usar este modo de forma predeterminada, por lo que no es necesario llamar a la función pinMode() para operarlas en este modo. Para configurar el ciclo de trabajo de una señal PWM, existe una función estándar analogWrite(N, M), donde N es el número de pin, M es un número proporcional al ciclo de trabajo requerido. Debe estar en el rango de 0 a 255, donde 0 corresponde al ciclo de trabajo cero (nivel bajo constante en la salida), 255 - ciclo de trabajo 100% (nivel alto constante en la salida). Los diagramas de tiempo del voltaje de salida a ciertos valores de M y, en consecuencia, el ciclo de trabajo de cortocircuito se muestran en la Fig. 1.
Por ejemplo, considere el que figura en la tabla. 1 programa que aumenta gradualmente el brillo del LED conectado a la salida digital D9, y luego lo disminuye gradualmente. Se basa en el ejemplo estándar 3.AnalogFading que viene con el IDE de Arduino. La enumeración de los valores del ciclo de trabajo del pulso se implementa aquí utilizando los operadores de bucle for ya discutidos en [1]. Tabla 1. Para recibir señales analógicas de dispositivos externos en Arduino, están previstas las entradas A0-A5, que de forma predeterminada están configuradas en el estado requerido para ello, por lo que no se requiere ninguna inicialización adicional. El ADC integrado en Arduino UNO genera códigos binarios de 10 bits y convierte el voltaje de entrada, que se encuentra en el rango de 0 a +5 V, en un número entero de 0 a 1023 (210-1). Para leer el resultado de la conversión, utilice la función analogRead(N), donde N es el número de la entrada analógica. Puede conectar una variedad de sensores a las entradas analógicas de Arduino, cuyo voltaje de salida es proporcional al valor medido (resistencias variables, termistores, fotorresistores, etc.). Sin embargo, hay que recordar que la entrada analógica sólo puede recibir tensión de 0 a +5 V. Si la tensión de salida del sensor se encuentra en un rango diferente o tiene polaridad negativa, primero se debe colocar la señal dentro del rango especificado. rango. La entrada analógica se sondea a una velocidad inferior a 10 kHz [2], lo que puede no ser suficiente para analizar algunas señales que cambian rápidamente. La presencia de entradas analógicas le permite convertir Arduino en un voltímetro digital simple que mide voltaje CC de 0 a +5 V y transmite el resultado de la medición a la computadora. Para hacer esto, simplemente cargue el programa que figura en la tabla en Arduino. 2. Tabla 2 Tenga en cuenta que en el programa el voltaje de referencia del ADC Uref (en milivoltios) y el factor de conversión del código de salida del ADC al voltaje Ku se especifican como constantes. El valor del coeficiente se calcula dividiendo el voltaje de referencia dado por 1023. El coeficiente suele ser fraccionario, por lo que la constante Ki es de tipo float (número de coma flotante). La constante Uref tiene el mismo tipo para calcular correctamente el coeficiente. Dado que el lado derecho de la fórmula contiene solo constantes, el coeficiente no lo calcula el microcontrolador al ejecutar el programa, sino el propio compilador en la etapa de traducción. Todo esto permite aumentar la precisión del voltímetro midiendo con un multímetro el valor exacto del voltaje de referencia en el pin Uref de la placa Arduino y escribiéndolo en el programa, asignándolo a la constante Uref. Puede leer sobre otras formas de mejorar la precisión de la conversión de analógico a digital en [3, 4]. Cuando el programa en cuestión se está ejecutando, el LED TX de la placa parpadea, señalando la transferencia de información a través del puerto serie. El LED RX no está encendido porque la computadora no envía nada. El terminal Arduino IDE incorporado muestra la información recibida (Fig. 2): los resultados de medir el voltaje de una batería galvánica 3332.
Arduino puede proporcionar no solo señales de luz, sino también de sonido. Para hacer esto, conecte un emisor de sonido piezoeléctrico a una de sus salidas, por ejemplo ZP-1 (Fig. 3).
Para trabajar con sonido, se proporciona una función especial: tono(N, F, T), donde N es el número de pin en el que se generarán los pulsos rectangulares; F - frecuencia del sonido, Hz; T - duración del sonido, ms. El último parámetro es opcional. En su ausencia, el sonido será continuo. Para apagarlo, se proporciona la función noTone(N). Por supuesto, el emisor de sonido piezocerámico difícilmente puede considerarse un dispositivo de reproducción de alta calidad, y la señal generada por el microcontrolador tiene una forma rectangular, sin embargo, el uso de estas funciones le permite reproducir melodías simples. En la tabla se da un ejemplo. 3. Este es un ejemplo de programa ligeramente modificado 02.Digital oneMelody, incluido en el IDE de Arduino. Dado que es inconveniente configurar manualmente la frecuencia de cada nota de una melodía, el archivo pitches.h se adjunta al programa en su encabezado usando la directiva #include. Esta operación equivale a incluir el texto completo de este archivo en el programa. En este caso contiene una lista de los nombres de las notas que se pueden tocar y sus frecuencias. Tabla 3 El emisor de sonido debe estar conectado a la salida D8. Para un programa, una melodía es una secuencia de constantes del mismo tipo (valores de frecuencia), que se combinan convenientemente en una matriz: una lista numerada de elementos del mismo tipo. Al declarar una matriz, debe enumerar todos sus elementos o indicar su número total. Tenga en cuenta que la numeración de los elementos de la matriz siempre comienza desde cero. En el ejemplo que estamos considerando, se utilizan dos matrices: int melody[] contiene los nombres de las notas de la melodía, int note Durations[] - su duración en milisegundos. Para hacer referencia a un elemento de matriz, indique su nombre con un número de serie entre corchetes. Para poder cambiar fácilmente el número de notas de una melodía, se calcula utilizando las funciones sizeof(V), que devuelven el número de bytes que ocupa su argumento (variable o conjunto de ellos) en la memoria del microcontrolador. En este caso, la matriz de melodía ocupa 16 bytes y la longitud de sus elementos int es de dos bytes. Por lo tanto, la variable Nota recibe el valor 8 y esta es la cantidad de veces que se repetirá el cuerpo del bucle for, tocando una a una las notas. Si agrega más de una nota a la matriz melodía[], el valor de la nota cambiará en consecuencia. Sólo necesitas recordar agregar la matriz noteDurations[] con las duraciones de estas notas. Dado que la melodía se ejecuta solo una vez, todas las operaciones necesarias se colocan dentro de la función setup(). Para volver a ejecutar, debe restablecer el microcontrolador a su estado original presionando el botón RESET ubicado en la placa Arduino. Los programas para Arduino discutidos en el artículo se pueden descargar desde ftp://ftp.radio.ru/pub/2016/09/aninout.zip. Literatura
Autor: D. Lekomtsev Ver otros artículos sección diseñador radioaficionado. Lee y escribe útil comentarios sobre este artículo. Últimas noticias de ciencia y tecnología, nueva electrónica: Máquina para aclarar flores en jardines.
02.05.2024 Microscopio infrarrojo avanzado
02.05.2024 Trampa de aire para insectos.
01.05.2024
Otras noticias interesantes: ▪ Bolsos Louis Vuitton con pantallas AMOLED ▪ Nubia Red Magic 3 es un smartphone con ventilador ▪ telescopio satélite más pequeño ▪ Terapia de choque pulsera inteligente ▪ Paneles solares de materias primas baratas Feed de noticias de ciencia y tecnología, nueva electrónica
Materiales interesantes de la Biblioteca Técnica Libre: ▪ sección del sitio Transporte personal: terrestre, acuático, aéreo. Selección de artículos ▪ artículo Cisne, Cáncer y Lucio. expresión popular ▪ artículo ¿Qué es el bobsleigh? Respuesta detallada ▪ artículo Camellia eugenolus. Leyendas, cultivo, métodos de aplicación. ▪ artículo Baliza LED. Enciclopedia de radioelectrónica e ingeniería eléctrica.
Deja tu comentario en este artículo: Todos los idiomas de esta página Hogar | Biblioteca | Artículos | Mapa del sitio | Revisiones del sitio www.diagrama.com.ua |