Autor Tema: DMX - otra más! receptor DMX y control de dos motores PAP a 1/2 paso  (Leído 61916 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado tomlico

  • PIC10
  • *
  • Mensajes: 4
Re: DMX - otra más! receptor DMX y control de dos motores PAP a 1/2 paso
« Respuesta #60 en: 25 de Septiembre de 2015, 09:55:43 »
Saludos. He conseguido que giren los motores, pero no les puedo cambiar la velocidad. Van muy lentos. Son de 1.8 grados. Le he conseguido cambiar la velocidad cuando se posicionan en cero, con la variacion que se pone en el foro, pero cuando los muevo con DMX no se como hacer que corran mas. Necesito ayuda. Gracias

Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4862
Re: DMX - otra más! receptor DMX y control de dos motores PAP a 1/2 paso
« Respuesta #61 en: 25 de Septiembre de 2015, 10:54:28 »
Por lo que comenta, quiere que te hagan el trabajo, en el programa el amigo todopic lo explica todos, osea te recomiendo que lea todos los mensaje  y la velocidad esta fijada porque es paraa Motor con Balon de Cristal(Luz Sicodelica) claro que podria alterar el programa añadiendo un canal para variar la velocidad, eso va a tu gustos.
Saludo

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Re: DMX - otra más! receptor DMX y control de dos motores PAP a 1/2 paso
« Respuesta #62 en: 06 de Octubre de 2015, 10:11:16 »
:D :D Ok Nocturno... aqui un par de pequeños videos de como està funcionando... en especial, como responde al cambio de giro de acuerdo a la señal dmx, ademas, como regresa siempre a la posicion inicial


Un gran abrazo!

Norberto
pd: tengo que corregir un par de cositas en el codigo...  :D
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado w3-sistemas

  • PIC12
  • **
  • Mensajes: 89
Re:DMX - otra más! receptor DMX y control de dos motores PAP a 1/2 paso
« Respuesta #63 en: 16 de Enero de 2016, 10:28:17 »
hola estoy queriendo hacer algo similar pero con un pic18f26k22 y en c, tengo problemas con la lectura dmx por la uart, el resto no me es un problema, si alguien me da una mano se lo agradeceria, saludos

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 7894
Re:DMX - otra más! receptor DMX y control de dos motores PAP a 1/2 paso
« Respuesta #64 en: 16 de Enero de 2016, 13:39:38 »
hola estoy queriendo hacer algo similar pero con un pic18f26k22 y en c, tengo problemas con la lectura dmx por la uart, el resto no me es un problema, si alguien me da una mano se lo agradeceria, saludos

Si pones el codigo es mas facil darte una solucion.

Desconectado w3-sistemas

  • PIC12
  • **
  • Mensajes: 89
Re:DMX - otra más! receptor DMX y control de dos motores PAP a 1/2 paso
« Respuesta #65 en: 22 de Enero de 2016, 17:27:29 »
//LECTURA DEL PROTOCOLO DMX512 MEDIANTE INTERRUPCION
//DE LA USART   
    else if (PIR1bits.RCIF) // SI PIR1bits.RCIF es = a 1 , hay un dato pendiente de procesar
    {       
    cRCSTAbits.cRCSTA = RCSTA; //Hacemos una copia del registro RCSTA porque
     //sus bits cambian de valor al leer RCREG y tambien al modificar CREN
     DatoRx = RCREG; //En RCREG está el dato que acaba de recibir la USART

     if (cRCSTAbits.fOERR) // Si se reciben más de 3 bytes sin haberlos procesado, se
    {                             // produce un error de Overrun. En este caso, se borra el
      CREN=0;              // error reiniciando CREN y dejamos  la interrupción preparada
      CREN=1;             // para procesar la siguiente trama DMX
      DmxEstado = DMX_ESPERA_BYTE;
      return;
    }
     // Máquina de estados
    switch (DmxEstado)
    {
//-----------------------------------------------
      case DMX_ESPERA_BYTE:   // si estamos en este estado y hay error FRAME
      // significa que estamos en el medio de un Byte. Hay que seguir esperando
      // hasta que desaparezca el error.
            if (!cRCSTAbits.fFERR)
            // Ha llegado un byte en forma correcta. Ahora esperaremos la señal Break
            DmxEstado = DMX_ESPERA_BREAK;
            break;
//-----------------------------------------------
      case DMX_ESPERA_BREAK:   // estamos esperando la señal Break
        // Esta señal se identifica porque es un pulso en cero demaciado largo
         // para la usart y entonces detecta que el bit de stop nunca llego y pone a 1 FERR
         // para indicarnos que hubo error de Frame
        if (cRCSTAbits.fFERR)
          // Tras recibir el error de frame podemos suponer que es el break para lo cual
           // nos aseguramos preguntando por el valor que hay en DatoRx ya que todos sus
           // bits deben ser cero, de lo contrario siguimos esperando
           if (!DatoRx)
            DmxEstado = DMX_ESPERA_START;
        break;
//-----------------------------------------------
      case DMX_ESPERA_START: // ya hemos recibido el Break y ahora hay que
          // esperar el byte cero de la trama el cual debe contener el valor 0, que será la
         // la  señal de Start.
        // Mientras tanto, si recibimos un error de Frame, hay que volver a
        // empezar para recibir la señal desde el comienzo de la trama.
            if (cRCSTAbits.fFERR)
            DmxEstado = DMX_ESPERA_BYTE;
            else {
            if (!DatoRx)
            {
            // Llegados a este punto, ya hemos recibido el Byte Start=0
            // entonces comenzamos la lectura de la trama de valores DMX.
            iTramaDmx = 0; //inicializo las variables para leer la tramaDmx
             cntCanales=0;
            DmxEstado = DMX_RECEPCION_DATOS;
            } else
            // Si el dato recibido no es 0, volvemos a empezar
            DmxEstado = DMX_ESPERA_BREAK;
        }
        break;
//-----------------------------------------------
      case DMX_RECEPCION_DATOS:
        // En este estado estamos recibiendo la trama de datos DMX
        // Si se detecta un error de Frame es que ha habido un error y
        // comenzamos nuevamente desde el principio.
        if (cRCSTAbits.fFERR)
         {
            if (!DatoRx)
                 DmxEstado = DMX_ESPERA_START; // si DatoRx=0 voy a Start
            else
                 DmxEstado = DMX_ESPERA_BYTE; //si DatoRx!=0 voy a Byte
         }
         else // apartir de aca buscamos el comienzo del canal seleccionado
            {       // guardamos en un vector la cantidad de canales que posee el dispositivo
                 if(CanalInicio) //si el canal seleccionado es cero no hago nada (solo para dip)
             {
                 if(++cntCanales>=CanalInicio)
                 {
                     if(iTramaDmx<NUMERO_CANALES)
                     {
                        vTramaDmx[iTramaDmx++]=DatoRx;
                     }
                     else
                     {
                         if(cntCanales>=TOTAL_CANALES)
                         {
                             DmxEstado = DMX_ESPERA_BREAK;
                         }
                     }
                 }
             }
             else
             {
                DmxEstado = DMX_ESPERA_BREAK;
             }
        } 
        break;
//-----------------------------------------------         
    }//switch
    }//usart



el error salta en las lineas al prinsipio donde esta

 CREN=0;
 CREN=1;
yo creo que por que fue hecha para un 883 y no lo acepta el 26k22

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 7894
Re:DMX - otra más! receptor DMX y control de dos motores PAP a 1/2 paso
« Respuesta #66 en: 25 de Enero de 2016, 21:41:44 »
Bueno pienso lo siguiente.

Si tenes el codigo en una interrupcion y ocurre un Overrun especialmente cuando tenes buffer para 2 caracteres + un tercero en el registro de desplzamiento llegando. Entonces estas haciendo algo mal. O es demasiado lento el micro lo cual no creo que pueda ocurrir.

Por otro lado, esto:

Código: C
  1. cRCSTAbits.cRCSTA = RCSTA;

Utilizando la misma nomeclatura que la MCHP, asi que voy a suponer que estas usando XC8, Si utilizas las misma nomeclatura, cRCSTAbits es una estructura de 8 bits, y cRCSTA es de 1 bit, por lo tanto estarias intentando meter un registro de 8 bits (RCSTA) en 1 bit ( cRCSTAbits.cRCSTA ).

Por otra parte ese micro tiene 2 UART, por lo tanto seria RCSTA1 o RCSTA2. Y no un RCSTA solo como si tuviera un solo UART.
Tambien esto:

Código: C
  1.       CREN=0;              // error reiniciando CREN y dejamos  la interrupción preparada
  2.       CREN=1;             // para procesar la siguiente trama DMX

No deberias poder hacerlo asi, ya que CREN no estan definidos de forma "suelta" sino en su estructura, ya que ese CREN puede servir para ambos, tanto para la UART1 como la 2,

Código: C
  1. RCSTA1bits.CREN=0;
  2. RCSTA1bits.CREN=1;

( Si es que usas la UART1, obviamente )

Desconectado w3-sistemas

  • PIC12
  • **
  • Mensajes: 89
Re:DMX - otra más! receptor DMX y control de dos motores PAP a 1/2 paso
« Respuesta #67 en: 28 de Enero de 2016, 19:29:38 »
i tenes razon lo implemento y te aviso, gracias

Desconectado rosvill7

  • PIC10
  • *
  • Mensajes: 1
Re:DMX - otra más! receptor DMX y control de dos motores PAP a 1/2 paso
« Respuesta #68 en: 01 de Junio de 2017, 12:57:16 »
podria servir para controla tilt-pan de una camara de 18 kg para un brazo roboticio jimmyjib :shock:

Desconectado w3-sistemas

  • PIC12
  • **
  • Mensajes: 89
Re:DMX - otra más! receptor DMX y control de dos motores PAP a 1/2 paso
« Respuesta #69 en: 04 de Junio de 2017, 21:49:46 »
si perfectamente

Desconectado Misael_perez

  • PIC10
  • *
  • Mensajes: 1
Re:DMX - otra más! receptor DMX y control de dos motores PAP a 1/2 paso
« Respuesta #70 en: 17 de Septiembre de 2020, 04:09:11 »
  8)   :o Buen dia... me gustaría saber en que parte del código podría agregarse la opción de asignar dirección por medio de un dipswitch... espero encontrar alguna respuesta...

gracias esta genial el proyecto

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Re:DMX - otra más! receptor DMX y control de dos motores PAP a 1/2 paso
« Respuesta #71 en: 03 de Octubre de 2020, 20:13:39 »
Hola Misael, como estas?
si, es posible, pero con otro micro mas grande en cantidad de pines, o un multiplexor de entradas....  este codigo fué escrito hace muchos años atras!... :mrgreen:

saludos!

Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...