USB Serial

Buenas,

Vengo con unas preguntillas sobre los cables usb y los puertos serial.
Para empezar estoy mirando que la maxima longitud de un cable usb para que no pierda debe de ser hasta 5m, no se si asumir que el por el tema de la alimentacion o realmente por que solamente hasta 5m, ya que un cable de 0.5 hasta que pierda señal tienes que tirar muchos mas metros. Ademas de que necesito usar una conexion por usb pero logicamente cortando los cables internos del usb de alimentacion, ya que lo alimentare con una fuente externa por los propios pins, con lo que solamente usare los cables D+ y D- del usb. Simplemente con este conocimiento quiero saber si por ejemplo uso un cable de red, o incluso uno que no sea red, si realmente afectaria tirar 5m y por que?

Tambien se que arduino integra puertos serial que son el RX y el TX, y querria saber si de esa forma me puedo ahorrar conectarlo por usb, es decir, conectar D+ y D- a RX y TX y luego conectar por usb a mi pc.

Un saludo

el_pedriyo:
estoy mirando que la maxima longitud de un cable usb para que no pierda debe de ser hasta 5m, no se si asumir que el por el tema de la alimentacion o realmente por que solamente hasta 5m, ya que un cable de 0.5 hasta que pierda señal tienes que tirar muchos mas metros.

La parte de la alimentación es la más delicada en longitud. La resistencia de los alambres se vuelve más aparente cuanta más potencia se le exija y cuán largos sean.
Las líneas de datos suelen de impedancia mucho más alta; por eso el enemigo de estos no es tanto la longitud sino el ruido electromagnético. La amenaza está en alterar el flujo de bits, ya sea por inducción de voltaje adicional o por desfase de pulsos.

el_pedriyo:
Ademas de que necesito usar una conexion por usb pero logicamente cortando los cables internos del usb de alimentacion, ya que lo alimentare con una fuente externa por los propios pins, con lo que solamente usare los cables D+ y D- del usb. Simplemente con este conocimiento quiero saber si por ejemplo uso un cable de red, o incluso uno que no sea red, si realmente afectaria tirar 5m y por que?

Si vas a utilizar UTP para las líneas de datos, asegurate que sea al menos de calidad cat-5e. No solo D+ y D- debes pasar; también la línea de tierra o las señales se corromperán de cualquier modo.

La única forma de transmisión de señales digitales resistente al ruido electromagnético: la luz.
Con transmisores USB de fibra óptica como este, no tendrás nada de que preocuparte. Evidentemente la luz no es conductora de electricidad, por lo tanto, el dispositivo del otro extremo debe ser alimentado externamente.

el_pedriyo:
Tambien se que arduino integra puertos serial que son el RX y el TX, y querria saber si de esa forma me puedo ahorrar conectarlo por usb, es decir, conectar D+ y D- a RX y TX

No. Aunque funcionen al mismo nivel del voltaje, el protocolo y ancho de pulsos son totalmente distintos.

Lo que llamas "puerto serial" en realidad se denomina UART o USART; no es lo mismo que USB excepto que ambos solo pueden transmitir un bit a la vez (de ahí que sean "seriales" o "en serie"). Aparte de que los protocolos no son los mismos, la velocidad tampoco. Incluso USB 1.0 trabaja 6 veces más rápido que el máximo que puede ir el USART de Arduino (12 Mbps vs 2 Mbps).

Muchas gracias por toda la explicacion, logicamente no puedo gastarme tanto dinero en tirar fibra, ademas de que tendria que tirar el cable con el puerto incluido por dentro de los cubos, lo cual haria que no me cupiese dentro, aunque estaria de lujo hacerlo asi.

En cuanto a los puertos series, asumo entonces que la unica forma de conectar un pc o una raspi es mediante los 3 cables de usb quitando el cable de alimentacion ya que lo alimentaria de forma externa. No hay entonces ninguna forma de conectar el arduino al pc por algun pin no?

Un saludo

el_pedriyo:
No hay entonces ninguna forma de conectar el arduino al pc por algun pin no?

Ahora que mencionaste RPi, eso me recordó que entonces la única forma sería que ambos dispositivos puedan "hablar el mismo idioma" sin poner USB de por medio.
Un Raspberry Pi justamente aparte de USB también puede "hablar" USART, SPI y I2C mediante algunos de sus GPIOs.

Los únicos Arduinos que pueden hablar directamente USB, son los basados en Atmega32u4 (Leonardo y Pro Micro) y ARM (Arduino Due).
Para el resto, quizá no hayas notado que hay un chip de por medio: el Atmega8u2 (Arduino Uno y Mega originales), FTDI (Arduino Nano original, algunos clones y revisiones antiguas del Uno y Mega) y los CH34x (básicamente ahora cualquier clon tiene de estos).

Ya, el problema creo que ya vendria si tienes que conectar por ejemplo 20 arduinos a la raspi, por eso empece pensando en el tema de los USB.
Pero muchas gracias por la idea.

De todas formas ayer me di cuenta de una cosa que comentaste.

Lucario448:
Si vas a utilizar UTP para las líneas de datos, asegurate que sea al menos de calidad cat-5e. No solo D+ y D- debes pasar; también la línea de tierra o las señales se corromperán de cualquier modo.

Estuve mirando y efectivamente debo de conectar tambien el cable de tierra, pero pensando se me ocurrio que si en vez de tirar 1 cable mas, es decir, ese de tierra conectarlo directamente a la tierra de la fuente de alimentacion que estaria alimentando mi arduino pudiera funcionar? O si tambien afectaria al rendimiento de la instalacion. Ayer estuve probando y durante las primeras pruebas cuando conectaba el cable de tierra directamente a la fuente de alimentacion parecia funcionar todo bien, hasta que revento el pc. Pero no se si en realidad podria no estar funcionando como debiera, no se si se me ha entendido, pero resumiendo, viene a ser tirar solamente D+ y D- y el tierra conectarlo a tierra.
En cuanto a la conexion del usb con ftp alguna recomendacion que hayas visto que funciona bien?
Es decir, estaba pensando meter D+ y D- por 1 par trenzado, y los 10V de alimentacion por otro par, con lo que se me quedarian libres 2 pares por si quiero meter otro arduino mas usando ese mismo cable. Que te parece la idea?

Un saludo

He estado investigando un poquillo por internet sobre como extender un cable usb con un cable de red, y hay demasiada duda en general, hay gente que lo hace directamente usando todos los pares de cobre y hasta la malla metalita para meter por ahi tambien otro canal de GND, y otros que hacen mezclas raras tambien con los empalmes, pero claro ya luego esta gente comenta que cuando pasan de los 10m la conexion nos les va muy bien, sin embargo, luego me meto a ver extensores de usb por red, y venden aparatillos que ni siquiera tienen alimentacion externa o algo pero que dicen algunos que alcanzan hasta los 50 metros. El tema es saber ese empalme de cables que hacen para que la señal vaya bien y alcance distancia.
Al ser posible claro sin usar todo el cable de red que son 8 hilos para extender un cable usb que son en realidad 4, la verdad es que lo veo un poco exagerado.
A ver si me podeis iluminar un poco con este tema para saber que comprar.

Un saludo y muchisimas gracias por adelantado

Los pares mejoran más que todo la transmisión de potencia (líneas de alimentación), pero no mucho para las líneas de datos. No es descabellado ya que existe algo llamado PoE (Power over Ethernet); un cable UTP que combina alimentación de un dispositivo + Ethernet de 100 Mbps. Cuatro alambres son para datos y los otros cuatro se conectan en pares para el positivo y negativo de la fuente de poder.

Si tienes dudas con la unión de tierras, usa el GND de Arduino.

Puede decirse que la calidad del empalme afecta la longitud máxima de la señal.

Lucario448:
Cuatro alambres son para datos y los otros cuatro se conectan en pares para el positivo y negativo de la fuente de poder.

