Projetos de circuito eletrônicoProjetos de engenharia do ArduinoCircuito Gerador Arduino SPWM - Detalhes do Código e Diagrama

Circuito Gerador Arduino SPWM – Detalhes do Código e Diagrama

Relacionados

Neste post, aprendemos como gerar modulação de largura de pulso de onda senoidal ou SPWM através do Arduino, que pode ser usado para fazer um circuito inversor de onda senoidal pura ou gadgets semelhantes.

O código Arduino é desenvolvido por mim, e é meu primeiro código Arduino, … e parece muito bom

O que é SPWM

Eu já expliquei como gerar SPWM usando opamps em um dos meus artigos anteriores, você pode passar por isso para entender como ele pode ser criado usando componentes discretos e sobre sua importância.

Basicamente, SPWM que significa modulação de largura de pulso de onda senoidal, é um tipo de modulação de pulso onde os pulsos são modulados para simular uma forma de onda senoidal, de modo que a modulação seja capaz de atingir propriedades de uma onda senoidal pura.

Para implementar um SPWM, os pulsos são modulados com larguras iniciais mais estreitas que gradualmente se tornam mais amplas no centro do ciclo e, finalmente, terminam sendo mais estreitas no final para finalizar o ciclo.

Para ser mais preciso, os pulsos começam com larguras mais estreitas que gradualmente se alargam a cada pulso subsequente, e ficam mais amplos no pulso central, depois disso, a sequência continua mas com uma modulação oposta, ou seja, os pulsos agora começam gradualmente a ficar mais estreitos até que o ciclo termine.

IMG 6244F034ADF9E

Demonstração de vídeo

video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio">
YouTube video

Isso constitui um ciclo SPWM e se repete em uma taxa específica determinada pela frequência da aplicação (geralmente 50Hz ou 60Hz). Normalmente, o SPWM é usado para acionar dispositivos de energia, como mosfets ou BJTs em inversores ou conversores.

Este padrão de modulação especial garante que os ciclos de frequência sejam executados com um valor de tensão média que muda gradualmente (também chamado de valor RMS), em vez de lançar picos repentinos de alta/baixa tensão como normalmente observado em ciclos de onda quadrada plana.

Essa modificação gradual de PWMs em um SPWM é aplicada propositalmente para que ele reproduza de perto o padrão exponencialmente ascendente/descendente de uma onda senoidal padrão ou forma de onda senoidal, daí o nome PWM de onda senoidal ou SPWM.

Gerando SPWM com Arduino

O SPWM explicado acima pode ser facilmente implementado usando algumas partes discretas e também usando o Arduino, o que provavelmente permitirá que você obtenha mais precisão com os períodos da forma de onda.

O código Arduino a seguir pode ser usado para implementar o SPWM pretendido para um determinado aplicativo.

Poxa!! que parece terrivelmente grande, se você souber como encurtá-lo, certamente poderá se sentir à vontade para fazê-lo do seu lado.

// By Swagatam (my first Arduino Code)
void setup(){
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
}
void loop(){
digitalWrite(8, HIGH);
delayMicroseconds(500);
digitalWrite(8, LOW);
delayMicroseconds(500);
digitalWrite(8, HIGH);
delayMicroseconds(750);
digitalWrite(8, LOW);
delayMicroseconds(500);
digitalWrite(8, HIGH);
delayMicroseconds(1250);
digitalWrite(8, LOW);
delayMicroseconds(500);
digitalWrite(8, HIGH);
delayMicroseconds(2000);
digitalWrite(8, LOW);
delayMicroseconds(500);
digitalWrite(8, HIGH);
delayMicroseconds(1250);
digitalWrite(8, LOW);
delayMicroseconds(500);
digitalWrite(8, HIGH);
delayMicroseconds(750);
digitalWrite(8, LOW);
delayMicroseconds(500);
digitalWrite(8, HIGH);
delayMicroseconds(500);
digitalWrite(8, LOW);
//......
digitalWrite(9, HIGH);
delayMicroseconds(500);
digitalWrite(9, LOW);
delayMicroseconds(500);
digitalWrite(9, HIGH);
delayMicroseconds(750);
digitalWrite(9, LOW);
delayMicroseconds(500);
digitalWrite(9, HIGH);
delayMicroseconds(1250);
digitalWrite(9, LOW);
delayMicroseconds(500);
digitalWrite(9, HIGH);
delayMicroseconds(2000);
digitalWrite(9, LOW);
delayMicroseconds(500);
digitalWrite(9, HIGH);
delayMicroseconds(1250);
digitalWrite(9, LOW);
delayMicroseconds(500);
digitalWrite(9, HIGH);
delayMicroseconds(750);
digitalWrite(9, LOW);
delayMicroseconds(500);
digitalWrite(9, HIGH);
delayMicroseconds(500);
digitalWrite(9, LOW);
}
//-------------------------------------//

No próximo post, explicarei como usar o gerador SPWM baseado em Arduino acima para fazer um circuito inversor de onda senoidal pura….continue lendo!

O código SPWM acima foi aprimorado ainda mais pelo Sr. Atton para melhorar seu desempenho, conforme indicado abaixo:

/*
This code was based on Swagatam SPWM code with changes made to remove errors. Use this code as you would use any other Swagatam’s works.
Atton Risk 2017
*/
const int sPWMArray[] = {500,500,750,500,1250,500,2000,500,1250,500,750,500,500}; // This is the array with the SPWM values change them at will
const int sPWMArrayValues = 13; // You need this since C doesn’t give you the length of an Array
// The pins
const int sPWMpin1 = 10;
const int sPWMpin2 = 9;
// The pin switches
bool sPWMpin1Status = true;
bool sPWMpin2Status = true;
void setup()
{
pinMode(sPWMpin1, OUTPUT);
pinMode(sPWMpin2, OUTPUT);
}
void loop()
{
// Loop for pin 1
for(int i(0); i != sPWMArrayValues; i++)
{
if(sPWMpin1Status)
{
digitalWrite(sPWMpin1, HIGH);
delayMicroseconds(sPWMArray[i]);
sPWMpin1Status = false;
}
else
{
digitalWrite(sPWMpin1, LOW);
delayMicroseconds(sPWMArray[i]);
sPWMpin1Status = true;
}
}
// Loop for pin 2
for(int i(0); i != sPWMArrayValues; i++)
{
if(sPWMpin2Status)
{
digitalWrite(sPWMpin2, HIGH);
delayMicroseconds(sPWMArray[i]);
sPWMpin2Status = false;
}
else
{
digitalWrite(sPWMpin2, LOW);
delayMicroseconds(sPWMArray[i]);
sPWMpin2Status = true;
}
}
}

Hashtags: #Circuito #Gerador #Arduino #SPWM #Detalhes #Código #Diagrama
 

FONTE


Nota: Este conteúdo foi traduzido do Inglês para português (auto)
Pode conter erros de tradução

Olá, se tiver algum erro de tradução (AUTO), falta de link para download etc…
Veja na FONTE até ser revisado o conteúdo.
Status (Ok Até agora)


Se tiver algum erro coloque nos comentários

Mas se gostou compartilhe!!!

Relacionados

Relacionados