Atmega128 reinicio incorrecto

0

Estoy usando el controlador Atmega128L. Una de las tareas principales es controlar un actuador lineal. La alimentación del accionador y la alimentación del controlador son diferentes (inicialmente fue diseñado para compartir una conexión a tierra común). Los relés que se utilizan para controlar el actuador utilizan la misma alimentación que el controlador. Todas las demás entradas y salidas son a través del aislamiento. La línea de 3.3 V al controlador no es tan ruidosa, incluso durante el encendido del relé, apague.

El problema al que me estoy enfrentando está relacionado con el reinicio del microcontrolador. Este reinicio ocurre cuando el actuador golpea el interruptor de límite eléctrico incorporado (que corta la potencia del motor). Al parecer, este es el momento en que el motor utiliza la máxima potencia.

El flujo de código es de tal manera que un restablecimiento normal no afectaría su funcionalidad. Se recuperaría a la perfección. Sin embargo, cuando se produce el restablecimiento, el controlador parece funcionar incorrectamente, omite parte del código, no siguiendo el procedimiento de inicialización adecuado, ejecuta funciones que están en la memoria pero que no se llaman en ningún lugar del código actual. Debido a esto, el controlador muestra algún estado de error ilógico (según el código), o corrompe los Ic con los que está conectado. La mayoría de las veces, un reinicio de encendido o reinicio externo adecuado hace que el controlador funcione correctamente.

¿Cómo puedo asegurarme de que el controlador se reinicie correctamente?

Editar: Perdóname por la mala letra.

Editar: No niego que haya un ruido en el rango de nanosegundos en el suministro de 3.3V. Estoy muy preocupado por la respuesta del controlador al ruido. Espero que se restablezca correctamente el restablecimiento de la tensión o se reinicie el watchdog cuando se produzca el ruido, en lugar de que la PC salte a una ubicación aleatoria o se dañe la pila.

Mi controlador funciona con un reloj externo de 8Mhz, la velocidad máxima es de 8Mhz

    
pregunta seetharaman

1 respuesta

1

Usted ha dado muy poca información, por lo que no es posible hacer comentarios específicos. Aquí hay algunas cosas generales para ver:

  1. Asegúrese de que el microcontrolador y todos los demás chips estén correctamente desviados. Debe haber un casquillo cerámico de 1 µF o más cerca de cada pieza a través de las clavijas de alimentación y tierra. Si no has hecho esto, todo lo demás es inútil.

  2. Mira con cuidado tu suelo. Lo ideal es tener un plano de tierra debajo de todos los circuitos de baja potencia. Esto se puede conectar como máximo un lugar a tierra externa si así lo desea. Asegúrese de que la corriente del motor, incluidas sus corrientes de retorno a tierra, no fluya cerca de la sección de baja potencia.

  3. Observe la línea de 3.3 V con un alcance justo en el micro. Establezca el gatillo en el flanco descendente, y un poco de voltaje más bajo de lo que realmente es, como tal vez 3.1 V. Si el alcance se dispara cuando el motor se apaga, entonces arruina la separación de la tierra y / o la potencia entre el nivel bajo y Secciones de alta potencia.

  4. Tenga en cuenta que es posible que no haya ningún problema eléctrico. Es posible que tenga un error de firmware que cause que ocurran cosas extrañas cuando el motor se apaga. Reemplace el motor con una resistencia que dibuje significativamente menos que el motor. Si aún sucede, entonces es improbable que se produzca una falla eléctrica del motor que se apaga.

  5. Su unidad de compuerta FET no tiene sentido. Ni siquiera puedo adivinar lo que crees que hace un seguidor de emisor por ti. Lo que realmente hace es reducir la tensión máxima de la puerta en unos 600 mV. El seguidor del emisor le proporciona una ganancia actual, pero no tiene sentido, ya que unos pocos µs más de tiempo que el FET parece irrelevante para su descripción.

  6. Asegúrese de que el FET pueda funcionar con el bajo voltaje de la compuerta que le está dando, y de los 24 V que debe soportar cuando está apagado. Debe utilizar un FET clasificado para al menos 30 V D-S, y se debe especificar con R dson suficientemente bajo en un bit por debajo de la unidad de la puerta de 3.3 V. Esto supone que primero arreglas el circuito de control de la puerta.

  7. Asegúrese de que el diodo inverso a través de la bobina del relé esté funcionando y realmente conectado.

respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas