jueves, 7 de junio de 2012

Simulación y manejo de teclados con Micro.


En el uso de microcontroladores una de las aplicaciones mas usadas es la interacción humana con el dispositivo, ya sea bien para modificar valores, configuración o cualquier otra, por ello es necesario contar con dispositivos adecuados para ello como botones o sensores, en cuaquier caso es necesario controlar la interfaz con estos dispositivos, en este pequeño tutorial mostraremos como utilizar un teclado de varias teclas y su interacción con un microcontrolador, arduino.
>> Leer mas...

lunes, 28 de mayo de 2012

Simulación de arduino en proteus.



Simular un pequeño segmento de código, generalmente, es mas practico que realizar el montaje, por lo tanto es bastante útil saber como simular un sistema de prototipado rápido como lo es arduino. 
Los pasos a seguir son sencillos...

jueves, 24 de mayo de 2012

Reloj Charlieplexing PIC 16F84A.



Para la puesta en practica de la técnica charlieplexing utilizamos un inusual reloj propuesto por alexchin, que muestra la hora en 26 LEDs.
Leer mas>>

viernes, 18 de mayo de 2012

Técnica Charlieplexing para controlar Múltiples LEDs con pocos pines.

¿Que es Charlieplexing?

Charlieplexing es una técnica propuesta a principios de 1995 por Charlie Allen de Maxim Integrated Products, para el control de una pantalla multiplexada en la que los pines de I/O, son relativamente escasos. Un microcontrolador se utiliza para accionar una serie de LEDs. El método utiliza las capacidades de lógica tri-estado de microcontroladores con el fin de ganar eficiencia sobre multiplexación tradicional. A pesar de que es más eficiente en el uso de I/O, hay cuestiones que hacen que sea más complicado para diseñar y hacer que sea imposible su implantación para pantallas muy grandes. debido a el actual ciclo de trabajo y las tensiones directas de los LEDs.

Multiplexación tradicional.

La multiplexación de leds es muy diferente de multiplexación utilizada en la transmisión de datos, aunque tiene los mismos principios básicos. En multiplexación de display, las líneas de datos de las pantallas están conectadas entre sí en paralelo a un bus común en el microcontrolador. Luego, las pantallas se encienden y se dirigen de forma individual. Esto le permite usar un menor número de pines I/O de los que normalmente se utilizarían para controlar el mismo número de display directamente.



Cuando se utiliza charlieplexing, $n$ pines de control puede manejar $n$ dígitos con $n-1$ segmentos. Cuando se simplifica, $n$ pines pueden controlar $n^2-n$ segmentos o LEDs. La multiplexación tradicional necesita muchos más pines para controlar el mismo número de LEDs; $2n$ pines debe ser utilizados para manejar $n^2$ LEDs (aunque se puede usar un chip decodificador de 1 en $m$ para reducir el número de pines I/O del microcontrolador $ n+log_2 n$).

Si el número de LEDs es conocido, entonces la ecuación anterior se puede trabajar hacia atrás para determinar el número de pines requeridos, es decir, los $L$ LEDs puede ser manejados por $n$ pines. 
$$Pines = \frac{1+\sqrt{1+4L}}{2}$$
Si en un numero no entero se utilizara el entero superior mas cercano.
LEDs02612203042567290$n^2-n$
PINES12345678910$n$


Control por complemento

Charlieplexing, en su forma más simple, funciona con una matriz de pares complementarios de los LEDs. La matriz charlieplexed más simple posible sería el siguiente:



Mediante la aplicación de una carga positiva al pin 1 y puesta a tierra el pin 2, el LED 1 se encenderá. Como la corriente no puede fluir a través de LEDs en polarización inversa, 2 LED permanecerá apagado. Si las cargas en los polos 1 y 2 se invierten, el LED 2 se enciende y el LED 1 se apagará.

La técnica Charlieplexing en realidad se utiliza en una matriz más grande que sólo con dos pines, debido a que dos LEDs pueden ser manejados por dos pines sin ningún tipo de conexiones en forma de matriz, y sin siquiera usar el modo de tri-estado. Sin embargo, el circuito de 2 pines sirve como un ejemplo simple para mostrar los conceptos básicos antes de pasar a los grandes circuitos donde, charlieplexing en realidad, muestra una ventaja evidente.

Ampliación: tri-estado lógico

Si tuviéramos que ampliar la cantidad para dar cabida a este circuito de 3 pines y 6 LEDs, se vería así:



Esto presenta un problema, sin embargo. Para que este circuito funcione como el anterior, debemos desconectar uno de los pines antes de aplicar la carga a los dos restantes. Esto se puede resolver mediante la utilización de las propiedades lógicas, la de tres estados de pines del microcontrolador. Los pines del microcontrolador por lo general tienen tres estados, 5V, 0V y entrada. El modo de entrada pone el pin en un estado de alta impedancia que, eléctricamente hablando, "desconecta" que el pin del circuito de multiplexado, es decir, poco o ningúna corriente fluirá a través de él. Esto permite a el circuito seleccionar cualquier número de pines conectados en cualquier momento, simplemente cambiando el estado de la patilla. Con el fin de controlar la matriz de 6 LEDs mostrada, los dos pines correspondientes al LED deseamos activar deben estar conectadas a 5V y 0V respectivamente, mientras que el tercer pin se encuentra en su estado de entrada (alta impedancia). Al hacerlo así, evita la fuga de corriente fuera del tercer pin, asegurando que el LED se desea a la encender es el único iluminado.

Mediante el uso del tri-estado lógico, la matriz teóricamente puede ampliarse a cualquier tamaño, siempre que los pins están disponibles. Para $n$ pines, se puede tener hasta $n(n-1)$ LEDs en la matriz. Cualquier LED se puede encender mediante la aplicación de 5V y 0V a los pines correspondientes y el establecimiento de todos los otros pines conectados a la matriz a modo de entrada.

Aquí un vídeo simulando la aplicación de esta técnica.



En la próxima entrada pondremos en practica esta técnica para hacer un reloj muy simpatico con solo un microcontroldador y pocos pines.

Hasta la proxima...

domingo, 13 de mayo de 2012

Historia Arduino

Naufragando por la web me tope con dos vídeos en el que hablan de los creadores del arduino y como se convirtió en lo que es. También aparecen los patrocinantes y otros emprendedores que apoyaron y crecieron junto a este dispositivo. Sin mas los vídeos.



y la segunda parte.



Espero les guste...

miércoles, 9 de mayo de 2012

Arduino PWM y comunicación serial.

En esta entrada hablaremos de la modulación por ancho de pulso (PWM) y de comunicación serial. si bien el arduino dice tener salidas analógicas estas no son mas que salidas de PWM que se pueden convertir en valores de voltaje estático con un circuito extra, PERO NO LO SON. sin embargo es muy practico utilizar estas salidas para controlar el brillo de un led, la velocidad de un motor, o la temperatura de un generador de calor eléctrico. 

El circuito propuesto para esta experiencia es el siguiente.

Con capturaremos el valor analógico del potenciometro este sera de 10 bits (0-1023) como lo hicimos en el montaje anterior, y lo manejaremos matemáticamente para adaptarlo a los valores de pwm que van desde 0 a 255 y observaremos ambos valores a través del puerto serial. también variaremos el brillo de un led y controlaremos la velocidad de un pequeño motor DC.

el software que estaremos utilizando es el siguiente.

/*
 lectura analogica serial
 lee un valor por la entrada analogia A0 y la envia de forma serial
 para ser visualizada por el monitor serial
 
 */

void setup() {
  Serial.begin(115200); // configura la velocidad del puerto serial
}

void loop() {
  int sensorValue = analogRead(A0); // guarda el valor de la lectura del puerto analógico en sensorValue
  analogWrite(9,sensorValue/4); // divide el valor analogico el PWM es de solo hasta 255
  Serial.print("sensor "); // envia el string sensor a el puerto serial
  Serial.print(sensorValue); // envia el valor del sensorValue a el puerto serial
  Serial.print(" PWM "); // envia el string PWM a el puerto serial
  Serial.println(1024-sensorValue); // envia el valor del PWM a el puerto serial y salta una linea
 
}

y el vídeo del montaje a continuación.


hasta la próxima...

jueves, 3 de mayo de 2012

Arduino lectura analógica y comunicación serial.

Alguna de las bondades del IDE de arduino es que posee una herramienta que monitoriza la comunicación serial del puerto al que se conecta el arduino, esto simplifica la tarea de buscar un software extra que realice esta tarea... en el siguiente video probaremos la comunicación serial d una variable de 10 bits leída del puerto analógico y presentada en forma numérica (0-1023)


Este es el circuito montado para las pruebas.
a continuación el software del arduino.

/*
 Lectura analogica serial
 Lee una entrada analogica (pin A0),
 para ser visualizado en el serial monitor. 
 
 Este ejemplo es de dominio publico.
 */

