Escolar Documentos
Profissional Documentos
Cultura Documentos
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 mtodos, la primera etapa
rectifica la seal que se va enviar al microcontrolador, en la siguiente por medio un circuito
se detecta el cruce por cero y se enva esta seal 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 seal modulada que saldr por uno de los
perifricos de salida del micro y este se podr ingresar a la etapa posterior de potencia
Como se puede observar la seal de entrada esta sincronizada con la cuadrada generada
en el PWM, esta sincronizacin se puede hacer de muchas formas, unas ms complejas
que otras y de esta misma manera unas consumirn ms potencia, y la seal final va a
tener una amplitud igual a la fuente con la que se est alimentando el amplificador
Rectificacin de onda completa monofsica controlada con STM
Enrique Sanabria, Juan David Leguizamn, Jorge Eduardo Ramrez
3. DIAGRAMA EN BLOQUES:
Detector de cruce
Alimentacin de red Transformador
por cero
AC (120 V 60 Hz)
4. Anlisis 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
Rectificacin de onda completa monofsica controlada con STM
Enrique Sanabria, Juan David Leguizamn, Jorge Eduardo Ramrez
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:
Rectificacin de onda completa monofsica controlada con STM
Enrique Sanabria, Juan David Leguizamn, Jorge Eduardo Ramrez
Rectificacin de onda completa monofsica controlada con STM
Enrique Sanabria, Juan David Leguizamn, Jorge Eduardo Ramrez
MAIN.C
#include "stm32f4xx_hal.h"
Rectificacin de onda completa monofsica controlada con STM
Enrique Sanabria, Juan David Leguizamn, Jorge Eduardo Ramrez
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();
Rectificacin de onda completa monofsica controlada con STM
Enrique Sanabria, Juan David Leguizamn, Jorge Eduardo Ramrez
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;
Rectificacin de onda completa monofsica controlada con STM
Enrique Sanabria, Juan David Leguizamn, Jorge Eduardo Ramrez
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();
Rectificacin de onda completa monofsica controlada con STM
Enrique Sanabria, Juan David Leguizamn, Jorge Eduardo Ramrez
__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);
Rectificacin de onda completa monofsica controlada con STM
Enrique Sanabria, Juan David Leguizamn, Jorge Eduardo Ramrez
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();
}
Rectificacin de onda completa monofsica controlada con STM
Enrique Sanabria, Juan David Leguizamn, Jorge Eduardo Ramrez
/**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;
Rectificacin de onda completa monofsica controlada con STM
Enrique Sanabria, Juan David Leguizamn, Jorge Eduardo Ramrez
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;
Rectificacin de onda completa monofsica controlada con STM
Enrique Sanabria, Juan David Leguizamn, Jorge Eduardo Ramrez
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;
Rectificacin de onda completa monofsica controlada con STM
Enrique Sanabria, Juan David Leguizamn, Jorge Eduardo Ramrez
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);
}
Rectificacin de onda completa monofsica controlada con STM
Enrique Sanabria, Juan David Leguizamn, Jorge Eduardo Ramrez
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;
{
Rectificacin de onda completa monofsica controlada con STM
Enrique Sanabria, Juan David Leguizamn, Jorge Eduardo Ramrez
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;
Rectificacin de onda completa monofsica controlada con STM
Enrique Sanabria, Juan David Leguizamn, Jorge Eduardo Ramrez
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);
Rectificacin de onda completa monofsica controlada con STM
Enrique Sanabria, Juan David Leguizamn, Jorge Eduardo Ramrez
HAL_ADC_PollForConversion(&hadc2,100);
valor2 = HAL_ADC_GetValue(&hadc2)/40.94;
cont++;
4. Conclusiones
El primer diodo de rectificacin en el caso de PWM digital acta como proteccin del diodo del
transistor.
El primer flanco que define el Angulo de conduccin de los SCRS es el de subida de la seal
generada del PWM.
El rectificador de onda completa es un circuito empleado para convertir una seal 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 variacin en el voltaje ni el frecuencia en ninguno
de los dos ,de lo contrario habr inestabilidad en la carga .
Rectificacin de onda completa monofsica controlada con STM
Enrique Sanabria, Juan David Leguizamn, Jorge Eduardo Ramrez