ImagenImagenImagenImagen
Hazte Socio (El Foro siempre Gratis)
Paga con Tarjetas+ Info www.arde.cc/socios

Conversor USB

Postea aqui los temas generales relacionados con la electronica

Moderador: Junta Directiva

Responder
afelio
Novato
Novato
Mensajes: 19
Registrado: Vie Nov 22, 2013 4:12 pm
Nombre: Abraham

Conversor USB

Mensaje por afelio » Jue Feb 20, 2014 1:59 pm

Buenos días a tod@s,

Estaba pensando en pasar datos de mi micro: PIC32MX534F064H al ordenador mediante el USB, la opción elegida, de momento, es usar la UART para mandar los datos, para ello, he visto que existen cables/adaptadores para poder enviar los datos desde la placa con DB9 al USB del PC.

Como por ejemplo:
http://www.ebay.es/itm/FTDI-USB-to-RS23 ... 565c8cbc74

Pero me surge una duda importante para dicho método.

¿¿Es necesario utilizar un MAX232 entre el micro y el conector DB9??
¿¿O basta con conectar los pines de la UART del micro (Tx y Rx) directamente a los pines del DB9??

Muchas gracias.
Un saludo.



Avatar de Usuario
Heli
Usuario Experto
Usuario Experto
Mensajes: 747
Registrado: Mar May 23, 2006 7:47 am
Nombre: Heli Tejedor
Ubicación: Alcala de Henares
Contactar:

Re: Conversor USB

Mensaje por Heli » Jue Feb 20, 2014 2:40 pm

Con el conversor que has elegido SI necesitas el MAX232. Los niveles son los estándar del RS232 +/-12V, uno similar uso yo para aplicaciones industriales.
Para taller y robótica mejor usa uno de estos que NO necesitan la conversion de nivel porque ya son TTL: http://www.ebay.es/itm/USB-TO-RS232-TTL ... 1c3060141d" onclick="window.open(this.href);return false;
Los dos chip mas comunes para USB-RS232 son el FTDI (el cale que tu has indicado) y el PROLIFIC (el que he enlazado yo).
También tienes estos con salida TTL y chip FTDI (pero mas caros): http://www.ebay.es/itm/5V-6pin-FTDI-FT2 ... 1c3c554f26" onclick="window.open(this.href);return false;
Busca en tu tienda favorita "usb rs232 ttl" y añade "prolific" o "ftdi".

PEEERO lo mejor es que uses el propio USB (si no lo usas para otra cosa) del PIC32MX534F064H como CDC "Communications Devices Class" (puerto serie virtual para los amigos). Supongo que para este pic microchip proporcionará la librería adecuada para que el PC vea el chip como un puerto serie.
Mira esto (es para un PIC16F4550): http://picmania.garcia-cuervo.net/usb_3 ... nsfers.php" onclick="window.open(this.href);return false;
¡No es imposible, lo que pasa es que no sabes como hacerlo!
http://heli.xbot.es/" onclick="window.open(this.href);return false;

afelio
Novato
Novato
Mensajes: 19
Registrado: Vie Nov 22, 2013 4:12 pm
Nombre: Abraham

Re: Conversor USB

Mensaje por afelio » Jue Feb 20, 2014 3:43 pm

Muchas gracias Heli, ahora mismo me pongo a leer el enlace que me mandas.

Un saludo.

afelio
Novato
Novato
Mensajes: 19
Registrado: Vie Nov 22, 2013 4:12 pm
Nombre: Abraham

Re: Conversor USB

Mensaje por afelio » Vie Feb 21, 2014 10:49 am

Buenas,

Heli ya he leido el enlace, aunque no muy detenidamente, debido a que hay "prisa" utilizaré la primera opción. Pero cuando termine con todo me pondré con el USB como CDC.

Muchas gracias.
Un saludo.

afelio
Novato
Novato
Mensajes: 19
Registrado: Vie Nov 22, 2013 4:12 pm
Nombre: Abraham

Re: Conversor USB

Mensaje por afelio » Sab Feb 22, 2014 12:44 pm

Una última pregunta, y seguro que tontísima.
Es bidireccional??Podré enviar desde el hipertérminal del PC por ejemplo al Micro??
Supongo que si porque sino no tendría sentido. Pero bueno nunca lo he usado..y me asalta la duda.

Muchas gracias.

Uun saludo.

Avatar de Usuario
Heli
Usuario Experto
Usuario Experto
Mensajes: 747
Registrado: Mar May 23, 2006 7:47 am
Nombre: Heli Tejedor
Ubicación: Alcala de Henares
Contactar:

Re: Conversor USB

Mensaje por Heli » Sab Feb 22, 2014 4:04 pm

Si, es bidireccional. Para un PIC16F2550 y MPLAB se usa asi:

Código: Seleccionar todo

#include <18F2550.h>

#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48000000)

#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8, ERRORS)

#include "usb_cdc.h"

int1 Enviado=0, Display;

/*===========================================================================*/
void main()
{
   int Enviado=0;
   
   delay_ms(500);  // Espera medio segundo a que se estabilice la alimentacion por USB
  
   usb_cdc_init(); // Inicializa el USB CDC
   usb_init();

   while (TRUE)
   {
      usb_task();  // Procesa las tareas USB       
            
      if (kbhit()) // Si hay un dato en el puerto serie
      {
         Dato=getc();   // Lo lee
         if (RS232_ERRORS&0x06!=0)  //RCSTA errors
         {
           if (usb_enumerated())   // SI el USB esta enlazado con el PC
           	 usb_cdc_putc (Dato);  // Manda el dato al PC
           
           putc(Dato); // Eco por el puerto serie  
         }
      }
      
      if (usb_enumerated())  // SI el USB esta enlazado con el PC
      {
        if (usb_cdc_kbhit()) // Entrada de dato serie USB
        {
           Dato=usb_cdc_getc(); // Lee el dato del PC por USB
           usb_cdc_putc(Dato); // Eco al PC por el USB
        }
      }

      if (usb_cdc_connected() && !Enviado)
      { 
         printf(usb_cdc_putc, "Bridge USB-SERIAL V0.1\r\n"
              "Ready...\r\n");              
         Enviado=TRUE;
      }
   }
}
Como puedes ver tiene las funciones "usb_cdc_getc()", "usb_cdc_putc();" y usb_cdc_kbhit()" similares a las que se usan con el puerto serie.
¡No es imposible, lo que pasa es que no sabes como hacerlo!
http://heli.xbot.es/" onclick="window.open(this.href);return false;

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados