domingo, 23 de junio de 2013

Cuarto tutorial de programacion PIC en asembler, Prender y apagar un led con el mismo pulsador




código del ejemplo
recuerde copiar la librería retardos en la misma carpeta donde esta el archivo del pic.

list p=16f877A
INCLUDE

__config _CP_OFF&_CPD_OFF&_LVP_OFF&_WDT_OFF&_XT_OSC

cblock 0x20
endc

#define PULSA1 PORTA,0
#DEFINE LED1   PORTC,0
ORG 0


BSF STATUS,RP0 ;BANCO UNO CONFIGURACIONES
BSF PULSA1
BCF LED1
MOVLW 0X06
MOVWF ADCON1 ;COLOCA EN DIGITAL LOS PINES 
BCF STATUS,RP0 ;BANCO CERO ACCIONES

BCF LED1
BSF PULSA1

VERIFICA BTFSC PULSA1
GOTO VERIFICA ; SALTA SI ES UNO
CALL Retardo_10ms; salta por que es cero presiono
BTFSS PULSA1
goto VERIFICA 
MOVLW B'00000001'
XORWF PORTC,F
goto VERIFICA

INCLUDE
END

lunes, 17 de junio de 2013

Control de un acelerómetro LIS3LV02DL con arduino







STMicroelectronics, uno de los mayores fabricantes de Sistemas Micro-Electro-Mecánicos (MEMS), este tipo de sensores tienen una capacidad de  procesamiento que  permiten reducir el consumo de energía a nivel sistema ideal para sistemas portátiles.

Acelerómetro LIS3LV02DL
Es un sistema micro electro- mecánico capacitivo, tiene como principio primordial censar las fuerzas G en un solo encapsulado, su configuración interna contiene dos estructuras mecánicas semiconductoras una fija y la otra movible, al hacer un movimiento genera un cambio capacitivo proporcional a la fuerza.
Tiene 3 salidas digitales x y z enviando información lineal correspondiente a la aceleración, puede medir de 2 a 6G configurado por software.
Aplicaciones:
üDetectar caída libre
ürobótica
üActivación por movimiento
üInclinómetro
üJuegos
üMonitoreo de compensación y vibración
Caracteristicas
voltaje de alimentación 2,16 V a 3,6 V
Interfaces de salida digital I2C/SPI
Tiempos de representación de datos 12 o 16 bits
Interrumpir activado por movimiento
Umbral programable de interrupciones de Autocomprobación
Soporta Alto choque
Puede generar interrupciones de 2 tipos: Free Fall(caída libre) o Direction Detection Change(cambio de dirección)
El acelerómetro tiene una resolución de 12 bits(4096 posibles valores) y comprende 2 rangos de medición ±2gy ±6g.
En caso de utilizar el primer rango ±2g, la precisión de la lectura sería de 4096/4g = 1024 LSb/g
En el caso de usar el rango mayor de los ±6g la precisión del sistema sería de 4096/12g 
340LSb/gPor defecto el acelerómetro se actualiza 40 veces por segundo (40Hz), pero se puede
configurar para aumentar esta tasa a 160,
640o incluso2560veces por segundo (2560Hz). En este último caso estaríamos obteniendo un valor
cada 0,39ms.
Este acelerómetro dispone de un auto-test para la integridad de las medidas tomadas, pudiendo
descartar las medidas en los
momentos en que no son válidas. Su rango de temperatura de funcionamiento está comprendido entre
los -40ºC y los +85ºC.

Modo de conexión
Se lo conecta usando I2c (Inter-Integrated Circuit (Inter-Circuitos Integrados) o llamado  TWI y TWSI usando tres líneas digitales (tierra, reloj y datos) logrando conectar hasta 128 sensores. Los datos del sensor son de 8 bits, Es una comunicación de tipo half duplex. Comunicación bidireccional por la misma línea pero no simultáneamente

También se puede usar Protocolo  SPI( Serial Peripherical Interface), es un bus de 4 líneas, Cada
dispositivo conectado al bus puede actuar como transmisor y receptor al mismo tiempo, por lo que este
tipo de comunicación serial es full duplex. Dos de estas líneas trasfieren los datos (una en cada
dirección) y la tercer línea es la del reloj
Pines de acelerómetro

Conexión  SPI
CS es el puerto de habilitación serie i2c y en modo SPI es un pin de control como maestro , donde se pasa a nivel bajo en el inicio de la transmisión y se remonta
 a uno al final de la misma.
Conexión  I2C
Para modo  I2C el CS =1SPI el CS  =0
Diagrama de bloques usado en arduino


Programa creado para el incliometro en arduino