Autor Tema: Contro de nivel y Temperatura de un calderin por medio de RF  (Leído 24376 veces)

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

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: Contro de nivel y Temperatura de un calderin por medio de RF
« Respuesta #30 en: 14 de Junio de 2009, 16:43:07 »
cacharreando cacharreando hice esto
Código: CSS
  1. char i;
  2. char a;
  3. char b;
  4. int q;
  5. char p;
  6. void main()
  7. {
  8.    SETUP_ADC_PORTS(RA0_RA1_ANALOG_RA3_RA2_REF);
  9.    SETUP_ADC(ADC_CLOCK_DIV_32);
  10.    setup_psp(PSP_DISABLED);
  11.    setup_spi(SPI_SS_DISABLED);
  12.    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
  13.    setup_timer_1(T1_DISABLED);
  14.    setup_timer_2(T2_DISABLED,0,1);
  15.    setup_comparator(NC_NC_NC_NC);
  16.    
  17.    #define use_portd_lcd true
  18.    SET_TRIS_C(0X00);
  19.    lcd_init();
  20.    OUTPUT_C(0X00);
  21.  
  22.    // TODO: USER CODE!!
  23.    for(;;)
  24.    {
  25.       SET_ADC_CHANNEL(0);
  26.       DELAY_MS(20);
  27.       Q=READ_ADC();
  28.       OUTPUT_B(Q);
  29.       P=(( Q * 2.56 )/ 256)*100;
  30.       LCD_GOTOXY(1,1);
  31.       PRINTF( lcd_putc "TEMPERATURA= %3u", P );
  32.       LCD_GOTOXY(1,16);
  33.       PRINTF(LCD_PUTC " NIVEL=" );
  34.  
  35.    }
  36. }

el problema del grado q se pasa es q cuando el LM35 esta en 29° y lo subo a 30° el conversor AD hace 2 cambios osea q muestra en el LCD 31°  cuando en el LM35 esta en 30.

tengo otra duda, tengo un transmisor de nivel que entrega señal 4-20mA o 1-5V, y para la conversion tengo configurado 2.5V de referencia, lo quiero es tambien mostrar el nivel en porcentaje, deberia cambiar el voltaje de referencia?
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: Contro de nivel y Temperatura de un calderin por medio de RF
« Respuesta #31 en: 15 de Junio de 2009, 14:20:04 »
dejando por ahora a un lado la programacion me puse a pensar en lo necesario para poder calentar el agua y para activar la motobomba y encontre lo siguiente



segun veo ese me serviria para activar motobomba. Si quito la motobomba y pongo un artefacto para calentar agua tambien me serviría la misma conexion?
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Contro de nivel y Temperatura de un calderin por medio de RF
« Respuesta #32 en: 15 de Junio de 2009, 14:49:26 »
Hola.

Aca un link para el control de fase.

Control de fase
El papel lo aguanta todo

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: Contro de nivel y Temperatura de un calderin por medio de RF
« Respuesta #33 en: 15 de Junio de 2009, 21:36:33 »
leyendo tu hilo y otra pag..si la cogi bien seria: una señal senoidal de 110V a 60Hz demora 16mS en un ciclo completo, medio ciclo en  8,3mS que es lo mismo cruce por cero.

Ahora para mi problema deberia definir temperaturas para el agua diciendo que
Ta=temperatura alta
Td=temperatura deseada       
Tn=temperatura normal     

entonces si eligo segmentar medio ciclo de onda en 3, tendria cada ciclo a 2,7 mS, entonces para un Tn pongo el triac por un tiempo de 8,3mS, para un Ta no le doy disparo y para un Td un disparo de 5.4mS. O que seria mejor??
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Contro de nivel y Temperatura de un calderin por medio de RF
« Respuesta #34 en: 15 de Junio de 2009, 22:03:28 »
Hola.

Los triacs normalmente responden despues de los 30°, asi que podrias asignar el maximo al tiempo correspondiente a los 30°, el medio, tal como dices y el minimo a los 180° (o unos microsegundos antes para evitar inconvenientes).

