Algoritmo de detección de Pitch de Arduino (usando AMDF) (2 / 8 paso)

Paso 2: Restricciones de la plataforma

El Arduino Uno (ATMega328P o no "P") y su inherente limitación

Arduino es divertidos, pero son nativamente simples en cuanto a poder computacional. Su equipo es más probable es que un equipo de 64 bits, lo que significa que usted puede realizar operaciones aritméticas sobre números binarios 64 pedacitos largos. La ONU tiene sólo 8 bits que es un octavo del ancho de banda además de un espacio de mayor frecuencia (~ 2Ghz a 16mhz) y corazones y bla bla bla...

Significado, que utilizando un Uno es computacionalmente en una situación de desventaja. Manipulación de Puerto simple de LEDs y pequeños motores son lo suficientemente buenos para ese propósito, pero algoritmos que crunch un montón de números manteniendo el tiempo correcto es bastante difícil conseguir suficiente velocidad y precisión.

Mucho el bajo consideración son límites específicos para el Arduino Uno y yo los estoy analizando como un ejercicio de principios de ingeniería. Como futuro ingeniero (aún estoy en Colegio, yahoo), tuve que analizar todos los aspectos del problema. Para mis propósitos, ya había entendido que 8 bits no es suficiente así que compré un Arduino debido por lo que yo puedo permanecer dentro de la precisión de 32 bits nativo de un tipo de datos entero (en el correo en el camino). Utilizando una herramienta matemática como Matlab, podido hacer esa determinación antes de incluso codificadas en el Arduino Uno. Puede ver imágenes de las pruebas que hice en algunas formas de onda en el siguiente paso. Pero, continué en el enfoque de 8 bits sólo para *** y se ríe.

Límite de 8 bits

Contando de 0 a 255 de la chupa. Sobre todo cuando haces un operador matemático que debe permanecer dentro de ese límite. Tan su precisión real para ese tipo de operación realmente cae desde 8 bits a 7 bits para agregar y permanecer dentro de esa ventana de números binarios.

Si no es evidente para usted, la razón es desbordamiento. Desbordamiento se produce en un dispositivo electrónico cuando intenta hacer una operación matemática que va fuera de los límites de los límites. Así, por ejemplo, restar -128 de 128 le da (128 + 128) = 256. Boom... algoritmo matemático roto.

Tipos de datos cifrada por encima de 8 Bits

Sumar dos números de 8 bits tarda un ciclo de instrucción nativo, agregando un entero de 16 bits será tomado no menos de tres ciclos de instrucción. Esto puede no sonar a mucho ya que un ciclo es el inverso de la frecuencia del cristal (16Mhz ^ -1) que trata de 63ns. Aquí en el problema con la multiplicación de los ciclos de instrucción por 3; Como mínimo, cuando tienes que hacer 400 sustracciones, 400 adiciones (en un tipo de datos más grande hasta 800 ciclos de instrucción), entonces una división (que tiene 200 + ciclos de instrucción) que es una iteración de aproximadamente 200 iteraciones más... su velocidad de reloj relativamente lento llega a ser muy evidente para usted.

ADC de 10 bits de precisión

El ADC en un Uno tiene una precisión de 10 bits, pero basado en la restricción anterior de 7 u 8 bits, sabes que no se puede utilizar todo; Sólo será una pérdida de poder computacional a utilizar todo el ancho. También, usando analogRead() es sólo un gasto derrochador de tiempo. Mire en la manipulación directa del puerto!

Artículos Relacionados

Control de Arduino usando app android

Control de Arduino usando app android

En este instructables voy a explicar cómo controlar los pernos del IO de arduino usando una aplicación para android, que voy a escribir aquí.La comunicación será a través de ethernet y usaremos la solicitud GET para activar el IO.Vamos a empezar!Paso
Termómetro de Arduino usando el Sensor de temperatura LM35

Termómetro de Arduino usando el Sensor de temperatura LM35

Termómetro de Arduino usando el Sensor de temperatura LM35 es una muy simple de implementar Arduino basado en proyecto. Su inició un proyecto perfecto si usted es un principiante y acaba prácticamente pruebas proyectos de Arduino.En este proyecto nos
Como leer una tarjeta de arduino usando LabVIEW

Como leer una tarjeta de arduino usando LabVIEW

