TODOPIC
Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: psnven en 15 de Abril de 2011, 21:22:42
-
Buenas noches amigos foreros, mi inquietud esta en ver la posibilidad de construir un sistema de control de rondines, con las siguientes caracteristicas
PIC 18F2550
Lector IBUTTON
Memoria EEPROM I2C
Reloj DS1307
Comunicación via USB utilizando las ventajas del 18F2550
Alimentado por bateria recargable
La funcion inicial del sistema consiste en que el aparato lea los seriales de los IBUTTONS, y los almacene con fecha y hora tomada del reloj DS1307, en la memoria I2C y posteriormente pueda ser descargada a un PC.
Posteriormente podremos añadirle cosas extras al codigo como que compare los seriales de los ibuttons y si el mismo esta en memoria, autentifique y luego pase a tomar la fecha y hora en la cual fue tomada la lectura.
La parte esquematica la desarrollare esta noche y mañana pretendo subirla al foro, la idea es finalizar este proyecto con ayuda de todos y que el mismo pase
a formar un proyecto mas del FORO; sirviendo de ayuda a muchos de nosotros los aficionados a la electronica. Siempre he deseado empezar con un proyecto basado
en IBUTTONS, y pues he gastado unos centavos y me he incentivado a desarrollarlo.
En base esquematica trabajare con PROTEUS, y la parte codigo pues debido a mis escasos conocimientos he decidido BASIC.
Espero la ayuda y aporte de conocimientos de todos, esta noche subire el esquematico en proteus que me he propuesto.
-
:shock: :? Me surgio una duda si la memoria va por I2C y el reloj DS1307 tambien no tendriamos problemas de comunicaciones ??? es que estoy montandolo en proteus y me acabo de percatar de eso, alguna ayuda en esta parte seria muy agradecida.
-
En un bus I2C pueden ir, en teoría, hasta 127 dispositivos si es que son con 7 bits de address y también teniendo en cuenta que no tengan el mismo address.
-
Si gracias hermano luego me recorde de eso :d jajajaja xd !!! Gracias amigo y bueno estoy con el montaje y simulacion si termino hoy subo los archivos y publico la simulacion, para ver en que me pueden ayudar y luego vamos con lo mas interesante d todo :) el codigo jejeje
-
Buenas tardes amigos esto es lo que he diseñado en base a mis conocimientos estoy ahora con el codigo si alguien me puede aportar una idea o sugerencia seria interesante;
y otra cosa si necesito por los menos archivar en la EEPROM uno aproximado de 500 registros compuestos por la siguiente información (SERIAL IBUTTON + DD/MM/YY + HH:MM:SS "DE LA LECTURA"), para luego hacer la descarga via USB + software y posteriormente reincializar la memoria del dispositivo, no podria literalmente utilizar la memoria integrada en el PIC ??? Asi obvio la inclusion del 24AA256 en el PCB ???
Que me sugieren o simplemente dejo la memoria.?
Abierto a consejos en si tengo algun error las conexiones.
(http://tusposadas.com/PROTOTIPO.jpg)
-
Ahora estoy en la parte del diseño de la carga Y alimentacion por via USB de la bateria de 5V 140mAh Ni-MH que planeo agregarle para que el dispositivo sea portatil.
-
Les cuento que he decidido modificar el circuito, e ir poco a poco pues mis conocimientos en programación no son tan amplios, estoy presentando un problema, durante la simulación de proteus cuando le doy al pulsador para que lea el IBUTTON, este se comporta erroneamente a veces lee, a veces no, a veces lee hasta 4 veces con un solo pulso. Quisiera ver si alguien me puede ayudar al respecto para continuar con mi codigo hasta el momento esto es lo que llevo.
(http://tusposadas.com/te3.jpg)
'PARAMETROS DE CONFIGURACIÓN
Include "modedefs.bas"
Device = 18F2550 'PIC Y CLOCK
Xtal = 8
CMCON = 7 'APAGO COMPARADORES
TRISC = %00000010 'Asigno RC como Salida y RC1 como Entrada para lectura de IBUTTON
'DECLARO LOS PINES DEL BUS I2C
Declare SDA_Pin PORTB.0 'DECLARO QUE RB0 VA A SER SDA
Declare SCL_Pin PORTB.1 'DECLARO QUE RB1 VA A SER SCL
Declare Slow_Bus On 'PARA BAJA VELOCIDAD DENTRO DEL BUS (100Khz COMO TRABAJA EL DS1307)
'VARIABLES DEL RELOJ
Dim HORA As Byte 'HORAS
Dim MINU As Byte 'MINUTOS
Dim SEG As Byte 'SEGUNDOS
Dim DIA As Byte 'DIA
Dim MES As Byte 'MES
Dim YEAR As Byte 'AÑO
'VARIABLES DE LA CONVERSIÓN BCD A BINARIO
Dim TEMP1 As Byte 'TRES VALORES TEMPORALES
Dim TEMP2 As Byte 'PARA REALIZAR OPERACIONES
Dim TEMPVAL As Byte 'DE CONVERSIÓN DE DATOS
'VARIABLE DE LA GRABACIÓN/LECTURA DE LA MEMORIA
Dim CUENTA As Word 'POSICIÓN DE LOS BYTES DENTRO DE LA EEPROM QUE SE VAN GRABANDO/LEYENDO
'VARIABLE QUE ALMACENA Y LEE CODIGO DE IBUTTON
ib VAR Byte[8]
i VAR Byte
'I2C RELOJ
Symbol PROGCLOCK = %11010000 'ALIAS DEL CODIGO PARA PROGRAMAR EL DS1307
Symbol LEOCLOCK = %11010001 'ALIAS DEL CODIGO PARA LEER EL RELOJ
'MEMORIA EEPROM
Symbol PROGMEMO = %10100000 'ALIAS PARA DIRECCIÓN E INDICACIÓN DE ESCRITURA DE LA EEPROM
Symbol LEOMEMO = %10100001 'ALIAS PARA DIRECCIÓN E INDICACIÓN DE LECTURA DE LA EEPROM
CUENTA = 0 'INICIO A GRABAR EN LA PRIMER POSICIÓN DE LA EEPROM
'*****************************************************************************************************
'*****************************************************************************************************
MOSTRAR: 'COMIENZA EL PROGRAMA PRINCIPAL
BStart 'ABRIMOS EL CONTACTO I2C
BusIn LEOCLOCK,0,[HORA] 'LEEMOS LA HORA Y LO PONGO EN LA VARIABLE CORRESPONDIENTE
BusIn LEOCLOCK,1,[MINU] 'LEEMOS LOS MINUTOS Y LO PONGO EN LA VARIABLE CORRESPONDIENTE
BusIn LEOCLOCK,2,[SEG] 'LEEMOS LOS SEGUNDOS Y LO PONGO EN LA VARIABLE CORRESPONDIENTE
BusIn LEOCLOCK,3,[DIA] 'LEEMOS EL DIA DEL Y LO PONGO EN LA VARIABLE CORRESPONDIENTE
BusIn LEOCLOCK,4,[MES] 'LEEMOS EL MES DEL Y LO PONGO EN LA VARIABLE CORRESPONDIENTE
BusIn LEOCLOCK,5,[YEAR] 'LEEMOS EL AÑO DEL Y LO PONGO EN LA VARIABLE CORRESPONDIENTE
BStop 'TERMINO EL CONTACTO I2C
'ME FIJO SI HAY LECTURA DE IBUTTON Y VOY A GRABAR LOS DATOS EN LA EEPROM
start:
DelayMS 20
OWrite PORTC.1,1,[$33] 'output command
ORead PORTC.1,0,[Str ib\8] 'read 64 bit string
If ib[1]<>255 Then
BStart 'INICIO CONTACTO I2C
For i=7 To 1 Step -1
BusOut PROGMEMO, CUENTA, [ib[ i ]] 'GRABO LOS BYTES
CUENTA = CUENTA + 1
Next i
DelayMS 20 'TIEMPO PARA FINALIZAR LA GRABACIÓN
BStop 'CIERRO EL CONTACTO I2C
EndIf
DelayMS 20
GoTo start
-
:( nadie por aqui ??? he revisado los cristales y aveces detecta la presencia del IBUTTON y a veces no, si pongo un cristal muy elevado aparente siempre reconoce el pulso "48MHZ", pero me da errores de TIMMING en el bus I2C, si bajo a un cristal de 8mhz, no tengo ningun error de TIMMING, pero a veces toma los datos y a veces no :S ??? alguna sugerencia ... !?!?!?
-
Alguna ayuda ?