Arduino pro mini que no funciona como debería, pero mismo programa en una Uno sí

Hola a todos. Tengo un pequeño problema con un programa que no funciona como debería en una pro mini (3.3V, 8Mhz, 328P) pero sí al 100% en una Uno. El programa está de hecho pensado para una pro mini por lo que el problema no creo que sea software (tocar algún parámetro del programa o similar).

El esquema de la circuitería es como sigue:

-De la patilla (agujero) 8 sale un cable que va a la conexión de datos de una tira de leds 2812. -A las patillas 9, 10 y 11 se conecta un codificador rotativo con pulsador para cambiar, con el programa que cargo, varios parámetros de los leds: color, intensidad… Si no se conectan, no pasa nada, los leds se encienden, pero obviamente no se pueden "reprogramar". Vamos, que serían como el "menú" del programa. -A la 12 va un pulsador que sirve para activar un par de ajustes. Digo lo propio: no es imprescindible que esté conectado, porque no influye en el encendido de los leds. -A la A0 va el punto medio de 2 resistencias en serie de 47 kOhm, que en sus extremos van al + y al -.

Y todo alimentado por una batería 18650.

Bien, con el adaptador, un CR2102 (si no me tangaron en eBay; lo digo porque en el procesador no hay ni números ni letras ni nada, como si lo hubieran "borrado/lijado") con conexión DTR, conectado a la pro mini, subo el sketch a esta (cuidando de escoger placa, procesador y puerto correctos). Sueldo cables… y los led se quedan en blanco a tope de intensidad (de hecho, a los 5 minutos o así se empieza a sentir que cogen temperatura) cuando con el mismo programa y los mismos componentes conectados en la Uno, los led se quedan (configuración por defecto) parte en azul y parte en rojo, a intensidad media.

Compré 2 placas pro mini: en la 1ª, con la que he hecho todo tipo de medidas y comprobaciones, originalmente conecté (por error) el + de la batería al VCC; vamos, que en lugar de haber metido 3.3 V, fueron unos 4.

Al verlo, cambié el + al RAW (donde debería ir desde el primer momento). El regulador de voltaje parece estar bien, ya que si mido el voltaje en VCC tengo 3.34V. Subí como comprobación el sketch del blink, y el led de la placa funciona. Vuelvo a subir el programa de mi proyecto (bueno, el programa no lo he diseñado yo, pero sí puedo hablar de "mi" proyecto con mis componentes y mi placa) y sigue funcionando mal (leds blancos a tope). He medido voltajes en cada una de las patillas, y en principio son consistentes entre la Uno y la pro mini. También, midiendo continuidad y resistencia por si hubiera algún corto o una soldadura mal hecha, todo está como debería.

He probado con la 2ª placa, pero esta vez (aparte de poner el + de la batería donde debe), no he soldado nada, sino que lo he conectado con cables sobre la protoboard (conectando lo mínimo: +, -, la salida a leds y la A0). Tampoco funciona como debería (probado con idéntica configuración en la Uno sí va como debe; no se puede cambiar nada de los leds al no haber puesto el encoder ni el pulsador, pero sí se quedan con la configuración por defecto: no blanca a full sino azul/roja a media intensidad). Lo he hecho así por si en la primera "se me hubiera ido el soldador" y hubiera tocado algún componente o soldadura, y salvo microbolitas de estaño ocultas, en la primera placa lo veo todo bien, al menos a 10 aumentos.

Mis teorías: -cascó el regulador de voltaje o algún condensador o resistencia asociados en la primera placa. A priori lo descarto (en la 2ª placa seguro descartado al no equivocar conexiones), por la lectura que da el voltímetro, y por ver que con el sketch del blink, el led de la placa parpadea. La batería fue lo último que puse en la 2ª, así que tampoco es decir que se haya hecho un corto por algún lado al meter corriente antes de tiempo. -cascó el 328 en la 1ª por error en conexión de voltaje. En principio también lo descarto ya que el led de la placa sí luce con el blink. Aparte, no explicaría por qué pasa lo mismo con la 2ª, cuando el voltaje ahí sí lo puse bien. -fallo de fábrica. En una podría, pero… ¿van a fallar 2 placas exactamente de la misma forma?. Muy poco probable. -"se me fue el soldador". En la 2ª, aparte de soldar los pines para conectar el adaptador (soldaduras hechas además "por abajo"), no lo he usado. En la primera, salvo que algo se me haya escapado con la lupa, todo parece estar bien: ni bolas, ni pistas unidas/cortadas, ni componentes desoldados, ni componentes dañados externamente. -Error al pasar el programa (configuración en el IDE) o error en el adaptador. Funciona el programa del blink, por lo que en teoría queda descartado. Además, el IDE no me da error de transferencia y los leds del adaptador se encienden/parpadean, igual que el de la placa, al subir el programa.

En principio esto agota todo lo que se me ocurre. También, he comprado otra Arduino Uno para que me sirva como osciloscopio "casero/cutre salchichero". La salida (patilla 8) del Arduino Uno "de pruebas" me marca picos no distribuidos regularmente, que perfectamente puede ser por la escasa resolución en escala de tiempo del "arduinoscopio" (en el programa, el "ancho" en tiempo de cada bit se mide en décimas de microsegundos). Con ambas pro mini, obtengo básicamente el mismo patrón. Vamos, que lo que quería ver es si, al tener que pasar no voltaje continuo sino información en forma de 0 y 1, el voltaje que me daba el voltímetro era tensión continua (línea plana) o señal/información (picos, ondas, dientes de sierra…), y parece que en efecto manda señal, no simple voltaje.

Entonces, ¿qué os parece que puede ser el fallo?

Si sirve de algo: he leído que quizá alguna pro mini pueda venir sin bootloader. Lo dudo al subirse bien los programas. Lo que no sabía es que venían por defecto con el "blink" instalado, así que no puedo decir por ahí nada (nunca probé las pro mini "en vacío"). Lo que sí puedo decir es (respecto de las pro mini) que si en el IDE le doy, en herramientas, a obtener información de la placa, sí me da PID y VID, pero en BN me dice "placa desconocida" y en SN "subir cualquier sketch para obtenerlo" (¿¿¿??? ¡pero si acabo de hacerlo!; con la Uno SÍ me da esos 2 datos correctamente). También decir que el adaptador se calienta (no mucho, pero tras desconectarlo, el circuito está algo caliente), y decir que al principio (y solo con la 1ª pro mini) lo conectaba en un USB 3.0, que parece que puede dar problemas. Ahora lo conecto en el único USB 2.0 que tiene mi portátil. Si eso pudo cascar originalmente el adaptador y este se está cargando todo lo que le conecte, pues no sé, pero sigue dando un VCC de 3.3V (y de 5 en su patilla de 5V, que no uso).

¿Ayuda? ¿Consejos? ¿Soluciones?.

Gracias por adelantado. Sergio.

Hi, Aqui se te esta olvidando que los pines del arduino uno las salidas son de 5 voltios las del pro mini son de 3.3 voltios de salida. Leistes las especificaciones de los componentes que estas usando para ver si trabajan con un voltaje de 3.3 voltios? Dices que puedes bajar el blink y si te trabaja bien por lo tanto los pro mini estan bien. Otra cosa es que si los pro mini son chinos cuando lees los ID no te van a trabajar. Tambien si puedes bajar el blink entonces tienes el bootlloader.En referencia a leer las entradas analogas que usas para la conversion 5 voltios o 3.3 voltios.

Como dice @tauro0221 los clones chinos no devuelven los datos de la placa. Yo tengo dos Nano con CH340 y me pasa exactamente lo mismo que a vos a la hora de querer identificar la placa.

En cuanto al mal funcionamiento, seguramente el problema pasa por la tensión, como te sugiere tauro0221, porque ese Mini milagrosamente sobrevivió, evidentemente. :wink:

Recuerda que hay dos versiones de Pro Mini, una de 3V3 (la que tienes) y otra de 5V, lo que te puede facilitar las cosas si llegaras a necesitar lógica de 5V.

De curiosidad ¿En A0 va a ir un potenciómetro en un futuro? Porque no le encuentro otro sentido…

Hola tauro, hola gatul. Las placas, aunque compradas en eBay España, en principio creo que son de sparkfun, al menos eso pone en la placa (claro, que bien puede ser que sean clones con el logo de esa marca, y eso no sé cómo saberlo, si son originales o clones).

La Arduino Uno no la alimento con el USB sino con la pila, que conecto a la protoboard, para que sea todo lo más parecido posible a lo que irá con la pro mini. Las salidas (o los voltajes que me da el multímetro) en la uno son de Vin a la patilla correspondiente:
pin 8: 3.7, pines 9 a 12 (tengan algo conectado o no): 0.85, y pin A0: 1.88
Arduino uno de patilla a GND:
pin 8: 0.09, pines 9 a 12 (tengan algo conectado o no): 2.92, y pin A0: 1.89

Para una suma combinada Vin a GND de unos 3.77-3.79 V

En la pro mini son algo distintos (en ambas dan los mismos valores), pero no tan distintos como para pensar en “aquí hay algo raro”.

Los componentes en principio sí están diseñados para funcionar con este voltaje de 3.3, y en la Uno con ese voltaje (bueno, algo más ya que las 18650 cargadas a tope llegan a dar 4.1; ahora mismo entrega 3.7 aprox) van bien. Por eso no entiendo lo del mal funcionamiento: si la alimentación fuera distinta lo entendería, pero es que alimento a todas las placas de la misma forma.

Entradas analógicas: solo va como dije la A0. Conversor no uso (no estaba en el diseño original: las resistencias en sus extremos van al + y al - de la batería). No, gatul, no va a ir con un potenciómetro. El programador establece como una de las variables en el programa un cociente entre los valores de ambas resistencias, y esos son los valores que él usa. Supongo que será para medir un voltaje intermedio, que con el uso de la pila obviamente va a cambiar, como referencia.

Si alguien quiere, pongo el enlace a freecad (el diseño del circuito) y a GitHub (el código del programa).

Por cierto, que acabo de mirar una cosa en la 2ª placa (la que no tuvo mal la conexión de voltaje)… y creo que voy enlazando milagros. Se me fue la cabeza y puse la placa horizontal, de tal manera que los agujeros de la pro mini estaban en la misma fila (!) de la protoboard… y metí corriente. Solo “afectó” al RAW y al GND (el resto de conexiones no estaban en esa fila; en particular la A0, que no cabía). Aparte de (al verlo y quitar de inmediato la batería) que los cables del portapilas para la batería estaban (lógico) un poco calientes, la he conectado de nuevo “como debe ser”… y sigue funcionando. Mal en cuanto a que los led siguen blancos, pero funciona como antes (no hubo fumata negra… ni blanca, ni chispazo).

Sergio.

Hi, Bueno para mi la diferencia entre el arduino uno y la pro mini es el voltaje de 3,3 de salida comparado con el arduino Uno que es de 5 voltios.Aqui algunos cometen un error y compra el 8mhz pero no se dan cuenta de que las salidas son de 3.3 voltios comparada con la de 16mhz que es de 5 voltios, Yo recuerdo que alguian tenia problemas al cambiarlo con el de 5 voltios se resolvieron los problema.Yo trataria de conseguir el de 5 voltios para ver si resuelve el problema.Otra cosa que deberias hacer es explicar detenidamente cuals es el problema basico. Al principio tu hablas de varios problemas pero si yo entiendo el problema es que no puedes programar los leds.Especifica cual es el problema principar y un diagrama de como tienes el systema alambrado y como estas alimentandolo para ver donde esta el problema.Para mi que el voltaje de 3.3 voltiios es el problema pero puede ser que ete equivocado.

Hola tauro. Sí, el principal problema es el de los led. Los otros (poner mal el + de la batería, USB 3.0 en lugar de 2.0, lo de esta mañana con la protoboard…) son por inutilidad de quien esto escribe.

Envío foto del diagrama del diseñador (dije que estaba en freecad: ¡no, en tinkercad!). A tener en cuenta entre ese diseño y lo real:

