Patrocinado por...

miércoles, 28 de septiembre de 2011

sábado, 10 de septiembre de 2011

Como solucionar conversiones de unidades de medidas www.convertworld.com

 www.convertworld.com
conversión de unidades de medida

Muchas veces tengo dudas sobre la conversión de unidades de distintas medidas, sobre todo las eléctricas. He buscado en google, varias páginas que hacen las conversiones a las distintas undidades.

La que me ha gustado más es esta:
http://www.convertworld.com/es/capacidad-electrica/

viernes, 9 de septiembre de 2011

Explicación : Que es un Registro de Desplazamiento. Ejemplo de uso del 74ls164N

Fuente Original: http://www.ucontrol.com.ar/Articulos/registros_de_desplazamiento_74164_4094/registros_de_desplazamiento_74164_4094.htm




INTRODUCCIÓN:
Un "registro de desplazamiento" es una configuración circuítal muy utilizada, generalmente para convertir un flujo de datos en forma serial a uno del tipo paralelo, motivo por el cual a menudo los chips encargados de esta tarea son llamados "conversores serie-paralelo".
Por supuesto, es posible construir un registro de este tipo a partir de componentes discretos, aunque en la practica resulta no solo inapropiado por cuestiones de tamaño y velocidad, si no también económicas, ya que un chip como los que mencionaremos en este texto rara vez superan el valor de 1 u$s.
 

