Búsqueda personalizada
Regístrate gratis para participar de los foros, o si ya estás registrado haz login.
| comentario del autor | Lun May 11, 2009 10:11 am | |
|
este funciona a 3v por lo que programe el PIc para que funcione a la misma tension ya que deben estar comunicados. el circuito debe recibir datos a traves de las interrupciones por el puerto B y la externa para procesar esos datos y emitir una salida hacia el Ic de RF. este circuito lo simulamos en proteus y funciona muy bien, pero en la practica lo hace por un momento no mas. he tratado de probar con filtros a la alimentacion, reprogramar el micro, cambiarlo de protoboard y nada. sospecho que puede ser el cristal (4MHz) pero ya lo cambie por otro y nada. como podria probar que el cristal este oscilando? gracias por su ayuda. |
||
| asistió a la solución | Lun May 11, 2009 5:32 pm | |
|
Mira no se que queres decir con Cita:por lo que programe el PIc para que funcione a la misma tension ya que deben estar comunicados...- Tu problema radica justamente ahi o sea en la tension de alimentacion. Para usar 3v tenes que usar el PIC16LF84A o sea el de rango extendido.- La minima tension de alimentacion que recomienda microchip es de 4 v para XT, LP y RC y de 4.5 para HS.- Asi que revisa el datasheet y vas a descubrir muchas cosas.- Saludos.- |
||
| comentario del autor | Lun May 11, 2009 5:55 pm | |
|
tiene toda la razon, estaba confundido con el pic, crei que funcionaba igual que el 16F628A que trabaja desde 3V, configurando el brown out reset y el power up timer, muchas gracias por mostrarme mi error, voy a ver si puedo solucionarlo deuna forma practica sin perder los impresos de los circuitos. ya que el ic de linxs funciona a maximo 4.2V gracias |
||
| comentario del autor | Lun May 11, 2009 6:17 pm | |
|
segui su consejo de revisar el datasheet y obviamente estaba confundido con los pic 16f84a y 16f628a, ya que este si permite trabajar desde 3v, pero lo que le queria contar es que probe el circuito antiguo que tenia en protoboard y funciona con 3,5v de laimentacion, es decir que el micro recibe los datos, los analiza y pone en sus pines de salida la informacion que necesito, lo malo es que no funciona igual al montarlo en la baquelita, otra cosa que me parecio curiosa fue el consumo de corriente, porque en el protoboard es tres veces mayor que en la baquelita. eso era todo por ahora, seguire buscando la solucion a mi problema. |
||
| asistió a la solución | Lun May 11, 2009 7:34 pm | |
|
Decime que estas usando para la transmision. Modulo completo ??? Tirame mas datos y asi lo solucionamos.- Bue espero rta.- Saludos.- |
||
| comentario del autor | Mar May 12, 2009 8:48 am | |
|
le explico de manera sencilla el circuito: es un IC de linx tecnologies ref TXM433KH, que transmite unos datos paralelo en el rangod e 433MHz y se puede seleccionar la direccion de transmision a traves de 10 bits configurables por hardware. el micro (PIC16F84A) esta conectado a traves de los pines A0, A1, A2 y A3 como salidas para alimentar los datos el IC Linx. a su vez los datos que entrega el pic son resultado de una operacion matematica que utiliza los cambios de estado de los pines rb4, rb3, rb2 y rb1 controlados como interrupcion del puerto. un ejemplo: Estos datos siempre estan en nivel alto, cuando cambian de estado por pulsar uno de los botones conectados a cada uno de los pines la funcion de interrupcion hace lo siguiente: Control= (PIN_B4_* y dependiendo del resultado pone en los pines de salida un dato que se transmite por RF y es recibido y procesado. hasta aca todo funciona bien. la otra parte del programa maneja la interrupcion externa que se encarga de la funcion de "stop", por asi decirlo, es decir que cuando entra a la interrupcion esta envia un dato de salida que equivale a poner en cero la salida y parar la transmision RF. esto funciona bien la primera vez que se ejecuta, pero una vez se pulsa el boton el pin RB0 permanece en nivel bajo y no cambia nunca su estado hasta que no aplique un reset al pic. revise el circuito sin el pic y el pulsador funciona correctamente, lo simule en proteus y tiene el mismo problema. pienso que los registros no estan volviendo a su estado pero programo en ccs y no se como comprobarlos. gracias y espero que le sirva la informacion que le acabo de escribir |
||
| asistió a la solución | Mar May 12, 2009 11:13 am | |
|
Mira primero aclaremos unas cositas; el integrado que mencionas trabaja desde 2,7v hasta 5,2v igualmente si te fijas en sig imagen aguanta hasta 6v:
Por lo tanto si lo queres conectar al pic trabajando con 5v lo podes hacer tranquilamente y no necesariamente uno tiene que estar a 3v y el otro a 5v.- Una cosa importante es que dicho integrado al ser para utilazarlo en apliciones de control remoto no trae proteccion en la entrada de Vcc y por eso se necesita una fuente de alimentacion bastante estable con un ripple que no supere los 20mv por lo tanto (segun datasheet) tenes que implementar el sig. filtro:
Bien ahora salvados estos inconvenientes proba todo tu circuito a 5v y fijate si el problema persiste. Si es asi el o los problemas pueden ser: 1)-Codigo 2)-PCB (ya que un mal pcb va no solo captar ruido sino que tambien va a agregar capacidades parasistas) Asi que bueno si queres subir el codigo y el esquema lo miramos.- Bueno espereo que te sirva.- Saludos.- |
||
| comentario del autor | Mar May 12, 2009 2:51 pm | |
|
gracias por la aclaracion, en verdad estoy un poco confundido con las referencias ya que estoy trabajando en varios proyectos con diferentes referencias de los IC de LINX Technologies. Pues el problema de la interrupcion persiste tanto en el pcb como en el protoboard por lo que me inclino mas por el codigo que por el hardware. te adjunto el archivo del codigo el cual estoy haciendolo en ccs. gracias RX_Domotica.c (3.33 kb) - |
||
| solución | Mar May 12, 2009 4:59 pm | |
|
1)-El micro que estas usando es el 16F628A (segun tu codigo) 2)-Lo que me comentas no coincide con lo que esta escrito el en codigo fuente Cita:...utiliza los cambios de estado de los pines rb4, rb3, rb2 y rb1 controlados como interrupcion del puerto y en tu codigo: ...set_tris_a (0x00) <- todos los pines del puerto a como salida ...set_tris_b (0xF0) <- 11110000 los 4 nibles bajos como salidas y los 4 altos como entradas Por lo tanto para que funcione tenes que cambiar el estado de tu pin Rb0 (que si miras mas arriba esta como salida) tenes que poner set_tris_b(0XF1).- Bue con esta modificacion funciona. Compilado con CCS en Mplab y simulado en Proteus.- Saludos.- |
||