Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CPWM
CPWM
1. Objetivo General:
Realizar un circuito rectificador de onda completa controlado por PWM para manipular el
Angulo de disparo de dos SRC (tiristores)
• ANALISIS CUALITATIVO
El modulador por ancho de pulso consta de 3 partes fundamentales las cuales se pueden
implementar de diferentes formas y empleando diferentes métodos, la primera etapa
rectifica la señal que se va enviar al microcontrolador, en la siguiente por medio un circuito
se detecta el cruce por cero y se envía esta señal a un microcontrolador que la procesara,
esta parte es muy importante ya que sincroniza la red con el modulador, esta se digitalizarla
y de acuerdo a los cruces por cero, se genera la señal modulada que saldrá por uno de los
periféricos de salida del micro y este se podrá ingresar a la etapa posterior de potencia
Como se puede observar la señal de entrada esta sincronizada con la cuadrada generada
en el PWM, esta sincronización se puede hacer de muchas formas, unas más complejas
que otras y de esta misma manera unas consumirán más potencia, y la señal final va a
tener una amplitud igual a la fuente con la que se esté alimentando el amplificador
Rectificación de onda completa monofásica controlada con STM
Enrique Sanabria, Juan David Leguizamón, Jorge Eduardo Ramírez
3. DIAGRAMA EN BLOQUES:
Detector de cruce
Alimentación de red Transformador
por cero
AC (120 V – 60 Hz)
4. Análisis de resultados
15 − 0.7
𝐼𝐵𝑎𝑠𝑒 =
10𝐾Ω
𝐼𝐵𝑎𝑠𝑒 = 1.43 𝑚𝐴
𝑉𝑎 − 𝑉𝐸
𝑅𝑆𝑎𝑡𝑢𝑟𝑎 =
𝐼𝐵𝑎𝑠𝑒
15 − 0.7
𝑅𝑆𝑎𝑡𝑢𝑟𝑎 =
𝐼𝐵𝑎𝑠𝑒
𝑹𝑺𝒂𝒕𝒖𝒓𝒂 = 𝟏𝟎𝑲 𝛀
Para 20 grados:
𝜋 = 8.3 𝑚𝑆
𝑡1 = 20° = 922𝜇𝑆
𝜋
20° ( ) = 0.349𝑟𝑎𝑑
180°
Para 160 grados:
𝜋 = 8.3 𝑚𝑆
𝑡2 = 160° = 7.3 𝑚𝑆
𝜋
160° ( ) = 2.79 𝑟𝑎𝑑
180°
1 𝜋
𝑉𝑑𝑐 = ∫ 𝑉𝑚𝑎𝑥𝑠𝑒𝑛(𝑤𝑡)𝑑𝑤
𝜋 2.79
1 𝜋
𝑉𝑑𝑐 = ∫ 179𝑉 𝑠𝑒𝑛(𝑤𝑡 )𝑑𝑤
𝜋 2.79
179𝑉 𝜋
𝑉𝑑𝑐 = − [cos(𝑤𝑡)]
𝜋 2.79
179𝑉
𝑉𝑑𝑐 = − [cos 𝜋 − cos 2.79]
𝜋
179 𝑉
𝑉𝑑𝑐 = − [cos 𝜋 − cos 2.79]
𝜋
𝑉𝑑𝑐 = 3.48 𝑉
𝑉𝑑𝑐 2 3.482
𝑃𝑚𝑖𝑛 = = = 0.0210𝑊
𝑅 576Ω
4.3 Analisis:
MODIFICACION: Por cuestiones de estabilidad se envia un solo PWM
la doble de la frecuencia
La interrupcion periodica se realiza a una frecuencia de 120Hz ,el
PWM tiene una frecuencia de 60Hz ,por medio de una funcion de lectura
se determina el estado de un pin para sincronizar el PWM con la red
,en la interrupcion se varia el ciclo de trabajo de cada PWM (angulo de
Rectificación de onda completa monofásica controlada con STM
Enrique Sanabria, Juan David Leguizamón, Jorge Eduardo Ramírez
disparo) por medio del ADC que captura el nivel de voltaje y lo cuantifica
de 0 a 4096 ya que el la resolucion del conversor es de 12bits.
FORMAS DE ONDA:
Rectificación de onda completa monofásica controlada con STM
Enrique Sanabria, Juan David Leguizamón, Jorge Eduardo Ramírez
Rectificación de onda completa monofásica controlada con STM
Enrique Sanabria, Juan David Leguizamón, Jorge Eduardo Ramírez
MAIN.C
#include "stm32f4xx_hal.h"
Rectificación de onda completa monofásica controlada con STM
Enrique Sanabria, Juan David Leguizamón, Jorge Eduardo Ramírez
ADC_HandleTypeDef hadc1;
ADC_HandleTypeDef hadc2;
TIM_HandleTypeDef htim2;
TIM_HandleTypeDef htim3;
TIM_HandleTypeDef htim4;
void SystemClock_Config(void);
void Error_Handler(void);
int valor;
int valor2;
int main(void)
int Duty;
int ton,toff,toff2;
/* MCU Configuration----------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
Rectificación de onda completa monofásica controlada con STM
Enrique Sanabria, Juan David Leguizamón, Jorge Eduardo Ramírez
MX_ADC1_Init();
MX_ADC2_Init();
MX_TIM2_Init();
MX_TIM3_Init();
MX_TIM4_Init();
/* Infinite loop */
while (1)
HAL_TIM_Base_Start_IT(&htim2);
if (band==0)
if(HAL_GPIO_ReadPin(GPIOD,GPIO_PIN_0)==1)
toff=100-valor;
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_1,0);
HAL_Delay(valor);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_1,1);
HAL_Delay(toff);
band=1;
Rectificación de onda completa monofásica controlada con STM
Enrique Sanabria, Juan David Leguizamón, Jorge Eduardo Ramírez
if(HAL_GPIO_ReadPin(GPIOD,GPIO_PIN_2)==1 ||
HAL_GPIO_ReadPin(GPIOD,GPIO_PIN_0)==1)
band=0;
*/
void SystemClock_Config(void)
RCC_OscInitTypeDef RCC_OscInitStruct;
RCC_ClkInitTypeDef RCC_ClkInitStruct;
__HAL_RCC_PWR_CLK_ENABLE();
Rectificación de onda completa monofásica controlada con STM
Enrique Sanabria, Juan David Leguizamón, Jorge Eduardo Ramírez
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLM = 8;
RCC_OscInitStruct.PLL.PLLN = 336;
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
RCC_OscInitStruct.PLL.PLLQ = 4;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
Error_Handler();
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
Error_Handler();
HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/12000);
HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
Rectificación de onda completa monofásica controlada con STM
Enrique Sanabria, Juan David Leguizamón, Jorge Eduardo Ramírez
HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
ADC_ChannelConfTypeDef sConfig;
/**Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of
conversion)
*/
hadc1.Instance = ADC1;
hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV2;
hadc1.Init.Resolution = ADC_RESOLUTION_12B;
hadc1.Init.ScanConvMode = DISABLE;
hadc1.Init.ContinuousConvMode = DISABLE;
hadc1.Init.DiscontinuousConvMode = DISABLE;
hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
hadc1.Init.NbrOfConversion = 1;
hadc1.Init.DMAContinuousRequests = DISABLE;
hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
if (HAL_ADC_Init(&hadc1) != HAL_OK)
Error_Handler();
}
Rectificación de onda completa monofásica controlada con STM
Enrique Sanabria, Juan David Leguizamón, Jorge Eduardo Ramírez
/**Configure for the selected ADC regular channel its corresponding rank in the sequencer
and its sample time.
*/
sConfig.Channel = ADC_CHANNEL_1;
sConfig.Rank = 1;
sConfig.SamplingTime = ADC_SAMPLETIME_3CYCLES;
Error_Handler();
ADC_ChannelConfTypeDef sConfig;
/**Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of
conversion)
*/
hadc2.Instance = ADC2;
hadc2.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV2;
hadc2.Init.Resolution = ADC_RESOLUTION_12B;
hadc2.Init.ScanConvMode = DISABLE;
hadc2.Init.ContinuousConvMode = DISABLE;
hadc2.Init.DiscontinuousConvMode = DISABLE;
hadc2.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
hadc2.Init.DataAlign = ADC_DATAALIGN_RIGHT;
Rectificación de onda completa monofásica controlada con STM
Enrique Sanabria, Juan David Leguizamón, Jorge Eduardo Ramírez
hadc2.Init.NbrOfConversion = 1;
hadc2.Init.DMAContinuousRequests = DISABLE;
hadc2.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
if (HAL_ADC_Init(&hadc2) != HAL_OK)
Error_Handler();
/**Configure for the selected ADC regular channel its corresponding rank in the sequencer
and its sample time.
*/
sConfig.Channel = ADC_CHANNEL_2;
sConfig.Rank = 1;
sConfig.SamplingTime = ADC_SAMPLETIME_3CYCLES;
Error_Handler();
TIM_ClockConfigTypeDef sClockSourceConfig;
TIM_MasterConfigTypeDef sMasterConfig;
htim2.Instance = TIM2;
htim2.Init.Prescaler = 256;
Rectificación de onda completa monofásica controlada con STM
Enrique Sanabria, Juan David Leguizamón, Jorge Eduardo Ramírez
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
htim2.Init.Period = 8;
htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
Error_Handler();
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
Error_Handler();
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
Error_Handler();
TIM_MasterConfigTypeDef sMasterConfig;
TIM_OC_InitTypeDef sConfigOC;
Rectificación de onda completa monofásica controlada con STM
Enrique Sanabria, Juan David Leguizamón, Jorge Eduardo Ramírez
htim3.Instance = TIM3;
htim3.Init.Prescaler = 0;
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
htim3.Init.Period = 0;
htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
if (HAL_TIM_PWM_Init(&htim3) != HAL_OK)
Error_Handler();
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
Error_Handler();
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 0;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
Error_Handler();
HAL_TIM_MspPostInit(&htim3);
}
Rectificación de onda completa monofásica controlada con STM
Enrique Sanabria, Juan David Leguizamón, Jorge Eduardo Ramírez
TIM_MasterConfigTypeDef sMasterConfig;
TIM_OC_InitTypeDef sConfigOC;
htim4.Instance = TIM4;
htim4.Init.Prescaler = 0;
htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
htim4.Init.Period = 0;
htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
if (HAL_TIM_PWM_Init(&htim4) != HAL_OK)
Error_Handler();
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
Error_Handler();
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 0;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
{
Rectificación de onda completa monofásica controlada con STM
Enrique Sanabria, Juan David Leguizamón, Jorge Eduardo Ramírez
Error_Handler();
HAL_TIM_MspPostInit(&htim4);
* Analog
* Input
* Output
* EVENT_OUT
* EXTI
*/
GPIO_InitTypeDef GPIO_InitStruct;
__HAL_RCC_GPIOH_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOD_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_15|GPIO_PIN_1|GPIO_PIN_3;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
Rectificación de onda completa monofásica controlada con STM
Enrique Sanabria, Juan David Leguizamón, Jorge Eduardo Ramírez
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_2;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
LED.C
#include "leds.h"
int cont=0;
int b=1;
//////declaracion de variables
int cont2=0;
HAL_ADC_Start(&hadc1);
HAL_ADC_PollForConversion(&hadc1,100);
valor = HAL_ADC_GetValue(&hadc1)/40.94;
HAL_ADC_Start(&hadc2);
Rectificación de onda completa monofásica controlada con STM
Enrique Sanabria, Juan David Leguizamón, Jorge Eduardo Ramírez
HAL_ADC_PollForConversion(&hadc2,100);
valor2 = HAL_ADC_GetValue(&hadc2)/40.94;
cont++;
4. Conclusiones
· El primer diodo de rectificación en el caso de PWM digital actúa como protección del diodo del
transistor.
· El primer flanco que define el Angulo de conducción de los SCR´S es el de subida de la señal
generada del PWM.
· El rectificador de onda completa es un circuito empleado para convertir una señal de corriente alterna
de entrada (vi) en corriente continua de salida (vo) pulsante
-Para una mejor estabilidad en la carga ,es recomendable usar solamente un PWM al doble de la
frecuencia de la red ( para un puente completo semi controlado) debido a que al se usar dos (uno
desfasado) hay que tener en cuenta que no debe haber variación en el voltaje ni el frecuencia en ninguno
de los dos ,de lo contrario habrá inestabilidad en la carga .
Rectificación de onda completa monofásica controlada con STM
Enrique Sanabria, Juan David Leguizamón, Jorge Eduardo Ramírez