Interfaz microcontrolador a electrómetro de Forrest Mims (2 / 3 paso)

Paso 2: Software

Hay tres partes principales del software; (1) la configuración (timer1, los puertos y comparador), (2) el efecto estroboscópico LED y (3) realizar la conversión ADC.

Los fusibles del ATtiny2313 deben configurarse adecuadamente para seleccionar el reloj interno de 1Mhz. El siguiente enlace www.engbedded.com/fusecalc es útil para simplificar la lógica inversa ligeramente confusa utilizada para programación de fusible. El archivo fuse.txt siguiente muestra el comando que utilizó para programar los fusibles.

Otra cosa es que los puertos de programación flashes se superponen a PORTB, que tal vez necesite desconectar los LEDs mientras programa el ATtiny2313. Las instrucciones de construcción están en el archivo build.txt a continuación. (Sólo como una comprobación de cordura, imprimir los tamaños de código y el mapa variable.)

Usé un alcance de varios canales para la depuración. Habría sido difícil para mí encontrar algunos de los 'errores' de lo contrario. Me tomó un tiempo para averiguar que el efecto estroboscópico LED interfería con la conversión. Para depurar este tema, que sospeche fue relacionadas con las interrupciones, utilicé el puerto sin usar de PORTD y ponerlo en el inicio de la interrupción y es justo antes del final. El problema era que mientras que era fácil de leer y entender, tomó sobre 500μS para ejecutar el código del efecto estroboscópico en la rutina de servicio de interrupción. Reescribió el código por lo que tuvo pocas líneas (pero más complicado y menos comprensible), y esto se convirtió en menos de un problema. También decidió deshabilitar las interrupciones de efecto estroboscópico durante la conversión.

La configuración es sencilla, timer1 se utiliza para provocar la interrupción del efecto estroboscópico (1000 ciclos a 1Mhz). El comparador se activa para activar un temporizador de captura en un flanco ascendente. Todos los bits del PORTB y PORTD son tri-indicó inicialmente. Las unidades de LED (6 pedacitos en PORTB, 4 en PORTD) están habilitadas. Los puertos de conducción las resistencias de carga y descarga se establecen en alta y baja respectivamente. El condensador se descarga, luego se habilitan las interrupciones. Esto es seguido por un bucle infinito de las conversiones que siguieron mostrando el resultado.

El efecto estroboscópico LED es conceptualmente simple, pero un poco complicado por el hecho de la los bits están divididos en dos puertos. El efecto estroboscópico funciona en un ciclo de 10 ms. En el primer ciclo, LED0 y LED1 están activados, en el próximo ciclo, LED1 y LED2 se activan y así sucesivamente, hasta que el último ciclo en el cual LED9 y LED0 están habilitados. Las máscaras permiten se almacenan en un arreglo estático previamente computada display_mask_B y display_mask_D y los ciclos de rutina de interrupción a través de cada una de las 10 máscaras.

La conversión ADC funciona deshabilitando la interrupción del timer1, carga el condensador (y el tiempo de inicio que es el valor de timer1) hasta la salida del comparador. Entonces el condensador se descarga para 5 * R_DIS * C_CHR que se trata de 60μS. Se mide el tiempo tomado para la conversión por la interrupción de captura del timer1 (provocada por un flanco ascendente en la salida del comparador). La interrupción del timer1 está habilitada y la diferencia de tiempo calcula. El cálculo es sencillo, ya que la conversión tarda menos de 1mS. (Recuerde que el contador envuelve cada 1000 garrapatas).

Inicialmente traté de calibrar la salida de medición y cálculo, pero comenzó a complicarse demasiado, así que decidí mostrar temporalmente el resultado usando una rutina de debug_led_value (que muestra el valor de 10 bits binario, mantenga la pantalla por un segundo) y jugar con ciertos parásitos atmosféricos. Esto le dio una gama (subjetiva) de tiempos de garrapatas 136-351. Luego escribió algunos código de ramificación para asignar este rango en un número entre 0 y 10 y utiliza esto para mostrar las barras. Esto trabajó satisfactoriamente. (Calibrado el dispositivo antes de ensamblar, ya que esto involucra volver a grabar el ATtiny2313.)

Artículos Relacionados

Arduino Electrómetro/capacitivo Sensor de objetos

Arduino Electrómetro/capacitivo Sensor de objetos

es mi pasión como un fabricante de robots.  He hecho una docena o así, sobre todo utilizando Arduino.  La cosa es, tipo de estoy aburrido por la mayoría de los robots que consiguen seguidores de línea hecho, sumo, photophobes/vores, viga, etc..  Lo q
Microcontrolador DIY - dinamómetro de mano