void setup() {
  Serial.begin(9600);
}

void loop() {
  int sensorValue = analogRead(A0);
  Serial.println(sensorValue);
}
 es el software utilizado

El video del montaje.

La simplicidad del programa habla por si sola y el montaje es supersimple.
Hasta la próxima.

domingo, 29 de abril de 2012

Arduino Uno Rev3 Instalación y Prueba de software.

Hace algunos dias me llego mi arduino uno rev3, la verdad yo soy más de PIC de microchip, pero esta es una herramienta extremadamente poderosas debido al gran auge que ha tenido a nivel mundial, su versatilidad, su simplicidad, su extremadamente bajo costo, corre en casi todos los sistemas operativos y por supuesto que sea de hardware libre.

En función de eso nos aventuramos a explorar las bondades de este sistema.

El primer vídeo de arduino, por supuesto, instalación y prueba del primer programa blink.


Nos vemos en la próxima.

martes, 17 de abril de 2012

Montaje de un Probador de servomotores.

!Hola¡ Aquí esta el montaje del Probador de servomotores diseñado.
 Ver diseño Probador de servomotores
espero les guste...
Hasta la proxima

lunes, 16 de abril de 2012

Probador de Servomotores de Hobby Diseño.

Servomotores de hobby o de modelismo
Un servomotor es un dispositivo parecido a un motor de corriente continua ,normalmente mecanizado, que posee la capacidad de posicionarse dentro de un rango de operación pre diseñado, y mantenerse esta posición con cierto grado de estabilidad.
Mas simplemente un servomotor es un motor eléctrico que consta con la capacidad de ser controlado, tanto en velocidad como en posición.
Los servos se utilizan frecuentemente en sistemas de radio control y en robótica, pero su uso no está limitado a estos. Es posible modificar un servomotor para obtener un motor de corriente continua que, si bien ya no tiene la capacidad de control del servo, conserva la fuerza, velocidad y baja inercia que caracteriza a estos dispositivos.
Características de los servomotores de hobby.
Está conformado por un motor, una caja reductora y un circuito de control. También potencia proporcional para cargas mecánicas. Un servo, por consiguiente, tiene un consumo de energía reducido.
La corriente que requiere depende del tamaño del servo. Normalmente el fabricante indica cual es la corriente que consume. La corriente depende principalmente del par, y puede exceder un amperio si el servo está enclavado, pero no es muy alto si el servo está libre moviéndose todo el tiempo.
Control de los servomotores de hobby.
Los servomotores hacen uso de la modulación por ancho de pulsos (PWM) para controlar la dirección o posición de los motores de corriente continua. La mayoría trabaja en la frecuencia de los cincuenta hercios, así las señales PWM tendrán un periodo de veinte milisegundos. La electrónica dentro del servomotor responderá al ancho de la señal modulada. Si los circuitos dentro del servomotor reciben una señal de entre 0,5 a 1,4 milisegundos variando este rango según su fabricante, este se moverá en sentido horario; entre 1,6 a 2 milisegundos moverá el servomotor en sentido anti-horario; 1,5 milisegundos representa un estado neutro para los servomotores estándares. A continuación se exponen ejemplos de cada caso:
Señal de ancho de pulso modulado:
 
En la imagen tenemos la posición del servomotor para diferentes anchos de pulso
En la imagen A) vemos un pulso que crece y el servo gira en sentido horario.
En la imagen B) vemos un pulso que estático en el centro y el servo esta en una posición fija.
En la imagen C) vemos un pulso que decrece y el servo gira en sentido anti-horario.

El circuito propuesto es el siguiente.

Los cálculos son similares a los de PWM para un motor dc la diferencia basic es que para la carga (t1) se incluyen la resistencia de 2.7K y para descarga (t2) la resistencia de 100k.
la simulación del circuito.

En la próxima publicación se probara en protoboard.

nos leemos...

viernes, 13 de abril de 2012

Control de Velocidad por ancho de pulso PWM Protoboard

Bien aquí esta el circuito de control de motores propuesto por PWM.


