Autor Tema: propulsor monofasico  (Leído 4181 veces)

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

Desconectado scientist

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 999
propulsor monofasico
« en: 05 de Mayo de 2008, 14:24:40 »
hola, en este tema quisiera exponer un tema que estoy haciendo, un propulsor monofasico, esto consiste en un variador de velocidad detectando el cruce por cero de de la fase de AC y se controla por un rectificador y dos scr, aqui a continuacion pongo el diagrama(sacado de "electronica de potencia" de Rashid)

aqui dejo el programa, la salida del cruce por cero es la entrada al pic, en la interrupcion externa, asi, cada vez que hay un pulso positivo me da el periodo de la onda, y por medio del teclado de la computadora controlo la fase de salida, el periodo es de 8.333ms ya que estoy trabajando con 60 Hz en AC, el programa por ahora tiene solamente 8 velocidades,se trabaja con un pic 16f877a pero eso se puede cambiar agregando un valor int16 ala variable change, cabe destacar que esta en la primera fase el proyecto, ese es un semiconvertidor, asi que para terminar me gustaria con un convertidor completo, cualquier critica es bienvenida, y tambien comentario, ya que es el proposito de que lo exponga, sin mas que decir
aqui esta el programa (otra nota importante a señalar, este es un programa modificado de controlando un servo via rs232 del maestro RedPic):
Código: [Seleccionar]
#FUSES HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=12000000)
#use standard_io(a)
 #use standard_io(b)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

#define PIN_SERVO1 PIN_A0
#define PIN_SERVO2 PIN_A1

const int ticks_PULSO_MINIMO = 1;
const int ticks_PULSO_MEDIO = 4;
const int ticks_PULSO_MAXIMO = 8;

int1 flag=0;

int tSERVO1 = ticks_PULSO_MEDIO;
int change;
char Keypress =0x00;
int next=0;
void eco_servos(void);
void ajusta_servo(void);
void calculo(void);
#int_ext
void interruption(){

flag=1;

}
#int_rda
void rda_isr() {
   Keypress=0x00;
   if(kbhit()){
      Keypress=getc();
   }
}


 
void main() {


   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(FALSE);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
  setup_counters(RTCC_INTERNAL,RTCC_DIV_256);
  enable_interrupts(int_rda);
  enable_interrupts(int_ext);
  enable_interrupts(global);
 
  printf("\r\n\semiconvertidor by scientist\r\n\r\n" );
  eco_servos();
 
 
  ext_int_edge( L_TO_H );
  set_tris_a(0x00);
  set_tris_b(0xFF);
  do {
 
 if (flag==1){
 output_low(PIN_SERVO1);
 ++next;
 flag=0;
 

 }else{
 
 if(next==1){
 delay_us(100);
 calculo();
  output_high(PIN_SERVO1);
  delay_us(100);
  output_high(PIN_a1);
    delay_ms(tSERVO1);
  output_low(PIN_a1);
 delay_ms(change);
 delay_us(133);
 
 }
 if(next==2){
delay_us(100);
 calculo();
  output_high(PIN_SERVO1);
  delay_us(100);
  output_high(PIN_a2);
    delay_ms(tSERVO1);
  output_low(PIN_a2);
 delay_ms(change);
 delay_us(133);
 next=0;
 }
 
  }
 
 
 
 
 
    // CONTROL DESDE LA RS-232
    if(Keypress!=0x00){
      ajusta_servo();
      Keypress=0x00;
    }
 
 
 
 
  } while (TRUE);
}

void ajusta_servo(void){

  switch(Keypress){
    // Periodos Prefijados
    case '1': tSERVO1=ticks_PULSO_MINIMO;
              break;
    case '2': tSERVO1=ticks_PULSO_MEDIO;
              break;
    case '3': tSERVO1=ticks_PULSO_MAXIMO;
              break;
    // Inc Dec Periodo
    case '+': if(++tSERVO1>ticks_PULSO_MAXIMO){
                tSERVO1=ticks_PULSO_MAXIMO;
              }
              break;
    case '-': if(--tSERVO1<ticks_PULSO_MINIMO){
                tSERVO1=ticks_PULSO_MINIMO;
              }
              break;
    // Dame Periodo actual
    case 'r': eco_servos();
              break;
  }
}

void eco_servos(void){
  printf("S=%u\r\n",tSERVO1);
}
 
void calculo(void){
change=8-tSERVO1;

}


uno de los objetivos principales del proyecto es determinar todos sus parametros matematicamente, esto mas adelante lo presentare

