Me gustaría mejorar este diseño para soportar ICSP

2

Soy nuevo en electrónica y este es mi primer circuito. Tengo algunas preguntas sobre la implementación de ICSP en este diseño. Este es un post bastante largo con bastantes preguntas, así que me disculpo por adelantado por su extensión. Desafortunadamente, no tengo un mentor con quien pueda hacer preguntas, ¡por lo que cualquier ayuda es muy apreciada!

  • Estoy usando un microcontrolador Atmel ATtiny10 para controlar un LED RGB.
  • El circuito es alimentado por dos baterías 3V CR2032 en serie que proporcionan 6V.
  • Las baterías están conectadas a un regulador de voltaje de salida fija que convierte la energía de la batería a 5 V para el ATtiny.
  • Tres de los cuatro pines de E / S del ATtiny están conectados a los tres ánodos del LED a través de resistencias limitadoras de corriente (el cuarto pin de MCU no se utiliza con una resistencia de pull-up interna habilitada).

Hasta ahora esto es algo bastante básico, y funciona en una placa de pruebas.

Me gustaría agregar la funcionalidad ICSP para poder programar el ATtiny en el circuito cuando se mueva a una PCB (para la carga inicial y luego si quiero modificar mi firmware). Aquí están mis preguntas:

P: ¿Cuál es la mejor / mejor manera de suministrar energía a ATtiny durante la programación (mi programador es un Arduino y no el costoso programador dedicado de Atmel)?

Parece que hay dos opciones:

  1. Suministre alimentación a través de la batería existente + componentes del regulador de voltaje, o
  2. Suministre 5V a través del programador directamente al pin VCC en el ATtiny a través de un pin encabezado / ICSP.

P: Si voy con la opción 1, ¿debo preocuparme por aislar el circuito de mi programador / Arduino? El Arduino funciona con una conexión USB desde mi computadora y no quiero freírlo. Si tengo que preocuparme por el aislamiento de energía aquí, ¿cómo se hace?

P: Si opto por la opción 2, creo que tendré que colocar un diodo Shottky entre el Vout del regulador y el Vin de ATtiny para evitar que la corriente fluya por el regulador ( es decir, desde el programador hasta el pin de salida del regulador).

Un diodo aquí parece presentar una serie de problemas:

  • Añade un costo adicional al circuito.
  • Agrega otra parte que consume energía de la batería.
  • La caída de voltaje en el diodo hará que el ATtiny vea menos de 5V en su Vin, lo que probablemente sea indeseable (debido a la desestabilización del reloj).

P: ¿Las inquietudes que acabo de enumerar sobre el diodo son todas válidas? No he diseñado nada con un diodo todavía, así que no tengo ninguna experiencia con aspectos prácticos operacionales.

P: ¿Hay alguna otra forma mejor o mejor de obtener poder de ATtiny para la programación que no he pensado?

P: Dos de los pines utilizados para programar el ATtiny también se conectarán a través de las resistencias al LED. ¿Qué pasos debo seguir para aislar al programador del LED?

Pregunto por esto porque intenté programarlo con el LED conectado y el programador generalmente se bloquea (puedes ver en el esquema donde conecté el programador, a las redes PB0 y PB1 ). Esperaba que las resistencias entre los pines y el LED fueran suficientes para aislar el LED pero no parece hacer el truco. Desconectar el LED permite que la programación tenga éxito, sin embargo, no podré desconectarlo una vez que todo esté soldado a una PCB.

P: En un sentido muy general, ¿qué pasos suelen tomar los diseñadores de ICSP para aislar los pines que tienen que ser de doble propósito para la programación y el control del circuito?

¡Gracias!

    
pregunta par

1 respuesta

3

Algunas cosas acerca de su circuito básico antes de que aborde sus preguntas específicas.