-La placa es una Uno porque en tinkercad no está la pro mini.
-Los 3 pulsadores de la derecha hacen las veces de encoder con pulsador, ya que en tinkercad no tienen como componentes los encoder. El encoder en sí son los cables amarillo y marrón, y el pulsador del mismo el cable azul.
-Los led sueltos que se ven hacen las veces de 6 leds (el de debajo de la batería), 26 (cada uno de los 3 en vertical) y 4 (el de la izquierda). Al ir en serie, podemos suponer que forman todos una sola tira.
-En los led del esquema, el orden de los cables es, de abajo a arriba, +, -, señal. En lo real, y es como lo tengo puesto, es +, señal, -.

Los enlaces:
-al circuito, tinkercad.com/things/2A92gsdHCTD-eskrima-electronics (es lo de la foto adjunta),
-al diseño de lo que quiero hacer (donde en “description” “show more”, mencionan específicamente la placa de 3.3V), www.myminifactory.com/es/object/3d-print-black-widow-infinity-war-eskrima-stick-53846
-y al código (por lo que decía gatul de las resistencias a A0), github.com/jmunkki/eskrimastick

Otro usuario que subió (en 2018) en myminifactory su recreación no comentó nada de la placa (que fuera de 5 y no de 3.3) así que en principio así debería ser.

Sergio.

P.S.: escribí hace una semana al diseñador original para comentárselo (primera acción obvia), pero no me ha respondido aún.

Hi, Que voltaje usas en el pin Vcc ya que las expecificacones del 2812 dicen que es de 6 a 7 voltios.

El de la batería, una 18650, variable según carga de la misma entre 3.2 y 4.1. De hecho, al no ser voltaje regulado, va a RAW en la pro mini, no a VCC. En la Uno, el mismo voltaje, a Vin (no la pongo ni USB ni entrada de transformador). En ambas encienden: como deben en la Uno y mal en la pro mini.

Una prueba que hice al principio, fue poner ennla pro mini en lugar de la 18650 una de botón de 3.3 (la 2032), y los led se encendían, pero en rojo (todos), no en blanco… hasta que la pila perdió carga, y se fueron atenuando hasta apagarse. Ahora, como la 18650 ha perdido voltaje al descargarse parcialmente, se encienden todos en amarillo (y no debería ser así, como ya dije, sino parte en azul y parte en rojo).

Sergio.

En el diseño de tinkercad (NO en lo real) si enciendo la batería y pongo más de 5V, se “cascan” los led. Si lo bajo de 5, la marca de led cascado desaparece.

Hi, No me referia al VCC del micro sino a los leds. El pin de los leds Vcc segun las especificacioner require de 6 a 7 voltios.

Estas trabajando con tensiones muy al límite (el único cómodo es el ATmega que trabaja hasta con 1.8V)
Los WS2812B como mínimo necesitan 3.5V (y hablando del original, si es un clon vaya uno a saber…) por eso te encendían solo en rojo en un momento y ahora solo quedan blancos.
Prueba alimentar los led con otra fuente, solo para salir de dudas.
Para mí el problema son los niveles lógicos.
Intuyo que los led al estar con baja tensión no detectan bien el estado alto que envía el Mini.

Edito: @tauro0221 tengo la hoja de datos del WS2812B en mano (la adjunto), la alimentación va de 3.5 a 5.3V

WS2812B_preliminary.pdf (347 KB)

Hi,
Creo que posiblemente yo busque la especificaciones usando WS2812 y use esas especificaciones que dice que es de 6 a 7 voltios pero parece que la b es diferente. Adjunto las especificacioes.

WS2812.pdf (272 KB)

Yo creo que debe ser la versión B sino ni encenderían, máxime que nos cuenta que con el Uno le funcionan correctamente.

Esperemos a ver si @alu000 hace la prueba de alimentarlos con fuente externa para sacarnos la duda.

Yo estoy casi seguro que el problema son los niveles, por eso con el Uno funciona y no con el Mini.

Explico mi razonamiento: El Atmega328 trabaja entre 1.8 y 5.5V, y un nivel lógico alto va a ser como mínimo del 75 al 85% de la tensión de alimentación, siendo directamente proporcional a esta tensión (según se desprende de la hoja de datos). Quiere decir que a 5V un nivel alto puede estar a 4.2V o más, en cambio a 3.3V puede estar tan bajo como 2.3V, lo que es muy inferior a los 2.45V que necesitaría, como mínimo, un WS2812B alimentado a 3.5V para "leer" un valor alto ya que, según la hoja de datos, debe ser superior al 70% de la alimentación para ser válido y cualquier valor entre 0.7V y 2.45V será indefinido. ¿Qué ocurre en esa condición? Quien sabe... Ahora, supongamos que el Atmega328 alimentado a 4V fija un nivel alto mínimo del 80% (el promedio de los niveles anteriores), entonces el nivel alto sería de 3.2V, lo que es más que suficiente para que el LED lea el estado alto correctamente.

