Quemó un PIC12F675, pero ¿por qué?

2

Estoy experimentando con la programación PIC controlada por un Arduino Uno, y estoy usando PIC12F675 . Ayer conseguí el PIC para ingresar al modo de programación / verificación y pude leer en voz alta el ID del dispositivo, pero antes de que eso ocurriera, quemé un PIC, pero no estoy seguro de qué fue lo que hice mal.

El problema estaba relacionado con el MCLR / VPP. Para ingresar al modo de programación / verificación, este debe ser conducido a un alto voltaje (al menos 3.5V más alto que la fuente de energía) como parte de una secuencia de eventos de inicialización. Así que conecté el Arduino a una fuente de alimentación de 12V y utilicé 5V para alimentar el Vdd en el PIC y el 12V al MCLR (el máximo es de 13.5V). En ese momento, pensé que, dado que el MCLR era la primera señal de alta, simplemente podía vincularlo permanentemente a una fuente de alto voltaje (12 V). Pero después de encender el tablero, el PIC se calentó rápidamente y (como resultó más tarde) se quemó. La razón por la que lo conecté directamente sin resistencia fue que la especificación de programación ( enlace ) dijo:

  

En el PIC12F629 / 675 / PIC16F630 / 676, la alta tensión de programación es   generado internamente. Para activar el modo de programación, alta tensión.   debe aplicarse a la entrada MCLR. Dado que el MCLR se utiliza para una   A nivel de fuente, el MCLR no dibuja ninguna corriente significativa.

En otras palabras, la entrada de alto voltaje no se usa como una fuente de alimentación real, es solo una forma de señalizar que desea ingresar al modo de programación. Así que leí lo anterior (especialmente el "MCLR no extrae ninguna corriente significativa") de la manera en que el PIN MCLR del PIC tendría una alta impedancia interna y, por lo tanto, no generaría ninguna corriente significativa, por lo que no debería ser necesario proporcionar cualquier resistencia, etc. Tampoco hay ninguna nota en la hoja de datos que indique la cantidad de corriente que puede transferir a través de cualquiera de los PIN. Pero claramente no es así como realmente funcionó. También al principio de la experimentación, estaba trabajando con voltajes más pequeños (8.5 V), donde también conecté directamente a la red, y esto no causó que se calentara, por lo que no puede ser un cortocircuito simple ya que los 8.5 V deberían quemarse también.

Otra pregunta en la misma línea: cuando se conectan los PIN analógicos del arduino al PIN GP0 / GP1 en el PIC, ¿es necesario usar resistencias? Nuevamente, cuando los GP0 / GP1 en el PIC están en modo de entrada, deberían tener una alta impedancia, por lo que no veo por qué podría simplemente conectarlo directamente al Arduino. Ahora, en este caso particular, el PIN de datos (GP0) en realidad cambia entre entrada / salida en puntos específicos durante la programación y el Arduino tiene que hacer lo mismo, así que supongo que hay que tener cuidado al cambiar al mismo tiempo para que no sean ambos en el estado de salida simultáneamente (ya que no tiene alta impedancia). Pero para estar seguro, agregué algunas resistencias pequeñas (470R) para limitar cómo pueden ir las cosas. Pero sería bueno saber si esto es realmente necesario, ya que nuevamente la hoja de datos no indica cuánta corriente puede transferir a través de los PIN's.

(en el nuevo circuito que hice, realmente funciona, tengo 15K ohmios entre 12V y MCLR y también controlo el MCLR a través de un transistor para que pueda activarlo en el punto correcto de la secuencia)

    
pregunta Morty

3 respuestas

1

No estoy seguro acerca de su pregunta sobre el PIC quemado y el MCLR de 12V, pero puedo responder sobre la conexión directa de Arduino y los PIC GPIO. Si ambos funcionan con la misma fuente de alimentación y su software es impecable, entonces no debería haber problemas con una conexión directa.

Sin embargo, personalmente, siempre los conecto con resistencias para limitar el daño causado por errores de software y / o problemas de temporización porque inevitablemente llegará un momento en el que arruiné algo en el software y la resistencia me da el tiempo para darme cuenta de que Tengo un error antes de que algo se dañe.

    
respondido por el Mathieu L.
1

Para abordar su declaración sobre la hoja de datos que no especifica cuánta corriente puede cada fuente / sumidero del PIN, sección 12: Especificaciones eléctricas, de la hoja de datos proporciona la máxima fuente / sumidero de cualquier clavija al mismo tiempo como 25 mA, y la suma de las corrientes de PIN no puede exceder de 125 mA.

En cuanto a la pregunta de MCLR, he hecho proyectos similares en el pasado, con un voltaje de 9 V, y nunca tuve un problema, como usted.

    
respondido por el dataBus
0

Ya que conectaste las líneas de energía, es posible que los 12 voltios aparecieran antes que los 5 voltios. No puedo encontrar nada en la hoja de datos que aborde específicamente la aplicación de Vpp en el encendido, pero de acuerdo con su discusión sobre el modo de programación, se espera que el chip ya esté encendido antes de llevar MCLR a Vpp.

Si algo sale mal en una secuencia de encendido, el chip podría "trabarse", momento en el que Vdd quemará el chip sin ayuda de Vpp. Esto incluye encender el Arduino (y controlar algunos pines de E / S de PIC) antes de aplicar energía al propio PIC.

  

no dibuja ninguna corriente significativa, por lo tanto no debería ser necesario   proporcionar cualquier resistencia

El hecho de que no consuma ninguna corriente significativa significa que alguna resistencia colocada en serie tendrá un efecto insignificante en el voltaje en el pin. Esto es un razonamiento opuesto al tuyo. Por alguna razón, las personas tienden a asociar "sin corriente" con "sin resistencia".

    
respondido por el gbarry

Lea otras preguntas en las etiquetas