Buscar

Modulação QPSK

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 32 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 32 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 32 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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 
 
}

Outros materiais