TODOPIC
FORO TÉCNICO => Foro Técnico => Mensaje iniciado por: jeremylf en 30 de Septiembre de 2015, 14:00:53
-
Estoy usando el PIC16F886 y necesito 3 salidas PWM por hardware de la misma frecuencia pero con diferente duty cada una.
Como el modo EPWM tiene 4 salidas independientes (P1A, P1B, P1C y P1D) pense que podría tener control del duty cycle de cada una sin importar que fuera a la misma frecuencia. Pero parece que este modo está más orientado a motores y no permite un control independiente de cada salida. ¿Cierto?
-
Como el modo EPWM tiene 4 salidas independientes (P1A, P1B, P1C y P1D) pense que podría tener control del duty cycle de cada una sin importar que fuera a la misma frecuencia. Pero parece que este modo está más orientado a motores y no permite un control independiente de cada salida. ¿Cierto?
la verdad es que no lo se, pero ¿por que no los haces por software y arreglado? si el micro va sobrado para la aplicación te lo puedes plantear.
-
Creo que te confundiste y no son independientes, Si miras el diagrama solamente posee un punto de comparacion que es el modulo CCP1, eso segun si encuentra un match en el periodo o en el duty activa la salida, y luego hay una logica que maneja las salidas segun la señal que le dan estos comparadores, como bien decis esta esta mas pensado por ahi para una fuente o un motor. En el que podes implementar un puente H o medio puente. Pero no para que las 4 salidas sean independientes ( es decir que cada uno tenga un registro comparador de duty al menos)
Si vas con ese micro, entonces no queda otra que ir a un PWM por software.
-
Si pensé en un principio hacerlo por software, pero el EPWM aparentaba tener 4 registros independientes duty pero con frecuencia única.
Ahora confirmado que no es así, lo haré por software. ¡Gracias!
-
Usa un atmega8 que cuesta menos y tiene los 3 PWM o el atmega88. si busca un pic con mas pwm sale mas caro.
-
Usa un atmega8 que cuesta menos y tiene los 3 PWM o el atmega88. si busca un pic con mas pwm sale mas caro.
Gracias, lo tendré en cuenta.
-
:) el Atmega168 tiene 6 PWM y muy baratos.
si busca en el foro nuestros de Atmel alli vera como lo hago ;-)
Aqui te pongo 4pwm del Atmega168
$regfile = "m168def.dat" ' aqui usamos el Atmega168 que posee 6 PWM Hw
$crystal = 8000000 'Interne Fuses Clock Division by 8
$hwstack = 40
$swstack = 16
$framesize = 32
$lib "mcsbyte.lbx " 'usaremos la libreria byte para optimatizar el codigo
'Configuration de los puertos
Config Portb.1 = Output ' LED1 Rojo
Config Portb.2 = Output 'LED2 Verde
Config Portb.3 = Output 'LED3 Azul
Config Portd.3 = Output 'LED4 Amarillo
Config Portd.2 = Input ' irR TSOP1738
Config Rc5 = Pind.2 'aqui activamos la resistencia interna del puerto D2
'Config Timer1 y Timer2 para PWM . atencion Timer0 trabaja interno con el protocologo GetRC5 de Bascom
'Timer0 trabaja con el protocologo RC5
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
Config Timer2 = Pwm , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
'Declaration Variable
Dim Pwmval1 As Byte ' Variable para Pwm1( PortB.1=OC1A )
Dim Pwmval2 As Byte ' Variable para Pwm2( PortB.2-=OC1B)
Dim Pwmval3 As Byte 'Variable para Pwm(PortB.3=OC2A)
Dim Pwmval4 As Byte 'Variable para Pwm(Port.D=OC2B
cada pwm puede poner el Dusty como quiera.
Saludo
-
Tambien puedes utilizar un pic16F767 tiene tres pwm por hardware y resuelto el problema :mrgreen:
Saludos
-
Grandes datos, gracias!