Autor Tema: DS1307, 16F876A y circuito externo.  (Leído 6890 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado TheBlooD

  • PIC12
  • **
  • Mensajes: 66
DS1307, 16F876A y circuito externo.
« en: 11 de Marzo de 2010, 17:16:22 »
Hola a todos,

Estoy diseñando un circuito que es basicamente un programador horario, es decir, segun una programación se activará un rele cuando llege la hora durante un periodo de tiempo tambien programable.

Como debe llevar una pantalla LCD de 2x16 el circuito se le hace realmente grande (la placa pcb) ya que va dentro de un lugar pequeño, ademas de ser costosa a la hora de realizar 4 o 5 programadores.

Por lo tanto he pensado una posible solución, y es realizar un modulo externo que será el programador del programador, es decir, una placa con otro PIC, el lcd, los botones y todo lo necesario. Mediante un cable (usb por ejemplo) conectarlo a la placa principal y que se conecte al RTC DS1307, lea los valores (la programación se guarda en su memoria) y permita modificarlos.

De este modo con una sola placa del LCD puedo programar todos los programadores, saliendo estos ultimos mucho mas baratos.

Este es el esquema:




El puente de diodos de la entrada es para evitar que inviertan los polos y los de la salida para evitar que enchufen ahí la entrada de corriente. Va mediante una bateria de 12V conectado.

P2 es un sistema de jumper para seleccionar el voltaje al que trabajará el motor, 12 o 5 V.

Como veis el PIC esta conectado al RTC mediante los pines: SCL y SDA.

Necesito poder conectar algo entre medias para pueda conectarse la otra placa con el RTC y que no interfiera en el PIC.


Saludos.



Desconectado TheBlooD

  • PIC12
  • **
  • Mensajes: 66
Re: DS1307, 16F876A y circuito externo.
« Respuesta #1 en: 12 de Marzo de 2010, 16:20:02 »
Nadie conoce la respuesta? quizas no me haya explicado bien...

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re: DS1307, 16F876A y circuito externo.
« Respuesta #2 en: 12 de Marzo de 2010, 16:30:10 »
Y te diria que si el motor lo vas a colocar entre los pines de C5 me parece que no te va a funcionar. El diodo D3 no va a dejar epasa el retorno de la corriente.

pero claro si aqui te conectan la alimentacion y en el pin uno de C5 te colocan el + y en el 2 el negativo como esté el rele excitado me parece que vas a tener un corto muy grande.

Para evitar este problemilla yo lo que haria  seria colocar conectores polarizaos de forma que no se puedan intercambiar.

Fer.
Todos los días se aprende algo nuevo.

Desconectado TheBlooD

  • PIC12
  • **
  • Mensajes: 66
Re: DS1307, 16F876A y circuito externo.
« Respuesta #3 en: 12 de Marzo de 2010, 16:43:45 »
Exactamente, el motor va conectado a C5, la solución que me planteas me parece perfecta y evito mas componentes, aunque solo sean dos diodos.

El principal problema que tengo es conectar la segunda placa (he pensando que lo mejor es unar un conector RJ-11 igual que los telefonos) a la placa del circuito, de modo que el PIC de la segunda placa pueda leer la memoria del DS1307 sin que afecte al PIC de la placa del circuito.

Saludos y gracias por tu contestación.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re: DS1307, 16F876A y circuito externo.
« Respuesta #4 en: 12 de Marzo de 2010, 16:47:47 »
Eso tipo de conexion como cualquier otra si es fiable no deberia de dar problemas, aunque mi opinio, quizas este equivocado, es que el bus I2C no es para transmitir a distancias largas y está diseñado para comunicar integrados dentro de una misma Pcb mas o menos grande.
Al estar en varias tarjetas espero que no te de problemas y espero que nos cuentes como te fué.

fer.
Todos los días se aprende algo nuevo.

Desconectado GDM

  • PIC10
  • *
  • Mensajes: 13
Re: DS1307, 16F876A y circuito externo.
« Respuesta #5 en: 12 de Marzo de 2010, 16:50:16 »
TheBlooD,

Creo que si. Tu explicación del proyecto no es muy clara, pero de todos modos te voy a hacer algún comentario. Decime si la interpretación que hago
es correcta.

Tu placa así como esta en la imagen esta completa (llamemosla placa 1). Sólo que necesitas hacer un circuito (que llamas programador, llamemosla placa 2) para poder modificar el funcionamiento de la placa 1, básicamente.

Eso lo podes hacer muy fácil conectándote al PIC por el puerto serie (USART), y que este modifique lo que sea necesario en los parámetros que según entiendo están en el RTC.

La placa 2 (que seria la del LCD) la cual te permitiría modificar varias placas 1, tendría el código que manejaría el LCD, algún teclado para setear los parámetros a configurar y la comunicación serie que le permitiría conectarse a la placa 1.

Otra opción seria hacer la conexión directamente por el bus I2C, pero necesitas micros que permitan multimaster en el bus, lo cual me parece que complicaría mucho tu sistema, que no lo necesita je.

Al menos eso pienso yo, no si a otro se le ocurre otra cosa.

Saludos,

Gustavo

Desconectado TheBlooD

  • PIC12
  • **
  • Mensajes: 66
Re: DS1307, 16F876A y circuito externo.
« Respuesta #6 en: 12 de Marzo de 2010, 16:57:42 »
Gracias a los dos por las respuestas.

Voy por partes:

1 - No requiero grandes distancias, el cable puede tener perfectamente 10 cm a lo sumo 15. lo justo de eschufar y que me permita leer los valores del RTC y modificar su memoria, ya que posee algunos registros de memoria y puedo utilizar dicho integrado el lugar de utilizar otro integrado para la memoria.


GDM, esa es exactamente la idea, disculpad mi mala explicación.

Según tu dices el PIC de la placa 1 será el que modifique los datos en el RTC y este estará conectado a la placa 2 mediante USART y le dará las ordenes pertinentes. No ando muy puesto en USART, utilizo PIC Basic del PIC Simulator IDE y no tengo ni idea de como realizar lo que comentas.

Gracias a los dos por sus respuestas.

Desconectado TheBlooD

  • PIC12
  • **
  • Mensajes: 66
Re: DS1307, 16F876A y circuito externo.
« Respuesta #7 en: 12 de Marzo de 2010, 17:00:38 »
Disculpad de nuevo, se me ha olvidado una cosa.

He estado pensando y se me ha ocurrido una cosa.

Si al conectar el cable me produce una interrupcion en el pic de la placa 1 y este pic anula su propio I2C, la placa 2 tendria libre acceso al RTC, cuando la placa 2 se desconecta, el pic de la placa 1 se resetea, activando de nuevo la comunicacion I2C y volviendo a realizar sus tareas.

¿Podria ser esto válido?

Saludos.

Desconectado GDM

  • PIC10
  • *
  • Mensajes: 13
Re: DS1307, 16F876A y circuito externo.
« Respuesta #8 en: 12 de Marzo de 2010, 20:47:52 »
TheBlooD,

Esa idea es buena. Solo necesitas que al conectar la placa 2, se conecten SDA y SCL para el I2C, y que otro pin conecte un PIN en particular del PIC de la placa 1 a masa o VCC, es indistinto, indicándole a este PIC, de la placa 1, que no puede enviar comandos al RTC, entonces aprovecha el otro PIC y hace de las suyas jeje. Una vez que lo desconectas, listo, el PIC de la placa 1 vuelve a tener control del RTC.

Podes hacerlo por el pin RB0 que es una interrupción externa, o por un pin del RB4-RB7 que te producen interrupción por cambio, que incluso te serviría más ya que necesitas detectar los dos eventos.

Una cosa que tendrías que tener en cuenta es que al conectar la placa 2, vos no sabes que esta haciendo la placa 1, si justo en ese momento esta accediendo al RTC, puede que tengas algún tipo de problema. Por lo que te recomiendo que, antes de hacer una transferencia el PIC de la placa 1 al RTC controle el estado del pin, si esta todo bien, haga la transferencia y hasta que no termine no mire el estado del pin.
Desde el punto de vista del PIC de la placa 2 pienso que con solo ponerle un retardo antes de hacer las transferencias de datos al RTC seria suficiente.
La otra podria ser que otro pin de la placa 1 le diga a la placa 2 que tiene control del bus, pero no se, tal ves se te hace mucho enredo...

Saludos,

Gustavo 

Desconectado TheBlooD

  • PIC12
  • **
  • Mensajes: 66
Re: DS1307, 16F876A y circuito externo.
« Respuesta #9 en: 13 de Marzo de 2010, 06:55:31 »
El PIC de la placa 1 no va a realizar ninguna grabación en el RTC, tan solo realizará la lectura de su hora, fecha y memoria. Lo unico que provocaria seria una mala lectura de los valores, ¿no? y como producirá una interrupción la lectura de esos valores no es importante puesto que posteriormente se reseteará el PIC de la placa 1 volviendo a comenzar su trabajo.

Otras preguntas:

- Conoceis algun otro PIC mas pequeño que posea I2C, de 12 pines o similar, para que la placa salga mas reducida.

- Algún integrado similar al ULN pero mas pequeño, ya que realmente solo utilizo una puerta ya que solo tengo un rele que controlar.

- En ALtium, como puedo modificar los datos que aparece en el casillero de la esquina (Title, Number, Revision,...)


Saludos y gracias por vuestras respuestas.

Desconectado GDM

  • PIC10
  • *
  • Mensajes: 13
Re: DS1307, 16F876A y circuito externo.
« Respuesta #10 en: 13 de Marzo de 2010, 11:48:08 »
TheBlooD,

Mmm el problema es que se puede colgar el I2C si en medio de la comunicación pierde la conexión... pero puede ser que funcione, tendrías que probarlo.


Citar
- Conoceis algun otro PIC mas pequeño que posea I2C, de 12 pines o similar, para que la placa salga mas reducida.

No se que apuro tiene tu proyecto, y tampoco decís de donde sos, pero hay micros nuevos de 8 pines que traen I2C, uno es el PIC12F1822, en microchip figuran como futuros pero seria cuestión de averiguar... por ahí podes desarrollar el prototipo con otro micro y despues haces las placas definitivas para estos chiquititos...

Citar
- Algún integrado similar al ULN pero mas pequeño, ya que realmente solo utilizo una puerta ya que solo tengo un rele que controlar.

No conozco ningún integrado mas chico, no digo que no exista, pero yo le pondría un transistor nomás, y algunas resistencias, para manejar el relay, dado que es una sola salida; es un poco mucho el ULN para usar una sola salida.

Citar
- En ALtium, como puedo modificar los datos que aparece en el casillero de la esquina (Title, Number, Revision,...)

Te contesto aca, pero creo que hay otro espacio en el foro para consultas sobre el Altium (algun moderador nos podra decir jeje).

Eso es el rótulo, lo que se puede hacer es agregar texto en cada casillero. Si tu idea es modificar el rótulo para traducirlo o para "customizarlo" eso es otra cosa. Tenés que definir un Template y después cargarlo al proyecto.

Pero para agregar texto en los casilleros así como están tenes que hacer esto:
1- Poner un "Text String" en el casillero que vos quieras. Esto lo encontras en la barra de menu, en Place --> Text String. Haciéndole doble click podes agregar el texto que quieras. Sino, en el lado derecho del edit, ese donde pones el texto, tenes una flechita, ahí podes seleccionar que queres que se visualice, por ejemplo, si seleccionas "=Title" te va a mostrar el Titulo que este cargado en el proyecto; ahora te digo como modificar ese Title.

En la barra de menú ingresas a: Design --> Document Options..., ahí te aparece una pantalla donde tenes tres Tab, la primera se llama Sheet Options, la segunda Parameters, en esta tenes que entrar y vas agregando el texto en cada una de las opciones que tiene.

Espero que se entienda...

Gustavo

Desconectado TheBlooD

  • PIC12
  • **
  • Mensajes: 66
Re: DS1307, 16F876A y circuito externo.
« Respuesta #11 en: 13 de Marzo de 2010, 13:09:41 »
GDM de nuevo gracias por tu ayuda.

Sigo pensando en esa opcion porque la veo mas sencilla al menos para mi nivel, quizas existan otras mas fiables, pero no tengo un gran nivel.

Se enchufa el cable, provoca la interrupcion en el PIC1, ese desabilita el uso de I2C y manda un 1 al PIC2 por medio del cable. Cuando PIC2 detecta ese 1, quiere decir que PIC1 esta en "suspension" y PIC2 puede comenzar la lectura/escritura en el RTC. Cuando PIC2 termina el proceso, resetea el PIC1, que vuelve a iniciar su programa normal configurando de nuevo el I2C para comenzar la lectura de los datos del RTC.


Respecto al PIC12F1822, lo habia visto en la web de microchip, pero es lo que comentas, que aparecen como futuros. Seguiré tus consejos y realizaré un propotipo con el PIC que tengo a mano que es el 16F876A.

Intentaré montar todo esto en dos protoboards pequeñas para simular las dos placas y ya os contaré que tal va el asunto.


Mil gracias por todo.

Desconectado TheBlooD

  • PIC12
  • **
  • Mensajes: 66
Re: DS1307, 16F876A y circuito externo.
« Respuesta #12 en: 24 de Marzo de 2010, 17:45:56 »
Vuelvo por aquí con algunas novedades.

Si el PIC1 no lee ni hace nada en el bus I2C mientras el PIC2 esta conectado, no sirve pues realiza lecturas incorrectas de los datos, en algo interfieren las señales que no realiza una buena lectura, así que esa opción no es válida.

Buscando por la red he encontrado un sistema muuuuy sencillo con un integrado de tan solo 8 pines.

Aquí el circuito:



Y aquí el artículo completo:

Tiny Analog Switch Alleviates I2C Address Conflicts

Ya he pedido mis samples a Maxim para provar ese circuito y ya os contaré que tal me ha ido.


Saludos.

Desconectado bmfranky

  • PIC16
  • ***
  • Mensajes: 165
    • La Tienda De Fran
Re: DS1307, 16F876A y circuito externo.
« Respuesta #13 en: 26 de Marzo de 2010, 05:30:04 »
Hola TheBlooD.
Porque no usas un 4066 para lo mismo, seguro que te resulta mas barato y lo hay en smd, que en cuestiones de espacio , es lo que manda.
Visiten La Tienda De Fran ;-) Aqui. y mi nueva Web Aqui.


 

anything