Thursday, November 17, 2016

Arduino Moving Biblioteca Media

Introducción Una de las principales aplicaciones de la placa Arduino es la lectura y el registro de datos del sensor. Por ejemplo uno monitores de presión cada segundo del día. Como las tasas de muestra de alta frecuencia genera picos en los gráficos también se quiere tener un promedio de las mediciones. A medida que las mediciones no son estáticos en el tiempo lo que a menudo necesitamos es un medio de funcionamiento. Este es el promedio de un cierto período y muy valiosa cuando se hace el análisis de tendencias. forma más simple de un promedio móvil se puede hacer mediante un código que se basa en el promedio de ejecución anterior: Si uno No quiere utilizar aritmética de punto flotante -, esto toma la memoria y disminuye la velocidad - uno puede hacer lo mismo por completo en el dominio entero. La división por 256 en el código de ejemplo es un cambio a la derecha 8, que es más rápido que decir la división por ejemplo, 100. Esto es cierto para todas las potencias de 2 como divisor y uno sólo debe tener cuidado de la suma de los plomos es igual a la potencia de 2. Y, por supuesto, uno debe tener cuidado no hay desbordamiento intermedio (considere el uso de largo sin signo) Si necesita un medio de funcionamiento más preciso, en concreto de las 10 últimas mediciones, se necesita una matriz (o lista enlazada) para sostenerlos. Esta matriz actúa como un buffer circular y con cada nueva medición se elimina el más antiguo. El promedio de funcionamiento se calcula como la suma de todos los elementos dividido por el número de elementos en el array. El código para el promedio de funcionamiento será algo como esto: inconveniente de este código es que la matriz para contener todos los valores puede llegar a ser bastante grande. Si usted tiene una medición por segundo y quiere un promedio móvil por minuto se necesita un conjunto de 60 en promedio por hora necesitaría un conjunto de 3600. Eso no podía ser hecho de esta manera en un Arduino ya que sólo tiene 2 KB de memoria RAM. Sin embargo mediante la construcción de un promedio de 2 etapas que se puede abordar bastante bien (disclaimer: no para todas las mediciones). En pseudo código: A medida que se necesita una nueva matriz estática interno para cada función runningAverage, esta grita para ser implementado como una clase. biblioteca La biblioteca RunningAverage runningAverage hace una clase de la función anterior por lo que se puede utilizar varias veces en un bosquejo. Se desacopla el add () y el promedio () para ser un poco más flexible, por ejemplo, uno puede llamar a los medios varias veces sin añadir nada. Tenga en cuenta que cada instancia de la clase añade su propia matriz para contener las mediciones, y que esto se suma a la utilización de la memoria. La interfaz de la clase se mantiene lo más pequeña posible. Nota: con la versión 0.2 los nombres de los métodos son todos hechos más descriptivo. Uso Un pequeño boceto muestra cómo se puede utilizar. Un generador aleatorio se utiliza para imitar un sensor. En setup () el Myra se borra para que podamos empezar a añadir nuevos datos. En loop () primero se genera un número aleatorio y se convierte a un flotador que se añade a Mira. A continuación, el runningAverage se imprime en un puerto serie. También se podría mostrarlo en algunos LCD o enviar a través de Ethernet, etc. Cuando se añaden 300 artículos Myra se aclaró que empezar de nuevo. Notas Para utilizar la biblioteca, hacer una carpeta en sus SKETCHBOOKPATHlibaries con el nombre RunningAverage y poner el. hy. cpp allí. Opcionalmente hacer un subdirectorio de ejemplos para colocar la aplicación de ejemplo. 2011-01-30 Historia: versión inicial 2011-02-28: Se ha corregido falta destructor en el archivo. h 2011-02-28: eliminado constructor por defecto 2012--. trimValue () Yuval Naveh añadió trimValue (que se encuentra en la web) 21/11/2012: 2012-12-30 refactorizada: fillValue () reprogramado para la publicación 03/07/2014 añadido: Código de protección de memoria adicional - tamaño si matriz interna no puede ser asignado se convierte en 0. Esto es para resolver el problema descrito aquí - forum. arduino. cc/indextopic50473.msg1790086msg1790086 - Prueba de Todo ampliamente. RunningAverage clase de plantilla. h RunningAverage. cppThis es un conjunto de rutinas para realizar el análisis matemático de las matrices de números. de apoyo a la función actual: Todas las funciones están completamente sobrecargados para apoyar los siguientes tipos de datos: Con la excepción de STDDEV () todos ellos devuelven el mismo tipo de datos que el array. Una matriz de valores int devuelve un solo int. STDDEV () siempre devuelve un flotador. Todas las funciones excepto rollingAverage () toma dos argumentos. La primera es la matriz a trabajar. El segundo es el número de entradas de la matriz. rollingAverage () toma un tercer argumento - la nueva entrada para agregar a la matriz. Formato rodando media: rollingAverage media (historyarray, slicecount, valor) aporta un valor añadido a la matriz historyarray cambiando todos los valores abajo un solo lugar. La media promedio es entonces devuelta. Formato significa: media media (array, slicecount) Calcula la media aritmética de los valores en la matriz. slicecount es el número de entradas de la matriz. Formato: Modo normal (matriz, slicecount) Busca el número más común en la matriz. Formato máximo: máximo Max (array, slicecount) Busca el valor más grande de la matriz. Formato mínima: mínimo min (array, slicecount) Busca el valor más pequeño de la gama. Formato Desviación Estándar: STDDEV desviación (array, slicecount) La desviación estándar es la raíz cuadrada de la media de la suma de los cuadrados de la diferencia entre cada punto de datos y la matriz significa la media. Esta es la única función que no devuelve el mismo tipo de datos como la matriz. La desviación estándar siempre se devuelve como un flotador. Ejemplo: Sharei estoy trabajando en un robot móvil controlado a través de un 2,4 GHz receptor link. The inalámbrico está conectado a la Arduino Uno que sirve a bordo como el controlador principal. El canal de entrada más crítico (y principal) que viene desde el receptor produce una señal muy ruidosa, lo que conduce a una gran cantidad de cambios menores en la salida de los actuadores, a pesar de que éstos no son necesarios. Estoy en busca de bibliotecas que pueden realizar el suavizado eficiente. ¿Hay alguna señal de suavizar las bibliotecas disponibles para el Arduino (ONU) pidieron a 16 de Feb 14 a las 13:57 Creo ver una gran cantidad de picos de ruido de una sola muestra en su señal con ruido. El filtro de mediana hace mejor en deshacerse de los picos de ruido de una sola muestra que cualquier filtro lineal. (Es mejor que cualquier filtro de paso bajo, media móvil, promedio móvil ponderado, etc., en función de su tiempo de respuesta y su capacidad para ignorar tales valores extremos de una sola muestra pico de ruido). Hay, de hecho, muchas bibliotecas de suavizado de señal para el Arduino, muchos de los cuales incluyen un filtro de mediana. bibliotecas señal de redondeo al arduino. cc: bibliotecas de suavizado de señal en github: ¿Le algo como esto en su trabajo del robot (La mediana-of-3 requiere muy poca energía de la CPU, y por lo tanto rápido): Usted podría filtrar este digital usando la mínima el filtro de paso: cambiar el 0,99 a cambiar la frecuencia de corte (más cercano a 1,0 es menor frecuencia). La expresión real para ese valor es exp (-2pif / fs), donde f es la frecuencia de corte que desee y fs es la frecuencia de los datos se tomaron muestras a. Otro tipo de filtro digital es un filtro de eventos. Funciona bien en los datos que tiene, por ejemplo, los valores atípicos 9,9,8,10,9,25,9. Un filtro de eventos devuelve el valor más frecuente. Estadísticamente este es el modo. promedios estadísticos, como media, la moda, etc., pueden ser calculados usando la Biblioteca Media Arduino. Un ejemplo tomado de la página de la biblioteca de Arduino que se refiere a: Detectar la presencia humana y el tacto de detrás de varios milímetros de material, o detectar cambios en los niveles de agua desde el exterior de un recipiente de plástico. Esta biblioteca está destinado a ayudar a determinar el cambio en la capacitancia relativa por las razones anteriores, y no para el cálculo de la capacitancia exacta. capacitancia relativa se halla midiendo el tiempo que tarda una enviar pines de Arduino para cargar un recibir patillas a ALTO (en microsegundos). Los cambios en el campo eléctrico alrededor de un sensor conectado a la clavija de recibir (tales como pasar un humano por, o el agua de llenado, o un motor de encender) tienen un impacto mensurable sobre la cantidad de tiempo que toma para cargar el pasador de recibir. Muchas de estas lecturas de carga y descarga se toman, a continuación, en promedio dentro de la biblioteca para reducir la variabilidad y dar una respuesta más clara de lo que es la lectura del sensor. Esto se hace sin demora, de modo que sólo tiene un pequeño impacto en el rendimiento del bucle principal (). Véase el siguiente ejemplo para el cableado de ayuda y programar el Arduino con esta biblioteca. Conectar Arduino pin digital 2 a una resistencia 10Meg8486 Conectar el otro extremo de la resistencia 10Meg8486 a Arduino pin digital 3 Conecte Arduino pin digital 3 a un trozo de material conductor (papel de aluminio) Cubrir el material conductor con un material no conductor de carga (cinta) Ejemplo Boceto en el Arduino Abrir una conexión en serie a 115200 baudios para ver los valores reportados tocar o mover la mano por el sensor Ejemplo Esbozo Arduino C la sensibilidad es lo lejos que el sensor puede detectar cosas, o la cantidad de resolución que tiene que reconocer el cambio en las lecturas del sensor. Aumentar la sensibilidad ya sea agregando más resistencias en serie (20Meg, 30Meg, o más), o aumentar el área de superficie (tamaño) de la pieza de aluminio usado como el sensor. Disminuir la sensibilidad, ya sea disminuyendo la cantidad de resitance (use solo 1Meg o menos), o reducir el área de superficie (tamaño) de la pieza de aluminio utilizado como sensor. La variabilidad es cómo fluctúan violentamente las lecturas del sensor. Esta biblioteca ayuda a ajustar la variabilidad tomando una media móvil de muchas lecturas en el tiempo. Esto se hace sin demora por lo que tiene poco impacto en el rendimiento del bucle principal (). Menos lecturas variable que no te fluctúan tan rápido se puede lograr mediante el aumento del tamaño de la muestra: setSampleSize (1000). Más lecturas variables que fluctúan rápidamente se puede lograr por la disminución de tamaño de la muestra: setSampleSize (10). Debe llamar de forma continua actualización () en el interior del bucle () con el fin de utilizar los métodos en tiempo real con etiqueta a continuación. RBD :: constructor de capacitancia (sendpin, receivepin) Crear un nuevo sensor de capacitancia y pasar en los números de pin de Arduino para el envío y recepción pins. Once que está cómodo con el software de Arduino y el uso de las funciones integradas, es posible que desee ampliar la capacidad de la placa Arduino con bibliotecas adicionales. ¿Qué son las librerías Las librerías son un conjunto de código que hace que sea fácil para que usted pueda conectarse a un sensor, pantalla, módulo, etc. Por ejemplo, la biblioteca incorporada LiquidCrystal hace que sea fácil hablar con pantallas LCD de caracteres. Hay cientos de bibliotecas adicionales disponibles en Internet para su descarga. Las bibliotecas incorporadas y algunas de estas bibliotecas adicionales se enumeran en la referencia. Para utilizar las bibliotecas adicionales, tendrá que instalarlos. Cómo instalar una biblioteca mediante el Administrador de bibliotecas Para instalar una nueva biblioteca en el IDE de Arduino se puede utilizar el Administrador de bibliotecas (disponible en la versión 1.6.2 del IDE). Abrir el IDE y haga clic en el menú Dibujo y, a continuación incluyen Biblioteca Administrar gt Bibliotecas. A continuación, el administrador de la biblioteca se abrirá y usted encontrará una lista de las bibliotecas que ya están instalados o listos para su instalación. En este ejemplo vamos a instalar la biblioteca de puente. Desplazarse por la lista para encontrarlo, a continuación, seleccione la versión de la biblioteca que desea instalar. A veces, sólo una versión de la biblioteca está disponible. Si no aparece el menú de selección de versiones, no se preocupe: es normal. Por último, haga clic en instalar y esperar a que el IDE para instalar la nueva biblioteca. La descarga puede tardar dependiendo de su velocidad de conexión. Una vez que haya terminado, una etiqueta con aparato debe aparecer junto al puente de la biblioteca. Puede cerrar el gestor de bibliotecas. Ahora puede encontrar la nueva biblioteca disponible en el menú Biblioteca Incluir. Si desea agregar su propia biblioteca de abrir un nuevo tema en github. La importación de un. zip biblioteca Las bibliotecas a menudo se distribuye como un archivo ZIP o carpeta. El nombre de la carpeta es el nombre de la biblioteca. Dentro de la carpeta será un archivo. cpp, un archivo. h y con frecuencia un archivo keywords. txt, carpeta de ejemplos, y otros archivos requeridos por la biblioteca. Desde la versión 1.0.5, puede instalar las bibliotecas 3 ª parte en el IDE. No descomprima la biblioteca descargado, dejarlo como está. En el IDE de Arduino, navegar en boceto gt incluyen Biblioteca. En la parte superior de la lista desplegable, seleccione la opción de añadir Biblioteca. ZIP. Se le solicitará que seleccione la biblioteca que desea añadir. Vaya a la ubicación de archivos. zip y abrirlo. Volver al menú Importar biblioteca del bosquejo del gt. Ahora debería ver la biblioteca en la parte inferior del menú desplegable. Está listo para ser utilizado en su dibujo. El archivo zip se han ampliado en la carpeta de bibliotecas de su Arduino esboza directorio. NB: La biblioteca estará disponible para su uso en los bocetos, pero los ejemplos de la biblioteca no será expuesta en los ejemplos de archivos GT hasta después de la IDE se ha reiniciado. Instalación manual Para instalar la biblioteca, primero salga de la aplicación Arduino. Descomprima el archivo ZIP que contiene la biblioteca. Por ejemplo, si usted está instalando una biblioteca llamada ArduinoParty, descomprimir. zip ArduinoParty. Debe contener una carpeta llamada ArduinoParty. con archivos como ArduinoParty. cpp y. h ArduinoParty interior. (Si el. cpp y. h enviaban en una carpeta, usted necesitará crear uno. En este caso, youd hacer una carpeta llamada ArduinoParty y se mueven en él todos los archivos que estaban en el archivo ZIP, como ArduinoParty. cpp y ArduinoParty. h.) Arrastre la carpeta ArduinoParty en esta carpeta (carpeta de bibliotecas). En Windows, es probable que se llama Mis DocumentsArduinolibraries. Para usuarios de Mac, es probable que se llama Documentos / Arduino / bibliotecas. En Linux, será la carpeta de bibliotecas en su cuaderno de dibujo. Su carpeta de la biblioteca de Arduino ahora debería tener este aspecto (en Windows): o así (en Mac y Linux): Puede haber más archivos de sólo la. cpp y. h, sólo asegúrese de libertad con todo lo que hay. (La biblioteca no funcionará si pones el. cpp y. h directamente en las bibliotecas de la carpeta o si theyre que anida en una carpeta adicional, por ejemplo:. DocumentsArduinolibraries ArduinoParty. cpp y no funcionará DocumentsArduinolibraries ArduinoParty ArduinoParty ArduinoParty. cpp.) Reinicie el Arduino solicitud. Asegúrese de que la nueva biblioteca aparece en el elemento de menú Sketch-gtImport Biblioteca del software. Eso es todo Usted ha instalado una biblioteca Este tutorial basado en texto por Limor Fried. El texto guía del empezar con Arduino es bajo licencia de Creative Commons 3.0 License Reconocimiento-Compartir bajo la misma. Ejemplos de código en la guía se liberan en el dominio público. Compartir


No comments:

Post a Comment