Saludos
El papel lo aguanta todo

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: Contro de nivel y Temperatura de un calderin por medio de RF
« Respuesta #35 en: 16 de Junio de 2009, 22:37:46 »
consultando he tenido ciertas confuciones...es decir, el TRIAC esta en condiciones de conducir luego de los 30° que son aproximadamente 1,3mS despues de cruce por cero...entonces si le doy pulso de disparo 1.3mS despues del cruce por cero conduciría al "maximo"....entonces si quiero menos potencia en la carga debo demorarme mas tiempo para darle el disparo? tal como me lo dijiste antes del 180°..ahora cuanto debe durar ese pulso de disparo? diciendo que estoy en lo correcto..hay algo q no logro asimilar de la siguiente grafica...por qué cuando el TRIAC entra en conduccion en la grafica se pone a cero?
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Contro de nivel y Temperatura de un calderin por medio de RF
« Respuesta #36 en: 17 de Junio de 2009, 02:36:43 »
Hola.

Las graficas indican el voltaje que le cae al triac. Si se pone a conducir al maximo, es decir 180° se supone que al TRIAC no debe caerle voltaje -en si le cae muy poquito-, la grafica de abajo indica el voltaje de la carga.

A mayor tiempo de espera para el disparo, menor sera la potencia resultante, durante el tiempo que no se dispare el TRIAC el voltaje caerá sobre él.

Saludos
El papel lo aguanta todo

Desconectado Micro23

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 226
Re: Contro de nivel y Temperatura de un calderin por medio de RF
« Respuesta #37 en: 17 de Junio de 2009, 02:48:14 »
Hola jhozate, lindo proyecto.
Cuando el TRIAC conduce, la caida de potencial se considera nula respecto de la tension que maneja.
Saludos
El pesimista se queja del viento
El optimista espera que cambie
El realista ajusta las velas

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: Contro de nivel y Temperatura de un calderin por medio de RF
« Respuesta #38 en: 18 de Julio de 2009, 18:15:48 »
Despues de tantos dias, he venido instruyendome en esto del ccs, haciendo programitas, leyendo aqui y alla, al fin y decidido a llevar a cabo este proyeto en lenguaje c. Ahora vengo con nuevas dudas: una de ellas es la siguiente:
1-resulta qu tengo  la termocupla conectada al AD594 que lo que hace tratar de linealizar la lectura de temperatura y asi tengo un comportamiento muy similar al del LM35 con sus 10mV/°C entonces he configurado en el pic un voltaje de referencia de 2,5V y conversion 8bits con lo cual tengo una sensibilidad de aproximadamente 10mV, pero eso tan solo para temperatura y para nivel se tiene un transmisor que entrega 1-5V, entonces no se me serviria el voltaje de referencia de 2.5V.
 q podria hacer entonces?,,,,me preguntaba si programando en c antes de leer el canal que corrresponde a nivel puedo cambiar el voltaje de referencia al voltaje interno osea 5V
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado Micro23

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 226
Re: Contro de nivel y Temperatura de un calderin por medio de RF
« Respuesta #39 en: 27 de Julio de 2009, 18:58:03 »
Hola jhozate si querés mantener esa precisión tendrías que amplificar la senal con algún amplificador operacional con ganancia de 2, sino usándolo así con referencia de 5V te quedaría con precision de 20mV/°C.

Ahora lo que comentas de cambiar la referencia al medir temperatura pienso que es posible, habría que ver en el datasheet si los demás pines del conversor soportan una tensión mayor que la de referencia, ya que la entrada de nivel en caso de superar la referencia se estaría saturando, pero pienso que andaría.