Claro el tema es que no quiero usar 4 cables de 0.5mm para datos, ya que el propio cable en si de 1 cable usb solamente son 2 para datos. Al igual que me queria ahorrar el cable de tierra, te paso una pequeña foto de como querria que se quedase:

Para que me entiendas, quiero poder usar el cable de red para mas de 1 arduino, ya que me parece una exageracion usar 8 hilos solamente para una comunicacion por usb. Y en la imagen tambien sale lo que te comentaba del de tierra, que para ahorrarme el cable de tierra de tirarlo por el cable de red tambien, conectarlo a la tierra de la fuente de alimentacion directamente.

Tambien he estado mirando por internet, y he encontrado este articulo:

http://www.malditonerd.com/howto-extender-un-cable-usb-por-utp-usb-a-rj45/

Donde por lo visto comenta que usa todos los cables del cable de red simplemente por que mete de por medio en cada trenzado un cable de tierra segun he entendido para quitar las interferencias que por lo visto forman los cables de datos y logicamente al usar un cable utp sin apantallar, pues usar esos cables de tierra como una simulacion de apantallamiento. Corrigeme si me equivoco pero mas o menos es lo que he llegado a entender.

Aqui la foto del trenzado simulacion dicho aislamiento de señales:

Un saludo

Lo que tambien he estado mirando es que hay unos cables que se llaman S/FTP, que tienen tanto apantallamiento por fuera como por dentro:

Lo que estoy pensando que me podria servir para aislar todavia mas la señal y poder tirar mas de 20M de cable y mas contando con un categoria 6 digamos. De esta forma meter (D+ GND)(D- GND) , 2 pares, quedandoseme libres otros 2 pares restantes para otra conexion usb, y luego la alimentacion meterla por otra linea aparte de 1 solo hilo.
Esta es una forma que he pensado que no se que os parecera como de bien funcionaria.

Tambien he pensado en esta otra distribucion: (D+ D-)(D+ D-)(D+ D-)(D+ D-), de esta forma estaria metiendo 4 conexiones con usb y aparte por otros 2 hilos, la alimentacion y tierra pero creo que causaria interferencias ya que no contaria con un GND integrado al lado de los cables de datos no?

Un saludo

el_pedriyo:
Al igual que me queria ahorrar el cable de tierra, te paso una pequeña foto de como querria que se quedase:

Viéndolo así, el Arduino jamás alcanzaba a encender.
Como todo circuito eléctrico, "tierra" es el polo negativo; y un circuito sin los dos polos, es un circuito abierto y sin flujo de corriente.

el_pedriyo:
para ahorrarme el cable de tierra de tirarlo por el cable de red tambien, conectarlo a la tierra de la fuente de alimentacion directamente.

Si todos se alimentan de una misma fuente, entonces todos comparten la misma línea de voltaje Y DE TIERRA. Debería funcionar.

el_pedriyo:
y logicamente al usar un cable utp sin apantallar, pues usar esos cables de tierra como una simulacion de apantallamiento. Corrigeme si me equivoco pero mas o menos es lo que he llegado a entender.

¿Conoces de la malla del que algunos cables USB están cubiertos? Pues eso está conectado a las carcazas metálicas de las terminales, que a su vez conectan con... exacto, tierra.

el_pedriyo:
Lo que estoy pensando que me podria servir para aislar todavia mas la señal y poder tirar mas de 20M de cable y mas contando con un categoria 6 digamos. De esta forma meter (D+ GND)(D- GND) , 2 pares, quedandoseme libres otros 2 pares restantes para otra conexion usb, y luego la alimentacion meterla por otra linea aparte de 1 solo hilo.
Esta es una forma que he pensado que no se que os parecera como de bien funcionaria.

Tambien he pensado en esta otra distribucion: (D+ D-)(D+ D-)(D+ D-)(D+ D-), de esta forma estaria metiendo 4 conexiones con usb y aparte por otros 2 hilos, la alimentacion y tierra pero creo que causaria interferencias ya que no contaria con un GND integrado al lado de los cables de datos no?