La sencilles de este circuito no dio mayores problemas al montarlo funciono perfectamente.
sin embargo algunas consideraciones serian pertinentes.
  1. El voltaje de alimentación máximo del NE555 limita el uso de motores de mayor voltaje. Se pueden separar el control y la etapa de potencia (MOSFET) para mejorar este diseño.
  2. NO conecten el motor directamente al 555 de lo contrario lo quemaran por exceso de corriente a la salida.
  3. Aseguren que la fuente utilizada para la alimentación de motor y/o circuito de control sea adecuada.
  4. El control por ancho de pulso (PWM) no solo sirve para control de motores, también puede ser utilizado para control de iluminación, o incluso comunicación con el control adecuado.
Espero les haya gustado...

hasta la próxima.



martes, 10 de abril de 2012

Controlar velocidad de motor DC por ancho de pulso (PWM).

PWM


La modulación por ancho de pulso (PWM) es una técnica para controlar los circuitos con una salida digital.

PWM se utiliza en múltiples aplicaciones, algunas como controlar la intensidad de una luz y la velocidad de los motores DC.

Un circuito PWM genera una onda cuadrada con una anchura variable.


El ancho de pulso en este circuito se puede variar desde 5% a 95%. Usado como un atenuador, este circuito controla la velocidad del motor según el ancho del pulso. Es una variación de un multivibrador mono-estable.


y sus ecuaciones son:
t1 = ln(2)(R1+R2)*C ; t2 = ln(2)(R2)*C 
ln(2) ≈ 0.693... ; T = t1+t2
luego
T= 0.693*C*(R1+2*R2)
y su frecuencia es 
f=1/T 
para efectos de cálculo vamos a asumir que los diodos son ideales y no tiene perdida. 
Gracias a los diodos la carga del condensador es a través de un diodo (Azul) y se descarga a través del otro(Amarillo), luego si el potenciometro lo definimos como A+B=50k ohm. 
Cuando cargue sera a través de la parte A del potenciometro y cuando descargue sera a traves de la parte B del mismo potenciometro. 
entonces si planteamos las ecuaciones de carga y descarga seran: 
t1 = 0.693*(1K+A)*0.1uF ; t2 = 0.693*B*0.1uF 
Y T = 0.693*(1K+A+B)*0.1uF => T = 0.693*(1K+50K)*0.1uF = 3.53ms 
su frecuencia f = 1/T => 282.9 Hz 
bien estos son los parámetros aproximados del oscilador. 
Este circuito regula la velocidad a través de la potencia del motor que depende de la anchura de pulso que varia aprox. de un 3%( baja potencia / velocidad) a 97% (mayor potencia / velocidad) y se pregunta ¿porque no de 0 a 100%? pues parte del voltaje perdido en los diodos hace imposible llegar a estos valores. 

Bien vamos a ver un vídeo de la simulación.

La principal desventaja de este circuito, como todos los circuitos de PWM, es la posibilidad de generar interferencias de radio frecuencia (RFI). Se puede reducir cambiando el condensador y agregando Filtros de linea. 
Publicare un vídeo con el circuito montado en protoboard, hasta la próxima...
Ver Circuito en protoboard

viernes, 6 de abril de 2012

Puente H Practico protoboard.

Bien este es el puente H propuesto montado en protoboard.

Durante el montaje varios problemas ocurrieron para obtener el circuito deseado.
  1. Un sistema de puente H electrónico con transistores no puede ser de un único tipo de transistores, a menos que la alimentación de control sea exactamente la misma del puente H en cuestión, es decir, si utilizamos una alimentación menor para el control que la del puente H los transistores no polarizaran correctamente, si son todos del mismo tipo, una solución es una interfaz para lograr los correctos voltajes de polarización ya sea con otros transistores, reles o optocopladores, nosotros usamos el mismo voltaje de alimentación para el control del puente h.
  2. Para la aplicación de parada rápida (Fast-stop) los transistores que utilizamos en principio no fueron adecuados. la razón es que implantamos en principio con Transistores BJT pero estos poseen un VCE, es decir, una resistencia tipica entre el colector emisor que en principio no es alta, pero para utilizar correctamente esta función se debe aplicar un "corto" entre las escobillas del motor, la solución de este problema fue implantar los transistores de corte con MOSFET de Ron muy baja y el resultado fue el esperado.
La aplicación de ese circuito es automatización y robotica entre otras. 

Finalmente algunos consejos, si se planea controlar motores de alta corriente la mejor opción es con MOSFET ó IGBT. Para simples motores menores de 1A se puede utilizar BJT, y sin duda usar transistores complementarios, es decir Tipo P y N, en los puentes para mejorar la polarización de ellos.

Gracias hasta la próxima...



domingo, 25 de marzo de 2012

Puente H para motores corriente continua.

