Jump to content

Problema con PIC y multiplexación


Recommended Posts

Hola muchachos DIYers, ando buscando una ayuda en esto que paso a comentar. Para el colegio tengo que realizar un termómetro digital utilizando un LM35, un ADC0808, un PIC16F84A y el resto de los IC's no son de mucha importancia. El circuito hasta la conversión digital funciona perfectamente, sin incluirla, cosa que no es importante por ahora. el tema es el siguiente, para mostrar la temperatura yo teniendo ya un numero guardado con la temperatura, debo mostrarlo en 2 displays 7 segmentos, y la cantidad de salidas del PIC no alcanzan para mostrar ambos numeros al mismo tiempo, entonces lo que hago es mandar a un 4511 la unidad del numero que tengo que mostrar en BCD, se convierte a 7 segmentos y se lo manda al display, luego mando un estado alto a un BC548, usándolo como llave logica, satura, dejando a masa el común del display que quiero encender, y el display que no quiero encender le mando un estado bajo a su respectivo transistor, después mando el otro dato, se convierte y mando al otro transistor un estado alto generando que se prendan consecutivamente los display uno después de otro (aproximadamente cada 20ms). El programa que va en el microcontrolador ya esta hecho y probado en el Proteus, pero en la placa no hace el cambio de estado alto y bajo a los transistores, siempre mantiene un terminal en estado alto y el otro en estado bajo, generando que se prenda un display solo. Probé la placa sin los displays midiendo directamente la salida del PIC y ocurre lo mismo, ¿Alguno sabe a que se puede deber? Estoy tratando de probar el PIC en una protobard y no logro que oscile porque es difícil mantener la simetría en el circuito del CLK.

 

Saludos

Pasajero

Link to comment
Share on other sites

A ver, lo primero que te diría que pruebes:

 