Este video muestra como leer una tarjeta de Arduino usando LabVIEW. LabVIEW tiene una gran interfaz que hace fácil guardar los datos de una tarjeta de Arduino. Uno de los mayores desafíos cuando se utiliza una tarjeta de Arduino que es endiabladament
Frente a la detección y seguimiento con Arduino y OpenCV

Frente a la detección y seguimiento con Arduino y OpenCV

versiones20 de febrero de 2013: En respuesta a una pregunta de estudiante Hala Abuhasna si desea utilizar la clase Serial. net, utilice la Convención de nomenclatura "\\\.\\COMn" y reemplazar n por un número > 9 para definir el puerto com par
Proyecto simple de detección de movimiento de Arduino

Proyecto simple de detección de movimiento de Arduino

Este es un tutorial muy básico para principiantes de Arduino, hemos tratado de mantenerlo simple y al punto, uso de sensores de detección de movimiento PIR y cómo controlar el LED basados en el outpu del sensor.y así en pocas palabras, la idea princi
Luz detección de 433 MHz Arduino RF inteligente de persianas

Luz detección de 433 MHz Arduino RF inteligente de persianas

El objetivo de este proyecto era convertir normal 2" madera listón persianas persianas en"smart"persianas que abren automáticamente durante el día y cierran por la noche. Hay dos botones que permiten que las persianas que temporalmente abri
Reloj binario de Arduino usando LED Matrix

Reloj binario de Arduino usando LED Matrix

Este sitio tiene muchos puestos finas que describe la construcción de los relojes binarios. Soy tremendamente inestable, sin embargo y tienen dificultad para cualquier soldadura. Por lo tanto quería hacer mío de una matriz de 8 x 8 LED MAX7219-contro
Reloj de Arduino usando reloj estándar

Reloj de Arduino usando reloj estándar

es un reloj relativamente simple de construir, el hardware necesario y conectar todos los cables. La complejidad reside en el software, que convenientemente he incluido como parte de este instructable :)Este instructable muestra un par de cosas:* Man
Haga un preciso reloj de Arduino usando solamente un alambre - sin hardware externo es necesario!

Haga un preciso reloj de Arduino usando solamente un alambre - sin hardware externo es necesario!

Cómo hacer un reloj de Arduino - sin usar osciladores externos o fichas del reloj:(más de mis proyectos en nuestro sitio web de investigación - haga clic en la parte superior logo de arduino de la página de inicio)Se necesita:Una placa Arduino (cualq
Coche sencillo arduino usando el módulo Bluetooth HC-06

Coche sencillo arduino usando el módulo Bluetooth HC-06

La forma más sencilla de construir un coche de Arduino y controlarlo con tu dispositivo android.Paso 1: Cosas necesarias: Ordenador portátil con el software de Arduino.Cualquier Arduino. (Estoy usando a Leonardo).Dos motores de CC con llantas conecta
Xbox de mod controlador del 360 Arduino usando (MW3)

Xbox de mod controlador del 360 Arduino usando (MW3)

no quiero comprar un chip de controlador de modded por dos razones uno sólo hacen una cosa y dos que se convierten hacia fuera rápidamente, haciéndolos inútiles para nuevos juegos de la fecha. Así que el arduino que solo recogí parecía perfecto, es p
Controlar una placa de Arduino usando un Control remoto infrarrojo

Controlar una placa de Arduino usando un Control remoto infrarrojo

-IntroducciónHola a todos, mi nombre es Noreddine Kessa, soy un entusiasta de la electrónica.  Me divertí mucho este fin de semana jugando con mi juguete nuevo, Kit Arduino ATmega328 DIY que he conseguido en eBay, y me encantaria compartir la alegría
Simplificado de medición de corriente CA Arduino usando el Sensor de efecto Hall ACS712

Simplificado de medición de corriente CA Arduino usando el Sensor de efecto Hall ACS712

Este es un simplificado enfoque mi Instructable previo con respecto a la corriente con el sensor de corriente ACS712 medición AC... enlaceSimplificaciones son:Eliminando el especial circuito de acondicionamiento de señal - en lugar de ello vamos a ut
Cómo programar Arduino usando Vexplorer

Cómo programar Arduino usando Vexplorer

este instructable será sobre el uso de arduino para controlar la vexplorer revell. Más adelante se pueden añadir tantos sensores que desee. Si no tienes la mayoría de las piezas ya esto le costará unos 200 dólares. Mayoría de los bits electrónicos qu