Para controlar motores mediante circuitos electrónicos es necesario el empleo de dispositivos especiales, para los motores de corriente continua (CC) algunos dispositivos empleados suelen ser bastantes costosos, una solución simple y practica es emplear una configuración especial que se llama puente H.

El puente H gana su nombre por la mera configuración de componentes en forma de H, este permite a un motor eléctrico CC girar en ambos sentidos, adelante y atrás.

Un puente H se construye con 4 interruptores (mecánicos o con semi-conductores). Cuando los interruptores S1 y S4 (figura 1) están cerrados (y S2 y S3 abiertos) se aplica una tensión positiva en el motor, haciéndolo girar en un sentido. Abriendo los interruptores S1 y S4 (y cerrando S2 y S3), el voltaje se invierte, permitiendo el giro en sentido inverso del motor.

En la imagen un puente H típico, y los cambios de giro al aplicar los diferentes conmutadores.
Como ya se menciono el puente H se usa para invertir el giro de un motor, pero también puede usarse para frenarlo (de manera brusca), al hacer un corto entre las bornes del motor, o incluso puede usarse para permitir que el motor frene bajo su propia inercia, cuando desconectamos el motor de la fuente que lo alimenta. En el siguiente cuadro se resumen las diferentes acciones.


S1
S2
S3
S4
Resultado
0
0
0
0
El motor se detiene por inercia
0
1
1
0
El motor gira en atrás
1
0
0
1
El motor gira en adelante
1
1
0
0
El motor frena (fast-stop)

En este tipo de circuitos es emplear interruptores electrónicos (como Transistores, IGBT), por su durabilidad y velocidad de conmutación. Además los interruptores electrónicos se acompañan de diodos (conectados a ellos en paralelo) por lo general de alta velocidad y que permiten a las corrientes circular en sentido inverso, para evitar la corrientes inversas producto de cambio de giro y parado del motor. una implementación típica en la figura siguiente.

Puente H con transistores
Existen variaciones de este circuito, transistores Fet, Mosfet, Reles, arreglos Darlington, etc. pero en general la funcionalidad y el concepto básico es el mismo. Sin embargo es necesario conectar la base de dos transistores a la vez para lograr la correcta conmutación un a mejor aproximación sera.


Circuito propuesto para el control básico.
Si bien el puente H funciona correctamente es necesario eliminar algunas combinaciones no deseadas o mejor prohibidas, por protección de los motores o los dispositivos de conmutación una caso típico que puede ocurrir es por ejemplo, que ocurre si se activan los conmutadores Q1 y Q3 al mismo tiempo.



La corriente circula sin carga como consecuencia los conmutadores se dañan y posiblemente los diodos de protección.

Bien, para lograr solucionar este problema se debe diseñar un circuito combinacional (compuertas lógicas) para anular e incluir funcionalidades al controlador dado que la combinación de Fast-stop. no esta implementada de manera sencilla, y para economizar en señales de control.



A
B
S1
S2
S3
S4
Resultado
0
0
0
0
0
0
El motor se detiene por inercia
0
1
0
1
1
0
El motor gira en atrás
1
0
1
0
0
1
El motor gira en adelante 
1
1
1
1
0
0
El motor frena (fast-stop)

Esta tabla muestra el conjunto de salidas deseadas. y por supuesto eliminando y agregando las funcionalidades extras. se observa que cumple todas las combinaciones posibles y sus respectivas salidas.

La ecuaciones son:

implantando con compuertas NOR 


Implantadas solo con compuertas NOR se observa en el siguiente diagrama.
Implantación con compuertas NOR. 
De esta forma discriminamos las combinaciones como S1-S3 y S2-S4, indeseadas y agregamos las que requerimos como el fast stop S1-S2.

Nota: se implanta solo con compuertas NOR, pero es posible hacerlo con otro tipo de compuertas, como por ejemplo una implantación solo con compuertas NAND y otra forma con inversores y compuertas AND.

La razón especifica de implantar con compuertas NOR es que solo se utilizará un IC que contiene internamente 4 compuertas NOR por ejemplo TTL 74LS02 o similar.

El nuevo circuito incluyendo el control es el siguiente.


Puente H con Control de giro, parada rápid  
Y finalmente tenemos un circuito de control de motores CC bastante completo para cualquier aplicación. a continuación un vídeo de la simulación del circuito propuesto.


En una próxima entrada montaremos en protoboard el diseño para controlar un pequeño motor CC. Montaje Proto.

Nos vemos...