> El registro de desplazamiento:
La mejor manera de entender conceptos nuevos es apoyándose en analogías con temas que nos son familiares. En este caso no vamos a hacer una excepción, por lo que utilizaremos como ejemplo el funcionamiento de una cola, como la de un banco o supermercado.
Supongamos que dos tipos de personas pueden formar parte de una cola. Estos dos tipos de personas son las que se ven en la figura siguiente, y es imposible confundir una con otra. Es decir, siempre estaremos seguros que en una posición determinada de la fila esta una u otra persona. Las llamaremos "0" (el "gordito) y "1" (al mas flaco).
Aclaro que la elección de los personajes solo tiene que ver con el parecido (?) con el 0 y el 1.

"0" y "1", nuestros personajes.
La cola que usaremos como ejemplo tiene 8 lugares, que hemos numerado del 0 al 7, pero nada impide trabaja con colas más largas, por lo que todo lo que se vea aquí, puede ser generalizado para colas de la longitud que se desee.
 

La cola utilizada como ejemplo tiene 8 posiciones.

Otra particularidad de nuestra hipotética cola es que nunca puede estar vacía. Todas sus posiciones tienen que estar ocupadas, ya sea por "gorditos" o "flacos". En el estado inicial, la cola se encuentra completamente llena de "gorditos", como se a continuación:

El estado inicial de la cola es este: completa de "gorditos".
Nuestra cola funciona como cualquier cola de la vida real: cuando alguien nuevo llega a la fila, se coloca en el lugar de mas atrás, que en este caso corresponde a la "posición 0". Como la cola tiene una longitud máxima (en nuestro ejemplo) de 8 posiciones, para hacer lugar al recién llegado, es necesario que todos los que estaban en la fila "avancen" una posición. El que estaba en la posición 0 pasa la 1, el que estaba en la 1 pasa a la 2, y así hasta llegar al que estaba en la posición 7, que "sale" por el extremo opuesto.
 

Llega un nuevo integrante a la cola....
 

...y ocupa el ultimo lugar, desplazando a todos los demás una posición. El primero "sale" de la fila.


Este es el estado final de nuestra fila, con el nuevo integrante en el último lugar.
Si continuaran ingresando personas en la fila, el proceso se repetiría con cada nuevo integrante que llegue. Como el que entra primero es el primero en salir, a este tipo de colas se las llama "FIFO", por First Input, First Output (Primero que entra, primero que sale).
 

Con todas estas cuestiones en mente podemos seguir avanzando en la comprensión del funcionamiento de los registros de desplazamiento. Supongamos que queremos que en la cola haya dos flacos en los primeros lugares, luego un gordo, otra vez dos flacos, luego otro gordo por ultimo dos flacos más (como siempre, 8 personas en total). Sabiendo que cada personaje que ingresa en la cola "empuja" a todos una posición a la derecha, si queremos que el que termine ocupando el extremo derecho de la cola sea un flaco, ese será el que primero debe entrar. Siguiendo el razonamiento anterior, los personajes deberían entrar en la fila en el orden siguiente:


Los nuevos integrantes de la fila, esperando para ocupar su lugar.


Este es el estado final de nuestra fila, con los integrantes originales desplazados hacia la derecha.
Poniendo fin a nuestra analogía, tendríamos que los integrantes de esta hipotética cola son los "0"s y "1"s (o estados altos y bajos) de nuestros circuitos, es decir, nuestros datos. La cola en si es el registro de desplazamiento. Cuando decíamos que el estado inicial de la cola eran 8 gordos, estábamos queriendo decir que al alimentar nuestro circuito, todas las salidas estarán en "0" o estado bajo.
Hay una salvedad, y es la existencia del "reloj". Efectivamente, en un circuito real, los datos pasan al registro de desplazamiento con cada pulso de reloj. Podemos pensar en este reloj como si se tratase de un "maestro de ceremonias", que da una palmada cada vez que alguien debe ingresar en la cola.
Muchos circuitos de registros de desplazamiento "reales" también incluyen un sistema de RESET, que permite poner simultáneamente todas las salidas en "0" o estado bajo, sin necesidad de ingresar 8 ceros seguidos. Esto permite limpiar rápidamente el registro de desplazamiento.
Cuando decimos "rápidamente" nos referimos a que como la velocidad de los pulsos del reloj (CLOCK) no puede ser infinita (típicamente el máximo ronda los 10 o 20 MHz) y cada dato demora el tiempo de un pulso de reloj en desplazarse por el registro, introducir 8 "0"s llevaría 800 ns (100 ns * 8 bits), contra los 100 ns que demora en aplicarse el RESET. No obstante, para obtener los tiempos exactos implicados se debe consultar la hoja de datos del integrado que estemos utilizando, ya que los limites varían incluso con la tensión de alimentación y la temperatura.
> El 74LS164N:
Este interesante circuito integrado de la familia TTL viene en diferentes “sabores”, de acuerdo a la velocidad, temperatura de operación, voltajes y corrientes soportadas, etc. Dichas características dependen de las letras entre el “74” y el “164”.

El integrado 74LS2164N, un registro de
desplazamiento de 8 bits.
Desde el punto de vista técnico, dentro de este integrado se encuentra un “registro de desplazamiento” completo, de 8 bits de largo. Esto significa que se comporta como un conversor serie-paralelo, en el que se introducen pulsos de reloj por un pin (CP) y datos en serie por otro (dos en realidad, unidos por una compuerta AND, cuyas entradas son DSA y DSB). Las 8 salidas van toman los estados indicados por el “tren” de datos de la entrada. Dispone de un pin (el 9) que realiza la función de poner en cero todas las salidas (Reset, MR en el esquema de abajo).

Esquema interno del integrado 74LS2164N
 

Diagrama lógico, extraído de la hoja de datos de Motorola.

Función de cada patilla del 74LS2164N
Los pines 1 y 2 son la entrada de datos. Como dijimos antes, internamente existe una compuerta AND que realiza el producto lógico de los valores de ambas entradas. En general, se unen entre si para que el resultado de la función AND sea igual al valor del dato (ver compuertas lógicas) o bien se pone una de las entradas en alto (conectándola a +5V) para que la otra entrada sea la que determine el valor de la salida. Cualquiera de las dos formas es válida. Por supuesto, existen aplicaciones donde se obtienen datos de dos fuentes distintas, en cuyo caso se conectará una entrada de la compuerta a cada una.
Los pulsos de clock entran por el pin 8. Los datos de la entrada se reflejan en la salida con cada transición bajo-alto del reloj.

La flecha indica el flanco de subida del clock.

Tabla de verdad del integrado (Motorola).
Los pines 3,4,5,6 ,10,11,12 y 13 son (en ese orden) las salidas.
 

> Un circuito real:
El siguiente es un ejemplo de conexión de un 74HC164N:

Ejemplo de conexión.
En el supuesto caso de necesita un registro de desplazamiento mas largo, se utilizan mas circuito integrados (uno por cada 8 bits de largo del registro). Simplemente se deben unir entre si todos los terminales de Clock y Reset (para que funcionen al mismo tiempo) y la ultima salida de uno con la entrada del siguiente, de manera que cada dato que se "desborda" de uno circuito se hace presente en la entrada del siguiente.

Registro de desplazamiento de 32 bits de largo.

jueves, 8 de septiembre de 2011

Uso del chip Shift Register (74HC595) en Arduino

Fuente: 

http://ricardforner.blogspot.com/2011/08/uso-del-chip-shift-register-74hc595-en.html

Uso del chip Shift Register (74HC595) en Arduino

El chip 74HC595 nos permite utilizar una entrada de datos serie, y convertir un byte a 8 salidas en paralelo. Mediante el uso de una entrada de DATA, una de CLOCK y un LATCH, conseguimos con sólo 3 pines de Arduino procesar 8 salidas paralelas digitales.

Destacar que pueden encadenarse varios chips, por lo que si añadimos un segundo chip podemos tener 16 salidas paralelas simultáneas con 2 bytes, y así sucesivamente.


CIRCUITO
Nuestro prototipo para probar la conversión de serie a digital que nos facilita el 595 se basa en el esquema siguiente:

PROTOTIPO
El prototipo implementado en una protoboard tiene éste aspecto.


CÓDIGO FUENTE DE ARDUINO
La prueba se basa en el sistema de señalización del Proyecto PAROCA I, en que se muestran 5 LEDs en frecuencia estroboscópica (10ms / 64 ms) y un LED tricolor en que se mostrará el estado de la batería.
 /*  

  Proyecto.....: PAROCA I  

  Descripcion..: Plataforma Robotica de Carga  

  Autor........: Ricard Forner (RFKSolutions.es)  

  Version......: 0.0.1  

  Fecha........: 03/08/2011  

  Código fuente: Arduino  

 */  

 //Pin conectado a latch pin (ST_CP) del 74HC595  

 const int latchPin = A1;  

 //Pin conectado a clock pin (SH_CP) del 74HC595  

 const int clockPin = A0;  

 //Pin conectado a Data in (DS) del 74HC595  

 const int dataPin = A2;  

 //// Luces intermitentes / strobe  

 int seqLED[5] = {8+16, 8+16, 32+64, 32+64, 128};   

 //// Luces estado bateria  

 const int batteryOk = 2; // verde  

 const int batteryLow = 1; // rojo  

 int batteryStatus;  

 void setup() {  

  initLuces();  

  batteryStatus = batteryOk;  

 }  

 void loop() {  

  doLuces(batteryStatus);  

 }  

 void initLuces() {  

  pinMode(latchPin, OUTPUT);  

  pinMode(dataPin, OUTPUT);   

  pinMode(clockPin, OUTPUT);  

 }  

 void doLuces(int status) {  

  for (int n=0; n<5; n++) {  

   digitalWrite(latchPin, LOW);  

   delay(10);  

   shiftOut(dataPin, clockPin, MSBFIRST, status+seqLED[n]);  

   digitalWrite(latchPin, HIGH);  

   delay(12);  

  }  

 }  



VÍDEOS
Como resultado de lo publicado en el presente artículo, un par de vídeos de su funcionamiento.


http://youtu.be/rz4-_nKAxuc


Video de una rotación secuencial de los LEDs.


http://youtu.be/Z6gJ21Cs3ME

lunes, 5 de septiembre de 2011

Ampliación a 32 canales por puerto paralelo

Me voy a basar en este articulo, para realizar el circuito y el programa en Gambas2, para controlar la aplicación de las salidas con leds:

Articulo Original:
----------------------------------------------------------------------------------------------------------------------
Autor: Pablo Canello


Dirección original del articulo:
http://www.pablin.com.ar/electron/circuito/computer/lpt32/index.htm

Este circuito permite conectar hasta cuatro módulos de control de potencia a un mismo puerto paralelo del PC. Dicho puerto no necesariamente debe ser bidireccional, por lo que cualquier PC por mas antiguo que sea servirá para controlar este sistema.
Si bien a simple vista el circuito parece demasiado complejo, en verdad no lo es. Veamos detalladamente su funcionamiento: Cada integrado es un latch octal, éstos sirven para retener un dato (presente en su entrada) en su salida solo cuando una señal específica se presente. Para hacerlo mas simple: Los pines 2 al 9 de cada integrado son las entradas de datos, los pines 12 al 19 son las salidas, el pin 11 se denomina en inglés Latch Enanble, una entrada de control que causa que los pines 12 al 19 reflejen el dato presente en los pines 2 al 9. Esto quiere decir, a su vez, que los datos presentes en las salidas del integrado no sufren cambios por mas que los datos en la entrada del mismo cambien constantemente siempre y cuando la entrada de control (pin 11) este a masa. Cuando esta entrada de control va a estado alto (a 5v) las salidas quedan conectadas con las entradas haciendo que lo presente en ellas quede reflejado en las salidas. Si dicho terminal de control (pin 11) se mantiene alto y el dato presente en las entradas cambia, el presente en las salidas cambiará también. Como vemos, las entradas de datos de los cuatro integrados están unidas en paralelo. Esto quiere decir que el dato presente en los pines 2 al 9 del puerto paralelo de la PC (los datos presentes en el bus de datos del puerto paralelo) estarán presentes en los cuatro integrados al mismo tiempo. Para que un dato presente en el puerto paralelo del PC solo vaya a modificar un grupo de salidas y no los cuatro usamos los pines de control para determinar cual o cuales integrados deseamos accionar. Esto se logra gracias a que cada pin de control del puerto paralelo maneja solo un integrado. De esta forma logramos controlar 32 salidas independientes (en grupos de 8 salidas por activación).
Cómo controlarlo:
El soft de la PC puede estar escrito en el lenguaje que queramos, siempre que éste tenga la capacidad de poder utilizar el puerto paralelo de la PC. Como no sabemos en que estado se encuentra el puerto paralelo y, por ende, nuestra placa de expansión, lo primero que tiene que hacer el soft es inicializar el circuito. Para eso, pone en 0 el bus de datos del puerto paralelo, con lo que todos sus pines (del 2 al 9) quedan a masa. Luego, espera 10mS para que el dato se establezca en las entradas de los integrados. En realidad, con 1mS alcanza y sobra, pero como el tiempo en este caso nos sobra mejor darle un poco de tiempo extra. Luego de transcurridos los 10mS activamos los cuatro integrados poniendo altos los cuatro pines de control del puerto paralelo. Seguidamente esperamos otros 10mS para que los latches retengan los datos en las salidas y por último ponemos bajos (en cero) todos los pines de control del puerto paralelo con lo que los integrados dejan en las salidas todas los pines apagados (a masa) sin importar el dato que aparezca en sus entradas de ahora en mas. Con esto el módulo quedará inicializado y todas las salidas apagadas.
Cuando se quiera modificar el estado de un grupo de salidas (cada grupo es de ocho salidas y están indicados como Salidas A, Salidas B, Salidas C, Salidas D) se deberá poner en el puerto paralelo (en el bus de datos de éste) el dato que se desea colocar en la salidas del integrado. Luego esperar 10mS para que el dato se establezca correctamente en las entradas de los integrados. Luego poner en alto (en uno) la salida de control del puerto paralelo que comande el integrado que se desea modificar y esperar otros 10mS para que el dato se fije correctamente en los latches de salida del mismo. Transcurrido este tiempo volver a bajar (poner a cero) la salida de control que se subió y el proceso habrá concluido. Es recomendable que, tanto la rutina de inicialización como la de control, esperen 10mS luego de terminar de ejecutarse, a fin de dar un tiempo entre cada ejecución para evitar posibles fallas de activación.
Otro factor muy importante a tener en cuenta es que algunos de los pines de control del puerto paralelo presentan un estado lógico invertido con respecto a la tensión. Esto quiere decir que, un pin con estado lógico normal presenta tensión cuando el bit que lo controla esta a 1 y está a masa cuando su bit se pone en cero. Pero, un pin con lógica inversa, presentará tensión cuando su bit este en cero y masa cuando este en uno. Hay que prestar atención a esto para evitar problemas de control con los integrados o activaciones erráticas.
Este circuito se utiliza en combinación con etapas de control de potencia que le permitirán al usuario manejar artefactos como cargas de 220V, motores, lámparas o incluso relés (que permitirán realizar cualquier acción eléctrica). En el caso de utilizar el sistema para manejar lámparas ú otras cargas resistivas es recomendable el uso de etapas de potencia con triacs, pero si se van a manejar motores, conmutar circuitos de combinación ú otro tipo de diseños que requieran llaves mecánicas entonces se deberán utilizar etapas de potencia con relés. Si lo que se desea es tan solo experimentar lo recomendable es colocar a la salida de cada pin de los integrados una resistencia de 470 ohms, un diodo led con su ánodo a masa tal como un monitor de puerto paralelo. Esto será útil para chequear que el sistema funcione correctamente sin necesidad de conectarle otros dispositivos.
Es muy aconsejable leer la nota "Puerto paralelo estándar o SPP" disponible en la sección Información general de electrónica en nuestro sitio. Leer y analizar la hoja de datos del 74HCT573 es algo muy aconsejable también.

Vista del equipo terminado y funcionando (con LED's de prueba).
El programa Panel 32:
Este programa permite controlar fácilmente cada una de las 32 salidas de este módulo. Para ello basta con hacer un click sobre el interruptor que se desea accionar y la salida correspondiente adoptará el estado debido. Como funciones extra, este programa contiene memoria de encendido, que permite "recordar" la configuración actual de los interruptores y adoptarla en cada encendido. También dispone de cinco memorias las que se pueden establecer, modificar o eliminar con mucha facilidad. Para evitar confusiones a la hora de activar algo hemos incluido un sistema de títulos que el usuario puede definir y aparecerán cuando el mouse pase por sobre cada interruptor. Estos títulos se definen haciendo click derecho sobre los botones y para que los mismos no se pierdan cuando el programa se cierre hay una opción dentro del menú 'Archivo' para salvarlos en un archivo. Por último el menú 'Configuración' permite elegir el puerto paralelo a utilizar y establecer el tiempo de delay (que varía en algunas máquinas). Este delay es un ciclo for next que itera normalmente diez mil veces luego de enviar datos al puerto para que los latches retengan los mismos.
El programa Control 32:
Este otro programa si bien parece mucho mas complejo en verdad tiene menos código operable que el anterior y, adicionalmente, no es tan automático. Lo hicimos con la idea de mostrar al que este interesado en programar para esta placa de 32 salidas como debe hacerlo para que funcione eficientemente y, para facilitar aún mas las cosas, incluimos una suerte de ticket donde se puede observar las funciones ejecutadas en el programa. En este caso el dato a enviar debe establecerse presionando con el mouse sobre los ocho LED's contenidos en el recuadro 'Dato:'.Una vez que encendimos los LED's que queremos ver encendidos en el módulo presionamos El control correspondiente. Si presionamos el botón 'Todos los latch's' se enviará el dato a los cuatro latches, quedando el mismo igual en todas las salidas. Por último el botón 'Inicializar' apaga todos los LED's y envía eso a los cuatro latches, quedando todo en cero. El casillero 'Limpiar' ubicado sobre el monitor o ticket de actividad permite vaciar la lista con la próxima actividad a registrar.
Bajar el programa Control 32
----------------------------------------------------------------------------------------------------------------------


Lo voy a montar con estos componentes

ficha técnica (data sheet) de los que compré:

comprado en ebay en agosto de 2011

N.º Ref. del fabricante:

74HC573N,652

Fabricante:

NXP Semiconductors  




Esquema de pinning: