proyecto arduino. USB + fuente de alimentación externa: funciona bien. Sin USB - todo se vuelve loco

tengo este circuito:

ingrese la descripción de la imagen aquíEs un proyecto simple: un sistema de enfoque para una lente tomada y un adaptador anamórfico. Tengo tres macetas. El primero lo uso como manipulador. El segundo se usa para obtener la posición del servo de rotación continua (JX DC6015 Mod) - motor #1. El tercer potenciómetro se usa para controlar la posición del otro servo de rotación continua (JX DC6015 Mod) - motor #2. También hay algunos botones y diodos para fines de calibración. El motor n. ° 1 gira la lente tomada y el motor n. ° 2 gira el adaptador.

Bueno, veamos el circuito. También tengo allí un diodo 1N4007 y una tapa de 47uF. Uso este esquema porque el circuito ni siquiera se encendió cuando traté de alimentarlo con una batería. Ahora al menos enciende. Pero dejémoslo de lado por un momento.

El principal problema es que todo funciona perfecto cuando uso un adaptador externo AC-DC (o batería) con el USB de Nano conectado a mi computadora portátil. Tan pronto como desconecto el cable USB, el sistema se vuelve loco. En caso de que esté conectado al adaptador AC-DC, simplemente comienza a girar los servos varias vueltas en sentido horario y luego hacia atrás. En caso de que se alimente solo con una batería, los servos simplemente giran CCW o CW muy rápido y nunca se detienen.

Me parece que tengo un problema de bucle GND. Traté de desacoplar mis potenciómetros agregando 3 tapas para cada potenciómetro conectando un pin de señal con GND, pero las cosas empeoraron aún más. No funcionó incluso con USB conectado a Arduino. Los servos giraron CW y CCW cambiando la dirección muy rápido.

Probé con otros dos controladores Arduino, pero todo seguía igual.

He probado todos los GND. Todos ellos están conectados entre sí.

Entonces decidí intentar aislar VCC y GND del servo poniendo NME0505SC entre la fuente de alimentación y Arduino. Pero tampoco ayudó.

¿Qué se podría hacer para que funcione solo con una fuente de energía?

Fritzing debería poder brindarle un esquema de circuito en lugar del diagrama de cableado que ha publicado. El esquema es el preferido en este sitio, pero ambos podrían ser útiles en este caso.
Intente alimentar el Nano con un cargador de teléfono USB. Si esto funciona de la misma manera que la conexión a la computadora portátil, entonces sospecho que el Nano no puede tolerar el ruido en el suministro del motor.
Pero necesito que se alimente solo de un suministro. ¿Vale la pena probar un filtro RC? Pero no sé la frecuencia de este ruido. Encontré un proyecto de procesamiento haciendo un osciloscopio de Arduino. Intentaré medir el ruido en Arduino de 5V y veré si cambia cuando se inicia el servo.
Pruebe la sugerencia que hizo @transistor primero. Es una forma sencilla de reducir el problema. Es posible que un "osciloscopio" hecho con un Arduino no funcione lo suficientemente bien como para que usted realmente vea el problema. Además, lo habrás ensamblado a partir de partes y piezas. ¿Cómo estará seguro de si está midiendo un problema con su circuito o persiguiendo un problema en el osciloscopio?
La sugerencia de @transistor es muy obvia. Como he escrito en mi tema, funciona bien cuando Arduino está conectado tanto a una fuente de alimentación USB como a un adaptador AC-DC. La pregunta es ¿cómo hacer que funcione solo con una fuente de alimentación?
El problema más obvio que veo es que no está suministrando suficiente voltaje al pin de alimentación VIN. La documentación del Arduino Nano establece que el VIN debe ser de 7-12 VCC, y usted está suministrando 5,6 VCC (batería) - 0,6 VCC (a través de ese diodo), dejando solo 5 VCC en el VIN. Por lo tanto, no está cumpliendo con la especificación de desconexión para el regulador de voltaje lineal de 5 V CC incorporado, y es por eso que no obtiene una potencia de 5 V CC regulada en la placa, y es por eso que la placa se comporta de manera errática.
He usado un convertidor CC-CC elevador para Arduino. No ayudó. Para mí, parece que es un bucle de tierra o un problema de ruido. Pero entonces el aislador debería resolverlo, ¿no? Encontré que alguien tenía un problema un poco similar y lo resolví agregando una tapa 1nf a un enchufe de motor de CC. No tengo tales límites por ahora para verificarlo, pero intentaré obtenerlo para el lunes y ya veremos.
Escuche a @JimFischer. Arduino utiliza un regulador integrado basura 1117 en la línea Vin, con un voltaje de caída sustancial. Déle al menos 7+ V, o un adaptador de pared AC-DC estándar de 12 V, no un "DC-DC intensificador" desconocido.
Creo que malinterpretó el concepto de "problema de ruido de bucle de tierra". El problema del bucle de tierra ocurre cuando se usan DOS tierras para DOS fuentes diferentes. Y, según usted, cuando se usan dos fuentes, aquí es exactamente donde no tiene ningún problema, que es lo contrario de lo que sucede a veces con los bucles de tierra.
Supongo que no es un caso. He cambiado servos JX 6015 por Doman con casi las mismas características y funciona todo bien. Lo único es que Doman tiene una regulación de velocidad suave solo en sentido horario y de alguna manera solo tiene tres velocidades en sentido antihorario. Doman no cumple con los requisitos de mi proyecto. Entonces, no se trata del voltaje, se trata del ruido que parece.

