Autor Tema: Problema con INVERSOR CC/CA de 60Hz  (Leído 37070 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Problemas con PWM e interrupcion externa en pic18f4550 al realizar una onda seno
« Respuesta #30 en: 02 de Septiembre de 2013, 14:49:39 »
No tendremos problema por chequear el pin del opto, ya que lo chequeariamos en los pWMs con poco dutty o ninguno, es decir tendriamos casi todo el tiempo para chequearlo, en el PWM del paso por 0 cargariamos el TMR0 y despues todo el tiempo chequeariamos el INTCON,T0IF y el opto si se pusiera a 1 mientras chequeamos el INTCON,T0IF lo veriamos con 400nS de retraso, con interrupcion tardariamos mas en detectarlo, entra que salta a posicion 0x04 despues a la interrupcion, guardamos los reg. y chequeamos el flag pasan muchos mas ciclos maquina que haciendolo directamente.

El programa se puede acortar, habria que mirarlo, este PIC solo tiene 2K de memoria de programa pero aun asi creo que llegara, en ensamblador los programas ocupan poco. El variador trifasico que hice, esta sin acabar pero la parte que ocupa memoria esta lista y rebase en poco los 2K, aunque este lleva mas niveles, el otro lleva mas temporizaciones ya que para cada frec lleva la suya.

El TMR0 puede funcionar por interrupcion pero en este programa una vez ejecutada la demora o demoras, solo hay que hacer eso chequear el INTCON,T0IF, si tuvieramos que atender a otras cosas entonces si valdria la pena hacerlo por interrupcion.

Citar
No tengo un osciloscopio de laboratorio... tengo un "mini osciloscopio DS203", podria ver ahi la forma de onda pero no se si me responda o se me queme al meterle continua en otra entrada... tiene 4 entradas dos ac/dc y 2 dc.... voy a intentar averiguar si me serviria.... ademas eso lo tengo en la ciudad y aun faltan algunos dias para salir alla...

La verdad que no conozco ese modelo, no te puedo decir.

Citar
Pues tambien lo espero... esperaba poder trabajar con 12Vdc sobre los transistores y eso transformalo a los 120Vca

¿Ya sabes que transistores le vas a poner? ten en cuenta que I en el primario va a ser 10 o 11 veces mayor que la que tengas en el secundario.

Desconectado pgvs25

  • PIC12
  • **
  • Mensajes: 58
Re: Problemas con PWM e interrupcion externa en pic18f4550 al realizar una onda seno
« Respuesta #31 en: 02 de Septiembre de 2013, 16:23:33 »
Citar
No tendremos problema por chequear el pin del opto, ya que lo chequeariamos en los pWMs con poco dutty o ninguno, es decir tendriamos casi todo el tiempo para chequearlo, en el PWM del paso por 0 cargariamos el TMR0 y despues todo el tiempo chequeariamos el INTCON,T0IF y el opto si se pusiera a 1 mientras chequeamos el INTCON,T0IF lo veriamos con 400nS de retraso, con interrupcion tardariamos mas en detectarlo, entra que salta a posicion 0x04 despues a la interrupcion, guardamos los reg. y chequeamos el flag pasan muchos mas ciclos maquina que haciendolo directamente.

El programa se puede acortar, habria que mirarlo, este PIC solo tiene 2K de memoria de programa pero aun asi creo que llegara, en ensamblador los programas ocupan poco. El variador trifasico que hice, esta sin acabar pero la parte que ocupa memoria esta lista y rebase en poco los 2K, aunque este lleva mas niveles, el otro lleva mas temporizaciones ya que para cada frec lleva la suya.

El TMR0 puede funcionar por interrupcion pero en este programa una vez ejecutada la demora o demoras, solo hay que hacer eso chequear el INTCON,T0IF, si tuvieramos que atender a otras cosas entonces si valdria la pena hacerlo por interrupcion.

Me dices que lo veriamos con 2 ciclos de retraso, no se como lo hariamos si estamos en ese bucle que se hace entre el chequeo del INCONT,T0IF al ser un bucle no sale sino hasta que se cumple..... aun no entiendo tu idea para testear el pin del opto.. sera que estoy muy confundido o que no te entiendo?? te entiendo que con interrupcion hay que guardar los registros y todo en general pero pensaba no guardarlos por efecto de que podria una senoidal dentro de la IT.... bueno pero primero quiero que me expliques como es ese chequeo del pin de opto ya que en verdad estoy hecho un lio con eso jejejejejejeje

Exacto la memoria de programa es poca y como te digo nunca he hecho programas a largos asi que no se como se calcula la memoria de programa jajajajajajajaja, ya voy a terminar a ver que me indiques como ver la memoria de programa o que me lo des viendo...

entiendo... como el pic esta dedicado a esto nada mas pues mejor lo hacemos sin interrupcion pero como te digo se me hizo problema el chequear el pin del opto y realmente no te entiendo en donde hacerlo.


Citar
La verdad que no conozco ese modelo, no te puedo decir.
La direccion del manual seria esta pero esta en ingles

http://www.kc-kwan.com/supports/manual_PC_Oscilloscope_DSO203.pdf


Citar
¿Ya sabes que transistores le vas a poner? ten en cuenta que I en el primario va a ser 10 o 11 veces mayor que la que tengas en el secundario.

Pensaba utilizar el IRFZ48N que hay disponible en mi ciudad... pero si tienes una mejor opcion pues hasmela saber...


Saludos, Pedro.

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Problemas con PWM e interrupcion externa en pic18f4550 al realizar una onda seno
« Respuesta #32 en: 02 de Septiembre de 2013, 17:10:13 »
Chequear el pin es muy sencillo, por ejemplo:

POSITIVO_0          ;este es el primer PWM que no tiene dutty, es el paso por 0

    nop          ;estos nop son de relleno, despues pondremos mas o menos
    nop         
    movlw    .85       ;valoe del offset del TMR0 para 136,80uS
    mowf    TMR0       ;aqui empieza a contar
                  btfsc           PORTB,2                     ;puedes ponerlo donde quieras
                  goto           CRUCE_0                     ;ya esta a 1, aqui haremos lo que corresponda
   
                  btfss    INTCON,T0IF    ;chequeamos si desbordo
    goto    $-3       ;todavia no pasaron los 138uS, seguimos chequeando pin de cruce por 0.

POSITIVO_1          ;este sera el primer PWM con dutty

    bsf    PORTC,2       ;lo activamos (pon el que tu quieras)      
    movlw    .85       ;valoe del offset del TMR0 para 136,80uS
    mowf    TMR0       ;aqui empieza a contar
    call    DEMORA_1    ;llamamos demora
    bcf    PORTC,2       ;acabo tiempo dutty, apagamos
                   btfsc           PORTB,2                     ;puedes ponerlo donde quieras
                  goto           CRUCE_0                     ;ya esta a 1, aqui haremos lo que corresponda

    btfss    INTCON,T0IF    ;chequeamos si desbordo
    goto    $-1       ;todavia no pasaron los 138uS, esperamos

Como ves lo vamos a estar chequeando constantemente, excepto cuando estemos en las demoras, en los PWMs que creamos que puede haber cruce por 0 o en todos si queremos.

En el MPLAB cuando cargas un programa en view, la ultima opcion "memory ussage gauge" te dice cuanta usaste y cuanta te queda.

Citar
Pensaba utilizar el IRFZ48N que hay disponible en mi ciudad... pero si tienes una mejor opcion pues hasmela saber...

No, con tal de que aguenten, mañana miro el data sheet.

Desconectado pgvs25

  • PIC12
  • **
  • Mensajes: 58
Re: Problemas con PWM e interrupcion externa en pic18f4550 al realizar una onda seno
« Respuesta #33 en: 03 de Septiembre de 2013, 20:19:20 »
Citar
Chequear el pin es muy sencillo, por ejemplo:

POSITIVO_0          ;este es el primer PWM que no tiene dutty, es el paso por 0

    nop          ;estos nop son de relleno, despues pondremos mas o menos
    nop         
    movlw    .85       ;valoe del offset del TMR0 para 136,80uS
    mowf    TMR0       ;aqui empieza a contar
                  btfsc           PORTB,2                     ;puedes ponerlo donde quieras
                  goto           CRUCE_0                     ;ya esta a 1, aqui haremos lo que corresponda
   
                  btfss    INTCON,T0IF    ;chequeamos si desbordo
    goto    $-3       ;todavia no pasaron los 138uS, seguimos chequeando pin de cruce por 0.

POSITIVO_1          ;este sera el primer PWM con dutty

    bsf    PORTC,2       ;lo activamos (pon el que tu quieras)      
    movlw    .85       ;valoe del offset del TMR0 para 136,80uS
    mowf    TMR0       ;aqui empieza a contar
    call    DEMORA_1    ;llamamos demora
    bcf    PORTC,2       ;acabo tiempo dutty, apagamos
                   btfsc           PORTB,2                     ;puedes ponerlo donde quieras
                  goto           CRUCE_0                     ;ya esta a 1, aqui haremos lo que corresponda

    btfss    INTCON,T0IF    ;chequeamos si desbordo
    goto    $-1       ;todavia no pasaron los 138uS, esperamos

Como ves lo vamos a estar chequeando constantemente, excepto cuando estemos en las demoras, en los PWMs que creamos que puede haber cruce por 0 o en todos si queremos.

En el MPLAB cuando cargas un programa en view, la ultima opcion "memory ussage gauge" te dice cuanta usaste y cuanta te queda.

El testeo del bit del opto no hay como ponerlo donde sea ya que estamos poniendo un bucle que ingresa ahi.... Hasme un favor, con que configuracion le pusiste el TIMER 0, yo lo puse en modo contador y con preescaler 1:4, parece ser que asi lo pensaste.

En cuanto a la memoria de programa ya se verla, muchas gracias por la indicacion, solamente como lo planteabamos seguro nos ibamos pasando... asi que opte por hacer una demora de 7 ciclos (escogi esta ya que ahi es cuando se cumple que hay q darle un cm mas en la demora), asi que con este pequeño cambio ya me dio la memoria de programa jejejejejeje....


Citar
No, con tal de que aguenten, mañana miro el data sheet.

Ahi le hechas un vistazo y me avisas...

De paso te dejo el programa de como esta hasta ahora... aun hay q ajustar los tiempos y demas pero como tu dijiste eso lo podemos hacer al ultimo.

Saludos, Pedro

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Problemas con PWM e interrupcion externa en pic18f4550 al realizar una onda seno
« Respuesta #34 en: 04 de Septiembre de 2013, 13:53:11 »
Citar
El testeo del bit del opto no hay como ponerlo donde sea ya que estamos poniendo un bucle que ingresa ahi....

Si efectivamente va ahi donde esta  :lol: con lo de ponerlo donde quieras me referia al pin del PIC que yo puse PORTB,2 y puedes ponerlo en el pin que quieras  :D :D

Citar
Hasme un favor, con que configuracion le pusiste el TIMER 0, yo lo puse en modo contador y con preescaler 1:4, parece ser que asi lo pensaste.

NO, tiene que ser en modo temporizador , contador es para contar pulsos externos en el pin PORTA,4.

Si se me olvido decirtelo, perdon, esta en preescaler de 4, ya que en preescaler de 2 que seria mas preciso y mejor solo da hasta 102,40uS y no llega, si fuera necesario usariamos TMR1 que es de 16bits y mas preciso, pero un poco mas complejo de usar, creo que nos servira el TMR0.

Citar
En cuanto a la memoria de programa ya se verla, muchas gracias por la indicacion, solamente como lo planteabamos seguro nos ibamos pasando... asi que opte por hacer una demora de 7 ciclos (escogi esta ya que ahi es cuando se cumple que hay q darle un cm mas en la demora), asi que con este pequeño cambio ya me dio la memoria de programa jejejejejeje....

No entiendo lo de la demora de 7 ciclos, ¿se te pasaba de memoria de programa? ¿Has mirado que tiempos salen? Aqui lo importante son los tiempos que tienen que ir muy justos, todo lo justos que se pueda, aunque nos podemos permitir algunas desviaciones.

Citar
Ahi le hechas un vistazo y me avisas...

Si va muy sobrado en V, en I depende de que potencia quieras en la salida. Haciendo un calculo asi por encima, como aguantan 64A a 25 grados y 45A a 100, vamos a coger 25A y con disipadores, aunque esto depende de muchos factores (temperatura ambiente, ventilacion, tiempo de trabajo...) y nos daria:

Wprimario=V*I=8,5*25=212W  ;le quitamos las perdidas en el trafo, pongamos rendimiento 90%

212*0,9=191,5W potencia total; Isecundario=W/V= 191,5/120=1,6A en el secundario,


Es decir en la instalacion de alterna tendras 190W y 1,6A a 120V, ¿Es suficiente?

Citar
De paso te dejo el programa de como esta hasta ahora... aun hay q ajustar los tiempos y demas pero como tu dijiste eso lo podemos hacer al ultimo.

El programa lo mirare algo mas tarde, dame un poco de tiempo  :lol:

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Problemas con PWM e interrupcion externa en pic18f4550 al realizar una onda seno
« Respuesta #35 en: 04 de Septiembre de 2013, 14:38:47 »
Le he echado un ojo asi por encima al programa, es cierto si que quedo un poco largo  :lol: :lol: pero la precision es acojonante, los tiempos dan casi perfectos, el semiciclo positivo se queda en 8.330600mS (copiado del MPLAB) pasado a millonesimas 8330,6uS, ¿Le has hecho algo para ajustar esto? porque vaya exactitud ¿No?, esto lo hace la primera vez por la configuracion incial, despues en cada ciclo ya real sale 8.328800Ms que esta muy bien, pero la mejoraremos, solo hay que mirar los uS que nos faltan y aumentarselos al TMR0 en el PWM del 100% (cresta de la onda)

La negativa 8.329000, la onda entera sale 16.657800 que debe ser 16,67mS, bueno ajustaremos para que salga perfecta, pero para el primer intento esta bastante bien ¿No?.

Mañana te explicare unas cosillas que nos faltan.

Desconectado pgvs25

  • PIC12
  • **
  • Mensajes: 58
Re: Problemas con PWM e interrupcion externa en pic18f4550 al realizar una onda seno
« Respuesta #36 en: 04 de Septiembre de 2013, 22:25:39 »
Citar
Si efectivamente va ahi donde esta  :lol: con lo de ponerlo donde quieras me referia al pin del PIC que yo puse PORTB,2 y puedes ponerlo en el pin que quieras  :D :D

ah ya... entiendo... y pues asi lo hice jejejejejeje

Citar
NO, tiene que ser en modo temporizador , contador es para contar pulsos externos en el pin PORTA,4.

Si se me olvido decirtelo, perdon, esta en preescaler de 4, ya que en preescaler de 2 que seria mas preciso y mejor solo da hasta 102,40uS y no llega, si fuera necesario usariamos TMR1 que es de 16bits y mas preciso, pero un poco mas complejo de usar, creo que nos servira el TMR0.

Soy un animal... te dije modo contador, cuando incluso en la configuracion lo hice en modo temporizador jajajajajajaja

Por ahora creo que la presicion es buena... veamos como nos sigue yendo

Citar
No entiendo lo de la demora de 7 ciclos, ¿se te pasaba de memoria de programa? ¿Has mirado que tiempos salen? Aqui lo importante son los tiempos que tienen que ir muy justos, todo lo justos que se pueda, aunque nos podemos permitir algunas desviaciones.

sip... aun iba en el cuarto del programa, es decir solamente el ciclo asendente de la parte positiva y ya tenia 721 de memoria ocupada, si eso multiplicaba por 4 pues ya me iba pasando de la memoria del pic jajajajajaja

Ahora bien paso a explicarte la demora_7
en realidad no son mas q 7 demora_1 a la que le sumo un ciclo de maquina... ahora te explico porque:

En la demora uno damos 4.6us de demora cuando en realidad la demora real es de 4,62962962962963e-6

En 7 demoas de 4.6us tenemos 32.2us cuando la verdadera demora debería ser 3,240740740740741e-5

Entonces al darle un ciclo de maquina mas en la demora_7 tenemos 32.4us que es aun mas ajustado al valor real

Citar
Si va muy sobrado en V, en I depende de que potencia quieras en la salida. Haciendo un calculo asi por encima, como aguantan 64A a 25 grados y 45A a 100, vamos a coger 25A y con disipadores, aunque esto depende de muchos factores (temperatura ambiente, ventilacion, tiempo de trabajo...) y nos daria:

Wprimario=V*I=8,5*25=212W  ;le quitamos las perdidas en el trafo, pongamos rendimiento 90%

212*0,9=191,5W potencia total; Isecundario=W/V= 191,5/120=1,6A en el secundario,


Es decir en la instalacion de alterna tendras 190W y 1,6A a 120V, ¿Es suficiente?

En realidad queria proponer una salida de 300W, en mas mi propuesta es esa, y si hay como alcanzarla pues mejor pero si no hay como alcanzarla pues no pasa nada, con los 190W ya es bastante bueno.

Citar
El programa lo mirare algo mas tarde, dame un poco de tiempo  :lol:

Jajajajaja.... no te preocupes... aunq ya me fije que ya lo habias visto jejejejeejejeje

______________________________________________

Ahora te respondo a tu otro mensaje:

Citar
Le he echado un ojo asi por encima al programa, es cierto si que quedo un poco largo  Laughing Laughing pero la precision es acojonante, los tiempos dan casi perfectos, el semiciclo positivo se queda en 8.330600mS (copiado del MPLAB) pasado a millonesimas 8330,6uS, ¿Le has hecho algo para ajustar esto? porque vaya exactitud ¿No?, esto lo hace la primera vez por la configuracion incial, despues en cada ciclo ya real sale 8.328800Ms que esta muy bien, pero la mejoraremos, solo hay que mirar los uS que nos faltan y aumentarselos al TMR0 en el PWM del 100% (cresta de la onda)

La negativa 8.329000, la onda entera sale 16.657800 que debe ser 16,67mS, bueno ajustaremos para que salga perfecta, pero para el primer intento esta bastante bien ¿No?.

Mañana te explicare unas cosillas que nos faltan.

Lo unico que hice para ajustar los tiempos es el tiempo que te comente en demora_7, es mas creo que aun me falta ajustar un ciclo de maquina en todas las demoras que suman las 6 demora_1 y tambien esta la demora, ya que ahi tambien serian 7 demoras, por lo cual tambien hace falta ajustar un poco.... y creo que habria primero que ajustar lo que te digo para luego si ajustar todo lo que falte en la cresta de la onda (PWM del 100%)

Y pues si... para haber sido el primer intento esta bastante bien y mas aun sabiendo que luego ibamos a ir ajustando mas y mas la onda.... a ver si hoy por la noche me doy un tiempo y avanzo a hacer los cambios que te digo y ahi si para que le saques los tiempos de la onda e ir ajustandolo lo mas que se pueda....

Y mientras me explicas lo que nos falta pues ire intentando aplicarme en introducir ese ciclo de maquina que te digo que nos falta.... es solo cuestion de poner un "nop" pero hay que ver donde se lo pone...

Saludos, Pedro.

Desconectado pgvs25

  • PIC12
  • **
  • Mensajes: 58
Re: Problemas con PWM e interrupcion externa en pic18f4550 al realizar una onda seno
« Respuesta #37 en: 05 de Septiembre de 2013, 09:12:19 »
Aqui te dejo el codigo ya sin errores supuestamente (incluyendo los nop q te dije)... ahora si ya creo que seria de sacarles los tiempos y ajustarlos jejejeje.... Por cierto encontre unos errores en el conteo de las demoras pero ya lo arregle tambien jejejeje

A ver si me ayudas viendo los tiempos.... Tambien a ver si me ayudas indicando como saber los tiempos en mplab?? si es muy complicado ya me ayudaras mas adelante con mas paciencia....

Saludos, Pedro.

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Problemas con PWM e interrupcion externa en pic18f4550 al realizar una onda seno
« Respuesta #38 en: 05 de Septiembre de 2013, 14:28:07 »
Citar
Ahora bien paso a explicarte la demora_7
en realidad no son mas q 7 demora_1 a la que le sumo un ciclo de maquina... ahora te explico porque:

En la demora uno damos 4.6us de demora cuando en realidad la demora real es de 4,62962962962963e-6

En 7 demoas de 4.6us tenemos 32.2us cuando la verdadera demora debería ser 3,240740740740741e-5

Entonces al darle un ciclo de maquina mas en la demora_7 tenemos 32.4us que es aun mas ajustado al valor real


Bien ahora ya lo entiendo, bien hecho.

Citar
En realidad queria proponer una salida de 300W, en mas mi propuesta es esa, y si hay como alcanzarla pues mejor pero si no hay como alcanzarla pues no pasa nada, con los 190W ya es bastante bueno.

Bueno solo habria que poner mosfet mas potentes, hay mosfets potentes para 100A por 1€ e incluso menos, estes dias mirando para un proyecto mio encontre estes que ademas son de GATE logica, se ceban con la salida del PIC directamente cuando van entre el motor y masa:

http://www.digikey.es/product-search/en?pv606=19&pv608=2670&pv608=1931&pv608=1929&FV=fff40015%2Cfff8007d%2C97c001d%2C97c001e%2C97c001f%2C97c0020%2C97c0022%2C97c0023%2C97c0024%2C97c0025%2C97c0056%2C98000ab%2C980011f%2C98005a2%2C98005e0%2C9800789%2C980078b%2C98008b1%2C9800a6e%2C9800aef%2C9800b20%2Cefc0005%2Cefc0007%2Cefc0008%2Cefc0009%2Cefc000a%2Cefc000b%2Cefc000c%2Cefc000d%2Cefc000e%2Cefc000f%2Cefc0012&mnonly=0&newproducts=0&ColumnSort=0&page=1&quantity=0&ptm=0&fid=0&pageSize=25

Hablando sobre los mosfet y el puente H te queria comentar que nosotros estamos generando 2PWMs pero tenemos que actuar sobre 4 mosfet, bien tranquilo no es mucho problema, hay una forma que es asi:

Mira un puente H con solo dos alidas del PIC, pero con mosfet creo que no es tan sencillo???.

http://robots-argentina.com.ar/MotorCC_PuenteH.htm

Hay otra manera que es hacer conducir a los transistores superiores (mosfet, BJT, incluso reles, lo que se quiera) durante todo el semiciclo 8,33mS (cada semiciclo el que corresponda) y el PWM se hace solo sobre el transistor inferior, funciona exactamente igual que haciendo PWM sobre los dos, ya que funcionan como interruptores, en el programa es muy sencillo de cambiar. ¿Te acuerdas de esos "nop" que puse en el primer PWM? uno de ellos lo sustituyes por "bsf PORTC,X" y hay que ponerlo a 0 al final del semiciclo, para en el siguiente activar el otro superior y hacer los PWMs del otro semiciclo.

Los mosfet superiores ya sabes que hay que cebarlos con un driver para darles la V del + mas 10 o 15V, hay drvers integrados como el IR2110, tambien se pueden hacer con unos NPN que creo que salen mas baratos. Tu veras que te sale mas economico y que tienes mas accesible.???

Citar
A ver si me ayudas viendo los tiempos.... Tambien a ver si me ayudas indicando como saber los tiempos en mplab?? si es muy complicado ya me ayudaras mas adelante con mas paciencia....

Es muy sencillo, abres el stopwatch desde el menu dbugger, pones breakpoints desde donde hasta donde quieres contar (haciendo doble click en la linea de codigo, fuera en la parte gris) pones a 0 en el stopwatch le das a la flecha verde de la izquierda y te ejecuta el codigo entre los breakpoints y te da el tiempo exacto que consume ese trozo de codigo, todo esto con el MPLAB SIM abierto (se abre en el menu debugger). En las "call" pones stopwatch a 0 le das a "step over" te ejecuta la demora y te dice el tiempo tarda la ejecucion.

Yo ayer para mirar los semiciclos completos puse un breakpoint aqui:

NEGATIVO_0         ;este es el primer PWM que no tiene dutty, es el paso por 0

   nop         ;estos nop son de relleno, despues pondremos mas o menos

En el nop y otro aqui:

   goto POSITIVO_0 ;Empezamos nuevamente la onda

Con cada click me ejecuta un semiciclo entero y en el stopwatch me aparece el tiempo total.

Veo que en el programa de ayer (el de hoy aun no lo mire, estoy muy vago  :lol: :lol:) veo que le das 100% en el 29 y el 30??? No importa, incluso esta bien que en la cresta haya mas de 1 PWM, solo lo digo por si fue un despiste.

Mirare el programa de hoy, saludos.


Desconectado pgvs25

  • PIC12
  • **
  • Mensajes: 58
Re: Problemas con PWM e interrupcion externa en pic18f4550 al realizar una onda seno
« Respuesta #39 en: 07 de Septiembre de 2013, 12:34:29 »
Citar
Bueno solo habria que poner mosfet mas potentes, hay mosfets potentes para 100A por 1€ e incluso menos, estes dias mirando para un proyecto mio encontre estes que ademas son de GATE logica, se ceban con la salida del PIC directamente cuando van entre el motor y masa:

http://www.digikey.es/product-search/en?pv606=19&pv608=2670&pv608=1931&pv608=1929&FV=fff40015%2Cfff8007d%2C97c001d%2C97c001e%2C97c001f%2C97c0020%2C97c0022%2C97c0023%2C97c0024%2C97c0025%2C97c0056%2C98000ab%2C980011f%2C98005a2%2C98005e0%2C9800789%2C980078b%2C98008b1%2C9800a6e%2C9800aef%2C9800b20%2Cefc0005%2Cefc0007%2Cefc0008%2Cefc0009%2Cefc000a%2Cefc000b%2Cefc000c%2Cefc000d%2Cefc000e%2Cefc000f%2Cefc0012&mnonly=0&newproducts=0&ColumnSort=0&page=1&quantity=0&ptm=0&fid=0&pageSize=25

Hablando sobre los mosfet y el puente H te queria comentar que nosotros estamos generando 2PWMs pero tenemos que actuar sobre 4 mosfet, bien tranquilo no es mucho problema, hay una forma que es asi:

Mira un puente H con solo dos alidas del PIC, pero con mosfet creo que no es tan sencillo???.

http://robots-argentina.com.ar/MotorCC_PuenteH.htm

Hay otra manera que es hacer conducir a los transistores superiores (mosfet, BJT, incluso reles, lo que se quiera) durante todo el semiciclo 8,33mS (cada semiciclo el que corresponda) y el PWM se hace solo sobre el transistor inferior, funciona exactamente igual que haciendo PWM sobre los dos, ya que funcionan como interruptores, en el programa es muy sencillo de cambiar. ¿Te acuerdas de esos "nop" que puse en el primer PWM? uno de ellos lo sustituyes por "bsf PORTC,X" y hay que ponerlo a 0 al final del semiciclo, para en el siguiente activar el otro superior y hacer los PWMs del otro semiciclo.

Los mosfet superiores ya sabes que hay que cebarlos con un driver para darles la V del + mas 10 o 15V, hay drvers integrados como el IR2110, tambien se pueden hacer con unos NPN que creo que salen mas baratos. Tu veras que te sale mas economico y que tienes mas accesible.???

Pues me parece que alguna ves vi que si existian aca en mi pais el IR2110 pero no estoy seguro.... Hoy ya estoy en la ciudad asi que me dare una vuelta a ver si puedo encontrar almacen abierto primero y si lo encuentro pues a preguntar sobre los elementos jejejejejejeje

Ahora ya he acomodado el programa con el cambio que me dices, el hecho de poner el bsf al inicio y el bcf al final de cada simiciclo de 8,33ms

Citar
Es muy sencillo, abres el stopwatch desde el menu dbugger, pones breakpoints desde donde hasta donde quieres contar (haciendo doble click en la linea de codigo, fuera en la parte gris) pones a 0 en el stopwatch le das a la flecha verde de la izquierda y te ejecuta el codigo entre los breakpoints y te da el tiempo exacto que consume ese trozo de codigo, todo esto con el MPLAB SIM abierto (se abre en el menu debugger). En las "call" pones stopwatch a 0 le das a "step over" te ejecuta la demora y te dice el tiempo tarda la ejecucion.

Yo ayer para mirar los semiciclos completos puse un breakpoint aqui:

NEGATIVO_0         ;este es el primer PWM que no tiene dutty, es el paso por 0

   nop         ;estos nop son de relleno, despues pondremos mas o menos

En el nop y otro aqui:

   goto POSITIVO_0 ;Empezamos nuevamente la onda

Con cada click me ejecuta un semiciclo entero y en el stopwatch me aparece el tiempo total.

Veo que en el programa de ayer (el de hoy aun no lo mire, estoy muy vago  :lol: :lol:) veo que le das 100% en el 29 y el 30??? No importa, incluso esta bien que en la cresta haya mas de 1 PWM, solo lo digo por si fue un despiste.

Mirare el programa de hoy, saludos.

Pues ahora ya aprendi jejejejeje, he hecho algunos cambios ya que no se porque pero en cada ciclo de la portadora (PWM) me daba diferente tiempo, asi que fui ajustando a lo que queria.... sabiendo que el tiempo de cada PWM es de 138,8888us, o sea que el el tercer PWM le di 139us, al igual que en el quinto....

Luego de terminar de hacer todos los ajustes me toco ajustarla aun un poco mas dando 2 "nop" en la cresta de la onda (es decir uno en el Positivo_29 y uno en el Positivo_30 al igual que en el Negativo_29 y Negativo_30), quedo bastante ajustado pero aun faltaria ajustar 0,2us (un ciclo) pero ya no quedarian las ondas totalmente identicas asi que no sabria en cual darle, si en el semiciclo negativo o en el positivo...

Ah y por supuesto que no fue despiste... es mas el Positivo_29, Positivo_30, asi como el Negativo_29 y el Negativo_30 son todos PWM de 100%, asi como tambien el el Positivo_0, Positivo_59, asi como el Negativo_0 y el Negativo_59 son todos PWM de 0%, Por ahi lei en algun lado que habia que hacer ese tiempo al cruzar por cero y hacer el cambio de sebado de los transistores...

Te dejo ya la ultima version que tengo hasta este momento.... con todos los cambios que me has dicho y con los cambios que tambien te comento que le he hecho, y como te dije aun me faltaria un ciclo de maquina por ajustar pero no sabria en donde ponerlo jejejejejeje Lo malo es que casi me he acabado toda la memoria del programa.... lo bueno es que como solamente esta dedicado a esto pues no necesito mas memoria de programa jejejejeje

Espero que le heches un vistazo y me comentes que mas se puede hacer y pues hasta mientras espero poder encontrar los elementos electronicos.

PD: Para hacer los calculos le he puesto los breack point aqui...


POSITIVO_0         ;este es el primer PWM que no tiene dutty, es el paso por 0

   nop         ;estos nop son de relleno, despues pondremos mas o menos


NEGATIVO_0         ;este es el primer PWM que no tiene dutty, es el paso por 0

   nop         ;estos nop son de relleno, despues pondremos mas o menos

Los he puesto en los nop.... y obviamente puse ahi puesto que ahi es cuando se empieza realmente el ciclo.


Saludos, Pedro.
« Última modificación: 07 de Septiembre de 2013, 12:41:00 por pgvs25 »

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Problemas con PWM e interrupcion externa en pic18f4550 al realizar una onda seno
« Respuesta #40 en: 08 de Septiembre de 2013, 06:30:23 »
En este ultimo he medido el desfase de tiempo en 1seg y es de 164uS, no es mucho pero habria que afinarlo mas.

Tambie veo que estamos al limite de memoria  :lol: Me encanta exprimir los PICs al maximo  :D :D cuando hay varios "nop" cada dos nop se pueden sustituir por un "goto $+1" hace lo mismo pero consume dos ciclos. En la cresta que le estas dando 2 ciclos iguales puedes suprimir uno y repetirlo...

El IR2110 suele haberlo, pero creo que n es barato, en comparacion con los mosfet que cuestan 1€ o menos.

Desconectado pgvs25

  • PIC12
  • **
  • Mensajes: 58
Re: Problemas con PWM e interrupcion externa en pic18f4550 al realizar una onda seno
« Respuesta #41 en: 09 de Septiembre de 2013, 04:22:14 »
Citar
En este ultimo he medido el desfase de tiempo en 1seg y es de 164uS, no es mucho pero habria que afinarlo mas.

Tambie veo que estamos al limite de memoria  :lol: Me encanta exprimir los PICs al maximo  :D :D cuando hay varios "nop" cada dos nop se pueden sustituir por un "goto $+1" hace lo mismo pero consume dos ciclos. En la cresta que le estas dando 2 ciclos iguales puedes suprimir uno y repetirlo...


Ahora ya lo ajuste un poco mas... si fuese necesario creo que si habria como ajustarle un poco mas aun aunq ahi tendria que utilizar algun auxiliar pero creo que asi como esta ya esta bastante bien ajustado....

Ya estan hechos los cambios de los Nop por los goto  $+1.... ahora ya estamos un poquito mas holgados en memoria jajajajaja

Con lo que respecta a la cresta de la onda estan 8 instrucciones, para suprimirlo y hacerlo repetir creo que no vale la pena ya que para repetirlo, tendriamos que poner el valor en w, cargar en una variable auxiliar, decrementar con salto de cero a la auxiliar, si es cero mandarle a la siguiente pwm, sino pues continuar, y aparte al ultimo del ciclo habria que mandar a repetir, asi que serian 5 o 6 instrucciones asi que mejor creo que lo dejo asi como esta... no puedo hacer que el TMR0 cargue hasta el valor de 2 ciclos ya que no da la resolucion.... asi pues creo que la mejor opcion es dejarle como esta y de paso pues tambien sigue testeando si cruza o no por cero la senoidal de la red jejejejejejejeje


Citar
Los mosfet superiores ya sabes que hay que cebarlos con un driver para darles la V del + mas 10 o 15V, hay drvers integrados como el IR2110, tambien se pueden hacer con unos NPN que creo que salen mas baratos. Tu veras que te sale mas economico y que tienes mas accesible.???

Citar
El IR2110 suele haberlo, pero creo que n es barato, en comparacion con los mosfet que cuestan 1€ o menos.

Entonces sugieres que los cebe con transistores?? si es asi cuales sugieres?? aca los npn mas comunes son el 2n3904  de proposito general pero tambien hay el 2n2222 o el 2n2222a, y si tienes otro en mente pues es cuestion de ir a preguntar si en los almacenes lo tienen... el dia sabado no encontre ya almacenes electronicos abiertos pero en unas horas ya abriran....

Saludos, Pedro.

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Problemas con PWM e interrupcion externa en pic18f4550 al realizar una onda seno
« Respuesta #42 en: 10 de Septiembre de 2013, 13:35:11 »
Citar
Ahora ya lo ajuste un poco mas... si fuese necesario creo que si habria como ajustarle un poco mas aun aunq ahi tendria que utilizar algun auxiliar pero creo que asi como esta ya esta bastante bien ajustado....

Si va bastante ajustado, he mirado la desviacion en 1seg y es solo de 4uS, cuando vaya sincronizado con la red ya se va a ir sincronizando en cada ciclo (ojala la de la red sea tan buena  :lol:) y cuando trabaje solo ningun aparato notara esa deferencia.

Citar
Ya estan hechos los cambios de los Nop por los goto  $+1.... ahora ya estamos un poquito mas holgados en memoria jajajajaja

Pues si se han ganado unos 100BYTES, estaba en casi 2000 y ahora esta por debajo de 1900 (1895), posiblemente los necesitemos mas adelante.

Citar
Con lo que respecta a la cresta de la onda estan 8 instrucciones, para suprimirlo y hacerlo repetir creo que no vale la pena ya que para repetirlo, tendriamos que poner el valor en w, cargar en una variable auxiliar, decrementar con salto de cero a la auxiliar, si es cero mandarle a la siguiente pwm, sino pues continuar, y aparte al ultimo del ciclo habria que mandar a repetir, asi que serian 5 o 6 instrucciones asi que mejor creo que lo dejo asi como esta... no puedo hacer que el TMR0 cargue hasta el valor de 2 ciclos ya que no da la resolucion.... asi pues creo que la mejor opcion es dejarle como esta y de paso pues tambien sigue testeando si cruza o no por cero la senoidal de la red jejejejejejejeje


Si, si te da problemas dejalo asi, ya que no se ganaba mucho, si fuera un gran avance valdria la pena, pero se gana muy poco.

Citar
Entonces sugieres que los cebe con transistores?? si es asi cuales sugieres?? aca los npn mas comunes son el 2n3904  de proposito general pero tambien hay el 2n2222 o el 2n2222a, y si tienes otro en mente pues es cuestion de ir a preguntar si en los almacenes lo tienen... el dia sabado no encontre ya almacenes electronicos abiertos pero en unas horas ya abriran....

Pues aqui ya no se que decirte, hace poco aqui en el foro hablando de un puente H pusieron un esquema de un driver para mosfet discreto, aqui:

http://www.todopic.com.ar/foros/index.php?topic=40945.msg341563#msg341563

En el segundo post, pero desaparecio misteriosamente y en la pag de Neoteo de donde fue sacado, ayer estaba mal la pagina y no fui capaz de verlo (ya habia visto ese driver en esa pagina hace tiempo para control de motores DC) pregunta el precio del IR2110 y haber como es de caro, es posible que para 12V haya alguno mas barato ya que el IR2110 vale hasta 400V.

Desconectado pgvs25

  • PIC12
  • **
  • Mensajes: 58
Re: Problemas con PWM e interrupcion externa en pic18f4550 al realizar una onda seno
« Respuesta #43 en: 12 de Septiembre de 2013, 00:01:36 »
Citar
Si va bastante ajustado, he mirado la desviacion en 1seg y es solo de 4uS, cuando vaya sincronizado con la red ya se va a ir sincronizando en cada ciclo (ojala la de la red sea tan buena  :lol:) y cuando trabaje solo ningun aparato notara esa deferencia.

jajajaja pues creo que no es tan buena la de la red pero la ventaja es que le estamos testeando el cruce por cero a cada momento y cada ciclo lo vamos a ir sincronizando....

De paso te comento que en mi ciudad no encontre el PS2505-1 ni ningun ps2505, asi que busque opciones y encontre un H11AA1, te dejo el datasheet

http://pdf.datasheetcatalog.com/datasheet/QT/H11AA3.pdf

aun no he hecho las pruebas ya que he estado un poco ocupado pero creo que tiene la misma funcionalidad del ps2505 por lo que he leido en el datasheet, ademas tendria que hacer la prueba con un osciloscopio de laboratorio y no tendre acceso a uno sino hasta dentro de unos 10 dias ya que nuevamente me ire de la ciudad mañana a primera hora....

Te comento que el mosfet que he encontrado en mi ciudad es STP140NF75 y aqui te dejo su datasheet, me salieron un poquito caros pero creo que valen la pena.

http://pdf.datasheetcatalog.com/datasheet/stmicroelectronics/9231.pdf

En cuanto al driver tuve mala suerte y no encontre el IR2110, y pues se me paso preguntar por si tenian algun otro driver, creo que igualmente en unos 10 dias tendre que preguntar, si puedo conseguire a alguien que me de preguntado entre estos dias que estare fuera de la ciudad....


Citar
Pues si se han ganado unos 100BYTES, estaba en casi 2000 y ahora esta por debajo de 1900 (1895), posiblemente los necesitemos mas adelante.

Sip en eso si se gano bastante espacio en la memoria, gracias por indicarmelo que se me lo habia pasado por alto, a lo que me referia a que con los cambios de la cresta no se gana mucho....


Citar
Si, si te da problemas dejalo asi, ya que no se ganaba mucho, si fuera un gran avance valdria la pena, pero se gana muy poco.

exacto, por lo mismo opte por dejarlo asi... mas bien lo que hice es eliminar una instruccion que estaba duplicada, que seria el bsf al puerto de salida en el Positivo 30, y en el Negativo 30, ya que en los 29, ya los seteamos y nunca les damos en bcf jejejeje es algo que se me olvido escribirte pero que si lo hice....


Citar
Pues aqui ya no se que decirte, hace poco aqui en el foro hablando de un puente H pusieron un esquema de un driver para mosfet discreto, aqui:

http://www.todopic.com.ar/foros/index.php?topic=40945.msg341563#msg341563

En el segundo post, pero desaparecio misteriosamente y en la pag de Neoteo de donde fue sacado, ayer estaba mal la pagina y no fui capaz de verlo (ya habia visto ese driver en esa pagina hace tiempo para control de motores DC) pregunta el precio del IR2110 y haber como es de caro, es posible que para 12V haya alguno mas barato ya que el IR2110 vale hasta 400V.

Pues no se porque amigo pero no pudo ver tampoco las imagenes, ni la pagina a la que manda (o sea de Neoteo) desde el link que me mandaste... segun lei el amigo de ese hilo lo arreglo con un driver.... la verdad no he trabajando con mosfet nunca, pero pues es bueno experimentar o aprender algo nuevo... por ahi me recomendaron que mas bien ponga varios 2n3055 (que hay disponibles en mi ciudad pero no se el precio) en paralelo hasta que cumpla con la potencia que quiera entregar... Ahora mismo ya compre los mosfet que te comente que me costaron un poquitin caros pero si no puedo utilizarlos y me toca comprar los 2n3055 pues ya veremos creo que con las pruebas....

*********************************************************

Ahora te comento un problema muy grande que tengo... ya el programa se supone que esta funcionando, le quemo en el pic con el mplab y el pickit3, incluso me verifica que si le quemo en el pic, pero le conecto en un protoboard y no me funciona (al parecer no me funciona verificado con mi osciloscopio que te comente), cuando veo los pines de alimentacion si me da la alimentacion correcta (5V y GND) para VDD y VSS respectivamente, en las entradas del crystal me da un nivel mas o menos estable de voltaje, en la una pata mas grande que en la otra (no me he puesto a medir cuanto voltaje me da y no se si ahi sea el problema... pero en las salidas no me da absolutamente nada... Verifico en el PORTC las salidas 0,1,2 y 3 pero en ninguna me da absulutamente nada... verifico directamente todo en el pic, no lo estoy haciendo en el protoboard asi que pienso que no es falla del protoboard ya que la alimentacion llega al pic y en las patas de salida del pic no sale nada... esto me esta preocupando pero no se si la falla es de pronto el pic, o mas bien puede ser mi instrumento de medicion...

Bueno es lo que por ahora te puedo comentar con respecto a lo que estoy haciendo, si en algo me puedes ayudar o se te ocurre en que puedo estar herrando pues me lo haces saber...

Saluds, Pedro.

Desconectado pgvs25

  • PIC12
  • **
  • Mensajes: 58
Re: Problemas con PWM e interrupcion externa en pic18f4550 al realizar una onda seno
« Respuesta #44 en: 14 de Septiembre de 2013, 10:44:12 »
Creo que encontre la falla de porque pareciera que no funciona... esq le tenia al PIC sin conectar las patas (incluida la Portb,0) que es la pata de testeo para el cruce por cero, estaba que le metia cabeza pensando pero creo que es eso ya que esa pata debe estar a cero, lo malo es que no puedo probar mi teoria hasta que salga a mi ciudad ya que ahi tengo el pic y demas.... pero creo que ahi vamos a tener un poco de problemas ya como testeamos en cada momento la pata del pic pues puede darse el caso que esta en cero y se forme un bucle mientras esta testeando la pata... creo que hay q poner algo para q cuando se detecte el cruce por cero ya la siguiente onda no la detecte almenos mientras este en positivo la pata del pic... la verdad aun no he podido probar la forma de onda que da el ps2505 (en mi caso h11aa1) al paso por cero, no se si mantiene en 0 por un tiempo (y cuanto) el pulso o solamente es un impulso.... Si tienes idea de como es pues hasmelo saber para de esa manera seguir adecuando el codigo del PIC mientras me encuentro lejos de mi ciudad...

Saludos, Pedro.