¿Y por qué me refiero a las tensiones mínimas? Porque en la hoja de datos del Atmega328 solo figuran las tensiones mínimas para estado alto de un pin de salida, no figuran la típica ni la máxima. Curioso...

Y todo esto me lleva a un gran interrogante. ¿Hay versiones de Atmega328 de 3.3V y 5V (que no están especificadas en la hoja de datos) o lo que es de 3.3V o 5V es el regulador de los arduinos y es lo que condiciona los niveles de tensión que manejan los pines?

Lo segundo explicaría que el error de @alu000 con la alimentación no le haya significado la destrucción del micro. ;)

Hi, Yo siempre sospeche que posiblemente es los niveles de 3,3 voltios. Como ya dije anteriormente el pro mini viene de dos versones 5 voltios y corre a 16MHZ. Si uno no lee las especificaciones compra el de 3.3 8mhz.

Si, obvio. De todos modos la idea es tratar de encontrarle la vuelta este asunto... Podría ser que una resistencia pullup ayude a "empujar" el HIGH, no? O directamente poner un transistor y a otra cosa.

Hola a todos. Uf, cuánto a responder. Por partes:

-Los led: ¡no sabía que una letra fuera tan importante como para no decirla! Sí, son WS2812B, no WS2812 a secas; ¿posiblemente clon “malo”? Digo porque en la bolsa pone made in China, pero comprada en eBay España. ¿Forma de saberlo? Quizá sea salirse del tema principal.

-El VCC de los led (ahora hablo de voltajes): como se ve en el esquema, es la misma que la de la placa si a esta la alimento con la batería, pero caso de alimentar la placa con transformador o USB, los led siempre serían con la batería, entre 3.2 y 4.1 según la carga de esta.

-Fuente externa no tengo para los led. Bueno, tener sí tengo un transformador, con pasos de 1V entre 4 y 24, lo que no tengo es conector para soldar y sacar 2 hilos.

Y vamos ahora con lo que decís de los niveles y voltajes. Os envío fotos que creo son más descriptivas que todo lo que pueda decir: la primera con un clon (funduino; venía en un kit que compré para iniciarme en este mundo) de una Uno, donde va todo como debe; la 2ª con una Uno original (la que compré para que hiciera de osciloscopio) alimentada con batería (placa y leds), que enciende la placa pero no los led (!! ¡sorpresa!; todas las pruebas las hice con la funduino, esta es la primera vez que uso la legítima, a modo de “contra-análisis”); la 3ª con la original alimentada por USB y los led con batería, que sí funciona (lo que da valor a lo que decís de niveles y voltajes); y la 4ª con la pro mini, alimentados leds y placa con la batería. Se ve más oscura por el intenso brillo de los led. El conexionado es idéntico. El encoder no está conectado en ningún caso.

Lo que respecto a las pro mini me lleva a una cosa: ¿cómo saber si son clones de marcas “buenas”, sparkfun en mi caso, o copias chinas? Lo digo por lo de no identificar ni BN ni SN: en la placa puede poner lo que quiera, y luego a saber qué han puesto. También puede ser que se salga del tema principal.

Por si es de utilidad, puedo adjuntar un Excel con los voltajes. He de decir que he medido todos con el multímetro puesto en voltaje DC, incluida la medición de la patilla 8, salida de señal.

Sergio.

Una cosa más que se me olvidaba: ¿y por qué placa de 3.3 y no de 5? Por el hueco del diseño para placa y batería. Va foto con no muy buena calidad.

Sergio.

El problema es que haciendo siempre lo mismo vas a obtener siempre los mismos resultados...

¿Probaste poner una resistencia a Vcc en el pin de salida los led al menos?