aqui adjunto como hacer el cruce por cero, y tambien el programa simulado en proteus, en el programa de proteus, aun no esta puesto el semiconvertidor, solo las salidas del pic, y la conexion con la pc, bueno, muy pronto pondre mas resultados
NO le digas a DIOS que tienes un gran problema, dile a tu problema que tienes un GRAN DIOS!!
Alma mia y castillo mio, mi Dios en quien yo confiare....

Desconectado Azicuetano

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1020
    • Aplicaciones Electrónicas en Alicante.
Re: propulsor monofasico
« Respuesta #1 en: 06 de Mayo de 2008, 03:21:32 »
Muy bueno scientist!

Para rizar el rizo podrias incluir los retardos por interrupción.

Ahora haces:

delay_ms(change);

El micro se queda ahí atascado ejecutando el retardo (y mientras tanto no atiende a ninguna otra cosa). Si lo hicieras por interrupción podrías hacer muuuuchas cosas de forma simultanea (y que los diferentes procesos no se molesten entre ellos).

Podría ser una posible mejora, en cualquier caso, gracias por compartir el proyecto con nosotros  :mrgreen:


Un saludo desde Alicante.

Desconectado scientist

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 999
Re: propulsor monofasico
« Respuesta #2 en: 06 de Mayo de 2008, 23:46:06 »
Hola y gracias por tu comentario Azicuetano, es una mejora que en unos dias voy a hacer, por lo pronto les cuento, he provocado un incendio en el laboratorio jejeje, un compañero erroneamente me dijo que pusiera a tierra comun los anodos del rectificador, la entrada del rectificador utilizamos un transformador variable de 10A, y se ha incendiado el cable conductor, por suerte no se ha llevado la etapa de control, muy pronto mejorare el programa, con interrupcion del timer, y comprare diodos nuevos, por que los ha partido a la mitad, me gustaria subir algunas fotos pero no se como, solamente anexandolas creo, fue muy divertido, aunque poco gratificante el no poder haber terminado el mismo dia, en unos dias pondre el proyecto final, y muy pronto propulsores de CA, saludos desde la peninsula de yucatan, campeche.
NO le digas a DIOS que tienes un gran problema, dile a tu problema que tienes un GRAN DIOS!!
Alma mia y castillo mio, mi Dios en quien yo confiare....

Desconectado Azicuetano

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1020
    • Aplicaciones Electrónicas en Alicante.
Re: propulsor monofasico
« Respuesta #3 en: 07 de Mayo de 2008, 03:33:49 »
Ohhh!!! eso merece ser colgado en el rincón de los fracasos!!!  :D

Para adjuntar puedes utilizar esta página:

http://imageshack.us/

Donde pone 'examinar' pon las fotos y despues pinchas en 'host it'. Te dará unas direcciones, las pones y ya está. Haz alguna prueba, ya verás como es muy fácil.

A mi una vez me asustaron unos tiristores  :D


Esperamos tus avances.


Un saludo desde Alicante.
« Última modificación: 04 de Enero de 2009, 17:54:41 por Azicuetano »

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: propulsor monofasico
« Respuesta #4 en: 07 de Mayo de 2008, 04:56:26 »

A mi una vez me asustaron unos tiristores  :D


............................. :shock:............ :mrgreen:...................... :lol:................ :D :D

Que buena estuvo esa , pero no se vio que soplaras las velitas .

Me asusto un poquito estaba concentrado a ver que pasaba y POP , listas las palomitas.

Saludos y un Abrazo!

Atentamente
 Akenafab

Desconectado gallobarba19

  • PIC10
  • *
  • Mensajes: 1
Re: propulsor monofasico
« Respuesta #5 en: 10 de Junio de 2009, 13:05:39 »
hola buenas tardes oye tengo  una duda, quiese ver como funciona tu proyecto y lo quiese compilar en ccs y me marca error en las siguientrs lineas

#Fuses HS,NOWDT,NOPROTECT,NOLVP

#use standard_io(a)
#use standard_io(b)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)


const int ticks_PULSO_MINIMO = 1;
const int ticks_PULSO_MEDIO = 4;
const int ticks_PULSO_MAXIMO = 8;

me gustaria saber a que se debe este error si asi siempre se pone en el ccs los comandos espero respuesta gracias

Desconectado scientist

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 999
Re: propulsor monofasico
« Respuesta #6 en: 12 de Junio de 2009, 01:55:58 »
hola gallobarba, tiene un buen que hice este proyecto y que no toco pics, pero espero poder ayudarte, en las lineas que mencionas, no hay ningun error, debe haber una comilla perdida ";" por ahi, ya que esas lineas que escribes, estan bien, saludos
NO le digas a DIOS que tienes un gran problema, dile a tu problema que tienes un GRAN DIOS!!
Alma mia y castillo mio, mi Dios en quien yo confiare....