Me inclino más por la primera (además de que antes había dicho de que colocar las líneas de datos en múltiples no aumenta la resistencia a interferencias, solo ofrece redundancia). Si la exigencia de corriente de parte del Arduino no es tanta, la caída de tensión del cable sería apenas notable.

Ahora, si vas a usar los 8 alambres para acomodar 4 conexiones USB en un solo cable, recuerda que dejarás por fuera la línea indispensable que es la de tierra.

Lucario448:
Viéndolo así, el Arduino jamás alcanzaba a encender.
Como todo circuito eléctrico, "tierra" es el polo negativo; y un circuito sin los dos polos, es un circuito abierto y sin flujo de corriente.

Hostias es verdad xDDDD, bueno, me tocara entonces mirar por donde meter el de tierra. A lo que me lleva a tu ultima respuesta.

Lucario448:
Me inclino más por la primera (además de que antes había dicho de que colocar las líneas de datos en múltiples no aumenta la resistencia a interferencias, solo ofrece redundancia). Si la exigencia de corriente de parte del Arduino no es tanta, la caída de tensión del cable sería apenas notable.

Poner las lineas en multiples a que te refieres, (D+ GND)(D- GND) o a (D+ D-)(D+ D-)? En cuanto a redundancia ya habia oido algo del tema, de que el segundo canal de datos es mas que nada para ofrecer otra forma de que lleguen los datos por si en el primero se perdieron, no se si te referiras a eso?

Lucario448:
Ahora, si vas a usar los 8 alambres para acomodar 4 conexiones USB en un solo cable, recuerda que dejarás por fuera la línea indispensable que es la de tierra.

Pero es indispensable que el cable de tierra vaya si o si junto a los cables de datos? No se puede meter por otro hilo aparte y luego unir el puerto a un general de tierra? Paso foto:

Ahi por ejemplo el cable de tierra llega a los 2 puertos usb, pero va junto al de alimentacion por una general desde la cual despues conecto lo que vaya necesitando

el_pedriyo:
Pero es indispensable que el cable de tierra vaya si o si junto a los cables de datos? No se puede meter por otro hilo aparte y luego unir el puerto a un general de tierra? Paso foto:

Ahi por ejemplo el cable de tierra llega a los 2 puertos usb, pero va junto al de alimentacion por una general desde la cual despues conecto lo que vaya necesitando

Así sí.

El problema es cuando ambos dispositivos no comparten la línea de tierra de ningún modo.

Hombre, compartirla la comparten pero con otros muchos dispositivos tambien, es decir, no seria solamente para ellos. Por eso queria saber que le aporta la linea de tierra al usb y como deberia de colocarse o ser, por eso te pregunte si era necesario si o si que fuese pegada al cable de los datos, como en el ejemplo de D GND D GND, que parecia que se usaba el cable de datos en el medio del resto como para aislarlos

el_pedriyo:
por eso te pregunte si era necesario si o si que fuese pegada al cable de los datos, como en el ejemplo de D GND D GND, que parecia que se usaba el cable de datos en el medio del resto como para aislarlos

En ese caso intercalar líneas de tierra recuerda que hacía las veces de apantallamiento; pero no es que sea obligatorio que pasen por el cable. ¡Lo que importa es que la conexión exista de una forma u otra!

Vale, entonces llegamos a la conclusion esa ultima que me has dicho, que no es necesario que vayan juntos, pero que si van juntos para hacer de apantallamiento extra al propio ya de por si que trae el cable mejor que mejor, pero que siempre deben de compartir una toma de tierra entre ellos.

Me imagino que sera cuestion de probar, ya que la de meter 4 conexiones usb por el mismo cable a lo mejor funciona para 10 metros, pero si tiro 20 o mas metros a lo mejor conviene hacerlo bien para asegurar que no de problemas en un futuro. Aunque mirandolo por otro lado el otro dia encargue 100m de cable stp, que se supone que esta apantallado cada par y luego ademas todo el conjunto tambien. Asi que ya os ire contando las pruebas que seguramente empiece a hacer el lunes que es cuando me llegue.

Doy este hilo por finalizado

Un saludo