Respuestas (3)

Además de mi comentario sobre el requisito de que el voltaje en el Arduino Nano V I norte El pin de alimentación debe ser en todo momento de 7 a 12 VCC, aquí hay algunas sugerencias adicionales para la solución de problemas.

  1. Al solucionar problemas de suministro de energía, no use un voltímetro . SIEMPRE use un osciloscopio de almacenamiento digital (DSO) (preferido), o un osciloscopio de almacenamiento analógico con suficiente persistencia de almacenamiento (si no tiene un DSO), para observar el comportamiento del voltaje de la fuente de alimentación en función del tiempo durante un período de tiempo razonable, por ejemplo, 200 – 500 milisegundos.

  2. Usando un DSO, observe el voltaje no regulado en el Nano V I norte clavija de entrada de energía. Asegurar V I norte nunca cae por debajo del voltaje de entrada mínimo del regulador, que para el Arduino Nano sería de 7 V CC (consulte la hoja de datos del Arduino Nano). Asegúrese de que este voltaje no regulado no muestre problemas inaceptables como: grandes picos de voltaje; gran ondulación; el voltaje sale ocasionalmente de la ventana de 7 a 12 V CC, etc.

  3. Con un DSO, observe el voltaje en los pines de salida de alimentación de 5 VCC y 3,3 VCC del Nano MIENTRAS SU SOFTWARE ESTÁ FUNCIONANDO. Asegúrese de que el voltaje en el pin de salida de alimentación de 5 V CC esté entre 4,95 y 5,05 V CC (consulte la hoja de datos del LM1117 ) y que el voltaje en el pin de salida de alimentación de 3,3 V CC esté entre 3,267 y 3,333 V CC (consulte la hoja de datos del LM1117 ). Verifique la presencia de grandes picos de voltaje, caídas de voltaje, ondulación excesiva, etc., es decir, cualquier cosa que sea anormal en un riel de fuente de alimentación de CC que pueda causar que el Arduino o los circuitos circundantes se "enciendan": reinicios espontáneos, analog-to -fallos de conversión digital, etc.

Un último comentario. La página web de Arduino Store para Arduino Nano ofrece valores contradictorios para el rango de voltaje requerido para VIN. La sección "Especificaciones técnicas" establece que el rango requerido de VIN es de 7 a 12 V CC, lo que me parece sensato (correcto). Pero la sección "Documentación> Energía" afirma que el rango requerido de VIN es de 6  a 12 VCC. Esa especificación de 6 V CC está POR DEBAJO de la caída especificada de 6,2 V CC del LM1117IMPX-5.0 (consulte la hoja de datos del LM1117 ), lo cual es un negocio arriesgado para un producto de producción. Si el VIN cae por debajo de 6,2 V CC, aunque sea un poco, obtendrá un "comportamiento no especificado" del regulador de voltaje LM1117IMPX-5.0 de Nano.

¿Por qué crees que funciona bien con otro servo?
@AntonZimin, Jim Fischer (y yo) no "piensan". Estamos seguros de que su problema es una fuente de alimentación insuficiente. El otro servo funciona porque es probable que tenga menos corriente de arranque cuando se controla, y la fuente de alimentación se hunde menos. Funciona por accidente. Puedes llamarlo "ruido". Pero si la temperatura ambiente cambia o la batería baja un poco, dejará de funcionar nuevamente. Fijar el voltaje de entrada, o regulador. Como mínimo, elimine su diodo en serie.
@AntonZimin, no pierda demasiado tiempo tratando de adivinar cuál podría ser el problema. Utilice equipos de prueba, y específicamente un DSO, para realizar mediciones/pruebas útiles que le indiquen con certeza qué sucede en el pin de entrada de alimentación VIN del Nano y en los pines de salida de alimentación de 3,3 V y 5 V. Podemos tratar de especular y adivinar durante todo el día cuál podría ser el problema, pero eso suele ser una pérdida de tiempo. Quince minutos de prueba con un DSO pueden decirle si los reguladores de voltaje del Nano funcionan normalmente o no.
Cuando quito el diodo, ni siquiera se enciende si trato de alimentarlo con una batería. Intenté darle a Arduino un 12v separado con todos los terrenos conectados y se apagó en 10 segundos debido al sobrecalentamiento.

