Ir al contenido principal

Entradas

Mostrando entradas de 2016

Divisor de frecuencia para reloj de 1Hz en VHDL

Los circuitos digitales, a no ser que sean asíncronos, van comandados por un reloj cuya frecuencia puede variar según el tipo de sistema digital del que se trate. Desde microprocesador 6502 que funcionaba con un reloj de 1Mhz hasta los actuales, que funcionan en el orden de los gigahercios, no han pasado ni cuatro décadas. En un sistema digital complejo es habitual que necesitemos obtener diferentes frecuencia de reloj para diferentes subsistemas. Un ejemplo muy claro puede ser el de un reloj digital que tiene que contar los segundos, por lo tanto, necesita un reloj de 1Hz (un pulso por segundo). En este artículo vamos a ver un ejemplo práctico de cómo obtener un reloj de 1Hz a partir de otro de 50Mhz en VHDL, y vamos a probarlo un una FPGA. La técnica usada para dividir la frecuencia de un reloj es usar biestables conectados en cascada. En la siguiente esquema se detalla el funcionamiento. Cada biestable divide la frecuencia a la mitad, así que la idea es ir acoplando biesta...

Placa de control para seis servos basada en Atmega328 (Arduino)

A la hora de diseñar un robot que utilice varios motores servo, nos encontramos con un problema: hay que alimentarlos y son bastante glotones. Un robot articulado normalmente necesitará al menos cuatro servos, lo cual es un problema ya que, dependiendo del tipo de servos, un Arduino podría no ser capaz de proporcionar la intensidad de corriente necesaria para manejarlos. Hay que alimentarlos aparte, lo que también es engorroso, ya que hay que andar distribuyendo cables de alimentación para cada motor. Hay varias soluciones comerciales, pero como es más divertido hacérselo uno mismo, os presento una placa basada en Atmega328 con seis conectores alimentados para servos. Sin más preámbulo, os muestro el esquema y comentamos sobre él. El circuito se ha diseñado para trabajar con 9V, y un 7805 , junto con el condensador electrolítico C4, se encarga de regular la tensión a 5V. La salida de 5V se distribuye a las patillas 7 y 20 del Atmega328, pero también a los seis conecto...

Un (molesto) theremin con Arduino y un HC-SR04

El theremin o eterófono es un instrumento muy peculiar. Se basa en el hecho físico de que un cuerpo dentro de un campo electromagnético producido por un modulación de radiofrecuencia, produce cambios de frecuencia en dicho campo. El theremin usa dos circuitos con dos antenas: uno de volumen y otro de tono. Construir un theremin no es sencillo, pero usando un Arduino y un sensor de ultrasonidos podemos crear algo mucho más básico que no nos va a servir para hacer música, pero sí divertirnos un poco. Si te gusta la serie Big Bang Theory, seguramente recuerdas al doctor Sheldon Cooper tocando un theremin. Si no recuerdo mal, la sintonía de inicio de Star Trek. Con este montaje vamos a poder emularlo, no tanto como músico, sino más bien como compañero de piso molesto. Además del Arduino, necesitamos un sensor de ultrasonidos como el económico HC-SR04 y un buzzer (yo he usado un TMB12A05). Y el código para Arduino es éste. #define MIN_DISTANCIA 30 int echo = 9; // Pi...

Proyecto IoT: Sensor de temperatura wifi con Wifly y DHT11

Hace tiempo que tengo un sensor de temperatura y humedad DTH11 dando vueltas por los cajones, así que ha llegado el momento de probarlo. Junto con un Arduino y un módulo Wifly, voy a mostraros un sensor de temperatura y humedad que envíe datos periódicamente por WiFi a un servidor. Es la base de cualquier proyecto enmarcado en el Internet de las cosas (IoT). El sensor DHT11 Este sensor es muy barato y fácil de usar, así que es perfecto para un pequeño proyecto como éste. El siguiente esquema sacado del datasheet del fabricante muestra cómo ha de conectarse el sensor. Se puede encontrar en versión de tres y cuatro patillas. En la versión de cuatro, una simplemente está desconectada y no se utiliza. Además de los dos pines de alimentación (a 5V), la información se transmite por un único pin conectado al microcontrolador a través de una resistencia pull-up de 5K. En mi diseño he añadido un condensador entre VCC y GND para filtrar la entrada de alimentación. En la...

Simulación de circuitos digitales con ModelSim

ModelSim es un simulador muy usado y con muchas posibilidades. Aunque es de pago, la empresa Altera nos ofrece una versión gratuita. Se trata de ModelSim Altera Starter Edition, y es el simulador por defecto en su software Quartus II y Quartus Prime. Vamos a utilizar un ejemplo muy sencillo en VHDL para ver cómo se realiza una simulación con ModelSim. En concreto vamos a simular el funcionamiento de un circuito combinacional bastante conocido: un multiplexor 2 a 1 de un bit. El funcionamiento es el siguiente: la salida Z tomara el valor de la entrada A si S=0 y el valor de la entrada B si S=1. El código VHDL para modelar este comportamiento es el siguiente. library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity mux_2to1 is Port ( s : in STD_LOGIC; a : in STD_LOGIC; b : in STD_LOGIC; z : out STD_LOGIC); end mux_2to1; architecture behavioral of mux_2to1 is begin z <= a when (s = '1') else b; end behavioral; Para introducir...

El divisor de tensión

El divisor de tensión o divisor de voltaje es uno de los circuitos básicos más usados en electrónica. Se utiliza para diversos fines, pero en electrónica digital es muy útil a la hora de ajustar voltajes entre componentes. Por ejemplo, si queremos usar un sensor que funciona 3.3V y conectarlo a un Arduino que trabaja con 5V, necesitamos una forma de ajustar ese voltaje. Esto es sólo un ejemplo de sus múltiples usos, pero nos da una idea de la importancia que tiene. Básicamente, el divisor de tensión es un circuito con dos resistencias en serie, tal como se muestra en el siguiente esquemático. ¿Cómo consigue este circuito ajustar la tensión? Vamos a hacer unos cálculos sencillos para ver cómo funciona. Queremos saber qué tensión hay en la salida Vout, pero para ello tenemos que calcular la caída de tensión que hay en R1. Vamos a calcularla. La resistencia R1 es de 10Ω, pero tenemos que calcular la intensidad, lo que podemos hacer con Ya que R1 y R2 están en se...

Placa de desarrollo Altera Cyclone II EP2C5T144 FPGA Mini

En un artículo anterior ya analizamos una placa de desarrollo FPGA con un precio muy interesante. Hoy os traigo otra, que aunque es de gama baja, es algo más potente (es una Cyclone II, concretamente una EP2C5T144C8N).  La placa de desarrollo Altera Cyclone II EP2C5T144 FPGA Mini puede encontrarse en Internet a unos 20 Euros o incluso menos. Esta FPGA tiene 4068 elementos lógicos, así que con ella podremos acometer proyectos de una envergadura media (no está nada mal para el precio). Algunas características reseñables son: Dispone de un regulador de tensión de 1,2V para el core de la FPGA y otro de 3,3V para los puertos de entrada/salida. La placa se alimenta con 5V. Oscilador a 50Mhz (la FPGA soporta hasta 300Mhz). Dispone de dos PLLs. Varios bloques de RAM de 4Ks (total: 119.898 bits). Una EEPROM EPCS4 de 4Mbit (sólo programable a través del puerto AS). Todos los pines de E/S están conectados a las cabeceras y están bien identificados en el PCB. En ...

Digispark Attiny USB (un Arduino en miniatura)

El microcontrolador Attiny85 no es muy potente ni demasiado versátil a la vista de los pocos puertos de entrada y salida que tiene, pero es muy pequeño y muy fácil de usar, además de tener un consumo muy bajo y ser muy barato, lo que lo hace perfecto para pequeños proyectos. Cuando un compañero de trabajo me habló de él no pude esperar a conseguir uno, ya que me encajaba perfectamente para un par de ideas que tenía en la cabeza. Este pequeño microcontrolador de 8 bits sólo tiene 8 patillas: las dos de alimentación y 6 para entrada/salida. Además, lleva un oscilador interno de hasta 20Mhz (si se alimenta a 5,5V), con lo que no es necesario añadir ningún oscilador externo. Para un primer contacto he usado una pequeña placa de Digispark. Se trata de la Digispark USB development board . Es muy cómoda de usar ya que puede conectarse directamente al puerto USB, tanto para programarla como para alimentarla. También puede alimentarse externamente a través de los tres pines laterales...