Microcontrolador DIY - dinamómetro de mano

Hizo este dinamómetro de mano DIY como un sensor para el microcontrolador PICAXE. También se puede utilizar para Arduino o cualquier microcontrolador también.Lista de los materiales que utiliza para hacer el dinamómetro de mano:1) ejercitador de mano
Construir su propia interfaz de Sampler electrónico para Ableton

Construir su propia interfaz de Sampler electrónico para Ableton

Hola. Actualmente soy un estudiante de tecnología de música de segundo año. El objetivo de este proyecto fue diseñar un nuevo instrumento de alguna forma.En definitiva, es una interfaz electrónica y se puede volver a asignar una variedad de propósito
Construcción de una "batería de Bagdad"

Construcción de una "batería de Bagdad"

la intención de este instructable es proporcionar ideas para experimentar con la química de la batería en general y para resumir mi experiencia en la producción de una réplica de lo que se conoce como la Batería de Bagdad. En mi versión de la réplica
Tacómetro óptico basado en Arduino

Tacómetro óptico basado en Arduino

hace más de diez años puse una página web con instrucciones detalladas sobre la construcción de un motor eléctrico simple basado en una de serie de TV mundo de Beakman. Llamó la página "Motor de eléctrico de Beakman" y durante los años que ha te
Self balancing one wheeled electric skateboard

Self balancing one wheeled electric skateboard

NOTE:Mayo de 2011: Este instructable es ahora bastante antiguo (relativamente) y ahora pude reconstruir este proyecto más simplemente con un Arduino como el controlador.Actualmente estoy trabajando en un monociclo con el mismo controlador de motor OS
Ecografía de analógica telémetro

Ecografía de analógica telémetro

Cuando comencé mi carrera en sistemas de control que estaba fascinado con las muchas diferentes maneras en que las máquinas podría conectarse con el medio ambiente que operaban en. Interruptores de límite (eléctricos y ópticos), codificadores, resolu
Microcontrolador basado en cargador de batería elegante

Microcontrolador basado en cargador de batería elegante

El circuito lo que estás a punto de ver es un cargador de baterías inteligente basado en ATMEGA8A con corte automático. Diferentes parámetros se muestran a través de una pantalla LCD durante los Estados de carga distintos. También el circuito hará so
Hacer una sudadera de protoboard (instantánea electrónica usable!) ¿

Hacer una sudadera de protoboard (instantánea electrónica usable!) ¿

Son vestibles electrónica el futuro? ¡Eso creo! Aquí es el proyecto de electrónica usable más rápido, más versátil, la sudadera de la protoboard.En su mayoría, wearables involucran hilo conductor para el cableado. Pero ese tipo de cosas atasca mi máq
Elegante interfaz de teléfono

Elegante interfaz de teléfono

Fresco forma de interfaz el iPhone Siri o Android "google ok" teléfono inteligente "AI" con una cara humanoide!Va a interactuar con cualquier sonido que conecte via cable por componentes. La cabeza tiene las siguientes características,
Mesa tambor interactivo, Light-Up con interfaz personalizada

Mesa tambor interactivo, Light-Up con interfaz personalizada

Este proyecto fue un regalo para mi hermano (batería), que decidió convertir un bombo en una mesa para su nuevo apartamento. He instalado algunos LEDs RGB en el interior y diseñado una interfaz para controlar las luces de dos formas diferentes (mezcl
"DIY - excelente línea TRACER ROBOT sin microcontrolador"

"DIY - excelente línea TRACER ROBOT sin microcontrolador"

HolaSoy Ajinkya DixitEste es mi primer proyecto de robótica - "La línea TRACER ROBOT sin microcontrolador"Estos robot no contiene ningún tipo de microcontroladores, en lugar de otro utiliza solo circuito integrado (IC) y algunas otras piezas de
Básicos de transistor - MOSFETs

Básicos de transistor - MOSFETs

(En primer lugar, he hecho algunas modificaciones al código HTML para este I'ble, que está optimizado para el sitio de escritorio, por lo que no puede ser visto idealmente en un dispositivo móvil.)Los transistores son sin duda el componente electróni
Edison de Intel y plataforma Ridemakerz RC chasis

Edison de Intel y plataforma Ridemakerz RC chasis

Cuando me invitaron a participar en el concurso de Intel Internet pensé que era una gran oportunidad. En primer lugar, me daría acceso a algunos sensores y hardware realmente impresionante. Soy un fabricante en un presupuesto, por lo fue genial. Yo t