![]() |
| |||||||
| Registrarse | Preguntas Frecuentes | Lista de Foreros | Calendario | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
| | LinkBack | Herramientas | Desplegado |
| |||
| en concreto un PIC18F452. El tema es que lo tengo montado para controlar un pequeño robot. Algo sencillo, un sensor de colisión, dos sensores de temperatura sobre I2C, dos motores de contínua con un L298, comunicación por RS232 y poca cosa más. Hasta ahora funcionaba bien (o eso creía). El tema es que ahora le estoy haciendo que su comportamiento lo marque una máquina de estados finitos (FSM), y he visto que cada tanto el PIC se reinicia (iba a decir que sólo, pero no, si se reinicia es que hay un fallo de diseño en el circuito, en la programación o yo qué sé), por lo que a tomar la FSM. Por cierto, los reinicios son aleatorios, no pasan cada un cierto tiempo determinado, y suceden en dos placas diferentes en diseño físico (distribución de elementos y pistas) pero iguales en diseño lógico. La pregunta es, qué puede provocar que un PIC se reinicie? |
| | ||||
| ||||
| |
| |||
| jugator EChMotor#140 escribió: > en concreto un PIC18F452. > > El tema es que lo tengo montado para controlar un pequeño robot. Algo > sencillo, un sensor de colisión, dos sensores de temperatura sobre I2C, dos > motores de contínua con un L298, comunicación por RS232 y poca cosa más. > > Hasta ahora funcionaba bien (o eso creía). El tema es que ahora le estoy > haciendo que su comportamiento lo marque una máquina de estados finitos > (FSM), y he visto que cada tanto el PIC se reinicia (iba a decir que sólo, > pero no, si se reinicia es que hay un fallo de diseño en el circuito, en la > programación o yo qué sé), por lo que a tomar la FSM. > > Por cierto, los reinicios son aleatorios, no pasan cada un cierto tiempo > determinado, y suceden en dos placas diferentes en diseño físico > (distribución de elementos y pistas) pero iguales en diseño lógico. > > La pregunta es, qué puede provocar que un PIC se reinicie? > > El motivo más frecuente es ruido eléctrico en los pines. Si comparten fuente de alimentación el PIC y el motor, se produce ruido y saltos de tensión que pueden activar el circuito de brown-out o provocar cambios aleatorios en el estado de la CPU (por ejemplo, cambios del PC). Quítale los motores o aliméntalos de una fuente secundaria para ver si desaparecen los reinicios. También te pueden ocurrir si la corriente del motor comparte camino con la del micro (trazado incorrecto), entonces no se soluciona con dos fuentes sino con un retrazado. -- Saludos Miguel Giménez |
| |||
| jugator EChMotor#140 escribió: > en concreto un PIC18F452. > > El tema es que lo tengo montado para controlar un pequeño robot. Algo > sencillo, un sensor de colisión, dos sensores de temperatura sobre I2C, dos > motores de contínua con un L298, comunicación por RS232 y poca cosa más. > > Hasta ahora funcionaba bien (o eso creía). El tema es que ahora le estoy > haciendo que su comportamiento lo marque una máquina de estados finitos > (FSM), y he visto que cada tanto el PIC se reinicia (iba a decir que sólo, > pero no, si se reinicia es que hay un fallo de diseño en el circuito, en la > programación o yo qué sé), por lo que a tomar la FSM. > > Por cierto, los reinicios son aleatorios, no pasan cada un cierto tiempo > determinado, y suceden en dos placas diferentes en diseño físico > (distribución de elementos y pistas) pero iguales en diseño lógico. > > La pregunta es, qué puede provocar que un PIC se reinicie? > > El motivo más frecuente es ruido eléctrico en los pines. Si comparten fuente de alimentación el PIC y el motor, se produce ruido y saltos de tensión que pueden activar el circuito de brown-out o provocar cambios aleatorios en el estado de la CPU (por ejemplo, cambios del PC). Quítale los motores o aliméntalos de una fuente secundaria para ver si desaparecen los reinicios. También te pueden ocurrir si la corriente del motor comparte camino con la del micro (trazado incorrecto), entonces no se soluciona con dos fuentes sino con un retrazado. -- Saludos Miguel Giménez |
| |||
| "Miguel Gimenez" <me***privacy.net> escribió en el mensaje news:fuhqtk$3v2$1***aioe.org... > > El motivo más frecuente es ruido eléctrico en los pines. Si comparten > fuente de alimentación el PIC y el motor, se produce ruido y saltos de > tensión que pueden activar el circuito de brown-out o provocar cambios > aleatorios en el estado de la CPU (por ejemplo, cambios del PC). Quítale > los motores o aliméntalos de una fuente secundaria para ver si desaparecen > los reinicios. También te pueden ocurrir si la corriente del motor > comparte camino con la del micro (trazado incorrecto), entonces no se > soluciona con dos fuentes sino con un retrazado. > todo el sistema está alimentado por una pila de 9V. El PIC a través de un 7805 (5V); y el L298 tiene Vss conectado también a la salida del 7805, Vs directamente a la pila de 9V y GND al negativo de la pila, que es común también para el PIC. Si cambio la pila por un alimentador externo enchufado a la red sigue pasando. Lo acabo de probar simplemente desconectando los motores. También ha llegado a reiniciarse, y me aventuraría a decir que ha tardado bastante más en hacerlo (aunque como es bastante aleatorio, no es seguro que así haya sido). Miraré de separar circuitos de alimentación a ver qué ocurre. Gracias |
| |||
| "Miguel Gimenez" <me***privacy.net> escribió en el mensaje news:fuhqtk$3v2$1***aioe.org... > > El motivo más frecuente es ruido eléctrico en los pines. Si comparten > fuente de alimentación el PIC y el motor, se produce ruido y saltos de > tensión que pueden activar el circuito de brown-out o provocar cambios > aleatorios en el estado de la CPU (por ejemplo, cambios del PC). Quítale > los motores o aliméntalos de una fuente secundaria para ver si desaparecen > los reinicios. También te pueden ocurrir si la corriente del motor > comparte camino con la del micro (trazado incorrecto), entonces no se > soluciona con dos fuentes sino con un retrazado. > todo el sistema está alimentado por una pila de 9V. El PIC a través de un 7805 (5V); y el L298 tiene Vss conectado también a la salida del 7805, Vs directamente a la pila de 9V y GND al negativo de la pila, que es común también para el PIC. Si cambio la pila por un alimentador externo enchufado a la red sigue pasando. Lo acabo de probar simplemente desconectando los motores. También ha llegado a reiniciarse, y me aventuraría a decir que ha tardado bastante más en hacerlo (aunque como es bastante aleatorio, no es seguro que así haya sido). Miraré de separar circuitos de alimentación a ver qué ocurre. Gracias |
| |||
| jugator EChMotor#140 escribió: > "Miguel Gimenez" <me***privacy.net> escribió en el mensaje > news:fuhqtk$3v2$1***aioe.org... >> El motivo más frecuente es ruido eléctrico en los pines. Si comparten >> fuente de alimentación el PIC y el motor, se produce ruido y saltos de >> tensión que pueden activar el circuito de brown-out o provocar cambios >> aleatorios en el estado de la CPU (por ejemplo, cambios del PC). Quítale >> los motores o aliméntalos de una fuente secundaria para ver si desaparecen >> los reinicios. También te pueden ocurrir si la corriente del motor >> comparte camino con la del micro (trazado incorrecto), entonces no se >> soluciona con dos fuentes sino con un retrazado. >> > > todo el sistema está alimentado por una pila de 9V. El PIC a través de un > 7805 (5V); y el L298 tiene Vss conectado también a la salida del 7805, Vs > directamente a la pila de 9V y GND al negativo de la pila, que es común > también para el PIC. > > Si cambio la pila por un alimentador externo enchufado a la red sigue > pasando. > > Lo acabo de probar simplemente desconectando los motores. También ha llegado > a reiniciarse, y me aventuraría a decir que ha tardado bastante más en > hacerlo (aunque como es bastante aleatorio, no es seguro que así haya sido). > > Miraré de separar circuitos de alimentación a ver qué ocurre. > > Gracias > > ¿Estás dejando tiempos muertos al conmutar el L298? Si no lo haces habrá un cortocircuito de unas décimas de us cada vez que cambie de estado, que provocará un salto de tensión (primero hacia abajo y después hacia arriba) en la fuente y llegará directamente al micro (los 7805 no responden demasiado bién a escalones). Añade (o aumenta) los tiempos muertos y pon un condensador de 100 nF directamente en los bornes de alimentación del L298. -- Saludos Miguel Giménez |
| |||
| jugator EChMotor#140 escribió: > "Miguel Gimenez" <me***privacy.net> escribió en el mensaje > news:fuhqtk$3v2$1***aioe.org... >> El motivo más frecuente es ruido eléctrico en los pines. Si comparten >> fuente de alimentación el PIC y el motor, se produce ruido y saltos de >> tensión que pueden activar el circuito de brown-out o provocar cambios >> aleatorios en el estado de la CPU (por ejemplo, cambios del PC). Quítale >> los motores o aliméntalos de una fuente secundaria para ver si desaparecen >> los reinicios. También te pueden ocurrir si la corriente del motor >> comparte camino con la del micro (trazado incorrecto), entonces no se >> soluciona con dos fuentes sino con un retrazado. >> > > todo el sistema está alimentado por una pila de 9V. El PIC a través de un > 7805 (5V); y el L298 tiene Vss conectado también a la salida del 7805, Vs > directamente a la pila de 9V y GND al negativo de la pila, que es común > también para el PIC. > > Si cambio la pila por un alimentador externo enchufado a la red sigue > pasando. > > Lo acabo de probar simplemente desconectando los motores. También ha llegado > a reiniciarse, y me aventuraría a decir que ha tardado bastante más en > hacerlo (aunque como es bastante aleatorio, no es seguro que así haya sido). > > Miraré de separar circuitos de alimentación a ver qué ocurre. > > Gracias > > ¿Estás dejando tiempos muertos al conmutar el L298? Si no lo haces habrá un cortocircuito de unas décimas de us cada vez que cambie de estado, que provocará un salto de tensión (primero hacia abajo y después hacia arriba) en la fuente y llegará directamente al micro (los 7805 no responden demasiado bién a escalones). Añade (o aumenta) los tiempos muertos y pon un condensador de 100 nF directamente en los bornes de alimentación del L298. -- Saludos Miguel Giménez |
| |||
| Pues si quitando motores sigue reseteándose, la respuesta viene a ser la de siempre. 1º. Problema software. Como el reseteo es aleatorio, y suponiendo que el programa lo has escrito en C, habrá que suponer que no es un timer contando sin control, ni un salto a la página incorrecta, ni nada parecido, pero sí podría ser por ejemplo que hayas configurado una patilla de reset y no la hayas conectado. En ese caso, cuando reciba un pico de ruido suficientemente grande (por radio), reseteará. También podría pasar algo parecido si tienes un timer configurado por error con un clock externo. 2º. Problema hardware. Lo que te han dicho, ruido en la alimentación, es la causa más común. La solución, separar alimentaciones de potencia y lógica, sobredimensionar condensadores de filtro, añadir un condensadore de filtro de 100nF a la alimentación del PIC, lo más cerca posible de él, asegurar que las pistas de alimentación y masa están correctamente dimensionadas y trazadas, y que no sean compartidas por el circuito de potencia y el lógico. Luego ya podría haber problemas más sutiles, como un acoplamiento incorrecto entre el PIC y otros chips (una resistencia en cada puerto utilizado que limite la corriente máxima a 15mA puede hacer milagros). Otro problema típico con control de motores mediante puentes H es no dejar tiempo suficiente para la conmutación en cada rama de la H, con lo que puedes tener corrientes instantáneas muy altas, cercanas a cortocircuito, que echen abajo la alimentación (esto además seguiría pasando aunque quitaras los motores). En fin, ya nos dirás. -- Saludos de Jose Manuel Garcia jose.mgg***terra.es http://213.97.130.124 "jugator EChMotor#140" <jugator***gmail.com> escribió en el mensaje news:fuhrvc$in0$1***localhost.localdomain... > "Miguel Gimenez" <me***privacy.net> escribió en el mensaje > news:fuhqtk$3v2$1***aioe.org... > > > > El motivo más frecuente es ruido eléctrico en los pines. Si comparten > > fuente de alimentación el PIC y el motor, se produce ruido y saltos de > > tensión que pueden activar el circuito de brown-out o provocar cambios > > aleatorios en el estado de la CPU (por ejemplo, cambios del PC). Quítale > > los motores o aliméntalos de una fuente secundaria para ver si desaparecen > > los reinicios. También te pueden ocurrir si la corriente del motor > > comparte camino con la del micro (trazado incorrecto), entonces no se > > soluciona con dos fuentes sino con un retrazado. > > > > todo el sistema está alimentado por una pila de 9V. El PIC a través de un > 7805 (5V); y el L298 tiene Vss conectado también a la salida del 7805, Vs > directamente a la pila de 9V y GND al negativo de la pila, que es común > también para el PIC. > > Si cambio la pila por un alimentador externo enchufado a la red sigue > pasando. > > Lo acabo de probar simplemente desconectando los motores. También ha llegado > a reiniciarse, y me aventuraría a decir que ha tardado bastante más en > hacerlo (aunque como es bastante aleatorio, no es seguro que así haya sido). > > Miraré de separar circuitos de alimentación a ver qué ocurre. > > Gracias > > > |
| |||
| Pues si quitando motores sigue reseteándose, la respuesta viene a ser la de siempre. 1º. Problema software. Como el reseteo es aleatorio, y suponiendo que el programa lo has escrito en C, habrá que suponer que no es un timer contando sin control, ni un salto a la página incorrecta, ni nada parecido, pero sí podría ser por ejemplo que hayas configurado una patilla de reset y no la hayas conectado. En ese caso, cuando reciba un pico de ruido suficientemente grande (por radio), reseteará. También podría pasar algo parecido si tienes un timer configurado por error con un clock externo. 2º. Problema hardware. Lo que te han dicho, ruido en la alimentación, es la causa más común. La solución, separar alimentaciones de potencia y lógica, sobredimensionar condensadores de filtro, añadir un condensadore de filtro de 100nF a la alimentación del PIC, lo más cerca posible de él, asegurar que las pistas de alimentación y masa están correctamente dimensionadas y trazadas, y que no sean compartidas por el circuito de potencia y el lógico. Luego ya podría haber problemas más sutiles, como un acoplamiento incorrecto entre el PIC y otros chips (una resistencia en cada puerto utilizado que limite la corriente máxima a 15mA puede hacer milagros). Otro problema típico con control de motores mediante puentes H es no dejar tiempo suficiente para la conmutación en cada rama de la H, con lo que puedes tener corrientes instantáneas muy altas, cercanas a cortocircuito, que echen abajo la alimentación (esto además seguiría pasando aunque quitaras los motores). En fin, ya nos dirás. -- Saludos de Jose Manuel Garcia jose.mgg***terra.es http://213.97.130.124 "jugator EChMotor#140" <jugator***gmail.com> escribió en el mensaje news:fuhrvc$in0$1***localhost.localdomain... > "Miguel Gimenez" <me***privacy.net> escribió en el mensaje > news:fuhqtk$3v2$1***aioe.org... > > > > El motivo más frecuente es ruido eléctrico en los pines. Si comparten > > fuente de alimentación el PIC y el motor, se produce ruido y saltos de > > tensión que pueden activar el circuito de brown-out o provocar cambios > > aleatorios en el estado de la CPU (por ejemplo, cambios del PC). Quítale > > los motores o aliméntalos de una fuente secundaria para ver si desaparecen > > los reinicios. También te pueden ocurrir si la corriente del motor > > comparte camino con la del micro (trazado incorrecto), entonces no se > > soluciona con dos fuentes sino con un retrazado. > > > > todo el sistema está alimentado por una pila de 9V. El PIC a través de un > 7805 (5V); y el L298 tiene Vss conectado también a la salida del 7805, Vs > directamente a la pila de 9V y GND al negativo de la pila, que es común > también para el PIC. > > Si cambio la pila por un alimentador externo enchufado a la red sigue > pasando. > > Lo acabo de probar simplemente desconectando los motores. También ha llegado > a reiniciarse, y me aventuraría a decir que ha tardado bastante más en > hacerlo (aunque como es bastante aleatorio, no es seguro que así haya sido). > > Miraré de separar circuitos de alimentación a ver qué ocurre. > > Gracias > > > |
| |||
| "Miguel Gimenez" <me***privacy.net> escribió en el mensaje news:fuhthc$fij$1***aioe.org... > > ¿Estás dejando tiempos muertos al conmutar el L298? Si no lo haces habrá > un cortocircuito de unas décimas de us cada vez que cambie de estado, que > provocará un salto de tensión (primero hacia abajo y después hacia arriba) > en la fuente y llegará directamente al micro (los 7805 no responden > demasiado bién a escalones). Añade (o aumenta) los tiempos muertos y pon > un condensador de 100 nF directamente en los bornes de alimentación del > L298. > pues no dejo tiempos muertos, no. Miraré de ponerlos ahora. El condensador sí que está puesto. Muchas gracias |
| |
| |
![]() |
| Herramientas | |
| Desplegado | |
| |