Algunas ideas adicionales y sugerencias para la solución de problemas.

Pensamientos

  1. Existen numerosos artículos en Internet que analizan los problemas de ruido de la fuente de alimentación causados ​​por la conexión de circuitos analógicos, circuitos digitales y componentes eléctricamente ruidosos, como motores de CC. Estos artículos analizan varias estrategias para reducir el ruido de la fuente de alimentación en circuitos de dominio mixto. Intente realizar una búsqueda en Internet utilizando las palabras clave " conexión a tierra de señal mixta " o " + conexión a tierra de señal mixta de placa de prueba " para artículos relacionados con la placa de prueba. Por ejemplo: Consulte el artículo de Analog Dialog de Walt Kester titulado "Conexión a tierra y desacoplamiento: ¡Aprenda los conceptos básicos ahora y ahórrese mucho dolor más tarde! Parte 1: Conexión a tierra" .(Nota: use el enlace de descarga para obtener la versión en PDF de este artículo. La página web elimina parte de la información al final del artículo).

  2. Su publicación original no menciona el valor de resistencia de su potenciómetro. Tenga en cuenta que esos tres potenciómetros están conectados en paralelo a través de los pines GND y de alimentación de 5 V CC del Nano. Por ejemplo, si cada potenciómetro tiene una resistencia de pista resistiva (extremo a extremo) de 100 ohmios, la resistencia equivalente de esos tres potenciómetros en paralelo es 100/3=33,3 ohmios, lo que consumiría continuamente unos 150 mA de los 5 del Nano. Pin de alimentación de VCC. Eso es malo.

  3. Asegúrese de que sus potenciómetros estén cableados correctamente para que los terminales de resistencia de "pista" de extremo a extremo de cada potenciómetro estén cableados a través de los pines de 5 VCC y GND del Nano. Asegúrese de que el terminal del limpiaparabrisas de cada potenciómetro no esté conectado al pin de 5 V CC o GND del Nano.

esquemático

simular este circuito : esquema creado con CircuitLab

Sugerencias para la solución de problemas

  1. Retire todos los circuitos periféricos de la placa de prueba y del Arduino Nano, es decir, retire los LED, los potenciómetros, los interruptores de botón y los servomotores.

  2. Conecte una fuente de alimentación de 12 V CC a los pines VIN y GND del Nano y ejecute su código en el Nano. Usando un DSO o un voltímetro de CC, controle el pin de alimentación de 5 VCC del Nano durante un período de al menos cinco minutos. Verifique que el regulador de voltaje lineal LM1117IMPX-5.0 integrado del Nano no se sobrecaliente y se apague, lo que haría que el voltaje en el pin de 5 V CC del Nano cayera a (aproximadamente) cero.

  3. Desconecte la fuente de alimentación de 12 V CC de los pines VIN y GND del Nano. Vuelva a instalar SOLAMENTE los tres interruptores de botón. Usando el procedimiento del paso 2, controle el voltaje en el pin de alimentación de 5 V CC del Nano durante cinco minutos.

  4. Suponiendo que no se descubran problemas durante el paso 3, haga lo siguiente. Modifique su código fuente para ENCENDER los tres LED y nunca APAGARLOS. Deje los interruptores de botón en su lugar y repita el paso 3 para los tres circuitos de LED, es decir, en el paso 3 reemplace "los tres interruptores de botón" con "los tres circuitos de LED". Asegúrese de que la placa no se sobrecaliente al hacer funcionar los LED continuamente durante cinco minutos.

  5. Suponiendo que no se descubran problemas durante el paso 4, mantenga los interruptores de botón y los LED en su lugar y realice el paso 3 para los tres potenciómetros. Utilice el mismo software del paso 4 que enciende los LED y no los apaga. Asegúrese de que la placa no se sobrecaliente al ejecutar esta combinación de circuitos continuamente durante cinco minutos.

  6. Suponiendo que no se descubran problemas durante el paso 5, mantenga los interruptores de botón, los LED y los potenciómetros en su lugar y realice el paso 3 para los dos servomotores. Utilice el mismo software del paso que enciende los LED y no los apaga. Asegúrese de que la placa no se sobrecaliente al ejecutar esta combinación de circuitos continuamente durante cinco minutos.

Agregué diodo shottky y una tapa de 2200uF antes del vin y resolvió el problema. Es cierto que fue un problema de potencia pero no le subí el voltaje, solo le puse un tope grande y funciona bien con ac-dc. En cuanto a la batería, parece que tengo que probar con otra o duplicarla.