Autor Tema: Trabajo Final de Ing. Electrónica. Problema con el funcionamiento del PIC18F2550  (Leído 1137 veces)

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

Desconectado JMKaltenmeier

  • PIC10
  • *
  • Mensajes: 31
Hola, que tal?. Soy nuevo en este Foro. Disculpen si mi problema no fue publicado en el lugar correcto.... Paso a contar.

Estoy realizando mi proyecto final, cuyo objetivo es diseñar un control de corriente que permita regular la corriente que inyecta un Electro-estimulador.
El control de corriente sera implementado con un PIC18F2550.
El problema que estoy teniendo es el siguiente:

El microcontrolador es alimentado por un regulador de tensión LM7805, en la entrada del regulador hay conectado una fuente de tension de 10V con un capacitor de 0.33uF, y en la salida un capacitor de 0.1uF. la tension de salida es 5.065V, adecuada para el micrcontrolador.
El microcontrolador posee un circuito RC en el Pin de MCLR, cuando VDD es 5.065, en el pin MCLR tengo 4.8V, por lo que el PIC no esta en reset.
El problema es que el oscilador del PIC en estas condiciones es que a veces funciona y otras veces no  (son mas las veces que no funciona), por lo que no ejecuta el programa y otras si. Puse una cristal de 20MHz con dos capacitores de 15pF como especifica la hoja de datos.

Lo interesante es cuando pongo el MCLR a cero (pic en reset), que el oscilador arranca de maravilla (veo la señal de oscilación con un osciloscopio). Pero luego cundo vuelve a 4.8V deja de funcionar.

Otra cosa interesante, es que la fuente de tensión que estoy usando es regulable de 0v a 20v. Conectado en osciloscopio al oscilador puedo ver como responde el pic cuando voy regulando la tension de 0V a 10V. En principio cuando voy subiendo la tension veo en el osciloscopio como va incrementando la tension en el pin OSC1 (Se que para verificar que el oscilador este funcionando la tension de este pin debe ser mayor a 1V). Cuestion que hay un cierto momento que la tensión de este pin llega a 1V, hay una breve oscilacion instantanea que la veo como un pantallazo en el osciloscopio, y "chan" deja de funcionar, volviéndose la tensión de ese pin a cero.

Repito, es increíble que a veces funcione y otras veces no. Estoy pensando si el problema puede sen en que la potencia no es estable o el oscilador no es estable. PERO CUANDO PONGO EL PIN MCLR EN BAJO EL OSCILADOR SALE ANDANDO!!! jajajja

Le doy de comer el algoritmo al PIC por medio de BOOTLOADER en una plaquita a parte que tengo. Es decir que voy cambiando el pic de placa en placa jajaj, en la placa para programarlo, también tengo un cristal de 20MHZ y la alimentacion proviene del USB de la PC. Aquí PIC funciona de maravilla.
Lo estoy programando en XC8, Paso como tengo configurado los fuses.

// CONFIG1L
#pragma config PLLDIV = 12       // PLL Prescaler Selection bits (Divide by 5 (48 MHz oscillator input))
#pragma config CPUDIV = OSC1_PLL2// System Clock Postscaler Selection bits ([Primary Oscillator Src: /1][96 MHz PLL Src: /2])
#pragma config USBDIV = 1       // USB Clock Selection bit (used in Full-Speed USB mode only; UCFG:FSEN = 1) (USB clock source comes directly from the primary oscillator block with no postscale)

// CONFIG1H
#pragma config FOSC = HSPLL_HS  // Oscillator Selection bits (HS oscillator, PLL enabled (HSPLL))
#pragma config FCMEN = OFF      // Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor disabled)
#pragma config IESO = OFF       // Internal/External Oscillator Switchover bit (Oscillator Switchover mode disabled)

// CONFIG2L
#pragma config PWRT = ON        // Power-up Timer Enable bit (PWRT enabled)
#pragma config BOR = ON         // Brown-out Reset Enable bits (Brown-out Reset enabled in hardware only (SBOREN is disabled))
#pragma config BORV = 3         // Brown-out Reset Voltage bits (Minimum setting 2.05V)
#pragma config VREGEN = OFF     // USB Voltage Regulator Enable bit (USB voltage regulator disabled)

