Problema de Arduino con comunicación USB y Motores de Vending Machine

Revisa tu código y mira si en algun momento se accionan varios reles a la vez?

Hi,
El problema es que si conecta los dos a la vez vas a peder la comunicacion entre el PC y el arduino.

Finalmente despues de 30 minutos buscando haciendo un google encontre finalmente el esquematico del modelo del relay. Si es cierto que los +5 voltios es comun y los pines del arduino provee el ground para energizarlos. Adjunto esta el esquematico pero no vale la pena adjuntarlo al post.

16 relay 2.pdf (55.1 KB)

El problema es que si conecta los dos a la vez vas a peder la comunicacion entre el PC y el arduino.

A que dos te refieres @tauro0221?

Hi,
Si conectas el USB y el Vin a la misma vez el Vin overide el USB +5 voltios. Por eso fue que yo pregunte si tenia los dos conectados y consecuentemente pierde la comunicacion entre el PC y el Arduino.

Es aleatoria la falla, o siempre se da a un tiempo definido.

@PeterKantTropus la falla es aleatoria, es decir por ejemplo se puede activar 10 veces los motores y no pasa nada, pero falla en la prueba 11, y después puede fallar en la 15 o en la 3. Pues la verdad si hago pruebas sin los motores, es decir solo los reles no pasa nada, pero obviamente cuando los conecto se inyecta un ruido que es el que esta ocurriendo y bloquea el puerto. @surbyte no tengo ninguna instrucción que prendan todos los reles siempre es uno a la vez. @tauro0221 pues yo vi un topic en el foro en donde preguntaban que si se podía tener conectado las dos cosas debido a que el puerto USB solo se usa para comunicarse con una interfaz y se usa la alimentación externa y decían que no había problema pues el Arduino toma el voltaje de entrada en este caso del plug como primario y cuando no pues toma el USB, en el caso del vin pues es la única forma de referencia debido al problema que comente que pasaba y también se discutió en otros temas del foro en donde decían que se podía usar de esa manera pues el tipo de modulo de reles y el arduino cuando se energizan de manera externa se referencia así. Claro que si tienes alguna idea de que puedo intentar para que no se me desconecte pero siga funcionando de manera correcta estoy abierto a tus sugerencias. Gracias

Tienes a mano un filtro RFI de esos que tenían las PC viejas en sus fuentes. Ahora ya no los traen por cuestión de costos.
Yo te diría que uses uno en la entrada de la fuente del Arduino.

Tienes alguna imagen de referencia para yo buscar, ya que tengo varias PCs viejas en mi empresa y podria desvalijarlas para extraerle los filtros que me dices. Gracias

Hi,
Estuve estudiando en la forma que esta alambrado el systema y veo que el arduino esta completamente aislado por los optocouples de los relays. Creo que el tamano de los motores no debe influenciar en lo que esta pasando pero quien sabe uno habeses se equivoca. Ahora posiblemente como son motores que usan escobillas estas pueden causar ruidos electricos. Aqui debido al voltaje creo que se le puede anadir un condesandor de .1uf para conectado directamente a los terminales que alimentan el motor y asi eliminar el ruido de las escobillas directamente en la fuente que produce el ruido. Se le debe anadir un condensador a todos los motores.

Otra cosa que note en el esquematico del modulo es que ya vienen con el diode installado. En otras palabras esto va evitar el ruido del kickback cuando se de-energiza el relay.

Otra cosa que note en el esquematico del modulo es que ya vienen con el diode installado. En otras palabras esto va evitar el ruido del kickback cuando se de-energiza el relay.

Cómo notaste eso @tauro0221, yo le pedí hacer una prueba con el multímetro para comprobarlo y tu dices que viendo ese esquema en Fritzzing te das cuenta que tienen diodo ?

@tauro0221 Yo puse en la salida de la fuente o esa en la entrada de los motores 3 capacitores con diferentes medidas de 1000uf, 2200uf y 100uf, pero sigue igual. No lo puse por cada motor porque solo tengo disponible las paletas para conectarlas a la fuente y no me da espacio de ponerle los capacitores alli.

Hi,
El condesador no debe de ser no electrolitico. Trata el de .1uf. Bueno yo siempre recomiendo y uso el MOV pero es cuando es alto voltaje. De todos manera aqui hay uno de 30 voltios que es el que mas se acera a los 24 voltios. El part number es el V05P30AUTO. No cuesta nada con tratar pues solamente cuesta .46 chavitos.

@tauro0221 ok voy a comprar uno y lo coloco, por cierto pongo el MOV y el condensador de 0.1uF? Y los puedo colocar en la fuente de 24V dc que alimenta los motores? Gracias a todos por sus ideas.

No. Los elementos van en bornes del dispositivo acusado de ser la fuente de ruido electrico. En este caso el motor.

Hi,
Esa es una buena pregunta. Para mi y la recomendaciones de los fabricantes del MOV recomienda que se instalen los mas cerca de la fuente que produce el ruido. Esto es para evitar que el ruido se propague. De todas manera no pierdes nada con poner uno el la fuente que suple la energia tambien.

Mirando todo como lo tienes instalado el arduino esta aislado del modulo de los relays, con los motoresy el power supply de los 24 voltios. Ahora aqui lo que veo es el sensor que no se donde esta localizado si puede ser afectado por los motores. Podrias darnos informacion de que sensor usas para ver si puede ser afectado por el ruido de los motores. Se que usa un power supply aparte pero hay que mirar todas la psibilidades.

En cuanto al condesador de .1 y el MOV con tratar no pierdes nada. Intala el condesador primero y se trabaja tu ejemplo lo podemos usar para otras personas con tu mismo problema. Despues instala el MOV si la pueba anterior no trabaja.

@tauro0221 Pero sin quitar el condensador? @surbyte lo que pasa es que como te explico los motores de la vending machine no me dan espacio para conectar estos elementos a los bornes pues son paleta y solo asi entran los conectores para energizarlos. En cuanto a los elementos se los voy a colocar aca como referencia:

Motor de Vending Machine AMS de 24 V:

Sensor de Caida de Producto:

https://es.aliexpress.com/item/Drop-sensor-for-the-vending-machine/32248756999.html

Hi,
Aqui encontre esta informacion del sensor de deteccion y segun el sensor amplifica la senal de la salida y manda un pulso. Ahora que pasa si pierde el pulso en el sketch? Que pasa si los motores influyen en el pulso o hace que se generen mas pulsos de la cuenta? Si se generan mas pulsos que pasa en el sketch? Deja de funcionar? Aqui lo que se puede hacer es poner messages en difentes sitios del sketch para averiguar que fue lo ultimo que hizo cuando fallo de acuerdo a los messajes.

In the detection area, if there are the objects go through this area by threshold velocity, which will cause the received infrared alter on the receiving board. When the receiving board detect this alteration, it transform this alteration into the electrical signals, after this signal is amplified, it generates a pulse signal at the output port.

@tauro0221 Pues yo en todo el Sketch tengo mensajes que mando por el puerto serial y por ejemplo cada vez que un motor se activa el muestra que motor activa y cuando el sensor lea manda un mensaje de entregado para saber que ya termino. Hay ocasiones en donde lo ultimo que escribe es el motor pero a veces es el mensaje de entregado. Sin embargo yo deshabilite el sensor de entrega y aunque al principio parecia que era eso siguio bloqueandose de vez en cuando sin embargo te cuento que yo tengo la señal del sensor en la entrada analogica 0, y referencio con tierra para que no tenga errores de medida cuando detecta un objeto, el sensor trabaja a 24 V, al parecer en cuanto a Vending Machines es el voltaje normalmente ultilizado.

Hi,
Como tu inicias la secuencia. Tu le envias desde el PC al arduino una orden para que haga una entrega. El arduino recibe la orden y energiza el motor. Como tu sabes cuando parar el motor. El motor tiene un switche que te indica que el motor llego al final? El motor dispensa el producto y ahora tu esperas por el pulso para saber que ya el producto fue entregado. Esto es correcto.

Aqui adjunto la descripcion de acuerdo a los mesajes que tu recibes.

Hay ocasiones en donde lo ultimo que escribe es el motor pero a veces es el mensaje de entregado.

Aqui puedes ver que el ultimo fue el del motor. Puedes decirme si el mesaje lo envies antes o despues que el motor termina de hacer la entrega. Despues recibes un mesaje de que el producto fue entregado. Como vez aqui no creo que el problema sea el ruido pues segun los mesajes que tu recibes ya el motor termino y despues recibes que la entrega ya se hizo.Como vez de acuerdo a los mensajes ya los motores hicieron su trabajo y tambien la entrega ya se hizo. Como sabes cuando parar el motor?

@tauro0221 Es correcto desde el PC se envia la orden de que se active un motor (el que por orden este 1, 2, etc) luego el Arduino activa dicho motor por x tiempo (aqui es donde manda el mensaje por el puerto para decir que ese motor se activo), si en ese tiempo el sensor de producto no se activa, se desactiva dicho motor y se activa el siguiente hasta que un producto caiga y el sensor se active, cuando dicho sensor se activa el Arduino detiene el motor y escribe por el puerto que ya fue entregado dicho producto. Sin embargo he notado que cuando se pierde la conexión es decir cuando ya no se lee por el puerto lo que escribe el arduino, este sigue funcionando tal cual porque igual si el sensor de producto se activa igual detiene los motores, es decir el sketch se sigue ejecutando pero el problema es que el ruido bloquea el puerto y aca es donde toca detener la interfaz que escribe y lee por el puerto, desconectar y volver a conectar el Arduino, por USB.