Esperamos tus comentarios si haces esa prueba.
Saludos
El pesimista se queja del viento
El optimista espera que cambie
El realista ajusta las velas

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: Contro de nivel y Temperatura de un calderin por medio de RF
« Respuesta #40 en: 28 de Julio de 2009, 21:23:03 »
psss hice un pequeño programa para tratar de hacer lo q queria..tener un voltaje de referencia de 2.5V para temperatura y un voltaje de referencia de 5V para nivel..basicamente lo que hice fue
Código: CSS
  1. SET_ADC_CHANNEL(0);
  2.    DELAY_US(20);
  3.    Q=READ_ADC();
  4.    OUTPUT_B(Q);
  5.    P=(2.5*Q)/255.0;
  6.    PRINTF(LCD_PUTC,"\fADC=%3U V=%1.2F",Q,P);
  7.    DELAY_MS(1000);
  8.    setup_adc_ports(AN0_AN1_AN3);
  9.    DELAY_US(20);
  10.    Q=READ_ADC();
  11.    OUTPUT_B(Q);
  12.    P=(5*Q)/255.0;
  13.    PRINTF(LCD_PUTC,"\fADC=%3U V=%1.2F",Q,P);

aunque no lo monte por q no tengo el hardware a mano,,,en proteus no funciona..solo funciona bien con una referencia, lo que hice fue poner un voltaje de 2,5 en una de las entradas analogas y alternar el voltaje de referencia, entonces para un voltaje de referencia de 2,5V se deberia mostrar en el LCD el valor 1,2V(esto lo hace correctamente) y para un Vref de 5V se deberia mostrar 2,5V pero NO, resulta q muestra 0,48V...en conclusion creo q
*debo recurri a diseñar un nuevo hardware en donde amplifique dos veces la señal de AD594 y asi podré utilizar el voltaje de referencia de 5v

« Última modificación: 29 de Julio de 2009, 14:03:21 por jhozate »
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado Micro23

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 226
Re: Contro de nivel y Temperatura de un calderin por medio de RF
« Respuesta #41 en: 28 de Julio de 2009, 22:00:49 »
Hola jhozate, en la linea 8 no deberias poner:

setup_adc_ports(AN0_AN1_VSS_VREF);  // A0=Analog; A1=Analog;  A3=VRef

Saludos
El pesimista se queja del viento
El optimista espera que cambie
El realista ajusta las velas

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: Contro de nivel y Temperatura de un calderin por medio de RF
« Respuesta #42 en: 28 de Julio de 2009, 22:24:51 »
la intencion mia seria cambiar los bits PCFG3-PCFG0 del registro ADCON1, supongo q en ccs es asi..no?
si se ponen en esos bit 0010 corresponde a q habilito AN0 AN1 y voltajes de referencia internos es decir VDD Y VSS
y si pongo 1101 habilito AN0 AN1 pero con voltajes  de referencia AN3 AN2
y creo q para hacer estas configuraciones en ccs es con SETUP_ADC_PORT()..no??
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado Micro23

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 226
Re: Contro de nivel y Temperatura de un calderin por medio de RF
« Respuesta #43 en: 29 de Julio de 2009, 12:20:02 »
Hola jhozate, en CCS para  setear directamente un registro del PIC lo podes hacer asi:

Código: CSS
  1. #BYTE ADCON1 = 0x9F  //0x9F es la posicion del registro
  2. ADCON1=0x03;

Otra forma es hacerlo con la funcion que mencionas, donde los paramentros que acepta la funcion son:

Código: CSS
  1. // Constants used in SETUP_ADC_PORTS() are:
  2. #define NO_ANALOGS                           7    // None
  3. #define ALL_ANALOG                           0    // A0 A1 A2 A3 A5 E0 E1 E2
  4. #define AN0_AN1_AN2_AN4_AN5_AN6_AN7_VSS_VREF 1    // A0 A1 A2 A5 E0 E1 E2 VRefh=A3    
  5. #define AN0_AN1_AN2_AN3_AN4                  2    // A0 A1 A2 A3 A5          
  6. #define AN0_AN1_AN2_AN4_VSS_VREF             3    // A0 A1 A2 A4 VRefh=A3              
  7. #define AN0_AN1_AN3                          4    // A0 A1 A3
  8. #define AN0_AN1_VSS_VREF                     5    // A0 A1 VRefh=A3
  9. #define AN0_AN1_AN4_AN5_AN6_AN7_VREF_VREF 0x08    // A0 A1 A5 E0 E1 E2 VRefh=A3 VRefl=A2    
  10. #define AN0_AN1_AN2_AN3_AN4_AN5           0x09    // A0 A1 A2 A3 A5 E0        
  11. #define AN0_AN1_AN2_AN4_AN5_VSS_VREF      0x0A    // A0 A1 A2 A5 E0 VRefh=A3          
  12. #define AN0_AN1_AN4_AN5_VREF_VREF         0x0B    // A0 A1 A5 E0 VRefh=A3 VRefl=A2          
  13. #define AN0_AN1_AN4_VREF_VREF             0x0C    // A0 A1 A4 VRefh=A3 VRefl=A2              
  14. #define AN0_AN1_VREF_VREF                 0x0D    // A0 A1 VRefh=A3 VRefl=A2
  15. #define AN0                               0x0E    // A0
  16. #define AN0_VREF_VREF                     0x0F    // A0 VRefh=A3 VRefl=A2
  17. #define ANALOG_RA3_REF         0x1         //!old only provided for compatibility
  18. #define A_ANALOG               0x2         //!old only provided for compatibility  
  19. #define A_ANALOG_RA3_REF       0x3         //!old only provided for compatibility  
  20. #define RA0_RA1_RA3_ANALOG     0x4         //!old only provided for compatibility
  21. #define RA0_RA1_ANALOG_RA3_REF 0x5         //!old only provided for compatibility
  22. #define ANALOG_RA3_RA2_REF              0x8   //!old only provided for compatibility
  23. #define ANALOG_NOT_RE1_RE2              0x9   //!old only provided for compatibility  
  24. #define ANALOG_NOT_RE1_RE2_REF_RA3      0xA   //!old only provided for compatibility  
  25. #define ANALOG_NOT_RE1_RE2_REF_RA3_RA2  0xB   //!old only provided for compatibility  
  26. #define A_ANALOG_RA3_RA2_REF            0xC   //!old only provided for compatibility  
  27. #define RA0_RA1_ANALOG_RA3_RA2_REF      0xD   //!old only provided for compatibility
  28. #define RA0_ANALOG                      0xE   //!old only provided for compatibility
  29. #define RA0_ANALOG_RA3_RA2_REF          0xF   //!old only provided for compatibility

Saludos
El pesimista se queja del viento
El optimista espera que cambie
El realista ajusta las velas

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: Contro de nivel y Temperatura de un calderin por medio de RF
« Respuesta #44 en: 29 de Julio de 2009, 14:02:41 »
 :-/ :-/ :-/ :-/ :mrgreen: :mrgreen: :mrgreen: :mrgreen: si funcionó definiendo primero el ADCON1
lo hice asi tal cual como dijiste, empezando el programa defino:
Citar
#BYTE ADCON1=0X9F

luego para alternar los dos voltajes de referencia del PIC, es decir ponerlo a correr con voltaje de referencia externo e interno hice lo siguiente
Citar
FOR(;; )
   {
   ADCON1=0B00001101; //AN0 AN1 VREF+ VREF-
   SET_ADC_CHANNEL(0);
   DELAY_US(20);
   Q=READ_ADC();
   
   ADCON1=0B00000100;//AN0 AN1 VREF+=VCC VREF-=GND
   SET_ADC_CHANNEL(1);
   DELAY_US(20);
   O=READ_ADC();
   
   P=(2.5*Q)/255.0;
   R=(5.0*O)/255.0;
   PRINTF(LCD_PUTC,"\fADC'S=%u  %u",Q,O);
   PRINTF(LCD_PUTC,"\nV1=%1.2fV V2=%1.2fV",P,R);
   PRINTF("%u\r\n",Q);

bueno almenos simulado funciona de lujo y eso me salva de tener q hacer un nuevo hardware
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA