Girino - osciloscopio Arduino rápido (14 / 26 paso)

Paso 14: Cómo la modulación de anchura de pulso funciona

Como se dijo antes, una señal de modulación de ancho de pulso (PWM) es una señal cuadrada con frecuencia fija pero de ancho variable. En la imagen vemos un ejemplo. En cada fila hay una de estas señales con un diferente ciclo de deber (id est la porción del período en el cual la señal es alta). Tomando la señal promedio durante un período, obtenemos la línea roja que se corresponden con el ciclo de deber con respecto a la señal máxima.

Electrónicamente "tomando la media de una señal" se puede traducir a "pasarla a un filtro low-pass", como en el anterior paso.

¿Cómo genera a una señal PWM del Arduino? Hay un tutorial muy bueno sobre PWM:
http://Arduino.CC/en/Tutorial/SecretsOfArduinoPWM
Vemos sólo los puntos que se necesitan para este proyecto.

En el ATMega328P hay tres temporizadores que pueden utilizar para generar señales PWM, cada una de ellas tiene características diferentes que puede utilizar. Para cada temporizador corresponden dos registros llamados A comparar registros de salida / B (OCRnx) que se utilizan para definir el ciclo de trabajo de la señal.

En cuanto a la ADC hay un prescaler (ver imagen), que retrasa el reloj principal para tener un control preciso de la frecuencia PWM. El reloj retrasado se alimenta a un contador que aumenta un Temporizador/contador de registro (TCNTn). Este registro se compara continuamente a lo OCRnx, cuando son iguales se envía una señal a un generador de forma de onda que genera un pulso en el pin de salida. Así que el truco es establecer el registro OCRnx en algún valor para cambiar el valor medio de la señal.

Si queremos una señal de V 5 (máximo) debemos fijar un ciclo de trabajo 100% o un 255 en el OCRnx (máximo para un número de 8 bits), mientras que si queremos una señal de V 0.5 debemos establecer un ciclo de trabajo 10% o un 25 en el OCRnx.

Puesto que el reloj tiene que llenar el registro de TCNTn antes de comenzar desde el principio para un nuevo pulso de la frecuencia de salida del PWM es:

f = (reloj principal) / divisor / (máximo TCNTn)

exempli gratia para el Timer 0 y 2 (8 bits) con sin prescaler será: 16 MHz / 256 = 62,5 KHz mientras que para el Timer 1 (16 bits) será 16 MHz / 65536 = 244 Hz.

Decidí usar el número de temporizador 2 porque

  • Contador de tiempo 0 se utiliza internamente por el IDE de Arduino para funciones tales como millis();
  • Temporizador de 1 tiene una frecuencia de salida demasiado lenta ya que es un temporizador de 16 bits.

En el ATMega328P hay diferentes tipos de modo de operación de los contadores de tiempo, pero lo que quería era el Fast PWM con ninguna escala para obtener la frecuencia máxima de salida posible.

Artículos Relacionados

¿Scintillino - un basada en Arduino rápido y sucio contador de centelleo,

¿Scintillino - un basada en Arduino rápido y sucio contador de centelleo,

te has preguntado acerca de los niveles de radiación alrededor de usted? Bueno hoy puedes construir tu propio detector que mide las radiaciones ionizantes y muestra datos en tiempo real en una pantalla LCD (y también tu ordenador si quieres).El diseñ
Herramienta de línea de comandos "MiniPirate" de Arduino

Herramienta de línea de comandos "MiniPirate" de Arduino

Este de línea de comandos permite el prototipado Arduino "Rápido" sin compilación. Lectura de valores analógicos, dis - habilitar puertos e incluso registro de I2C manipulaciones se realizan en segundos en lugar de minutos. Se muestra cómo estab
Semáforos de Arduino (ORIGINAL)

Semáforos de Arduino (ORIGINAL)

Obtener recursos para el proyectoArduino Uno REV-33 - rojo - amarillo - y verde LEDPaquete de variedad de madera de BalsaProtoboard de 800 puntosCable de conexión de varios coloresCinta invisibleWeller soldadorX-acto cuchilloSharpie negroLoctite Supe
Bumbley - el robot pequeño servo

Bumbley - el robot pequeño servo