Estás "cerrado" en querer hacer funcionar las cosas como no se debe, estamos pensando como ayudarte y lo que se te ocurre es mandarnos un excel?

Lo mínimo es que consigas la forma de alimentar las cosas como corresponde, luego verificar si funcionan bien de ese modo, finalmente alimentalo como se te ocurra, con tu pila o con un panel solar

Saludos

Hi,
Otra coa es que se olvide de la bateria hasta que no resuelvaa el problema una vez que se resuelve el problema entonces trata con la bateria.

Hola. A ver, llevo con Arduino menos de un mes, empecé con ello justamente por esto (es para temas de Cosplay; es el bastón de Black widow), y no estoy interesado en usar arduino para mucho más. Mi conocimiento de electrónica, más allá de saber qué es cada cosa, es bastante limitado, así que agradecería, gatul, cuando dices:

¿Probaste poner una resistencia a Vcc en el pin de salida los led al menos?

que me dijeras valor de la resistencia (o rango de valores; si no tengo, ya pediré por internet: donde vivo no hay tiendas de electrónica) y entre exactamente qué 2 puntos tengo que conectarla, porque puedo liarla gorda al no saber qué hago. Supongo por lo que dices que entre patilla 8 de la placa/cable a los led, y el + de la batería, pero si es de otra manera ¡no sé cuál es esa otra manera correcta!. Quizá sea en serie entre placa y leds, o quizá en serie entre + de la batería y VCC de los led, o quizá… y yo qué sé

Aparte: ¿por qué al menos a 2 personas (el creador/diseñador y otro usuario que lo construyó y subió fotos al sitio donde está el modelo 3D) sí les funciona con una placa como mi pro mini (o parecida/de otra marca, pero del mismo tipo) sin poner nada más y a mí no? En el diseño original (mandé foto del esquema) ¡no hay más resistencias!

Pruebas, las que se quieran, pero indicando de la forma más precisa qué, cómo y (de) dónde, pero sin salirse (a ser posible) del circuito original.

Del Excel (que no envié): pensaba que podría ser de utilidad para que alguien, al ver los valores, me pudiera decir, en su caso, “tira la placa, funciona mal, porque te debería dar X y te da Y”. Al menos, es la información que yo daría a un ingeniero electrónico/informático por serle (creo) de utilidad.

¿Tanta diferencia de funcionamiento puede haber entre una Uno y una pro mini? Es que… ¡es el único cambio! (literal), como se ve en las fotos.

He seguido al pie de la letra las instrucciones del diseñador, ergo si a él le funciona y mi placa está bien, a mí también me debería funcionar. Que no lo estoy alimentando de forma “rara”, lo estoy haciendo como él dice: exactamente como él dice. No estoy cerrado a hacer las cosas como no se debe: estoy siguiendo los pasos de alguien a quien le funciona como lo diseñó en tinkercad (y que, por cierto, no me responde a mi problema). Es que en el mango de ese bastón solo cabe una 18650, así que la versión definitiva no puede ir con otra cosa; de qué me sirve si funciona con, por ejemplo, una batería de camión (o cualquier otra cosa), si en el montaje final no puedo usarlo.

Tauro, por el tema de probar distintos voltajes de entrada (comentado por vosotros en otros post anteriores), y sobre todo por esto que comentas:

Otra coa es que se olvide de la bateria hasta que no resuelvaa el problema una vez que se resuelve el problema entonces trata con la bateria.

Para la pro mini solo dispongo de la batería (o pilas con menor voltaje). Pese al transformador, no tengo conector para sacar los 2 cables (y donde vivo no hay tiendas de electrónica para comprar uno). Para la Uno, si la alimento bien sea con USB o con el transformador, no tengo manera de sacar ese voltaje a los led, por lo que sí o sí siempre los tengo que alimentar con la batería. Si hay otra manera de sacar/conseguir otros voltajes ¡se agradecen sugerencias, porque a mí no se me ocurren más (aunque de bien poco me sirve solucionarlo para otro voltaje por lo dicho más arriba). Lo que no voy a hacer, eso sí, es cortar el conector de un cable USB y sacar la corriente del PC.

Se me ocurrió una solución algo drástica. Como con el Uno funciona sin problemas, compra un Nano y listo. En ese espacio entra comodísimo.