// CONFIG2H
#pragma config WDT = OFF        // Watchdog Timer Enable bit (WDT disabled (control is placed on the SWDTEN bit))
#pragma config WDTPS = 32768    // Watchdog Timer Postscale Select bits (1:32768)

// CONFIG3H
#pragma config CCP2MX = OFF      // CCP2 MUX bit (CCP2 input/output is multiplexed with RB3)
#pragma config PBADEN = ON      // PORTB A/D Enable bit (PORTB<4:0> pins are configured as analog input channels on Reset)
#pragma config LPT1OSC = OFF    // Low-Power Timer 1 Oscillator Enable bit (Timer1 configured for higher power operation)
#pragma config MCLRE = ON       // MCLR Pin Enable bit (MCLR pin enabled; RE3 input pin disabled)

// CONFIG4L
#pragma config STVREN = OFF      // Stack Full/Underflow Reset Enable bit (Stack full/underflow will cause Reset)
#pragma config LVP = OFF        // Single-Supply ICSP Enable bit (Single-Supply ICSP enabled)
#pragma config XINST = OFF      // Extended Instruction Set Enable bit (Instruction set extension and Indexed Addressing mode disabled (Legacy mode))

// CONFIG5L
#pragma config CP0 = OFF        // Code Protection bit (Block 0 (000800-001FFFh) is not code-protected)
#pragma config CP1 = OFF        // Code Protection bit (Block 1 (002000-003FFFh) is not code-protected)
#pragma config CP2 = OFF        // Code Protection bit (Block 2 (004000-005FFFh) is not code-protected)
#pragma config CP3 = OFF        // Code Protection bit (Block 3 (006000-007FFFh) is not code-protected)

// CONFIG5H
#pragma config CPB = OFF        // Boot Block Code Protection bit (Boot block (000000-0007FFh) is not code-protected)
#pragma config CPD = OFF        // Data EEPROM Code Protection bit (Data EEPROM is not code-protected)

// CONFIG6L
#pragma config WRT0 = OFF       // Write Protection bit (Block 0 (000800-001FFFh) is not write-protected)
#pragma config WRT1 = OFF       // Write Protection bit (Block 1 (002000-003FFFh) is not write-protected)
#pragma config WRT2 = OFF       // Write Protection bit (Block 2 (004000-005FFFh) is not write-protected)
#pragma config WRT3 = OFF       // Write Protection bit (Block 3 (006000-007FFFh) is not write-protected)

// CONFIG6H
#pragma config WRTC = OFF       // Configuration Register Write Protection bit (Configuration registers (300000-3000FFh) are not write-protected)
#pragma config WRTB = OFF       // Boot Block Write Protection bit (Boot block (000000-0007FFh) is not write-protected)
#pragma config WRTD = OFF       // Data EEPROM Write Protection bit (Data EEPROM is not write-protected)

// CONFIG7L
#pragma config EBTR0 = OFF      // Table Read Protection bit (Block 0 (000800-001FFFh) is not protected from table reads executed in other blocks)
#pragma config EBTR1 = OFF      // Table Read Protection bit (Block 1 (002000-003FFFh) is not protected from table reads executed in other blocks)
#pragma config EBTR2 = OFF      // Table Read Protection bit (Block 2 (004000-005FFFh) is not protected from table reads executed in other blocks)
#pragma config EBTR3 = OFF      // Table Read Protection bit (Block 3 (006000-007FFFh) is not protected from table reads executed in other blocks)

// CONFIG7H
#pragma config EBTRB = OFF      // Boot Block Table Read Protection bit (Boot block (000000-0007FFh) is not protected from table reads executed in other blocks)

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

#include <xc.h>
#include <pic18f2550.h>
#include <stdio.h>
#include <stdlib.h>

#define _XTAL_FREQ 48000000 //para usar el Delay




Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1189
Re:Trabajo Final de Ing. Electrónica. Problema con el funcionamiento del PIC18F2550
« Respuesta #1 en: 27 de Noviembre de 2019, 15:44:44 »
Pues por lo que comentas tu problema parece más de hardware que de software.

Por recomendaciones, a la entrada del 7805 deberías colocar un capacitor de al menos unos 10uF o mayor (dependiendo de lo largo del cable que viene de la fuente variable y del rizo que esta produce).

También debes agregar capacitores de 0.1uF entre los pines de VDD y VSS del microcontrolador, así como a cada circuito integrado que estés usando.

Sería bueno qeu nos pudieras compartir tu esquemático para poder darte mejor ayuda.

elreypic.

Desconectado JMKaltenmeier

  • PIC10
  • *
  • Mensajes: 31
Re:Trabajo Final de Ing. Electrónica. Problema con el funcionamiento del PIC18F2550
« Respuesta #2 en: 27 de Noviembre de 2019, 16:06:26 »
Hola elrepic2.

Te envió una imagen del esquemático con las conexiones del pic. El circuito esta hecho en un PCB de dos capaz, una capa corresponde a la tierra. Son dos tierras una para la electrónica de potencia y otra para el pic. Las tierras están separadas salvo en un pequeño punto para mantener la equipotencialidad.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1189
Re:Trabajo Final de Ing. Electrónica. Problema con el funcionamiento del PIC18F2550
« Respuesta #3 en: 27 de Noviembre de 2019, 16:18:22 »
Necesitas agregar capacitores de desacoplo de 0.1uF a todos los integrados que estés usando, principalmente al microcontrolador. Estos capacitores se colocan lo mas cerca posible a los pines de VDD y VSS de cada integrado.

De igual manera el capacitor de 0.33uF es muy pequeño a la entrada del regulador 7805, yo te recomiendo que al menos coloques 10uF, pero de ser posible 100uF en paralelo con otro de 0.1uF.

Los capacitores del cristal dependen de la capacitancia interna de propio cristal. Regularmente esto son del doble a la capacitancia interna del cristal. Es decir, si el cristal tiene una capacitancia interna de 18pF, el capacitor sería de 36pF, pero ese valor es muy difícil de conseguir, así que se colocan de 33pF.

Una cosa que yo nunca he usado es esa resistencia en serie (de 2.2K) que colocas en el pin del MCLR. Yo la eliminaría.

elreypic.

Desconectado JMKaltenmeier

  • PIC10
  • *
  • Mensajes: 31
Re:Trabajo Final de Ing. Electrónica. Problema con el funcionamiento del PIC18F2550
« Respuesta #4 en: 27 de Noviembre de 2019, 16:39:55 »
Hola elrepic2

A la salida del regulador tengo un capacitor de 0.1uF, el cual tambien esta conectado entre VDD y Vss. Voy a poner uno mas para ver que pasa.

La hoja de datos especifica 0.33uF, de igual manera voy a intentar con los 100uF que me decís.

Antes pensaba que el problema eran los capacitores que compoenen el circuito del cristal, por los que fui cambiando y probando. La hoja de datos del PIC indica que se probo con 15pF. Yo probe con 18pF nada, con 22pF nada, con 33pF anduvo una sola vez, pero al otro dia dejo de andar. Luego puse los de 15pF y como te digo, a veces anda y otras no, salvo cuando pongo el MCLR en cero que anda de maravilla.

la Resistencia y el diodo es para evitar que fluya corriente al pin MCLR cuando le saco la tension VDD y queda carga en el capacitor.

Desconectado Geo

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 907
    • Mexchip
