TODOPIC
Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: groundman en 30 de Septiembre de 2013, 10:08:53
-
hola.estoy con un 18f2550 y en asm.nunca habia usado el PWM y queria saber si hay alguna forma de disparar la señal a mi antojo.queria sincronizarla
con el cruzamiento por cero de una señal alterna.y modularla al mismo tiempo.
se me ocurre activar/desactivar el modulo PWM en cada sincronizacion.pero no se si sera lo mas efectivo o si la señal modulada puede que no fuera
la que tubiera configurada.
mi intencion es generar una señal sincronizada con cada cresta de la señal alterna.y modular el ancho de este pulso para abarcar parte o la totalidad
de un semiciclo desde el centro de este.
para ello tendre que realizar unos calculos partiendo de la deteccion del cruze por cero y adelantando/atrasando el disparo del pulso,teniendo en cuenta
la anchura del pulso que quiero obtener.
eso si.el pulso independientemente de su anchura,debe de estar centrado en el semiciclo de la señal alterna.
-
Igual te es más cómodo usar el módulo en modo comparación. A mí personalmente, para disparar un pulso 'x' tiempo después de un trigger, normalmente me es más cómodo hacerlo así.
Un saludo.
-
te refieres a poner el valor: 1011 = Compare mode: trigger special event, reset timer, start A/D conversion on CCP2 match (CCPxIF bit is set)
del registro CCPxCON? que es lo que hace?
-
te refieres a poner el valor: 1011 = Compare mode: trigger special event, reset timer, start A/D conversion on CCP2 match (CCPxIF bit is set)
del registro CCPxCON? que es lo que hace?
El "compare mode" se puede configurar para que cuando el registro CCPRx y el TMRx coincidan; un pin se ponga a '1', a '0' o cambie su estado.
Normalmente, cuando se trabaja con corriente alterna, es mejor trabajar con un disparo a partir de un cruce por cero mediante este modo.
Si se usa el PWM, aunque se sincronice en el cruce por cero, poco a poco se iría desincronizando de la red (fallos en frecuencia del uC y de la red).
Usando el pin denominado "CCPx ouput" y la interrupción, puedes precargar el valor que deseas temporizar antes de que se produzca el trigger y lanzar el TMRx sólo cuando éste se produzca. Así, la latencia sería muy baja, sólo el tiempo de entrar en la interrupción y lanzar el TMRx. Si necesitas mucha precisión, se puede tener en cuenta la latencia en el valor de comparación del registro CCPRx.
No sé si me he explicado bien. Para cualquier duda o aclaración seguro que entre la gente del foro la damos resuelto :)
Un saludo,
-
hola Tisco.
para que haya una idea de lo que quiero hacer. mi intencion es diseñar un regulador PWM que controle la carga de una baterias con la
energia producida por un alternador trifasico de un aerogenerador.este regulador tiene dos salidas.una de ellas es la encargada de cargar unas bateias.
la otra se encarga de desviar la energia sobrante de la que no consumen las baterias.a unas resistencias para calentar agua.
las revoluciones dependen de la velocidad del viento.pero dire que a unas 200rpm el alternador generaria unos 14v en vacio.es decir
que apartir de estas revoluciones apareceria un pequeño inpulso centrado en cada semiciclo.que sera el que excite el transistor fet hacia la carga.
que estaran las baterias a cargar.
cuando el generador gire a mas rpm,el voltage subira de 14.4 que automaticamente se estabilizara al ensanchar el pulso de control.mediante
la comparacion de un valor prefijado con el valor de voltage producido por el alternador.que es comparado por una entrada A/D del pic.
una caracteristica de todos los alternadores es que cuanto mayor es la carga mas se frena este.por eso la elice no girara a excesiva velocidad
manteniendo una carga constante.claro que dentro de unos valores aceptables de la velocidad del aire.
en una prueba que hize.consegui 14,8v con una carga de 3,3A a 730rpm. y a mas revoluciones se produciria mas potencia.y esto en una sola de
las fases.
realmente no se como se comportara una bateria cuando este plenamente cargada.se que cuando estan muy descargadas,no se produce mucha intensidad
hasta que empieza a cargarse.luego empieza a subir el amperage de carga.y cuando esta cargada y se sigue cargando,se empieza a calentar.
por eso la segunda salida para las resistencias de calentamiento del agua.estoy pensando en desbiar la energia cuando la anchura del pulso de control
sea la maxima.ya que de lo contrario el voltage subiria de los 14.4v si no hay una descarga de energia.y tambien he pensado en desviar la energia
de carga de la bateria cuando la bateria este sobrecalentada.
me parece que este proyecto me va a suponer un gran desafio.ya que lo mas que he hecho en el control de señales alternas es un dimmer.y la frecuencia era
fija.no variable.
lo primero que tendria que hacer es configurar un pin del pic para producir una interrucion por cruce por cero.en este momento resetearia el TMR1 y esperaria al siguiente
cruce por cero para determinar la duracion de un semiciclo de una de las fases.cuando tenga el tiempo de un semiciclo,lo dividire por 3 para determinar
el centro de cada semiciclo de las 3 fases.
una vez determinado el centro de cada semiciclo.quedaria determinar la anchura del pulso PWM centrado en cada semiciclo.para esto tengo que comparar
un valor prefijado de 14.4v con una entrada analogica del pic.y apartir de aqui el ancho del pulso aumentara cuando el voltaje del alternador supere este limite.
y disminuira cuando el voltage este por debajo del limite de 14.4v
como esto se realiza a mucha velocidad.pues solo notariamos una regulacion instantanea.pero me da que me va a costar trabajo hacer esto.
como dato confirmo que el alternador es de 12 polos.es decir que cada vuelta del alternador se produciran 12 semiciclos de la corriente alterna.6 positivos
y 6 negativos.que rectificados daran 12 semiciclos positivos en cada fase.y como hay 3 fases,se producirian un total de 36 semiciclos positivos.
solo que cuando se unen semiciclos de diferentes fases,estos estan en parte superpuestos.
-
se me ha ocurrido otra idea que seria menos laboriosa y no necesitaria de la deteccion del cruce por cero.
seria comparar una entrada analogica del voltage del alternador con otro de limite de tension.en este caso 14.4v
y cuando coincida, que una interrupcion comienze la modulacion del pulso.por encima de este valor el pulso se ensancha y por devajo se estrecha.el rango seria desde
la desaparicion del pulso hasta la activacion completa.
veremos a ver que usar para que esto funcione.
-
Con una entrada analógica del pic y con una salida pwm lo podrías hacer, con un divisor resistivo a la entrada analógica, lees el valor de tensión del alterador, sí sube de 1,44v después del divisor, hace el calculo mediante una regla de 3, y le asigna el valor al módulo pwm
siempre y cuando el valor obtenido en la entrada analogica supere los 1,44v se calculará un valor proporcional para el pwm, sí no es así, el valor del pwm que sea 0
-
si funcionaria.el problema es que necesito que las comparaciones se hagan con interrupciones.por eso quería usar el modulo comparador.que creo que
si que salta una interrupción cuando coinciden dos valores.
asi he configurado los registros del modulo con estos valores:
movlw b'00001110'
movwf CMCON
pero no logro que funcione.no se si este modulo sirve para esto.tambien he configurado el modulo de voltage de referencia.
movlw b'11101000'
movwf CVRCON
en el isis he conectado dos resistencias variables a RA2 y RA3 .(Vref- y Vref+) respectvamente
y he puesto dos led a RA4 y RA5. (C1out y C2out) respectivamente.
tengo una simulacion de un generador trifasico.pero no esta conectado al pic.y aun asi el led que he puesto en C1out esta en intermitente.y he visto
que esta sincronizado con la frecuencia del generador.
-
si funcionaria.el problema es que necesito que las comparaciones se hagan con interrupciones.por eso quería usar el modulo comparador.que creo que
si que salta una interrupción cuando coinciden dos valores.
asi he configurado los registros del modulo con estos valores:
movlw b'00001110'
movwf CMCON
pero no logro que funcione.no se si este modulo sirve para esto.tambien he configurado el modulo de voltage de referencia.
movlw b'11101000'
movwf CVRCON
en el isis he conectado dos resistencias variables a RA2 y RA3 .(Vref- y Vref+) respectvamente
y he puesto dos led a RA4 y RA5. (C1out y C2out) respectivamente.
tengo una simulacion de un generador trifasico.pero no esta conectado al pic.y aun asi el led que he puesto en C1out esta en intermitente.y he visto
que esta sincronizado con la frecuencia del generador.
y con que criterio quieres establecer la modulación por pulsos? Cuando llegue a 14,4v empezar a funcionar el pwm?
-
Si se pasa del voltage de referencia. el ancho del pulso aumenta.si se quedaa corto disminuye
-
Si solo quieres cargar las baterias, ¿no seria mucho mas simple trabajar directamente con continua?. La tension generada por el alternador se rectifica y filtra y a partir de ahi haces un PWM, que te proporcione una tension fija en la salida. Con eso te quitas tantas comparaciones y complicaciones y sobretodo te olvidas de comparar y regular en alterna, que siempre es mas complejo.
Ese es el sistema que utilizan los cargadores industriales.
Por otro lado comentarte que si la bateria es de plomo/acido, la tension para maxima carga, o sea para carga 100 % es de 2,8 V/elemento. Por tanto para una bateria de 12 V. la tension a maxima carga seria de 2,8 X 6 = 16,8 V. Para el 80 % seria de 2,4 V/elemento.
Saludos.
-
ya.al final me di cuenta de que no importa sinclonizar la señal alterna.pero de todas formas todo lo que estaba comentando hera para una tension continua-pulsante.
ya que solo continua los dan las placas solares.no un alternador.porque siempre queda alguna cresta.en este caso son 36 crestas por vuelta.pero si que es continua.
me di cuenta de que no importa sincronizar las crestas porque la amplitud de las crestas varian segun la carga.que se controlan por la modulacion del impulso
de excitacion del transistor fet.
asi que necesito que al coincidir la tension producida por el alternador con una de referencia de 14.4v .se produzca una interrupcion.y otra interrupcion cuando baje
de 14.2v
todo esto para mantener un rango de carga.si quisieramos mas carga.pues aumentamos los limites.no hay problema.
se podrian poner dos potenciometros para las tensiones de referencia de maximo y minimo.
quizas solo haria falta un potenciometro para un solo limite pero no tengo la idea muy asimilada del todo.no se como se va a comportar el generador segun que a que velocidad fuera,carga y regulacion.hasta que no haga varias pruebas no sabre que sera lo mejor.
pero lo que si me hace falta es controlar lo de las interrupciones.
-
estoy simulando el circuito en el isis.pero no logro que funcione.no se si sera que el isis no simula bien el modulo comparador o
que hay algo que no estoy haciendo bien.
tengo dos potenciometros puestos en (RA2 Vref-) y (RA3 Vref+) que entregan unos voltages variables entre 0 y 5v
y he pusto dos led en (RA4 1OUT) y (RA5 2OUT)
el registro CMCON esta configurado asi:
movlw b'00001110'
movwf CMCON
los cuatro primeros bits (b7..b4) no tienen importancia por el momento.solo es una configuracion para establecer como se van a comportar las salidas.
el bit (b3) esta a 1 para seleccionar que los pines (RA2 y RA3) esten conectados a las entradas de los comparadores en Vref- y Vref+
los tres bit (b2..b1) configuran los comparadores para el modo: (Four Inputs Multiplexed to Two Comparators). que seria para comparar independientemente
Vref- y Vref+ con el: (COMPARATOR VOLTAGE REFERENCE MODULE) que es un modulo que compara las entradas Vref- y Vref+ con un valor de referencia.
este valor de referencia se configura en el registro CVRCON y que lo he configurado asi:
movlw b'10001111'
movwf CVRCON
el bit (b7) 1=modulo activado.
(b6) conecta la salida del modulo al pin Vref-. que en este caso lo tenemos desconectado.
(b5) es para tener mayor o menor rango de voltages a generar.en este caso he puesto mayor rango.
(b4) tomamos la fuente a la que le aplicaremos la generacion de voltages de referencia.en este caso cojo la alimentacion del pic.0 y 5v
(b3..b0) es donde seleccionaremos el valor del voltage de referencia que nos generara el modulo a traves de una red de resistencias.
TRISA='11001111' para configurar el puerto de E/S aunque no se si seria necesario.
y luego esta el:ADCON1 con el valor b'11111011'
aqui en (b0..b1) he configurado (RA0..RA3) entradas analogicas.resto digitales.
pero (b5,b4) VCFG0. no se exactamente para que sirve.ya que si es para conectar los pines b5 y b6 a Vref+ y Vref- o a la alimentacion del pic.
no entiendo como de por si en el modulo generador de voltage de referencia hay otra conexion igual.
de todas formas haga como lo haga y con todas las combinaciones que he hecho.nunca veo que los led conectados en RA4 y RA5 se activen.
y se supone que cuando vario los potenciometros deberia coincidir algun voltage.
al final voy a tener que hacer el circuito fisicamente valla a que todo sea un problema del isis.
-
estoy haciendo la simulacion en circuito con el ICD2 y no hay forma de que funcione.que mas abra que configurar?
-
ya funciona.lo que pasaba es que segun el datasheet las salidas C1OUT y C2OUT no estan implementadas en todos los modos de operacion
solo lo estan en:(Two Independent Comparators with Outputs CM2:CM0 = 011) y en: (Two Common Reference Comparators with Outputs CM2:CM0 = 101)
asi que los led no se encendian.por el momento usare (CM2:CM0 = 101). asi tengo dos potenciometros para el control de maxima y minima carga.
y otra entrada para la lectura del voltage producida por el alternador.
pero solo funciona fisicamente.no logro hacerlo en el simulador del isis.
-
como si que me funciona en el ICD2 pues he empezado a practicar con el comparador.mi intencion hera hacer la regulacion mediante las interrupciones
del modulo comparador.pero me he llevado una sorpresa.la interrupcion solo se produce al coincidir los valores de las entradas del comparador.
pero no a partir de un limite predeterminado,que hera mi idea.
el utilizar las interrupciones es para que el pic no este ocupado todo el tiempo en la regulacion.ya que tengo pensado que gestione otras cosas.
pero he conseguido una solucion.
como ya dije antes.tengo dos potenciometros para ajustar un valor minimo y maximo que comparan el voltage generado por el alternador.
pues cuando el voltage del alternador empieza a subir,al alcanzar el valor minimo no pasara nada.pero cuando siga subiendo y alcance el valor
maximo,la salida PWM ensanchara el pulso.que excitara al transistor fet.lo que hara que la carga quede conectada al alternador.
dependiendo de que el voltage generado por el aire este estable.la modulacion sera constante.aumentando el ancho de pulso cuanto mas aire corra.
y disminuyendo el ancho de pulso cunto menos aire corra.aunque aqui tambien influye la carga aplicada al transistor.
en este modo de funcionamiento y con el poteciometro de maxima,se establece el voltage maximo de carga.y la interrupcion por la comparacion de maxima
no es borrada hasta que no se llega al valor de minimo.que se borrara la interrupcion para liberar de carga al pic.y cortara la excitacion del fet.
-
bueno.ya estoy probando el circuito en el protoboard.lo que he hecho es un circuito con dos salidas PWM que segun el voltage que genere el aerogenerador,
la salida principal para la carga de bateria sera modulada con un ancho de pulso variable.si la produccion de energia supera al consumo de esta.se
activara la segunda salida modulada.que descargara la energia sobrante en unas resistencias.
este video muestra en un osciloscopio las dos salidas modulandose manualmente:
en este la señal de la salida principal ya conectada al aerogenerador:
y aqui pongo un video donde como carga principal he conectado una bobilla de 12v/1,2w ya que no encontre una de 5w
se nota como se enciende una lampara de 12v/21w cuando la salida principal no es capaz de consumir toda la potencia que se esta generando porque
el aire esta soplando mas.esta lampara se usaria para descargar la energia sobrate.
en el video se ve en el centro dos leds.el rojo se enciende a partir de 10v y es el que al apagarse por descenso de voltage,borra las interrupciones.
y deja al pic menos ocupado para hacer otras cosas.
al lado hay un led amarillo.que es el que limita el voltage por ejemplo a 14.4v si es ese el voltage que emos elegido.
tambien tenemos en el video en la parte izquierda.un led verde y otro rojo.el verde es la señal PWM que se entrega al mosfet principal.
como se ve esta encendido.ya que esta excitando a tiempo completo el propio mosfet que esta alplicando tension a la lampara de 1,2w
el led rojo se conecta al mosfet secundario.que es el que esta conectado a la lampara de descarga de 21w.
el voltage que se muestra en el tester es directo del generador.y fluctua mucho porque la lampara principal es demasiado pequeña.no sucederia lo mismo
si fuera de 21w.ya que estaria sobre los 14.4v
en el caso de que estubiera conectado una lampara de 21W en la salida principal,la verdad es que la salida de descarga apenas saldria corriente por esta.
ya que tendria que soplar mucho el aire para subir de los 14.4v con una carga de 21W.
y esto es porque el alternador solo tiene dos bobinas en serie.en vez de 6 que puede llevar.asi que estas dos bobinas podriamos decir que no entregan mas
de 22 o 23W.
la particularidad de este regulador frente a otros.es que aprobecha toda la energia generada.otros reguladores, la regulacion se produce en la oposicion
del paso de una corriente mediante la resistencia interna de un transistorn unipolar.esto se traduce en un aumento de temperatura en el transistor.
y que la elice no se frene y llege a coger unas revoluciones muy altas.algo que podria romper aletas.
en este regulador lo que se hace es regular la intensidad.es como si variaramos la carga que conectamos al generador.cuanto mas carga conectemos.mas
baja el voltage.y cuanto menos carga mas sube el voltage.y eso se consigue con el PWM.
este regulador tambien funciona para placas solares.yo lo he probado e incluso trabaja mas fino.porque el voltage es mas estable.no varia tanto como
la velocidad del viento.a no ser que pase una nuve no hay tantas subidas y bajadas.
-
no he dicho un problema que me ha surgido.resulta que cuando pongo como carga principal una lampara de 12v/21W.al llegar a los 14.4V empieza a parpadear
la lampara.me da la sensacion de que la modulacion al estar cerca de estar totalmente a 1 logico.se pasara a cero de golpe.
y cuando baja la carga empieza a modularse de nuevo.no se si sera porque el alternador ya esta dando su maximo rendimiento y al pasar a la descarga
las tensiones se bienen abajo.tendria que ponerle las bobinas que le faltan haber si es de eso.
y luego se me ha presentado otro problema con los transistores mosfet IRFP250.que aunque son de 30A en la carga se calienta mucho.
este es el circuito:
(http://imageshack.us/scaled/thumb/19/gp1c.png)
no se si el circuito estara mal diseñado.lo vi por internet.
lo malo es que este transistor IRFP250 es de canal N.y esto hace que la carga no sea comun a masa.y si quisiera cargar baterias,no podria alimentar
el circuito con la energia de esta.
por eso me estoy planteando usar un mosfet de canal P.pero no se si conseguire una buena polarizacion usando señales PWM respecto a masa.supongo
que tendre que invertir la modulacion.pero no se como saldra lo de la polarizacion.he visto el IRFP9240 pero tiene la mitad de potencia respecto
al IRFP250.haber si encuentro otro de menos voltaje y mas amperaje.
-
Revisa si cuando llegas al máximo, el valor del duty cycle no sea mayor a 1023, recuerda que es de 10 bits..
Yo llegaba a 1024 y se ponía en 1, lo cual es lógico !!
-
tal y como puse en el video sobre la prueba de regulacion PWM.cuando pasa de la modulacion de un transistor a otro.eso es lo que hace.ponerse a 1.
es logico y hera lo que pretendia hacer.excitar por completo al mosfet.
es que hay algun problema por excitar al mosfet a tiempo completo?
-
hola MGLSOFT.creo que encontre el problema.parece ser que el circuito tenia problemas con las fluctiaciones de la corriente que entrega.no he podido
hacer las pruebas con el aerogenerador porque lo he desmontado para ponerle el resto de bobinas.aunque si lo he probado con una placa solar y casi
hacia lo mismo.
asi que le he puesto un condensador paralelo con la alimentacion de 22000uF y ya va bien.
aqui pongo un video de su funcionamiento:
en el video se ve al circuito funcionando con una lampara de 12v1.2W como consumidor.y como el consumidor no esta consumiendo toda la energia que
entrega la fuente de energia,se enciende una lampara de 12v21W para consumir la energia sobrante.en el circuito final seran unos calentadores de
coche para calentar agua.
poco despues se ve en el video como conecto una lampara de 12v21W en el consumidor.como se necesita mas corriente y no hay corriente sobrante.se ve
como la lampara que habiamos puesto como descarga,se apaga.
tambien he hecho un cambio en el circuito.y es que he cambiado los transistores que excitan los mosfet.por optoacopladores.