i. Cada IC necesita un condensador de desacoplamiento. Para este circuito, eso se aplica al regulador lineal y al microcontrolador. Para el microcontrolador, como en la mayoría de los circuitos integrados, es típico un capacitor de 0.1uF entre VCC y GND. El condensador debe estar lo más cerca posible de los pines físicos del chip. El regulador lineal lleva un poco más de reflexión. La mayoría de los fabricantes de reguladores especificarán qué tipo de condensadores y qué valor utilizar en la entrada y la salida. Este en particular no lo hace, pero sí proporcionan un circuito de prueba que debería ser lo suficientemente bueno para su propósito:

ii.Cadatipodereguladorlinealtieneun"voltaje de deserción" (VDO). La tensión de caída es la diferencia mínima en la tensión entre la entrada y la salida. Su L78L05 tiene un voltaje de deserción de 1.7V. Eso significa que la entrada mínimo debe ser: $$ V_ {INmin} = V_ {OUT} + VDO = 5V + 1.7V = 6.7V $$ Su batería de 6V tiene menos de 6.7V, lo que no permitirá que el regulador se regule a 5V. En su lugar, obtendrá algo más cerca de 4V. Puede que no sea un problema para este circuito en particular, pero debe ser consciente de ello. Hay muchos reguladores lineales disponibles con VDO de 1.7V mucho más bajos.

Ahora, con tus preguntas específicas.

  1. Normalmente, no importa dónde el microcontrolador recibe energía durante la programación, siempre y cuando la fuente de energía esté limpia y estable. Por lo tanto, suministre la alimentación de la batería o del programador. Pero solo elige uno. Si deja la batería conectada mientras habilita la alimentación del programador, pueden entrar en conflicto entre sí. Cualquiera que sea la fuente de voltaje es ligeramente más alta, intentará empujar la corriente hacia la otra, lo que no hará que ninguno de los dos esté muy contento. Mi recomendación sería apagar el circuito de la batería y no el programador. De esa manera, no tendrá que seguir quitando la batería cada vez que programe la placa.

Una posible complicación aquí es si su circuito contiene componentes de alta corriente que pueden activarse durante la programación. Es probable que el programador no pueda suministrar suficiente corriente para mantener el voltaje estable si hay mucha corriente extraída de otro lugar. En una situación como esa, sería necesario utilizar su propia fuente de alimentación durante la programación.

  1. No es necesario aislar al programador cuando se usa la batería siempre que el suministro de voltaje del programador esté apagado. La única estipulación aquí es que las referencias a tierra de su circuito y el programador están vinculadas entre sí. De lo contrario, no es necesario un aislamiento especial.

  2. Si usa el poder del programador, poner un diodo en VOUT no es una mala idea, pero puede que no sea necesario. Desafortunadamente, la hoja de datos del L78L05 no proporciona una tensión máxima absoluta en el pin VOUT en relación con el pin VIN. Sin embargo, rutinariamente he aplicado voltajes externos a los pines de salida de los reguladores lineales sin alimentación sin un diodo en el medio sin problemas. Sin una especificación en la hoja de datos, es difícil saberlo con seguridad. Pero no sospecho que tengas un problema.

  3. Sí, todas esas preocupaciones son válidas para agregar un diodo.

  4. Si usa la batería para obtener energía en lugar del programador, no hay más preocupaciones.

  5. El uso de resistencias para aislar los otros componentes de los pines del programador es un enfoque común. Sin embargo, aún debe saber cuánta corriente se puede extraer de los pines del programador. Cuando un pin en el programador se pone alto, el LED se encenderá. Con una resistencia de 100 ohmios, un LED de 2V puede hundir 30mA (\ $ (5V-2V) / 100Ohm = 30mA \ $). Probablemente es mucho más de lo que los pines de datos del programador pueden generar. Indudablemente es por eso que el programador está colgando.

  6. Como no puede hacer que las resistencias se vuelvan más grandes sin atenuar los LED, puede usar búferes digitales para eliminar completamente la carga en los pines del programador. Otros tipos de componentes pueden necesitar diferentes tipos de circuitos de aislamiento. Pero las resistencias y los amortiguadores cubren la mayoría de las situaciones.

simular este circuito : esquema creado usando CircuitLab

    
respondido por el Dan Laks

Lea otras preguntas en las etiquetas