Re:Trabajo Final de Ing. Electrónica. Problema con el funcionamiento del PIC18F2550
« Respuesta #5 en: 28 de Noviembre de 2019, 05:24:09 »
Le doy de comer el algoritmo al PIC por medio de BOOTLOADER en una plaquita a parte que tengo. Es decir que voy cambiando el pic de placa en placa jajaj, en la placa para programarlo, también tengo un cristal de 20MHZ y la alimentacion proviene del USB de la PC. Aquí PIC funciona de maravilla.
Lo estoy programando en XC8, Paso como tengo configurado los fuses.
En la captura del esquemático no veo problema como para provocar lo que describes, y por lo que comentas aquí, pensaría en hacer una revisión del ensamble: soldaduras correctas, posibles puentes entre pads/pines...
La imaginación es el límite.
Visita mi blog, en inglés o en español :).
Mini curso de introducción a VHDL en MEXCHIP :-/

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1189
Re:Trabajo Final de Ing. Electrónica. Problema con el funcionamiento del PIC18F2550
« Respuesta #6 en: 28 de Noviembre de 2019, 11:29:58 »

A la salida del regulador tengo un capacitor de 0.1uF, el cual tambien esta conectado entre VDD y Vss. Voy a poner uno mas para ver que pasa.

La hoja de datos especifica 0.33uF, de igual manera voy a intentar con los 100uF que me decís.

Antes pensaba que el problema eran los capacitores que compoenen el circuito del cristal, por los que fui cambiando y probando. La hoja de datos del PIC indica que se probo con 15pF. Yo probe con 18pF nada, con 22pF nada, con 33pF anduvo una sola vez, pero al otro dia dejo de andar. Luego puse los de 15pF y como te digo, a veces anda y otras no, salvo cuando pongo el MCLR en cero que anda de maravilla.


No tienes que poner otro capacitor de 0.1uF a la salida del regulador 7805, tienes que ponerlo muy cerca del microcontrolador entre los pines 20 y 19 (que son los pines de alimentación del PIC). Ese capacitor es muy, pero muy importante y no lo veo en tu esquemático.

Por otro lado el capacitor de entrada del regulador 7805, un valor entre 1uF y 10uF está bien, yo uso 100uF cuando la fuente de alimentación está muy lejos del circuito.

Con respecto a los capacitores externos para el cristal como bien lo mencioné antes, estos dependen de la capacitancia interna del propio cristal, busca el datasheet del cristal que estás usando en específico, porque no todos los cristales de XXXX frecuencia tienen la misma capacitancia interna, varia entre los fabricantes y los modelos.

Mencionas que cuando alimentas tu circuito con el USB este trabajo de maravilla, lo que me da a entender que hay un problema de desacoplo de la fuente, por eso la importancia de tener el capacitor de 0.1uF entre los pines 20 y 19 del microcontrolador PIC. Este lo pones cerca a estos pines, no en cualquier punto de VDD y VSS que ecuentras en la PCB, TIENE QUE ESTAR CERCA.

Insisto en que el problema es parte en tu hardware y la otra es que tu fuente externa no es muy estable y por eso es necesario lo que ya te mencioné.

Otra cosa que puedes hacer es probar con un oscilador en lugar de un cristal.

Y para la v=fuente prueba con una batería y si los problemas se van entonces no hay vuelta de hoja, tu fuente es inestable y hay estabilizarla y agregar los capacitores de 0.1 uF entre los pines de VCC y VSS en cada uno de los ciurcuitos integrados que estés usando en tu PCB.

elreypic.

Desconectado JMKaltenmeier

  • PIC10
  • *
  • Mensajes: 31
Re:Trabajo Final de Ing. Electrónica. Problema con el funcionamiento del PIC18F2550
« Respuesta #7 en: 28 de Noviembre de 2019, 15:20:34 »
Poniendo los pines 15 y 16 ( D- y D+) a tierra, y poniendo un capacitor de 0.1uF entre el 14 (Vusb) y tierra, logre que saliera andando el oscilador.
Ahora hay otro problema es que ya no me ejecuta el simple programa que le doy de comer. En la otra placa (Donde le subo el programa con el BOOTLOADER) que tengo si funciona.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1189
Re:Trabajo Final de Ing. Electrónica. Problema con el funcionamiento del PIC18F2550
« Respuesta #8 en: 29 de Noviembre de 2019, 13:54:42 »
Poniendo los pines 15 y 16 ( D- y D+) a tierra, y poniendo un capacitor de 0.1uF entre el 14 (Vusb) y tierra, logre que saliera andando el oscilador.
Ahora hay otro problema es que ya no me ejecuta el simple programa que le doy de comer. En la otra placa (Donde le subo el programa con el BOOTLOADER) que tengo si funciona.

