Paso 4: Agregar más circuitos
Una breve nota antes de continuar: las clavijas que va a utilizar cumplen varias funciones que son capaces de realizar para nosotros. En el esquema, las letras y número en el exterior de la caja que representa el chip son los nombres genéricos de pin. PB1, por ejemplo, los soportes para el pin del puerto B 1. Los pines de I/O se agrupan en puertos y pueden utilizarse individualmente o en grupos de hasta el tamaño del puerto. El puerto C es el Chiflado con sólo 7 pernos y Puerto B tiene varios de sus pines se utiliza como pines de programación. Recuerde que podemos reutilizar todo pero el pin de reset, así que sólo PC6 es fuera de límites. También, PB6 y PB7 se utilizan como los pernos de oscilador de cristal, por lo que los límites también, pero sólo cuando es necesario utilizar un oscilador externo.
Vamos a empezar con la entrada de sensor.
Mirando la primera foto, se puede ver que los circuitos de Q1 y Q2 son idénticos. Los sensores proporcionan una señal 12VDC cuando están activos. Esto es demasiado para enviar a un pin de entrada directamente, usé estos interruptores de transistor para detectar cuando el sensor se activa y tire de la clavija de entrada a la tierra.
D4 y D5 están ahí para hacer alineando los sensores más fácil. Estoy usando un sensor de foto con un reflector para rebote el rayo, por lo que cuando se alinean correctamente apague los LEDs y los pines de entrada alta. El software a que más adelante llegaremos observar para que estas entradas ir bajo para indicar el paso del objeto. Resistencias R2 y R3 son resistencias de pull-up en estos pines de entrada para evitar falsas alarmas de ruido. El AVR tiene resistencias de pull-up interna que puede habilitar para cada entrada, pero descubrí que no fue habilitados rápidamente bastante en encender, y una interrupción se activó inmediatamente cada vez. Las resistencias de pull-up externo evitar esto. R14 y R15 fueron agregados en el desarrollo para prevenir el disparo de las interrupciones por tocar los cables en el circuito.
Echar un vistazo a las funciones de las dos patillas conectadas a los transistores. Verás que ambos tienen PCINT(number) y INT(number.) PCINT significa interrupción de cambio de Pin y, si está habilitado, se disparará una interrupción cada vez que el pin cambia de estado de 0 >> 1 o 1 >> 0. Eso es bueno para algunas aplicaciones, pero no para este. La otra función común, INT0/INT1, significa interrupción externa 0 y 1. Estas son las dos interrupciones de este tipo en el chip, y puede configurarse para activar en las cosas positivas o borde de un pulso negativo... Es perfecto para nuestras necesidades. Queremos activar tan pronto como el pin va de 5V a tierra no importa cuando el pin vuelve a alto (a menos que usted quiere intentar medir la longitud del objeto pasa, pero eso es otro proyecto!)
Sé que prometí más sobre interrupciones... sea paciente. Por ahora, basta saber que cuando se activa una interrupción el programa detiene lo que está haciendo y ejecuta el código que escribimos para esa interrupción. Después de ejecutar ese código, el programa vuelve a lo que hacía antes como si nada ha pasado. Nos configurar las interrupciones de software, así que más que en la sección de software, incluyendo algunos escollos para!
Eso es para las entradas de sensor. Así, que estas adiciones en la protoboard y luego te pasamos algunos más conexiones de I/O...
Ahora, en la segunda foto es nuestra primera salida! R4 y D2 hacen la luz de listo que indica que el programa está listo para tomar la siguiente medición. Esto fue una adición tardía después tuve algunos problemas con el segundo sensor disparo varias veces durante una sola medición. Ahora cada sensor puede accionar una sola vez cuando se toma la medida y entonces no otra vez hasta algunos pasa el tiempo. Después de que el tiempo pasa, la luz preparada se enciende y la siguiente medición puede llevarse a cabo. SW4 también fue una adición tardía. Una vez la distancia entre los sensores (véase la sección siguiente), quería una manera de poder comprobar qué valor estaba usando el programa para esa distancia en las matemáticas. Al presionar este botón hace que esa consigna que se mostrará en las pantallas de salida.
OK, SW3. Se trata de un paquete de la inmersión de 8 interruptores que solía obtener algunos datos del usuario en el chip en tiempo de ejecución. se utilizan 6 interruptores y cada uno de ellos conecta a un pin de entrada con el resistor de pull-up interna habilitado (veremos cómo habilitar en el software). Los primeros 4 interruptores representan la distancia entre los sensores en los pies. El rango es de 1-16 pies en incrementos de un pie (0000 = 16.) Originalmente, el rango fue de 1-15 0000 fue 0, y que causa una condición de división por cero. Por esa razón, todas las 4 entradas baja equivale a 16. Aviso que no son 4 entradas en los pines de entrada consecutivos. Eso plantea un poco de un problema cuando supone que un número binario de 4 bits. Debido a esto, tenemos que hacer un poco manipulación en el software para recuperar los 4 bits juntos antes de que se puede utilizar como un valor binario. Los dos últimos interruptores de SW3 son dos entradas más para permitir al usuario elegir las unidades de salida recomendado:. Puede ver la nota sobre esto en el esquema. Las unidades de salida posibles son millas/hr, kilómetros/hora, metros por segundo y pies/seg. Es posible utilizar las unidades que desea por supuesto. Si te gusta furlongs/quincena, puedes hacerlo fácilmente cambiando la aritmética en el programa! Más cositas que esperamos!
Foto 3 muestra los 4 bits BCD (binario codificado Decimal; sólo un número decimal representado por 4 bits. Refrescar su BCD aquí: http://en.wikipedia.org/wiki/Binary-coded_decimal) salida BCD al decodificador de 7 segmentos, el 74LS48. PortB0 - 3 están muy bien agrupados juntos lo que es fácil enviarlos a entradas de BCD del decodificador sin ningún formato. Las clavijas de los decodificadores la etiqueta * Capitolio * A, B, C y D son las entradas de BCD. Por lo tanto, una vez que tenemos nuestro número, podemos solo enviar salida binaria en portB y dejar que el decodificador haga el resto. SW1 es opcional y solo dice el descodificador a la luz todo en las exhibiciones para propósitos de prueba. VCC y tierra deben ser auto explicativo aquí y nos pondremos a * minúsculas * a, b, c, d, e y f siguiente... Una última cosa sobre el decodificador. El perno /LT estamos utilizando para la "prueba de la lámpara" obviamente, pero ¿cuáles son los otros dos pasadores raros? /BI-RBO es no esconder la entrada y salida esconde no-ripple (la barra sobre el nombre es un lógico bajo activo como el pin de reset en el AVR que significa 'no'.) Hay detalles acerca de cómo funcionan estos pines en la hoja de datos, pero si nada más, la entrada de borrado vertical no debe ir a la tierra o la pantalla estará en blanco! Por lo que solo conectado a la fuente de 5v +.
Foto 4 parece más complicada de lo que realmente es. Cada display de 7 segmentos tiene cada uno de su ánodo (positivo) conexiones etiquetadas minúsculas a - f. Los tres muestra a encadenar juntos para que todos los a son atados juntos y la b está ligados juntos y así sucesivamente... Entonces todos conectan con el conector correspondiente en el decodificador para que los datos desde el decodificador va a las tres de la muestra al mismo tiempo. Quizás se pregunte cómo mostrará un número de tres dígitos que tenía diferentes dígitos! Ese es el propósito de Q3, Q4 y Q5. Cada pantalla también requiere una conexión (negativo) de cátodo a tierra para poder iluminar. Por lo tanto, si podemos controlar que pantalla está conectado a tierra y control que cifra el decodificador está enviando, nos podemos recorrer los tres dígitos y tres pantallas realmente rápidos para mostrar un dígito diferente en cada uno! Este proceso se denomina multiplexación. El uso del decodificador de 7 segmentos y multiplexación reduce el número de pines de salida necesaria de 21 a sólo 7. PortC0 - 2 se utilizan para controlar los interruptores de transistor que la muestra del suelo. Esta parte es divertida en software! No puedo esperar!
La última foto muestra el circuito completo. Si no lo has hecho ya, breadboard con cuidado y prepárate volver al estudio de ATMEL...