Conoce a Bumbley, un poco perdido bot de planeta Teekmar'd - un pequeño mundo que orbita Wolf 359. Bumbley le gusta encontrar buenos escondites y evitar contacto humano a toda costa. Sólo él puede ver en el infrarrojo, así que necesita tu ayuda. Así
Escalera escalada Robot

Escalera escalada Robot

En este instructable les mostraré cómo hacer una escalera muy básica escalada robot. Esto es llevar la escalera que nosotros (mis hijos y yo... ok uno era sobre todo me) construido ServoCity + Actobotics escalera escalador desafío. Resulta que ganamo
Stick2Cane - nunca perder su poca caña

Stick2Cane - nunca perder su poca caña

el problemaEsto es para alguien que tiene problemas de equilibrio, sólo necesita un bastón caminar durante un episodio y físicamente puede caminar lejos de la caña bastante distancia antes de que sea realmente necesario (oops). La idea es instalar un
Construir un Robot cuadrúpedo Actobotics

Construir un Robot cuadrúpedo Actobotics

Cómo hacer un robot a pie 4 patas usando piezas de Actobotics de ServoCity.com:El caballo de batalla de este robot, y lo que hace relativamente fácil de construir, son las servoblocks de Actobotics. Estos ingeniosos componentes le permiten utilizar s
OFFscope - osciloscopio offline (Arduino + SD tarjeta registro rápido)

OFFscope - osciloscopio offline (Arduino + SD tarjeta registro rápido)

Esto no es un osciloscopio de tiempo real!En primer lugar adquirir señal entrando ahorro/lo a la tarjeta SD. Luego revise la señal adquirida en tu PC.Este osciloscopio fuera de línea está diseñado para diagnóstico automotriz sensor. 99% de los sensor
Cómo hacer un osciloscopio de Arduino de bajo costo 16 MHz usando Excel y la pantalla del ordenador a pantalla

Cómo hacer un osciloscopio de Arduino de bajo costo 16 MHz usando Excel y la pantalla del ordenador a pantalla

A menudo un aficionado de electrónica será diseñar y construir algo sólo para encontrar que no se comportan la manera que él o ella prevista. A veces en estas situaciones el problema está relacionado con una señal eléctrica, sino que la materia se mu
Arduino - osciloscopio mejorado del pobre

Arduino - osciloscopio mejorado del pobre

este Instructable continúa el trabajo presentado aquí.  Proporciona una manera rápida y fácil para convertir tu Arduino en un osciloscopio, aunque encontré que estaba falta de usabilidad.  Renovado el software esta mañana para permitir mucho mejor fu
Arduino - osciloscopio multicanal (osciloscopio del pobre)

Arduino - osciloscopio multicanal (osciloscopio del pobre)

presento actualizaciones de software para el osciloscopio de Arduino (del pobre osciloscopio) que permiten para visualizar datos de dos o tres canales simultáneamente. Las principales características son idénticas al original osciloscopio con la exce
Arduino alta velocidad osciloscopio con interfaz de PC

Arduino alta velocidad osciloscopio con interfaz de PC

Usar el Arduino y el PC como un Osciloscopio rápido.Arduino puede recopilar confiablemente lecturas de voltaje a una frecuencia de entre 141 y 153 kilociclos.lecturas de datos de 1000 pueden tomarse en alrededor 6.8ms.Lo transferido a un PC, estos pu
Cómo dibujar en un osciloscopio con Arduino!

Cómo dibujar en un osciloscopio con Arduino!

En primer lugar, permite repasar algunos conceptos básicos. Un osciloscopio es una herramienta para la visualización de cambio de señales eléctricas.Osciloscopio: oscilación (cambiante), alcance (ver). Juntos hacen "osciloscopio".Un osciloscopio
Laboratorio de creación de un prototipo de portátil con osciloscopio y arduino

Laboratorio de creación de un prototipo de portátil con osciloscopio y arduino

Hola todos ya estoy de regreso, con un nuevo proyecto. Yo estaba tranquilo con mi maravillosa hija recién nacida (apenas 7 semanas de edad) cuando empiezo a escribió esto es 00:00 en Alemania y mi hija está durmiendo por fin encontré tiempo para pres