Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Federal do Triângulo Mineiro Instituto de Ciências Tecnológicas e Exatas - ICTE TRABALHO 2 DE COMUNICAÇÕES DIGITAIS: Modulação QPSK Universidade Federal do Triângulo Mineiro Engenharia Elétrica Comunicações Digitais – Prof. Cláriton Bernadelli. Alunos: Adrian Ribeiro Ferreira - RA: 201410850 Álvaro Luís Sousa Silva – RA: 201410280 André Luís de Sousa Gonçalves – RA: 201310395 14 de Novembro de 2017 SUMÁRIO 1. INTRODUÇÃO TEÓRICA ................................................................................................... 1 2. OBJETIVO ............................................................................................................................. 6 3. RESULTADOS OBTIDOS: (MONTAGEM DO CIRCUITO, CÓDIGO FONTE, SIMULAÇÃO E FORMAS DE ONDAS REAIS) .................................................................... 6 3.1 MONTAGEM DO CIRCUITO ........................................................................................ 6 3.2 CÓDIGO FONTE ............................................................................................................. 8 3.3 FORMAS DE ONDAS REAIS E SIMULADAS .......................................................... 13 4. CONCLUSÃO ...................................................................................................................... 23 5. REFERÊNCIAS BIBLIOGRÁFICAS ................................................................................. 24 ANEXO I – CÓDIGO FONTE ................................................................................................ 25 1 1. INTRODUÇÃO TEÓRICA O tipo de modulação é um tipo de critério que os processos de modulação digital com portadora analógica podem ser classificados. O tipo de modulação PSK (Phase Shift Keying) pode ser dividido em 3 grupos: monobit (BPSK), multi-nível (QPSK, 8-PSK) e diferencial (DPSK, DQPSK). Devido à restrição do grupo monobit (BPSK) de seu espectro de frequência ser limitado em consequência da sua portadora carregar apenas um bit por ciclo, foi criada a modulação multi-nível, onde cada símbolo ou estado é representado por um número N de bits que será igual a log2M, onde M representa o número de símbolos atribuídos. Para a modulação PSK quando for do tipo multi-nível será denominada de M-PSK, a mais comuns é a 4-PSK ou QPSK de 2 bits por ciclo e 4 símbolos. A modulação QPSK é um acrônimo para Quadrature Phase Shift Keying, que significa modulação por chaveamento da fase e da quadratura. É uma técnica de modulação derivada do PSK do tipo multi-nível (M-ary), porém são utilizados parâmetros de fase e quadratura da onda portadora para modular o sinal de informação. O sinal digital binário é agrupado em conjuntos de 2 bits e cada 2 bits ocorre um devido de 90° na fase do sinal da portadora senoidal. É possível a representação de qualquer modulação que utilize variações de fase e de amplitude que podem ser representadas através de um diagrama vetorial chamado Diagrama de Constelação, ilustrado na Figura 1. Figura 1 – Diagrama de fase e quadratura (constelação) para modulação QPSK. Fonte: LINEAR, 2017. 2 Podemos perceber através da representação do Diagrama de Constelação 4 valores diferentes de fase e cada um deles correspondendo a 2 bits, portanto exemplifica uma transmissão de 2 bits para cada um dos 4 símbolos possíveis de que a portadora poderá assumir. Os vetores que terminam nos vértices do diagrama representado na Figura 1, foram obtidos através da projeção dos vetores de sinais ortogonais seno e cosseno, uma modulando a portadora em fase e a outra modulando a portadora desfasada de 90°, demonstrado nas equações a seguir: 𝐴[cos(𝑤𝑡 + 𝜋 4⁄ ) = 𝐴[cos(𝑤𝑡) cos( 𝜋 4⁄ ) − 𝑠𝑒𝑛(𝑤𝑡)𝑠𝑒𝑛( 𝜋 4⁄ ) 𝐴[cos(𝑤𝑡 + 𝜋 4⁄ ) = 𝐴 √2 2 ⁄ [cos(𝑤𝑡) − 𝑠𝑒𝑛(𝑤𝑡)] (1) 𝐴[cos(𝑤𝑡 + 3𝜋 4⁄ ) = 𝐴[cos(𝑤𝑡) cos( 3𝜋 4⁄ ) − 𝑠𝑒𝑛(𝑤𝑡)𝑠𝑒𝑛( 3𝜋 4⁄ ) 𝐴[cos(𝑤𝑡 + 3𝜋 4⁄ ) = 𝐴 √2 2 ⁄ [−cos(𝑤𝑡) − 𝑠𝑒𝑛(𝑤𝑡)] (2) 𝐴[cos(𝑤𝑡 + 5𝜋 4⁄ ) = 𝐴[cos(𝑤𝑡) cos( 5𝜋 4⁄ ) − 𝑠𝑒𝑛(𝑤𝑡)𝑠𝑒𝑛( 5𝜋 4⁄ ) 𝐴[cos(𝑤𝑡 + 5𝜋 4⁄ ) = −𝐴 √2 2 ⁄ [cos(𝑤𝑡) − 𝑠𝑒𝑛(𝑤𝑡)] (3) 𝐴[cos(𝑤𝑡 + 7𝜋 4⁄ ) = 𝐴[cos(𝑤𝑡) cos( 7𝜋 4⁄ ) − 𝑠𝑒𝑛(𝑤𝑡)𝑠𝑒𝑛( 7𝜋 4⁄ ) 𝐴[cos(𝑤𝑡 + 7𝜋 4⁄ ) = −𝐴 √2 2 ⁄ [−cos(𝑤𝑡) − 𝑠𝑒𝑛(𝑤𝑡)] (4) Para a Equação 1 temos a fase referente a 𝜋 4⁄ (45°) e bits referentes a 00, para a Equação 2 temos a fase referente a 3𝜋 4⁄ (135°) e bits referentes a 01, para a Equação 3 temos 3 a fase referente a 5𝜋 4⁄ (225°) e bits referentes a 11 e para a Equação 4 temos a fase referente a 7𝜋 4⁄ (315°) e bits referentes a 10. Logo, os sinais I e Q definem quais são os símbolos transmitidos ao longo do tempo e representam o sinal modulado em banda base. A Figura 2, mostra o modulador vetorial QPSK, sendo que o sinal I é modulado utilizando a função cosseno e o sinal Q é modulado utilizando a função seno. Portanto, a soma vetorial desses sinais produz o sinal QPSK, representado através de uma portadora com quatro fases distintas. Figura 2 – Modulador vetorial QPSK. Fonte: LINEAR, 2017. A Figura 3, mostra uma sequência de bits a ser transmitida através da representação do sinal modulante (informação digital), da portadora analógica e da portadora modulada (modulação digital). Através da Figura 4, podemos perceber o sinal da portadora modulada referente a cada símbolo da modulação. 4 Figura 3 – Modulação QPSK. Fonte: LINEAR, 2017. Figura 4 – Portadora modulada QPSK. Fonte: LINEAR, 2017. 5 A Figura 5 mostra o diagrama de olho obtido através da portadora modulada QPSK. Figura 5 – Diagrama de olho da portadora modulada QPSK. Fonte: LINEAR, 2017. A modulação QPSK possui uma técnica de modulação multi-nível, cada símbolo carrega dois bits e apresenta uma maior eficiência espectral. Em comparação com outras modulações, como por exemplo a BPSK (Binary Phase Shitf Keying), apresenta o dobro da eficiência espectral. Porém possui um receptor mais complexo. Através da Figura 6, podemos concluir que para valores grandes de M, o sistema M- PSK ineficiente pois para ganhar 1 bit por Hz pagamos um aumento de 6dB no C/N. Figura 6 – Comparação entre modulações multi-nível. Fonte: LINEAR, 2017. 6 Este tipo de modulação é utilizado nos sistemas ATSC, DVB na transmissão via satélite e no sistema DVB na transmissão via micro-ondas utilizando frequências acima de 10 GHz. 2. OBJETIVO Esta prática teve como intuito complementar o aprendizado do conteúdo a respeito de modulações de sinais digitais, implementar e verificar o efeito do processo de modulação QPSK em sinais digitais. 3. RESULTADOS OBTIDOS: (MONTAGEM DO CIRCUITO, CÓDIGO FONTE, SIMULAÇÃO E FORMAS DE ONDAS REAIS) 3.1 MONTAGEM DO CIRCUITO Conforme visto na teoria presente nesse relatório, a modulação QPSK consiste em manter a frequência de uma senóide constante, porém, variar sua fase de acordo com o símbolo correspondente. Cada símbolo utilizado terá 2 bits, sendo seus valores e respectivos ângulos mostrados a seguir: 00 (45º), 01 (135º), 11 (225º) e 10(315º). O grupo utilizou o microprocessador Arduíno para a confecção do trabalho, devido a sua facilidade de manuseio. Para a simulação utilizou-se o Proteus 8, pois o mesmo contém todos os componentes necessários paraa montagem do circuito. O código feito na IDE do Arduíno consistiu em construir uma senóide de 9 Hz, esse valor de frequência, mantém a boa qualidade do trabalho apresentado, e foi escolhido para dar uma “folga” no processador do Arduíno e evitar atrasos de processamento, ou seja, lembrando que o processador do Arduíno é de 16 MHz, os atrasos serão insignificantes para as aplicações realizadas no presente trabalho. Fazendo um breve resumo de como foi criada a senóide: A mesma foi criada utilizando a saída PWM do Arduíno. A lógica consiste em ir alterando o valor do duty-cycle do PWM de acordo com a frequência da senóide desejada. Porém, primeiramente foi alterada a frequência do PWM para 62,5 kHz, para permitir um maior número de pontos da senóide (Aumentando a resolução). Será feito um exemplo de cálculo para a senóide com frequência de 9 Hz: 7 EX. (9Hz): - A frequência do PWM sendo 62,5 kHz possui um período de 16 us. -Observação importante: devido a alteração dos registradores do Arduino referente ao clock, deve se criar primeiramente uma senóide de frequência igual 180 Hz, depois o Arduíno reduz a frequência em 20 vezes, resultando em uma senóide de 9 Hz. - Uma senóide de 180 Hz tem período de aproximadamente 5,56 ms. - Portanto dividindo o período de 5,56 ms por 16 us obtém-se 347,22 ≈ 348. Essa é a quantidade de incrementos que a senóide criada deve ter, e a cada incremento dessa senóide tem-se um aumento do ângulo igual a 0,018055 radianos e sua duração é de 16 us. - Passando esses 348 pontos por um filtro passa baixa, retira-se então a média de cada um desses incrementos e obtêm-se a senóide. - O grupo definiu como 5 o duty-cycle para o valor mais baixo e como 250 o duty-cycle para o valor mais alto da senóide. O circuito implementado, correspondente ao código que será explicado logo mais, está presente na Figura 7. Observa-se um filtro RC de frequência de corte igual a 48,2 Hz presente na saída do PWM do pino 11 (Senóide Modulada) e na saída PWM 9 (Portadora). Ambos serão responsáveis por retirar o valor médio referente a cada duty-cicle e assim obter a senóide desejada, o filtro utiliza-se de um resistor de 1 kΩ e um caoacitor de 3,3uF, e a fórmula de frequência de corte é 𝑓𝑣 = 1 2𝜋𝑅𝐶 = 48,2 𝐻𝑧. A saída digital 8 será responsável por mostrar na tela o símbolo correspondente a cada forma de onda modulada. 8 Figura 7 – Circuito montado pelo grupo Fonte: Print da Tela do Proteus 8, 2017. 3.2 CÓDIGO FONTE A seguir será explicado detalhadamente cada trecho do código desenvolvido no Arduíno, para assim se obter um melhor entendimento do leitor. Trecho 1: - Linha 1: Protótipo da função que seleciona a frequência do PWM; - Linha 2: Variável que irá auxiliar na plotagem do símbolo no osciloscópio; -Linhas 3 e 4: Variáveis responsáveis por armazenar os valores dos bits correspondentes ao símbolo; - Linhas 5 a 8: Variáveis responsáveis por atrasar o ângulo da senóide em 45º, 135º, 225º e 315º respectivamente; 9 Figura 8.1 – Trecho 1 do código. Fonte: Print da Tela da IDE do Arduíno, 2017. Trecho 2: - Linha 12: Define o pino 8 do Arduíno como saída digital (será a porta responsável por mostrar o símbolo); - Linhas 13 e 14: Define as portas 11 e 9 como saída do PWM, sendo a primeira representando a forma de onda modulada e a segunda representando a portadora; - Linha 15: Configuração do registrador para a opção de Fast PWM, responsável por alterar a frequência do mesmo; - Linha 17: Utiliza a função criada no código para alterar a frequência de trabalho do PWM para 62,5 kHz; Figura 8.2 – Trecho 2 do código. 10 Fonte: Print da Tela da IDE do Arduíno, 2017. Trecho 3: - Linha 23: Criação da variável responsável pelo incremento das posições da senóide no laço for; - Linha 24: Criação da variável responsável por armazenar o ângulo que será aplicado ao seno; - Linhas 25 e 27: Criação das variáveis responsáveis por armazenar o duty-cycle aplicado ao PWM; - Linha 29: Condição para gerar um novo símbolo; - Linhas 30 e 32: Geração dos bits que corresponderão ao símbolo; Figura 8.3 – Trecho 3 do código. Fonte: Print da Tela da IDE do Arduíno, 2017. Trecho 4: - Linhas 36 a 41: Condição para criar a senóide atrasada em 45º, símbolo 00; - Linhas 42 a 47: Condição para criar a senóide atrasada em 135º, símbolo 01; - Linhas 49 a 54: Condição para criar a senóide atrasada em 225º, símbolo 11; - Linhas 56 a 61: Condição para criar a senóide atrasada em 315º, símbolo 10; 11 Figura 8.4 – Trecho 4 do código. Fonte: Print da Tela da IDE do Arduíno, 2017. Trecho 5: - Linhas 65 a 70: Responsáveis por plotar o símbolo 00 no osciloscópio através do pino 8 do Arduíno; - Linhas 72 a 77: Responsáveis por plotar o símbolo 01 no osciloscópio através do pino 8 do Arduíno; - Linhas 79 a 84: Responsáveis por plotar o símbolo 11 no osciloscópio através do pino 8 do Arduíno; - Linhas 86 a 91: Responsáveis por plotar o símbolo 10 no osciloscópio através do pino 8 do Arduíno; 12 Figura 8.5 – Trecho 5 do código. Fonte: Print da Tela da IDE do Arduíno, 2017. Trecho 6: - Linha 93: Laço for responsável por gerar cada valor de duty-cycle correspondente a senóide criada; - Linha 94: Ângulo teta que será o argumento da senóide onde a mesma é responsável pelo duty-cycle; - Linha 95: Senóide com os devidos atrasos, onde n1 corresponde ao atraso de 45º, n2 ao atraso de 135º, n3 ao de 225º e por fim n4 correspondente ao atraso de 315º. Onde a senóide já é aplicada ao duty-cycle. - Linha 96: Senóide sem os devidos atrasos e aplicadas ao duty-cycle; 13 - Linhas 97 e 98: Responsáveis pelo envio da senóide atrasada à porta 11 e da senóide original à porta 9 do Arduíno; - Linha 99: Atraso para o incremento do ângulo teta, a cada 16us; - Linha 101: Variável responsável por gerar um novo símbolo quando cont = 2; - Linhas 106 a 110: Função que altera a frequência do PWM. Quando o argumento for 1 o PWM será alterado para 62,5 kHz; Figura 8.6 – Trecho 6 do código. Fonte: Print da Tela da IDE do Arduíno, 2017. 3.3 FORMAS DE ONDAS REAIS E SIMULADAS Nesse tópico serão mostradas as formas de ondas reais e simuladas que permitirão fazer uma comparação entre as formas de ondas esperadas pela teoria com as obtidas na prática. As Figuras 9.1 e 9.2 mostram as formas de ondas para a Portadora, obtida pelo osciloscópio e na simulação do Proteus respectivamente. A Portadora será a senóide de referência para se realizar o deslocamento dos ângulos a partir da mesma. Percebe-se uma frequência de 9 Hz e uma amplitude de 5 V. 14 Figura 9.1 – Forma de onda da portadora inicial em 9 Hz e amplitude de 5 V. Fonte: Print da Tela do Osciloscópio, 2017. Figura 9.2 – Forma de onda da portadora inicial em 9 Hz e amplitude de 5 V (Simulação). Fonte: Print da Tela Proteus 8, 2017. 15 - Símbolo 00: Para o símbolo 00 era esperado um ângulo de atraso da portadora em 45º. A forma de onda real obtida está presente na Figura 10.1 enquanto a simulada na Figura 10.2. Figura 10.1 – Forma de onda da portadora deslocada em 45 º, símbolo 00. Fonte: Print da Tela do Osciloscópio, 2017. 16 Figura 10.2 – Forma de onda da portadora deslocada em 45 º, símbolo 00 (Simulação). Fonte: Print da Tela Proteus 8, 2017. Fazendo uma comparação das Figuras 10.1 com a 10.2 e o esperado na teoria, percebe-se que os resultados foram satisfatórios e corretos, e isso pode ser comprovado com aFigura 10.3. É importante frisar que a senóide fornecida pela teoria não está em fase com a senóide criada pelo grupo, então deve-se observar as setas em vermelho para fazer a comparação. 17 Figura 10.3 – Comparação entre os valores esperados e obtidos através do osciloscópio e simulação (Símbolo 00). Fonte: Os Autores, 2017. - Símbolo 01: Para o símbolo 01 era esperado um ângulo de atraso da portadora em 135º. A forma de onda real obtida está presente na Figura 11.1 enquanto a simulada na Figura 11.2. 18 Figura 11.1 – Forma de onda da portadora deslocada em 135 º, símbolo 01. Fonte: Print da Tela do Osciloscópio, 2017. Figura 11.2 – Forma de onda da portadora deslocada em 135 º, símbolo 01 (Simulação). Fonte: Print da Tela Proteus 8, 2017. 19 Fazendo uma comparação das Figuras 11.1 com a 11.2 e o esperado na teoria, percebe-se que os resultados foram satisfatórios e corretos, e isso pode ser comprovado com a Figura 11.3. Figura 11.3 – Comparação entre os valores esperados e obtidos através do osciloscópio e simulação (Símbolo 01). Fonte: Os Autores, 2017. - Símbolo 11: Para o símbolo 11 era esperado um ângulo de atraso da portadora em 225º. A forma de onda real obtida está presente na Figura 12.1 enquanto a simulada na Figura 12.2. 20 Figura 12.1 – Forma de onda da portadora deslocada em 225 º, símbolo 11. Fonte: Print da Tela do Osciloscópio, 2017. Figura 12.2 – Forma de onda da portadora deslocada em 225 º, símbolo 11 (Simulação). Fonte: Print da Tela Proteus 8, 2017. 21 Fazendo uma comparação das Figuras 12.1 com a 12.2 e o esperado na teoria, percebe-se que os resultados foram satisfatórios e corretos, e isso pode ser comprovado com a Figura 12.3. Figura 12.3 – Comparação entre os valores esperados e obtidos através do osciloscópio e simulação (Símbolo 11). Fonte: Os Autores, 2017. - Símbolo 10: Para o símbolo 10 era esperado um ângulo de atraso da portadora em 315º. A forma de onda real obtida está presente na Figura 13.1 enquanto a simulada na Figura 13.2. 22 Figura 13.1 – Forma de onda da portadora deslocada em 315 º, símbolo 10. Fonte: Print da Tela do Osciloscópio, 2017. Figura 13.2 – Forma de onda da portadora deslocada em 315 º, símbolo 10 (Simulação). Fonte: Print da Tela Proteus 8, 2017. 23 Fazendo uma comparação das Figuras 13.1 com a 13.2 e o esperado na teoria, percebe-se que os resultados foram satisfatórios e corretos, e isso pode ser comprovado com a Figura 13.3. Figura 13.3 – Comparação entre os valores esperados e obtidos através do osciloscópio e simulação (Símbolo 10). Fonte: Os Autores, 2017. 4. CONCLUSÃO Através da execução do experimento foi possível verificar na prática os conceitos teóricos acerca da modulação QPSK e conseguiu-se observar a variação da fase e quadratura da onda portadora analógica para modulação do sinal de informação de acordo com os conjuntos de bits e símbolos determinados. Cumpriu-se todos os objetivos que tinham sido propostos, uma vez que foram obtidos resultados satisfatórios, condizentes com os conceitos teóricos e simulação computacional. Portanto, este trabalho foi muito importante para a compreensão deste tipo de modulação, pois permitiu o desenvolvimento prático do tema proposto em questão. 24 5. REFERÊNCIAS BIBLIOGRÁFICAS [1] LINEAR. Processos de Modulação. 2017. Disponível em: < http://files.sistele7.webnode.com/200000013-7f745806df/aula_Tecnicas_Multiniveis.pdf > Acesso em: 02 de novembro de 2017. [2] Modulação digital – Noções básicas. Disponível em:< http://coral.ufsm.br/gpscom/professores/Renato%20Machado/ComunicacaoDeDados/ComDa dos10Renato.pdf> Acesso em: 10 de novembro de 2017. [3] Modulação. Disponível em:< https://www.gta.ufrj.br/grad/04_2/Modulacao/> Acesso em: 10 de novembro de 2017. [4] Modulação QPSK. Disponível em:<http://www.eletr.ufpr.br/marlio/te241/aula4.pdf> Acesso em: 12 de novembro de 2017. 25 ANEXO I – CÓDIGO FONTE void setFrequency(char option); //Protótipo da função que seleciona a frequencia do PWM int cont = 2; // Uma variável auxiliar na hora da plotagem no osciloscopio int k1 = 0; // Variável responsável por armazenar o valor binário sorteado aleatoriamente int k2 = 0; // Variável responsável por armazenar o valor binário sorteado aleatoriamente int n1 = 0; // Variável responsável por auxiliar na plotagem da senóide de 45 º int n2 = 0; // Variável responsável por auxiliar na plotagem da senóide de 135 º int n3 = 0;// Variável responsável por auxiliar na plotagem da senóide de 225 º int n4 = 0; // Variável responsável por auxiliar na plotagem da senóide de 315 º void setup() { pinMode( 8, OUTPUT); //saída do valor digital 0 ou 5 V pinMode(11, OUTPUT); //saída PWM pino 11 pinMode(9, OUTPUT); //saída PWM pino 9 TCCR2A = 0xA3; //Configura operação em fast PWM, utilizando registradores OCR2x para comparação //1010 0011 setFrequency(1); //Seleciona opção 1 para frequência PWM (62,5 kHz) } 26 void loop() { //********************** int i=0; // variavel responsavel pelo incremento das posições da senoide dentro do laço for float teta = 0; // responsável por armazenar o anngulo aplicado ao seno float duty1 = 0; // responsável por transformar o valor do seno para seu valor correspondente... // ... ao duty cycle do PWM float duty2 = 0; // responsável por transformar o valor do seno para seu valor correspondente... // ... ao duty cycle do PWM if (cont == 2){ // condição para sortear novamente um valor digital aleatório k1 = random(0,2); // responsável por sortear aleatoriamente o sinal digital em nível 1 ou 0 cont = 0; k2 = random(0,2); // responsável por sortear aleatoriamente o sinal digital em nível 1 ou 0 cont = 0; } if ((k1==0)&&(k2==0)){//Simbolo 00: auxilia no atraso da senoide em 45º n1=1; n2 =0; n3 = 0; 27 n4 = 0; } if ((k1==0)&&(k2==1)){//Simbolo 01: auxilia no atraso da senoide em 135º n1=0; n2 =1; n3 = 0; n4 = 0; } if ((k1==1)&&(k2==1)){//Simbolo 11: auxilia no atraso da senoide em 225º n1=0; n2 =0; n3 = 1; n4 = 0; } if ((k1==1)&&(k2==0)){//Simbolo 10: auxilia no atraso da senoide em 315º n1=0; n2 =0; n3 = 0; n4 = 1; } 28 if (( n1==1) && (cont ==0)){ //Gera o símbolo 00 digitalWrite(8 , LOW); } if (( n1==1) && (cont ==1)){ //Gera o símbolo 00 digitalWrite(8 , LOW); } if (( n2==1) && (cont ==0)){ //Gera o símbolo 01 digitalWrite(8 , HIGH); } if (( n2==1) && (cont ==1)){ //Gera o símbolo 01 digitalWrite(8 , LOW); } if (( n3==1) && (cont ==0)){ //Gera o símbolo 11 digitalWrite(8 , HIGH); } if (( n3==1) && (cont ==1)){ //Gera o símbolo 11 digitalWrite(8 , HIGH); } if (( n4==1) && (cont ==0)){ //Gera o símbolo 10 digitalWrite(8 , LOW); 29 } if (( n4==1) && (cont ==1)){ //Gera o símbolo 10 digitalWrite(8 , HIGH); } //Laço responsável por criar a senoide de 9 Hz for(i=0; i<348; i++){ teta = teta+0.018055;duty1 = 5 + (sin(teta-(n1*0.785398)-(n2*2.35619)-(n3*3.92699)- (n4*5.49779))+1)*(245/2); duty2 = 5 + (sin(teta)+1)*(245/2); analogWrite(9 , duty2); // saída com o duty-cycle correspondente ao valor do seno calculado analogWrite(11 , duty1); // saída com o duty-cycle correspondente ao valor do seno calculado delayMicroseconds(16); } cont = cont + 1; } void setFrequency(char option) // função responsável por mudar a frequência do PWM { TCCR2B = option; 30 }
Compartilhar