Descolga los transistores de las salidas del pic, y pone un led directo a cada salida. Anda al programa y el retardo de 20 mS que tiene el bucle ponelo en 1 Seg (para que puedas ver la oscilación) y fijate si el programa corre bien (tienen que prender un led, apargarse y prender el otro cada 1 Seg). Las bases de los transistores que sacaste de las salidas del pic, ponelas activas a las dos (no se si las estas usando activas en alto...pero la idea es que se vea el dato, cambiando cada un seg, si escribís un "23" que se ponga el "22" y luego el "33".

Si eso, así, lento, funciona, puede que estes polarizando mal los transistores. 

Link to comment
Share on other sites

A ver, lo primero que te diría que pruebes:

 

Descolga los transistores de las salidas del pic, y pone un led directo a cada salida. Anda al programa y el retardo de 20 mS que tiene el bucle ponelo en 1 Seg (para que puedas ver la oscilación) y fijate si el programa corre bien (tienen que prender un led, apargarse y prender el otro cada 1 Seg). Las bases de los transistores que sacaste de las salidas del pic, ponelas activas a las dos (no se si las estas usando activas en alto...pero la idea es que se vea el dato, cambiando cada un seg, si escribís un "23" que se ponga el "22" y luego el "33".

Si eso, así, lento, funciona, puede que estes polarizando mal los transistores. 

 

.Bueno, primero que nada me corrijo, cada display lo activo con un estado bajo en los transistores, no uno alto. Despues, hice la prueba (sin descolgar los transis porque no tengo el soldador a mano) colocando que cada 1 segundo vaya alternando entre ambas salidas el estado bajo y sigue siempre la misma salida funcando... Una cosa que me llama la atención, si yo hago el programa de la siguiente manera:

 

Estado alto en transistor X

Estado bajo en transistor Y

Espera 1 segundo

Estado bajo en transistor X

Estado alto en transistor Y

Espera 1 segundo

 

No oscila entre ambos pero se prende solo el display que corresponde con el Transistor Y, y se mantiene fijo ahi, pero si yo hago al reves, de esta forma el programa solo prende el display X:

 

Estado bajo en transistor X

Estado alto en transistor Y

Espera 1 segundo

Estado alto en transistor X

Estado bajo en transistor Y

Espera 1 segundo

 
Es como si la espera sea infinita, se queda colgado ahi, en la espera de 1 segundo.
Los transistores estan bien polarizados, porque cada display por separado funciona, pero no puede hacer la conmutación desde el pic, la tensión en las salidas del PIC no cambia, se queda fijo

 

Gracias por la ayuda Jorge

Edited by pasajeroentrance
Link to comment
Share on other sites

Ah! Entonces esta mal ese retardo! Esta mal programado o algo asi! Por que el programa hasta ese punto corre bien, y ahi en la espera se cuelga! Subite si queres ese pedazo de programa y lo revisamos.

 

Bueno, hay esperanzas, acabo de hacer uno sin retardo a ver que pasaba. Y el programa empezo a alternar los display pero solamente cuando mantenia apretados los capacitores del circuito oscilador, supongo que ese era el problema, asi que ahora voy a revisar las soldaduras de ahí. El retardo no puede "estar mal programado" porque lo hago con Niple, que es un programita para programar en assembler en pseudo codigo, yo voy colgando nubecitas que dan el flujo del programa.

 

Gracias por la ayuda

Link to comment
Share on other sites

A espectacular, la verdad que no lo conozco a ese programa pasajero! yo se usar assembler y C nada mas. Bueno espero que arranque loco! 

Gracias por las buenas vibras, se usar assembler y C tambien, pero nos obligan a usar Niple para agilizar la correción, dado que no necesitamos un buen nivel de optimización en el programa.

Link to comment
Share on other sites

En el programa invertí X por Y y fijate si el que queda prendido es el otro.

Ale, es lo que quise explicar, si yo pongo primero la activación del display X, se queda prendido ese, si pongo primero la activación del display Y, queda el Y prendido. Recien logré que multiplexe, pero tocando el cristal del oscilador, así que estoy revisando esa parte de circuito. Alguna ayuda para ver que puede estar mal? es un cristal de 4 Mhz con 1 capacitor de 33pf en cada terminal del cristal conectados a masa.

Link to comment
Share on other sites

Ale, es lo que quise explicar, si yo pongo primero la activación del display X, se queda prendido ese, si pongo primero la activación del display Y, queda el Y prendido. Recien logré que multiplexe, pero tocando el cristal del oscilador, así que estoy revisando esa parte de circuito. Alguna ayuda para ver que puede estar mal? es un cristal de 4 Mhz con 1 capacitor de 33pf en cada terminal del cristal conectados a masa.

 

El Xtal pegadito al IC, ponele un Xtal de menos frecuencia, en general mete menos problemas por el tema protobard.

Link to comment
Share on other sites

El Xtal pegadito al IC, ponele un Xtal de menos frecuencia, en general mete menos problemas por el tema protobard.

Nono, estoy con una placa ahora, no estoy en proto, al principio quise decir que no pude lograr hacer que oscile en el proto para probar el PIC serapado del circuito. El Xtal esta lo más pegado al IC posible, esta al lado de los termilanes del socket literalmente. Si el PIC labura en 4Mhz puedo poner un Xtal de menor frecuencia?

Link to comment
Share on other sites

El pic debe tener un rango de frecuencias, mínima y máxima.  Qué dice el datasheet?

Dice que con Xtal puedo laburar en 455 Khz, 2 y 4 Mhz. No tengo acá a mano un Xtal de esos valores asi que estoy buscando resistencias de 1M a mano para poner el paralelo a ver que onda, @@Jorge De Luca, puede ser de valores superiores a 1M la resistencia, o tiene que ser clavado?

Link to comment
Share on other sites

Bueno cambie los caps, se ve que estaban chotos o los valores estaban mal porque no eran las tipicas lentejitas, sino unos cuadrados grises, los compró mi vieja una vez porque no llegaba y los use para esta placa, los cambié por unos viejos que tenia en otra placa y ahora funciona. Mil gracias a todos!

Link to comment
Share on other sites

Que bueno loco me alegro. La resistencia puede ser de un valor cercano a 1M no hay drama mientras sea alto. Es para darle un empujón al Xtal.

Seguramente los caps que tenías eran de plata, me ha pasado varias veces que los pones y sin darte cuenta los rompes, se abren por que es muy frágil el encapsulado...

Edited by Jorge De Luca
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...