Me parece que estás confundido con el concepto de BOOTLOADER y con tu duda anterior no entiendo el problema.
Un bootloader es un código que reside en tu propio PIC, para no necesitar un programador externo, sino que el propio PIC mediante un software de PC logras que se programe "a sí mismo". Por eso cuando dices que lo colocas en otra placa en donde tienes un bootloader para "darle de comer" al micro, no tiene sentido para mí.

Podrías ser más específico por favor.

elreypic.

Desconectado JMKaltenmeier

  • PIC10
  • *
  • Mensajes: 31
Re:Trabajo Final de Ing. Electrónica. Problema con el funcionamiento del PIC18F2550
« Respuesta #9 en: 02 de Diciembre de 2019, 16:43:25 »
Me exprese mal. Coloco el PIC en otra placa para poder comunicarlo via USB con la computadora y así programarlo (El PIC ya tiene el codigo del BOOTLOADER).
En la placa del Electro-estimulador no es posible, comunicarlo con la PC

Desconectado ALFREDOSKY

  • PIC16
  • ***
  • Mensajes: 114
Re:Trabajo Final de Ing. Electrónica. Problema con el funcionamiento del PIC18F2550
« Respuesta #10 en: 10 de Diciembre de 2019, 18:44:11 »
Hola una consulta, ¿como reseteas el pic? manualmente? cableas a cero voltios el pin de manera manual?

Desconectado JMKaltenmeier

  • PIC10
  • *
  • Mensajes: 31
Re:Trabajo Final de Ing. Electrónica. Problema con el funcionamiento del PIC18F2550
« Respuesta #11 en: 11 de Diciembre de 2019, 13:52:13 »
Cableo de manera manual

Desconectado ALFREDOSKY

  • PIC16
  • ***
  • Mensajes: 114
Re:Trabajo Final de Ing. Electrónica. Problema con el funcionamiento del PIC18F2550
« Respuesta #12 en: 11 de Diciembre de 2019, 20:28:00 »
Me parece que estas reseteando constantemente al PIC, si no usarás reset en tu aplicacion final, configura los bits para no usarlo; si usarás reset, implementalo con un boton y verifica las conexiones, asegurate de obtener valores muy cercanos a GND presente en el pin del MCLR cuando se presiona el boton, y valores muy cercanos a VDD cuando el boton no esta presionado. Otra posible razon del comportamiento que describes puede ser tu oscilador y la configuracion en el Configuration bits, pero mas me inclino por el reseteo constante del PIC.

Desconectado scrwld

  • PIC10
  • *
  • Mensajes: 24
Re:Trabajo Final de Ing. Electrónica. Problema con el funcionamiento del PIC18F2550
« Respuesta #13 en: 24 de Diciembre de 2019, 00:18:01 »
hola jnkaltenmeier, cambia la resistencia de 10k a 4.7k y el condensador, yo uso de 1uf wn el circuito de reset. ese circuito es el que uso siempre y no he tenido problemas.

hace siglos deje de usar 7805 en su lugar el mc34063, y para desacoplo uso  10uf/10v y 0.1uf de poliester.

saludos

luis lopez

Desconectado JMKaltenmeier

  • PIC10
  • *
  • Mensajes: 31
Re:Trabajo Final de Ing. Electrónica. Problema con el funcionamiento del PIC18F2550
« Respuesta #14 en: 30 de Diciembre de 2019, 15:55:13 »
Gracias a Todos!. Volví a hacer una nueva placa mas prolija!. Cuando la arme voy a tener en cuenta sus consejos antes de soldar todo! y veremos si todo anda bien!