lunes, 3 de enero de 2011

Libreria CCS para manejo de LCDs alfanumericos

Pues aqui dejo una libreria que me hice para manejar LCDs alfanumericos con 6 pines de un microcontrolador y su correspondiente explicación de funcionamiento.
En el video adjunto se puede ver un proyecto haciendo uso de la misma.

alphaLCDLowPin rev.3 (01-ENE-2011)
Funcionamiento:
// Libreria CCS para el manejo basico de LCDs alfanumericos basados en el chip
//    HD44789. Es valida para LCDs de 1 a 4 lineas (cualquier numero de
//    caracteres por linea), con caracteres de 5x8 puntos.
// Esta libreria implementa la escritura en el lcd (no permite la lectura)
//    en modo 4 bits. de manera que utiliza solo 6 pines (2 de control y 4
//    de datos).
//    Incorpora una pantalla de test (mostrada al inicializar el LCD,
//    se pueden comentar/descomentar las lineas correspondientes para
//    desactivarla/activarla.
//    Mantiene el control de la posicion del cursor en todo momento,
//    por lo que si al LCD se le envia una cadena mayor del numero de caracteres
//    por linea que tiene, la cadena continua escribiendose en la linea
//    siguiente (en la anterior debido a la organizacion de la memoria del LCD
//    se saltaba una linea).
// Definicion de pines utilizados del LCD:
//    Conecta el pin RW a masa (unicamente se realizan escrituras).
//    El pin VEE (o V0 en algunos casos) se le da tension mediante el cursor de
//    un potenciometro conectado entre +5v y 0v para el ajuste de contraste.
//    Los pines DB0,DB1,DB2 y DB3 no se utilizan (se pueden dejar al aire).
// Metodos implementados:
// lcd_init (): debe ser llamada antes de utilizar el LCD para inicializarlo.
//    por defecto se inicia con lcd on, cursor off, y blink off (modo 1,0,0).
// lcd_gotoxy(x, y): mueve el cursor a la columna(x)/linea(y) deseada,
//    (el primer caracter de la primera linea es 1,1).
// lcd_putc(c): Escribe la cadena c en el lcd (al llegar al final de una linea
//    continua en la siguiente, si es la ultima recomienza por la primera).
// lcd_clear(): Borra la pantalla del lcd y mueve al cursor a la posicion 1,1
// lcd_clearFrom(int8 x, int8 y, int8 charsToClear): borra desde x e y indicados
//    el numero de caracteres indicado en charsToClear.
// lcd_mode(int1 lcdOn,cursorOn,blinkOn): Cambia el modo del lcd entre
//    pantalla encendida1 o apagada0 (util para hacer parpadear el lcd),
//    cursor0 (linea debajo del caracter) o cursor1, parpadeo1 (cuadro intermitente
//    que ocupa todo el caracter) parpadeo0.
// lcd_send_byte(BOOLEAN esComando, int8 n): Manejo avanzado para el envio de
//    comandos manuales (normalmente no se usara) esComando=true es enviar
//    comando avanzado (ver datasheet) y esComando=false es enviar dato.
// void lcd_DefineChar(int8 charIndex,int8 byte7,int8 byte6,int8 byte5,int8
//    byte4,int8 byte3,int8 byte2,int8 byte1,int8 byte0): Crear caracter personal.
//    Se pueden definir hasta 8 caracteres personalizados (charIndex[0]..charIndex[7].



Descarga del archivo

sábado, 25 de diciembre de 2010

DSO Nano. Osciloscopio de bajo costo

testeando controladora de servos 
Mi único contacto con un osciloscopio fue cuando estudiaba, donde puede "jugar" un poco con uno bastante antiguo.

Desde ese momento quise tener uno, pero siempre he considerado que seria una inversión a la que no le sacaría mucho partido ya que lo usaría muy poco y tendría un trasto mas al que quitarle el polvo.

Hace algún tiempo supe de la existencia de uno de estos muy básico, de un único canal y bastante pequeño y manejable llamado DSO NANO.


Actualmente, en vista de su bajo precio (ha salido una nueva versión de hadware), he decidido adquirir uno de ellos.

El "original" es vendido por SeedStudio a unos 80-90 euros, no obstante y al tratarse de un diseño Open Source existen clones ofrecidos por otros vendedores, por ejemplo en Ebay, donde he adquirido este por unos 50-60 euros

El diseño externo se ve claramente que procede de un reproductor mp4.

La verdad es que tras leer las reviews que circulaban por la red pensé que iba a ser bastante peor de lo que me he encontrado.
punta de prueba y salida de generador de onda cuadrada


Con el ultimo firmware (también Open Source) de BenF,  me parece perfecto para esos pequeños proyectos que hago, siempre teniendo en cuenta que puede tomar como máximo hasta un millón de muestras por segundo), lo que lo hace poco útil para trabajar con frecuencias superiores a 100Khz.

La tensión máxima de trabajo es de 80 vpp con la punta de x1, pero la incluida este modelo permite utilizarla atenuando x10 por lo que en teoría seria de 800 vpp.
Este en concreto es la revisión de hadware 1.6 y viene con una punta muy útil que sirve de "punta tipo gancho" o "punta tipo voltímetro" creo que se llama "muller".

Además sirve como generador de onda cuadrada de hasta 1 Mhz con duty cycle variable, la salida de este esta un poco escondida, y ubicada en lo que vendría a ser el alojamiento para una cinta de sujeción del reproductor mp4 como se ve en las imágenes.
soporte casero (pletina aluminio)


Además permite realizar capturas de pantallas en .BMP, exportar los bufers capturados en .XML, guardar/cargar ondas de referencia y configuraciones por medio de una tarjeta micro-SD.

Es muy recomendable leer la guia de usuario del firmware ya que aprenderemos algunos "truquillos nuevos".

Las actualizaciones, manuales y demás pueden encontrarse aquí.



Unas capturas de pantallas realizadas con el propio aparato:

trafico de una UART a 115200 bps
alterna 50Hz
datos de la onda


captura guardada y superpuesta

domingo, 12 de diciembre de 2010

Melodia "Dulce Navidad" disparada por luz

LDRChrisTone para PIC12F675
 
Montado 
Este sencillo circuito ha sido diseñado para colocarlo dentro de un adorno navideño que hay en la puerta de casa (también casero).
Básicamente consta de un PIC12F675, una LDR conectada al modulo ADC de mismo y un Zumbador. El programa esta basado en un ejemplo que incluye CCS para generar notas musicales.

Esquema
Funcionamiento:
Prototipo frontal
Prototipo trasero
En el rellano de planta hay un punto de luz que, independientemente de la hora/claridad existente, se enciende cada vez que detecta movimiento,  por lo que sensando una simple LDR se puede saber cuando ha entrado alguien al mismo.

-Al detectar un aumento en la intensidad de luz, suena la melodía.
-Además, para evitar que mientras exista actividad en el rellano (sombras sobre la puerta) este continuamente sonando, tiene un retardo mínimo de algo mas de 3 minutos entre disparos.

Descarga de Archivos