universidade de sÃo paulo - biblioteca digital de ... · ao medidor pretende-se desenvolver um...
Post on 24-Jan-2019
221 Views
Preview:
TRANSCRIPT
UNIVERSIDADE DE SÃO PAULO
ESCOLA DE ENGENHARIA DE SÃO CARLOS
DEPARTAMENTO DE ENGENHARIA ELÉTRICA
Projeto e construção de um medidor de distorção
harmônica total
Autor: Julio Cesar Cerri
Orientador: Prof. Edson Gesualdo
São Carlos
2016
Julio Cesar Cerri
Projeto e construção de um medidor de
distorção harmônica total
Trabalho de Conclusão de Curso apresentado
à Escola de Engenharia de São Carlos, da
Universidade de São Paulo
Curso de Engenharia Elétrica
ORIENTADOR: Prof. Edson Gesualdo
São Carlos
2016
AUTORIZO A REPRODUÇÃO TOTAL OU PARCIAL DESTE TRABALHO,POR QUALQUER MEIO CONVENCIONAL OU ELETRÔNICO, PARA FINSDE ESTUDO E PESQUISA, DESDE QUE CITADA A FONTE.
Cerri, Julio Cesar C417p Projeto e construção de um medidor de distorção
harmônica toral / Julio Cesar Cerri; orientador Edson Gesualdo. São Carlos, 2016.
Monografia (Graduação em Engenharia Elétrica com ênfase em Eletrônica) -- Escola de Engenharia de SãoCarlos da Universidade de São Paulo, 2016.
1. Distorção harmônica. 2. Caracterização de equipamentos de áudio. 3. Filtro notch. 4. Filtro devariáveis de estado. I. Título.
Agradecimentos
Agradeço a todos que contribuíram, direta ou indiretamente, para a realização deste trabalho.
Ao meu pai Antonio, à minha mãe Rosemeire e meu irmão João Paulo que sempre me
incentivaram e apoiaram em todos os momentos.
Aos amigos Felipe Marques, Fernando Lahoz, Eric Alcalai e Victória Velame pelo compa-
nheirismo, apoio, e presença nos momentos difíceis - sem vocês a graduação seria muito difícil
e bem menos alegre.
Ao amigo Mauricio Degrande, que gentilmente enviou componentes eletrônicos do exterior
para o Brasil.
Aos colegas da USP São Carlos, de todos os cursos, pelas boas risadas e experiências.
Ao professor e orientador Edson Gesualdo por ter me guiado nas dificuldades.
Ao técnico dos laboratórios Rosenberg da Silva, pela paciência e solicitude, me aturando
por dezenas de horas durante os testes.
A secretária de graduação Jussara Zoia pelo incontável número de informações, sendo sem-
pre muito prestativa.
A todos os professores da USP, que participaram da minha formação acadêmica.
Aos membros da banca.
Julio Cesar Cerri.
Resumo
O índice de distorção harmônica total é considerado a principal maneira de qualificar a
degradação que um circuito amplificador ou componente eletrônico impõe a um sinal elétrico.
O equipamento que mede essa grandeza é o analisador de distorção harmônica. Ao contrário
dos analisadores de espectro, os analisadores de distorção harmônica são os equipamentos que
fornecem diretamente o valor de (THD+N). Devido à complexidade e o uso específico esses
equipamentos são altamente dispendiosos. O presente trabalho de conclusão de curso propõe
o desenvolvimento e a construção de um medidor de distorção harmônica com capacidade de
realizar medições de THD+N em qualquer frequência do espectro audível. O equipamento visa
o baixo custo final, fornecendo assim uma alternativa aos equipamentos comerciais. Integrado
ao medidor pretende-se desenvolver um gerador senoidal de baixa distorção que proporcione
varredura em frequência e amplitude, permitindo que o medidor de distorção armazene em um
computador os valores de THD+N para a construção de gráficos de (THD+N) x f e (THD+N)
x Vin. Como principal motivação deste trabalho de conclusão de curso têm-se o estudo e a
construção de um filtro rejeita faixa de sintonia por quadratura, a partir de um filtro de variáveis
de estado.
Palavras-Chave: Distorção harmônica, Filtro notch, Filtro de variáveis de estado, Caracteri-
zação de equipamentos de áudio.
Abstract
The total harmonic distortion is considered the main way to qualify the degradation that
an amplifier or electronic circuit component enforces to an electrical signal. The equipment
that measures this amount of signal degradation is the harmonic distortion analyzer. Unlike
spectrum analyzers, harmonic distortion analyzers are devices that directly provides the reading
of (THD + N). Due to their complexity and specific use those equipments are highly expensive.
This end-of-graduation-course paper proposes the development and construction of a harmonic
distortion meter capable of measuring THD + N at any frequency in the audible spectrum. The
equipment is aimed to have low cost, thus providing an alternative to commercial equipments.
This work intends to build a sinusoidal generator with low distortion that is integrated to the
meter, which will provide sweeping in frequency and amplitude, allowing the distortion meter
store in a computer the THD + N value to plot graphics of (THD+N) x f and (THD+N) x Vin.
The main motivation of this end-of-graduation-course paper is the study and development of a
notch filter based on a state variable filter.
Keywords: Harmonic distortion, Notch filter, State variable filter, Audio equipment charac-
terization.
Lista de Figuras
1.1 Relação entre os dominios do tempo e frequência . . . . . . . . . . . . . . . . 26
1.2 Comparação entre entrada e saída para curvas de transferência real e ideal . . . 27
1.3 Diagrama simplificado de um medidor de distorção harmônica . . . . . . . . . 28
1.4 Diagrama de blocos do filtro de variáveis de estado . . . . . . . . . . . . . . . 29
1.5 Obtenção da resposta notch . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.1 Esquema de um filtro de variáveis de estado e suas saídas . . . . . . . . . . . . 33
2.2 Construção de um filtro notch a partir de um filtro de variáveis de estado . . . . 35
2.3 Magnitude das respostas em função da frequência . . . . . . . . . . . . . . . . 36
2.4 Fase das respostas em função da frequência . . . . . . . . . . . . . . . . . . . 36
2.5 Princípio básico de funcionamento da síntese digital direta . . . . . . . . . . . 38
2.6 Princípio de funcionamento da síntese digital direta . . . . . . . . . . . . . . . 39
2.7 Senoide obtida por síntese digital direta . . . . . . . . . . . . . . . . . . . . . 40
2.8 Espectro na saída do circuito DDS . . . . . . . . . . . . . . . . . . . . . . . . 40
2.9 Filtro de saída do DDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.10 Método térmico de determinação de valor RMS . . . . . . . . . . . . . . . . . 43
2.11 Método direto de determinação de valor RMS . . . . . . . . . . . . . . . . . . 43
2.12 Método indireto de determinação de valor RMS . . . . . . . . . . . . . . . . . 44
2.13 Método Delta Sigma de determinação de valor RMS . . . . . . . . . . . . . . 45
2.14 Filtro passa baixas de terceira ordem . . . . . . . . . . . . . . . . . . . . . . . 46
2.15 Comunicação SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.16 Ilustração de comunicação serial - SPI . . . . . . . . . . . . . . . . . . . . . . 49
2.17 Polaridade e fase da comunicação SPI . . . . . . . . . . . . . . . . . . . . . . 49
2.18 Comunicação I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.19 Transmissão no barramento I2C . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.1 Diagrama de blocos do equipamento a ser construído . . . . . . . . . . . . . . 53
3.2 Simulação de Monte Carlo para resistores com tolerância de 1% - 100 valores . 56
3.3 Resistência controlada por tensão construída usando LED e LDR . . . . . . . . 56
4.1 Bloco funcional do DDS AD9850 - Imagem retirada do datasheet . . . . . . . 62
4.2 Diagram básico interno do DDS AD9850 - Imagem retirada do datasheet . . . 62
4.3 Gráfico de THD x P, do LME49600 com VCC = 15V , RL = 32Ω, f = 1kHz -
Imagem retirada do datasheet . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.4 Reed Relay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
4.5 Resposta espectral do GL5516 - Imagem retirada do datasheet . . . . . . . . . 66
4.6 Erro de linearidade - Imagem retirada do datasheet . . . . . . . . . . . . . . . 67
4.7 Erro de ganho - Imagem retirada do datasheet . . . . . . . . . . . . . . . . . . 67
4.8 Diagram básico interno do LTC1968 - Imagem retirada do datasheet . . . . . . 67
4.9 Plataforma Arduino Nano que emprega o microcontrolador ATmega328 . . . . 68
4.10 Diagrama de blocos do PCF8574 - Imagem retirada do datasheet . . . . . . . . 69
4.11 Diagrama de blocos do ADS1115 - Imagem retirada do datasheet . . . . . . . 70
4.12 Encoder rotativo para ajuste de frequência e amplitude do gerador senoidal . . . 70
4.13 Tela de LCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.1 Diagrama de blocos e divisão dos circuitos . . . . . . . . . . . . . . . . . . . . 73
5.2 Esquema do circuito gerador e amplificador de saída . . . . . . . . . . . . . . 74
5.3 Fluxograma de configuração do DDS . . . . . . . . . . . . . . . . . . . . . . . 75
5.4 Esquema parcial do circuito de entrada . . . . . . . . . . . . . . . . . . . . . . 76
5.5 Esquema do circuito de entrada - Detalhe do autorange . . . . . . . . . . . . . 77
5.6 Simulação para VB3 = 60mV . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
5.7 Simulação para VB3 = 0,7V . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
5.8 Simulação para VB3 = 1,2V . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.9 Fluxograma para a seleção de escala. . . . . . . . . . . . . . . . . . . . . . . . 80
5.10 Esquema do filtro de variáveis de estado . . . . . . . . . . . . . . . . . . . . . 81
5.11 Disposição das frequências de pré ajuste na escala 1 (20Hz - 200Hz) . . . . . . 82
5.12 Esquema do circuito de sintonia automática por quadratura . . . . . . . . . . . 83
5.13 Esquema do circuito de entrada - Detalhe conversor RMS-DC e filtro passa baixa 84
5.14 Resposta em frequência do filtro passa baixa de terceira ordem da Figura 5.13 . 84
5.15 Esquema do circuito amplificador de distorção . . . . . . . . . . . . . . . . . . 85
5.16 Fluxograma de ajuste do circuito de distorção . . . . . . . . . . . . . . . . . . 86
5.17 Esquema do circuito de controle . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.1 Placas de circuito impresso do analisador de distorção . . . . . . . . . . . . . . 89
6.2 Saída do gerador senoidal, 1kHz, 1Vp . . . . . . . . . . . . . . . . . . . . . . 90
6.3 Correlação entre frequência medida e programada . . . . . . . . . . . . . . . . 90
6.4 Correlação entre amplitude medida e programada . . . . . . . . . . . . . . . . 91
6.5 Distorção Harmônica do gerador senoidal em 100Hz e 1kHz, em função da
amplitude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
6.6 Varredura em frequência de 1kHz a 10kHz . . . . . . . . . . . . . . . . . . . 93
6.7 Varredura em amplitude de 10mVp a 1Vp . . . . . . . . . . . . . . . . . . . . 93
6.8 Teste do medidor de distorção - Sinal de entrada e harmônicos pós filtro notch . 94
6.9 THD do gerador senoidal em 100Hz - Medições com analisador de espectro e
com o medidor construído . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.10 THD do gerador senoidal em 1kHz - Medições com analisador de espectro e
com o medidor construído . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
6.11 Display do analisador de distorção . . . . . . . . . . . . . . . . . . . . . . . . 97
6.12 Interface graficadora para o modo de varredura . . . . . . . . . . . . . . . . . 98
A.1 Placa de circuito impresso - Circuito gerador - Placa A . . . . . . . . . . . . . 105
A.2 Esquema - Circuito gerador - Placa A . . . . . . . . . . . . . . . . . . . . . . 106
B.1 Placa de circuito impresso - Circuito de entrada - Placa B . . . . . . . . . . . . 107
B.2 Esquema - Circuito de entrada - Placa B . . . . . . . . . . . . . . . . . . . . . 108
C.1 Placa de circuito impresso - Circuito de distorção - Placa C . . . . . . . . . . . 110
C.2 Esquema do circuito de distorção. . . . . . . . . . . . . . . . . . . . . . . . . 111
D.1 Placa de circuito impresso - Circuito do microcontrolador - Placa D . . . . . . 114
D.2 Esquema - Circuito do microcontrolador - Placa D . . . . . . . . . . . . . . . 115
E.1 Placa de circuito impresso - Circuito da fonte - Placa E . . . . . . . . . . . . . 117
E.2 Esquema - Circuito da fonte - Placa E . . . . . . . . . . . . . . . . . . . . . . 118
Lista de Tabelas
2.1 Fator de crista de alguns sinais . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.2 Modos de operação da comunicação SPI . . . . . . . . . . . . . . . . . . . . . 50
3.1 Escalas ideais do circuito de entrada . . . . . . . . . . . . . . . . . . . . . . . 55
3.2 Escalas do amplificador de distorção . . . . . . . . . . . . . . . . . . . . . . . 57
4.1 Características do amplificador operacional LME49710 . . . . . . . . . . . . . 63
4.2 Características do buffer LME49600 . . . . . . . . . . . . . . . . . . . . . . . 64
4.3 Características do conversor RMS-DC LTC1968 . . . . . . . . . . . . . . . . . 67
5.1 Escalas reais do atenuador de entrada . . . . . . . . . . . . . . . . . . . . . . 79
5.2 Escalas de frequência do filtro de variáveis de estado . . . . . . . . . . . . . . 81
5.3 Pré ajuste de frequência do filtro de variáveis de estado . . . . . . . . . . . . . 82
5.4 Escalas reais do amplificador de distorção . . . . . . . . . . . . . . . . . . . . 86
6.1 Componentes harmônicos de 100Hz em diferentes amplitudes . . . . . . . . . 91
6.2 Componentes harmônicos de 1kHz em diferentes amplitudes . . . . . . . . . . 92
6.3 Componentes harmônicos de 1kHz em diferentes amplitudes . . . . . . . . . . 95
Siglas
ADC Analog-to-digital converter - Conversor analógico-digital
DDS Direct digital synthesis - Síntese digital direta
DAC Digital-to-analog converter - Conversor digital-analógico
I2C Inter-Integrated circuit - Circuitos inter integrados
LCD Liquid crystal display - Display de cristal líquido
LDR Light dependent resistor - Resistor dependente de luz
LED Light emitting diode - Diodo emissor de luz
MSOP Micro small outline package - Micro encapsulamento
PCB Printed circuit board - Placa de circuito impresso
RMS Root mean square - Raiz do valor quadrático médio
ROM Read Only Memory - Memória somente de leitura
SFV State variable filter - Filtro de variáveis de estado
SPI Serial peripheral interface - Interface periférica serial
THD Total harmonic distortion - Distorção harmônica total
THD+N Total harmonic distortion + noise - Distorção harmônica total + ruído
USB Universal serial bus - Barramento serial universal
VCO Voltage controlled oscillator - Oscilador controlado por tensão
21
Sumário
1 Introdução 25
1.1 Revisão Bibliográfica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.2 Hipóteses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.3 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.3.1 Objetivo Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.3.2 Objetivo Específico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.3.3 Metas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.4 Justificativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.5 Organização do trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2 Embasamento Teórico 33
2.1 Filtro de variáveis de estado . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.1.1 Resposta passa-baixa . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.1.2 Resposta passa-alta . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.1.3 Resposta passa-banda . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.1.4 Resposta notch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.1.5 Diagrama de Bode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.1.6 Características do filtro de variáveis de estado . . . . . . . . . . . . . . 37
2.1.7 Condição de Quadratura e Sintonia Automática . . . . . . . . . . . . . 37
2.2 Síntese Digital Direta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.3 Conversão RMS-DC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.3.1 Definição de valor eficaz . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.3.2 Fator de crista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.3.3 Conversores RMS-DC . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.3.4 Características e especificações de conversores RMS-DC . . . . . . . . 45
2.3.5 Filtro passa baixas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
22
2.4 Comunicação Serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.4.1 Comunicação SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.4.2 Comunicação I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3 Especificações do Projeto 53
3.1 Circuito gerador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.2 Circuito de entrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.3 Circuito de distorção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.4 Microcontrolador e controle . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.4.1 Aquisição de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.4.2 Dispositivos de entrada e saída . . . . . . . . . . . . . . . . . . . . . . 58
3.5 Fonte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4 Materiais e Métodos 61
4.1 Circuito gerador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.1.1 Gerador senoidal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.1.2 Amplificador de saída . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.2 Circuito de entrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.3 Circuito de distorção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
4.3.1 Filtro Notch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
4.3.2 Controle automático de sintonia . . . . . . . . . . . . . . . . . . . . . 65
4.3.3 Conversor RMS-DC I e II . . . . . . . . . . . . . . . . . . . . . . . . 66
4.3.4 Amplificador de distorção . . . . . . . . . . . . . . . . . . . . . . . . 68
4.4 Microcontrolador e controle . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.4.1 Microcontrolador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.4.2 Expansor de portas I/O . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.4.3 Aquisição de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.4.4 Dispositivos de entrada . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.4.5 Dispositivo de saída . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.5 Fonte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5 Projeto do medidor de THD 73
5.1 Circuito gerador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.2 Circuito de entrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.3 Circuito de distorção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
23
5.4 Microcontrolador, controle, aquisição de dados, dispositivos de entrada e saída 87
5.5 Fonte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6 Resultados 89
6.1 Gerador Senoidal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
6.1.1 Precisão do Gerador . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
6.1.2 Distorção produzida pelo gerador senoidal . . . . . . . . . . . . . . . . 91
6.1.3 Testes de varredura . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
6.2 Atenuador de Entrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.3 Medidor de Distorção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.4 Display e modo manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
6.5 Gráficos e modo de varredura . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
7 Conclusão 99
Apêndice A Circuito gerador 105
Apêndice B Circuito de entrada 107
Apêndice C Circuito de distorção 109
Apêndice D Microcontrolador 113
Apêndice E Fonte 117
Apêndice F Codificação - Arduino 119
Apêndice G Codificação - Python 125
24
25
Capítulo 1
Introdução
Desde o início da eletrônica no século passado, impulsionada pela invenção do rádio, medidas
são realizadas em circuitos de áudio a fim de verificar o desempenho, determinar características
ou ainda identificar a necessidade de ajustes ou reparos [1]. Portanto, realizar medições em
áudio é uma parte fundamental dentro da engenharia de áudio. Muitos parâmetros são impor-
tantes em dispositivos de áudio e merecem atenção no processo de medição. As medidas mais
comum são a resposta em frequência, ganho, nível de ruído, resposta a transientes e distorção
harmônica. A medição precisa de distorção harmônica, tema de interesse neste trabalho, exige o
uso de equipamento específicos, os quais são extremamente caros. Por exemplo, o equipamento
Keysight U8903B Audio Analyzer, atualmente o mais usado em medições de distorção harmô-
nica, foi cotado em mais de 13 mil dólares durante a redação do presente projeto. O objetivo
deste trabalho de conclusão de curso é projetar e construir um medidor de distorção harmônica
de baixo custo.
1.1 Revisão Bibliográfica
A maioria dos testes realizados em equipamentos de áudio é feita a partir da análise da
resposta de estímulos na entrada do sistema. Um sinal de características bem conhecidas é
aplicado na entrada do dispositivo sob teste enquanto a saída é observada. O desempenho do
dispositivo é então determinado [2].
Se o equipamento sob teste é composto por circuito cuja função de transferência é linear,
a saída produzida por este dispositivo é um sinal de mesma forma de onda que a entrada, mas
com amplitude ampliada ou reduzida, dependendo do ganho do dispositivo. No entanto, se a
função de transferência é não linear, a forma de onda de saída será diferente da de entrada [3].
Através da análise espectral da saída de um dispositivo com função de transferência não
26
linear é possível observar a existência de outros sinais além do sinal referente a entrada senoi-
dal. Tais sinais são indesejáveis e produzidos pelo dispositivo sob teste [4]. Quantificando a
intensidade desses sinais é possível estabelecer um método de qualificação e comparação da
qualidade de equipamentos eletrônicos, principalmente daqueles voltados para aplicações em
áudio. A Figura 1.1 ilustra a combinação, no domínio do tempo e da frequência, de uma onda
senoidal (fundamental) e um harmônico produzido por um dispositivo não linear.
Figura 1.1: Relação entre os dominios do tempo e frequência
Distorção harmônica é o mais antigo e mais aceito método de medição de não linearida-
des em circuitos eletrônicos, e pode ser definido como qualquer degradação da forma de onda
devido a geração de harmônicos. Distorção harmônica em amplificadores é principalmente cau-
sada por não linearidades dos elementos ativos, que não amplificam igualmente cada um dos
pontos da forma de onda de entrada, fazendo com que a saída seja distorcida [5].
O mecanismo de distorção harmônica em um componente eletrônico pode ser ilustrado atra-
vés das características de transferência de um circuito ou componente eletrônico. A Figura 1.2
mostra a relação de transferência entre o sinal de entrada e saída para um amplificador hipoté-
tico. A forma de onda de saída é uma projeção do sinal de entrada sobre a curva de transferência
característica. Idealmente a curva de transferência é linear, de modo que o sinal de saída tem
a mesma forma do sinal de entrada, independente da excursão. No entanto, como a curva de
transferência é não linear, uma versão distorcida do sinal de entrada aparece na saída [6].
27
Figura 1.2: Comparação entre entrada e saída para curvas de transferência real e ideal
A medição de distorção harmônica consiste em excitar o dispositivo sob teste com um sinal
senoidal e observar o espectro de saída. O sinal de saída do dispositivo terá então sua forma de
onda alterada pelas não linearidades do circuito, e a análise espectral do sinal de saída mostrará
que além do sinal correspondente a entrada senoidal, haverá componentes harmônicos múlti-
plos da frequência fundamental de entrada. A amplitude de cada harmônico é proporcional a
quantidade de distorção produzida pelo equipamento sob teste [7].
A grandeza Distorção Harmônica Total, ou THD, do inglês Total Harmonic Distortion, é
formalmente definida como a razão entre o valor eficaz dos harmônicos pelo valor eficaz da
onda fundamental [8]. Matematicamente:
T HD =
√V 2
2 f +V 23 f +V 2
4 f + ...+V 2n f
Vf(1.1)
O valor obtido a partir da expressão acima é comumente apresentando em porcentagem ou
em escala logarítmica, onde
T HD% = 100×T HD T HDdB = 20logT HD
A determinação dos valores eficazes dos componentes e da onda fundamental pode ser rea-
lizada com o auxílio de um analisador de espectro, ou de um osciloscópio digital com a função
FFT integrada. A amplitude do componente fundamental é ajustada para 0dB, e a amplitude
dos harmônicos são medidos e convertidos para a escala linear. A soma eficaz desses valores
corresponde ao numerador da equação (1.1).
No entanto, os analisadores de espectro são equipamentos extremamente caros e em geral
possuem frequência mínima de operação superior ao espectro de áudio (20Hz a 20kHz), que é
justamente a faixa de frequência onde se deseja determinar o comportamento do dispositivo sob
28
teste. Já os osciloscópios digitais mais modestos que realizam FFT possuem desempenho limi-
tado em baixa frequência [9], devido a resolução insuficiente. Por outro lado, a determinação da
quantidade de distorção harmônica produzida por um dado equipamento pode ser determinada
usando um analisador de distorção [10], instrumento esse que é a motivação deste projeto.
Um analisador de distorção é um equipamento capaz de remover o componente fundamental
de um sinal e determinar o valor eficaz do sinal restante. A remoção do sinal fundamental é
realizado por um filtro notch, e o valor eficaz dos componentes harmônicas é determinado por
um conversor RMS-DC. A Figura 1.3 ilustra o princípio de funcionamento de um analisador
de distorção. Circuitos auxiliares necessários para o adequado controle e condicionamento de
sinais foram omitidos por simplicidade.
Figura 1.3: Diagrama simplificado de um medidor de distorção harmônica
O sinal restante após a filtragem é composto pelos componentes harmônicos produzidos pela
não linearidade do circuito sob teste e pelo ruído agregado no processo. Portanto, essa medida
de distorção é comumente chamada de THD+N para enfatizar a contribuição do ruído. Filtros
adicionais podem ser incluídos para reduzir ruídos indesejáveis.
O filtro notch para rejeição do sinal fundamental em um analisador de distorção pode ser
implementado, dentre outras possibilidades, a partir de um filtro de variáveis de estado. Um
filtro de variáveis de estado é composto de uma combinação de blocos que executam operações
matemáticas (amplificação, inversão, soma, e integração). Esta combinação oferece simultane-
amente saídas com filtragem do tipo passa-baixa, passa-alta e passa banda. A Figura 1.4 mostra
o diagrama de blocos do filtro de variáveis de estado [11].
29
Figura 1.4: Diagrama de blocos do filtro de variáveis de estado
Através da combinação dessas saídas é possível obter um filtro notch, como mostrado na
Figura 1.5, para ser usado na construção de um medidor de distorção harmônica.
Figura 1.5: Obtenção da resposta notch
A saída passa banda do filtro de variáveis de estado apresenta o sinal correspondente ao
denominador da Equação (1.1), e a saída notch apresenta o sinal correspondente ao numerador
da Equação (1.1).
1.2 Hipóteses
Em virtude das saídas (respostas em frequência) oferecidas pelo filtro de variáveis de estado
o presente projeto propõe o estudo e a construção de um filtro notch, baseado em um filtro de
variáveis de estado como o da Figura 2.1, mas com sintonia variável para ser empregado em
medições de distorção harmônica.
Propõe-se então a construção de um equipamento composto de um gerador e um medidor
de distorção harmônica, capazes de realizar medições de THD+N em função da frequência e/ou
amplitude, com a capacidade de armazenamento de dados para a construção de gráficos úteis
na caracterização da distorção produzida por circuitos eletrônicos.
30
1.3 Objetivos
1.3.1 Objetivo Geral
O objetivo geral deste trabalho de conclusão de curso é a construção de um equipamento
capaz de realizar medições de THD+N em função da frequência e/ou amplitude do sinal de
teste, com baixo custo final. Este equipamento deve possuir a capacidade de gerar um sinal
senoidal, enviá-lo ao dispositivo sob testes, receber o sinal distorcido e avaliar o índice THD+N
e posterior transferir esses dados a um computador, de modo que possibilite, com o auxílio de
um software graficador, a construção de gráficos de distorção harmônica, úteis na caracterização
da distorção produzida por circuitos eletrônicos.
1.3.2 Objetivo Específico
Para que o objetivo geral seja alcançado é essencial a construção de um filtro notch, que é
parte integrante do medidor de THD+N. Portanto, têm-se como objetivo específico a utilização
da técnica de sintonia por quadratura na construção de um filtro de variáveis de estado.
1.3.3 Metas
As metas que devem ser cumpridas para que os objetivos sejam alcançados podem ser re-
sumidas como o estudo teórico de filtros de variáveis de estado de sintonia por quadratura; a
realização prática desses filtros, a fim de se observar experimentalmente seu comportamento e
suas características; e por fim, a comparação entre estudos teóricos e resultados experimentais
e avaliação de suas aplicações.
1.4 Justificativa
Paralelamente ao estudo e a construção do filtro notch, será necessário o desenvolvimento
dos demais circuitos que compõem o medidor de THD+N, como atenuadores com autorange,
circuitos de controle, amplificadores de baixo ruído, conversores RMS-DC, conversores AD,
microcontroladores, e comunicação com computador.
Desta forma, o projeto se justifica através da oportunidade de estudo e síntese filtros de
variáveis de estado, tema que não é profundamente abordado nas ementas da maioria dos cursos
de graduação em engenharia elétrica, e do forte aspecto prático relacionado a instrumentação
eletrônica e condicionamento de sinais, necessários para a construção do medidor proposto.
31
1.5 Organização do trabalho
O capítulo 2 apresenta a teoria de filtro de variáveis de estado, e demais conceitos necessá-
rios para a construção do equipamento de medição de distorção harmônica. O capítulo 3 traz as
especificações detalhadas de todas as funcionalidades e características que o equipamento deve
ter. O capítulo 4 apresenta uma descrição dos componentes eletrônicos empregados na constru-
ção do equipamento, bem como a justificativa para a escolha desses componentes. O capítulo
5 apresenta o projeto dos circuitos, e suas considerações. O capítulo 6 traz a caracterização do
equipamento construído, bem como testes e comparações. Por fim, o capítulo 7 apresenta as
conclusões do trabalho e perspectivas futuras.
32
33
Capítulo 2
Embasamento Teórico
2.1 Filtro de variáveis de estado
O filtro de variáveis de estado é um tipo de filtro que usa três amplificadores operacionais e
possui a capacidade de produzir simultaneamente respostas passa-baixa, passa-banda e passa-
alta. A Figura 2.1 mostra o esquema do filtro de variáveis de estado [12] .
Figura 2.1: Esquema de um filtro de variáveis de estado e suas saídas
A partir da figura acima é possível obter
VHP =−R2
R3VLP−
R2
R1Vin +
R7
R7 +R6
(1+
R2
R3+
R2
R1
)VBP (2.1)
VBP =− 1sRC
VHP (2.2)
VLP =− 1sRC
VBP (2.3)
34
2.1.1 Resposta passa-baixa
Subistituindo as equações (2.2) e (2.3) em (2.1), tem-se que:
s2R2C2VLP =−R2
R3VLP−
R2
R1Vin +
R7
R7 +R6
(1+
R2
R3+
R2
R1
)sRCVLP
ou ainda [s2R2C2 +
R2
R3+
R7
R7 +R6
(1+
R2
R3+
R2
R1
)sRC
]VLP =−R2
R1Vin
e portanto,
HLP(s) =VLP
Vin=−
R2
R1
s2R2C2 +R7
R7 +R6
(1+
R2
R3+
R2
R1
)sRC+
R2
R3
(2.4)
E de maneira resumida
HLP(s) =−K1
s2 +as+b(2.5)
onde
K1 =1
R2C2R2
R1a =
R7
R7 +R6
(1+
R2
R3+
R2
R1
)1
RCb =
1R2C2
R2
R3
2.1.2 Resposta passa-alta
Subistituindo a equação (2.2) em (2.3), tem-se que:
VLP =− 1sRC
(− 1
sRCVHP
)=
1s2R2C2VHP
que substituido na equação (2.1) resulta
VHP =−R2
R3
1s2R2C2VHP−
R2
R1Vin−
R7
R7 +R6
(1+
R2
R3+
R2
R1
)1
sRCVHP
ou ainda, [1+
R2
R3
1s2R2C2 +
R7
R7 +R6
(1+
R2
R3+
R2
R1
)1
sRC
]VHP =−R2
R1Vin
e portanto,
HHP(s) =VHP
Vin=−
R2
R1s2R2C2
s2R2C2 +R7
R7 +R6
(1+
R2
R3+
R2
R1
)sRC+
R2
R3
(2.6)
E de maneira resumida
HLP(s) =−K2s2
s2 +as+b(2.7)
onde
K2 =R2
R1a =
R7
R7 +R6
(1+
R2
R3+
R2
R1
)1
RCb =
1R2C2
R2
R3
35
2.1.3 Resposta passa-banda
Subistituindo as equações (2.2) e (2.3) em (2.1), tem-se que:
−sRCVBP =−R2
R3
(− 1
sRC
)VBP−
R2
R1Vin−
R7
R7 +R6
(1+
R2
R3+
R2
R1
)VBP
ou ainda, [sRC+
R2
R3
1sRC
+R7
R7 +R6
(1+
R2
R3+
R2
R1
)]VBP =
R2
R1Vin
e portanto,
HBP(s) =VBP
Vin=−
R2
R1sRC
s2R2C2 +R7
R7 +R6
(1+
R2
R3+
R2
R1
)sRC+
R2
R3
(2.8)
E de maneira resumida
HBP(s) =K3s
s2 +as+b(2.9)
onde
K3 =1
RCR2
R1a =
R7
R7 +R6
(1+
R2
R3+
R2
R1
)1
RCb =
1R2C2
R2
R3
2.1.4 Resposta notch
A resposta notch é obtida através da soma das respostas das saídas passa-baixa e passa-alta,
como mostrado na Figura 2.2
Figura 2.2: Construção de um filtro notch a partir de um filtro de variáveis de estado
Matemamaticamente
HN(s) = HLP +HHP (2.10)
logo:
HN(s) =−K1
s2 +as+b− K2s2
s2 +as+b=− K2s2 +K1
s2 +as+b(2.11)
36
2.1.5 Diagrama de Bode
As Figuras 2.3 e 2.4 mostram a resposta em frequência das equações (2.5), (2.7), (2.9) e
(2.11), considerando K1 = K2 = K3 = 1, a =√
2 e b = 1.
Figura 2.3: Magnitude das respostas em função da frequência
Figura 2.4: Fase das respostas em função da frequência
37
2.1.6 Características do filtro de variáveis de estado
A equação (2.12) mostra a dependência do fator de qualidade da saída passa banda em
função dos componentes do filtro de variável de estado. É possível observar que o fator de
qualidade independe da frequência de ressonância, o que é imprescindível na determinação do
valor eficaz da onda fundamental.
Q =ω0
∆ω=
R6
R7√
R2R3
(1
R1+
1R2
+1
R3
)(2.12)
Os ganhos das saídas passa baixa, passa banda e passa alta são dados pelas equações (2.13),
(2.14) e (2.15).
ALP = HLP(ω→ 0) =−R2
R1(2.13)
AHP = HHP(ω→ ∞) =−R3
R1(2.14)
ABP = HBP(ω0) =
R6 +R7
R7
R1
(1
R1+
1R2
+1
R3
) (2.15)
A partir das equações (2.5), (2.7), (2.9), (2.11), 2.12, (2.13), (2.14) e (2.15) é possível
concluir que o ganho de cada uma das saídas, o fator de qualidade e a frequência de ressonância
do filtro de variáveis de estado podem ser ajustados de maneira independente. Como esses
parâmetros são independentes é possível implementar um controle eletrônico de sintonia ou
ganho.
2.1.7 Condição de Quadratura e Sintonia Automática
A Figura 2.4 mostra que a defasagem entre as saídas HLP, HBP e HHP é constante em função
da frequência do sinal de entrada do filtro de variáveis de estado. No entanto, uma transição
de fase abrupta pode ser observada na saída notch quando a frequência do sinal de entrada é
exatamente igual a frequência de ressonância do filtro.
Se a frequência do sinal de entrada for menor que a frequência de ressonância do filtro de
variáveis de estado, a defasagem entre as saídas HLP e HN é nula. Nessa situação um medidor
de fase do tipo conversor fase-tensão conectado entre as saídas HLP e HN produzirá uma tensão
+A. No entanto, se a frequência do sinal de entrada for maior que a frequência de ressonância,
os sinais se encontram em contra fase e a tensão produzida pelo medidor será −A.
38
No caso particular onde a frequência do sinal de entrada é exatamente igual a frequência de
ressonância do filtro de variáveis de estado (desejado para a medição de THD), a tensão de saída
do medidor de fase oscilará entre −A e +A, ou seja, resultará em uma onda quadrada de valor
médio nulo. Com o auxílio de um filtro passa baixa essa onda quadrada pode ser convertida em
uma tensão contínua de valor médio nulo. Essa tensão contínua nada mais é do que uma tensão
de erro de um circuito realimentado, e pode, através de um compensador/planta atuar sobre um
dos componentes do filtro de variáveis de estado a fim de tornar a tensão de erro nula, ou seja,
sintonizar automaticamente o medidor de THD.
2.2 Síntese Digital Direta
A síntese digital direta (DDS) é uma técnica de processamento digital capaz gerar sinais
periódicos a partir de um clock de referência. Atualmente, devido a evolução dos processos de
fabricação de circuitos integrados é possível desenvolver sintetizadores digitais diretos de alto
desempenho, de tamanho reduzido e baixo custo, e por isso esses circuitos vem se tornando
uma alternativa muito mais atrativa que os osciladores analógicos convencionais [13].
As principais vantagens da tecnologia DDS são: solução integrada que exige um pequeno
número de componentes externos, resolução de frações de hertz, alta estabilidade, controle
totalmente digital, possibilidade de ajuste de fase que proporciona fácil sincronia entre vários
DDS, rápida resposta de sintetização que permite a criação de formas de ondas arbitrárias.
Como desvantagem têm-se a necessidade de um filtro de reconstrução na saída do sintetizador
[14].
Em [15] é possível encontrar o principio de funcionamento dessa tecnologia. Um gerador
senoidal de síntese direta é composto de um clock de referência, um contador de pulsos, uma
memória ROM e um conversor D/A. O princípio básico de de funcionamento desses sintetiza-
dores é ilustrado na Figura 2.5.
Figura 2.5: Princípio básico de funcionamento da síntese digital direta
O contador de pulsos incrementa suas saídas a cada subida do sinal de clock, e com isso fun-
ciona como um gerador de endereços de N bits. A memória ROM armazena sequencialmente
39
as amostras de um período discretizado da função seno. A cada pulso de clock um endereço é
gerado pelo contador de pulsos, que seleciona um endereço da memória. O conteúdo desse en-
dereço é enviado ao conversor D/A que produz a tensão correspondente a amostra selecionada.
Esse processo se repete a cada subida de clock, e com isso obtêm-se na saída do conversor D/A
uma senoide discretizada com frequência fc
O diagrama de blocos idealizado da figura 2.5 apresenta uma limitação devido a sua simpli-
cidade, nele só é possível sintetizar a onda senoidal armazenada na memória ROM na mesma
frequência do clock de referência. Para que essa técnica tenha aplicações práticas é desejável
que o circuito seja capaz de sintetizar qualquer frequência dentro de um certo intervalo. Isso
pode ser obtido acrescentando um acumulador de fase ao circuito, como mostra a figura 2.6.
Figura 2.6: Princípio de funcionamento da síntese digital direta
No diagrama da figura 2.6 a frequência desejada é ajustada de acordo com a palavra de sinto-
nia Wsint , tipicamente de 32 bits, armazenada pelo usuário no registrador do circuito. O somador
é responsável por somar a palavra de sintonia com a saída do acumulador, também de 32 bits.
O acumulador armazena em sua saída, a cada pulso do clock de referência, o resultado obtido
pelo somador. Com isso, obtêm-se na saída do acumulador uma escada que é incrementada, a
cada pulso de clock, da mesma quantidade Wsint armazenada no registrador.
O clock de referência fclk é fornecido por um circuito de grande estabilidade, como um
oscilador a cristal de quartzo. A precisão e a estabilidade do sintetizador dependem diretamente
do clock de referência.
Os bits mais significativos do acumulador de fase são usados para acessar os endereços da
memória ROM, que armazena a forma de onda discretizada. Em seguida as amostras discretiza-
das são convertidos para valores analógicos através do conversor D/A. Quanto maior Wsint mais
rápido o acumulador transborda, e mais rápido a tabela na memória ROM é percorrida. Para
uma palavra de sintonia de 32 bits, com valor Wsint = 0000....0001 o acumulador transborda
40
após 232 pulsos de clock. Se a palavra de sintonia for 0111...1111 o acumulador transborda de-
pois de 2 pulsos de clock. Assim, a relação entre a frequência sintetizada, a palavra de sintonia
Wsint e a frequência do clock de referência é dada por
fsint =Wsint fres fres =fclk
2N (2.16)
onde fsint é a frequência sintetizada, fres é a resolução do sintetizador, fclk é a frequência do
clock de referência, e N o tamanho do acumulador, em bits.
A Figura 2.7 ilustra a forma de onda obtida na saída do circuito da Figura 2.6.
Figura 2.7: Senoide obtida por síntese digital direta
Na Figura 2.9 é possível observar um filtro de reconstrução após o conversor D/A. O objetivo
desse filtro é construir uma senoide eliminando componentes imagens produzidas no processo
de síntese digital direta. A Figura 2.8 mostra o espectro de saída de um DDS com clock de
referência de 300MHz, ajustado para sintetizar um frequência fsint=80MHz.
Figura 2.8: Espectro na saída do circuito DDS
41
As frequências imagens são geradas em n fclk± fsint , onde n é um número inteiro, e a mag-
nitude desses componentes de frequência obedecem uma lei do tipo sinπ fπ f . Para aplicações onde
fsint fclk um simples filtro passa baixa de primeira ordem é capaz de atenuar satisfatoria-
mente as frequências imagens [15]. Em geral, os DDS apresentam saída de corrente no modo
complementar, como mostra a figura 2.9. Um amplificador de diferenças é empregado para
combinar as saídas complementares dobrando a tensão de saída do DDS.
Figura 2.9: Filtro de saída do DDS
De acordo com [16], o capacitor C f e os resistores Rsa e Rsb formam um filtro passa baixa
de frequência de corte
f−3dB =1
2π(Rsa +Rsb)C f
Portanto, a grande vantagem da tecnologia DDS é que todos os blocos da Figura 2.6 podem
ser integrados em único chip, sendo necessário apenas fornecer alimentação, o clock de refe-
rência e a palavra de sintonia. Como o controle é totalmente digital e a estabilidade depende do
clock de referência, essa tecnologia vem se tornando cada vez mais comum. A empresa Analog
Devices produz circuitos integrados de DDS capazes de sintetizar diversas formas de onda, com
frequência de até 500MHz.
2.3 Conversão RMS-DC
2.3.1 Definição de valor eficaz
O valor eficaz, ou RMS, do inglês Root Mean Square, é uma importante grandeza rela-
cionada a sinais alternados. O valor eficaz de um sinal elétrico pode ser definido como uma
42
quantidade de sinal que é capaz de produzir a mesma quantidade de calor que um sinal de 1V
de corrente contínua, considerando uma mesma carga [17]. Ou seja, um sinal CA de 1 VRMS
produz a mesma quantidade de calor sobre um resistor de 1Ω que um tensão de 1V de CC.
Matematicamente o valor eficaz de um sinal elétrico x(t) é definido em termos da raiz qua-
drada do valor médio quadrático do sinal
VRMS =
√1
T2−T1
∫ T2
T1
[x(t)]2dt (2.17)
2.3.2 Fator de crista
O fator de crista de um sinal elétrico é definido como a razão entre o seu valor de pico e o
seu valor eficaz [18]. A tabela 2.1 mostra os fatores de crista de alguns sinais comuns.
Tabela 2.1: Fator de crista de alguns sinais
Onda (1 Vp) Valor Eficaz Fator de Crista
Senoidal Vp/√
2√
2
Quadrada Vp 1
Triangular Vp/√
3√
3
2.3.3 Conversores RMS-DC
A seguir serão apresentados os principais métodos de determinação de valores eficazes de sinais
alternados.
Detector de valor médio
A maneira mais simples para estimar o valor eficaz de um sinal alternado é através de um
retificador de precisão acoplado a filtro passa baixa. Esse sistema produz uma tensão contínua
proporcional ao valor médio da onda. Conhecendo a forma de onda do sinal é possível calibrar
a escala de leitura para valores eficazes ao invés do valor médio [19].
No entanto, apesar de simples esse tipo de medidor apresenta um grave problema. A de-
terminação do valor eficaz por meio de um medidor de valor eficaz funciona adequadamente
desde que a forma de onda do sinal medido seja conhecida e não distorcida, caso contrário erros
de medição são inevitáveis. Por isso, circuitos para medição precisa de valores eficazes foram
desenvolvidos ao longo dos anos, e alguns deles são mostrados nas seções a seguir.
43
Método térmico
De acordo com [19], o método térmico é teoricamente o método mais simples de determi-
nação do valor eficaz de um sinal, pois aplica a definição de valor eficaz. O método térmico,
ilustrado na Figura 2.10, consiste em comparar a quantidade de calor gerada pelo sinal de en-
trada com uma quantidade de referência. Quando a tensão produzida pelo sensor do aquecedor
de referência anula a tensão produzida pelo sensor do aquecedor do sinal de entrada, a mesma
potência é dissipada nos dois aquecedores, e a tensão contínua Vout corresponde ao valor eficaz
do sinal de entrada.
Figura 2.10: Método térmico de determinação de valor RMS
No entanto, o método ilustrado na Figura 2.10 proporciona ótimos resultados, porém apre-
senta grandes dificuldades práticas e um alto preço de implementação, e por conta disso é usado
apenas em aplicações específicas.
Método direto
As operações matemáticas da equação (2.17) podem ser implementadas através de circui-
tos eletrônicos compostos de amplificadores operacionais e multiplicadores analógicos, como
mostra a figura 2.11.
Figura 2.11: Método direto de determinação de valor RMS
44
O método ilustrado acima apresenta bons resultados em largura de banda e velocidade de
conversão, mas possui limitações com relação a faixa dinâmica. Dependendo da intensidade
do sinal a ser convertido, o sinal representado por V 2in pode alcançar valores que facilmente sa-
turaram o estágio seguinte, por causa do resultado da operação de elevar ao quadrado. Essa
limitação restringe as aplicações desse método à medidores de sinais com baixa variação dinâ-
mica [19].
Método indireto
Outro método de determinação do valor eficaz de um sinal é mostrado na Figura 2.12, onde
a realimentação do sinal de saída diminui o inconveniente da pequena faixa dinâmica do método
direto.
Figura 2.12: Método indireto de determinação de valor RMS
O sinal V 2in é divido pelo sinal de saída Vout e então aplicado a um filtro para obtenção de
Vout = V 2in/Vout , que corresponde ao valor eficaz do sinal de entrada. Esse tipo de conversor
RMS-DC apresenta grande faixa dinâmica, porém apresenta a desvantagem de uma largura de
banda menor que a alcançado pelo método direto [19].
Método Delta Sigma
Ao contrário dos conversores apresentados anteriormente, os conversores ∆Σ não realizam
operações matemáticas através de circuitos eletrônicos, e por conta disso não linearidades de-
correntes dos efeitos de temperatura e excursão de sinal são eliminados. Nesses conversores
um modulador ∆Σ atua como um divisor e uma chave atua como multiplicador, como mostra a
Figura 2.13.
45
Figura 2.13: Método Delta Sigma de determinação de valor RMS
De acordo com [20], o modulador ∆Σ produz uma onda quadrada cujo ciclo de trabalho é
proporcional à razão entre o sinal de entrada e o sinal de saída. E essa onda quadrada atua sobre
uma chave que funciona como seguidor de tensão ou amplificador inversor com ganho -1. A
multiplicação desses dois sinais cria um terceiro sinal, que após ser filtrado por um filtro passa
baixa, corresponde a Vout =V 2in/Vout , que é o resultado da conversão RMS-DC.
Esse método de conversão é mais estável mais linear que os métodos apresentados anterior-
mente.
2.3.4 Características e especificações de conversores RMS-DC
Erros associados aos conversores RMS-DC
Um conversor RMS-DC ideal produz em sua saída uma tensão contínua idêntica ao valor
eficaz do sinal de entrada. No entanto, os conversores reais apresentam erros de conversão.
Esses erros são chamados de estáticos e podem ser divididos em offset de tensão, erro de es-
cala e erros de não linearidades. O erro de offset de tensão compromete a precisão da medida
principalmente durante a leitura de sinais de baixa intensidade. O erro de escala ocorre quando
a função de transferência vi/vout se desvia da ideal, principalmente devido à temperatura. E os
erros de não linearidade são observados na excursão de um sinal de frequência constante, ou na
variação de frequência de um sinal com valor eficaz constante [19].
O conhecimento da contribuição desses erros é fundamental para a caracterização da pre-
cisão e exatidão final do equipamento em que o conversor será empregado. Em geral o efeito
desses erros é informado pelos fabricantes como uma porcentagem da leitura, ou através de
gráficos, nas folhas de dados dos componentes.
Largura de banda e faixa dinâmica
Para aplicações em baixas frequências os erros estáticos podem ser desconsiderados em
46
algumas situações, mas conforme a frequência do sinal aumenta, a característica de largura
de banda do conversor se torna importante. Em todos os conversores citados anteriormente a
resposta em frequência dos conversores é atenuada conforme a intensidade do sinal de entrada
diminui. Para obter a maior largura de banda possível, o conversor RMS-DC deve receber
um sinal de intensidade adequada e, para tanto, se faz necessário o uso de um circuito pré-
amplificador para o adequado condicionamento do sinal.
A faixa dinâmica do circuito conversor também deve ser observada durante a construção
de sistemas medidores. O conjunto pre-amplificador + conversor deve ser projetado de modo
que um sinal com fator de crista, definido na seção 2.3.2, não provoque saturação dos circuitos
durante as medições.
2.3.5 Filtro passa baixas
O ripple presente na saída do conversor RMS-DC pode ser muito maior que o erro de offset
do componente, e nesse caso é necessário filtrar o sinal de saída do conversor antes da aquisição
da medida [19]. Essa tarefa é realizada por um filtro passa baixas. Diversas topologias de filtros
podem ser encontradas na literatura, sendo a topologia de Sallen-Key muito conhecida. Essa
configuração oferece boa estabilidade, exige um pequeno número de componentes, possui baixa
impedância de saída, que permite o cascateamento de vários estágios de filtragem minimizando
os efeitos de carregamento [12].
A Figura 2.14 mostra um filtro de terceira ordem composto de uma seção passiva de primeira
ordem seguida de uma seção ativa de segunda ordem, de topologia de Sallen-Key.
Figura 2.14: Filtro passa baixas de terceira ordem
Aplicando a lei dos nós aos pontos A, B e C é possível obter:
vA− vin
R1+
vA
1/sC1+
vA− vB
R2= 0 (2.18)
vB− vA
R2+
vB− vC
R3+
vB− vo
1/sC2= 0 (2.19)
vC− vB
R3+
vC
1/sC3= 0 (2.20)
47
Como o amplificador operacional é configurado como buffer é possível escrever
vC = vo (2.21)
Isolando vA na equação (2.18) e vC na equação (2.20), têm-se
vA =R1vB +R2vin
sC1R1R2 +R1 +R2(2.22)
vC = vo(1+ sC3R3) (2.23)
Substituindo as equações (2.22) e (2.23) na equação (2.19) é possível obter H(s) = vovin
H(s)=1
C1C2C3R1R2R3s3 +[C1R1(R2 +R3)+C2R3(R1 +R2)]C3s2 +[R1(C1 +C3)+C3(R2 +R3)]s+1(2.24)
ou ainda, de forma mais simplificada
H(s) =1
as3 +bs2 + cs+1(2.25)
Os coeficientes a, b e c da equação (2.25) definem a resposta do filtro passa baixas. Segundo
[12], um filtro passa baixas de terceira ordem com resposta do tipo Butterworth, normalizado a
uma frequência de corte de 1rad/s, é dada por
H(s) =1
s3 +2s2 +2s+1(2.26)
Por comparação das equações (2.25) e (2.26) é possível concluir queC1C2C3R1R2R3 = 1
C1C3R1(R2 +R3)+C2C3R3(R1 +R2) = 2
R1(C1 +C3)+C3(R2 +R3) = 2
A desnormalização dos componentes é dada por
R′n = RnK C′n =Cn
2π fcK(2.27)
onde fc é a frequência de corte deseja e K é o fator de escala das resistências.
2.4 Comunicação Serial
Em aplicações onde a velocidade de comunicação é um fator limitante a comunicação para-
lela é essencial. Porém, essa comunicação apresenta a inconveniente necessidade de barramen-
tos com muitas linhas de transmissão. A comunicação serial apesar de menos veloz simplifica
consideravelmente o processo de comunicação, já que dados, endereços e sinais de controle são
transmitidos um bit de cada vez. A seguir serão apresentados dois protocolos de comunicação
serial, o SPI e o I2C, que hoje estão presentes em praticamente todos os microcontroladores
disponíveis no mercado.
48
2.4.1 Comunicação SPI
A comunicação SPI, do inglês Serial Peripheral Interface, é uma forma de comunicação
serial síncrona full duplex para curtas distâncias. A comunicação SPI foi desenvolvida pela
Motorola e rapidamente se tornou um padrão muito usado na comunicação entre periféricos e
microcontroladores. A comunicação SPI não possui especificações ou normas internacionais
de regulamentação, de modo que isso permite uma grande flexibilização na implementação do
procolo de comunicação SPI como, por exemplo, o tamanho da palavra código empregada .
A comunicação SPI é aplicada em uma grande variedade de periféricos como: sensores de
temperatura e pressão, conversores AD e DA, memórias EEPROM e displays de LCD e LED
[21].
A comunicação SPI, ilustrada na Figura 2.15, se dá através de um barramento de 4 vias,
composto das seguintes linhas de comunicação:
SCK - Serial Clock. É o canal de clock da comunicação, usado para sincronizar o dispositivo
mestre e o escravo.
SDI - Serial Data Input. É o canal usado para transferir dados serialmente para dentro do
dispositivo.
SDO - Serial Data Output. É o canal usado para transferir dados serialmente para fora do
dispositivo.
SS - Slave Select. É o canal usado para habilitar ou desabilitar o dispositivo escravo.
Figura 2.15: Comunicação SPI
A comunicação é estabelecida quando o dispositivo mestre aciona o dispositivo escravo
desejado colocando nível lógico 0 no canal SS do periférico. Logo em seguida o dispositivo
mestre disponibiliza o sinal de clock no canal SCK do barramento, e a comunicação se inicia.
49
A cada pulso de clock ocorre uma transmissão full duplex , onde o dispositivo mestre envia
pelo canal seu SDO um bit pra o dispositivo escravo, e recebe do dispositivo escravo um bit
pelo seu canal SDI. Tanto no dispositivo mestre quanto no escravo os bits são armazenados em
registradores de deslocamento, que são incrementados a cada pulso de clock. Ao final de oito
pulsos de clock o dispositivo mestre recebe um byte do escravo e vice-versa. O processo de
transmissão é ilustrado na Figura 2.17.
Figura 2.16: Ilustração de comunicação serial - SPI
Apesar de proporcionar uma transmissão bidirecional, a comunicação SPI pode ser redu-
zida sem prejuízos para o modo unidirecional, bastando apenas desconectar o canal de dados
apropriado (SDI ou SDO).
É importante observar que a comunicação SPI permite a existência de apenas um disposi-
tivo mestre por barramento, e quantos dispositivos escravos forem necessários. No entanto, a
comunicação só pode ser realizada com um periférico por vez. O dispositivo mestre, que em
geral é um microcontrolador, deve garantir que o canal SS de dois ou mais dispositivos escravos
jamais sejam acionados ao mesmo tempo.
Quatro modos de operação são possíveis, dependendo da fase e polaridade do sinal de clock.
O fabricante de cada periférico informa em suas folhas de dados o modo de operação de seus
produtos [22]. A figura 2.17 ilustra esses 4 modos de operação.
Figura 2.17: Polaridade e fase da comunicação SPI
50
A polaridade do clock CPOL e sua CPHA podem ser identificados como 0 ou 1, como
mostra a Tabela 2.2.
Tabela 2.2: Modos de operação da comunicação SPI
Modo Valor Eficaz Fator de Crista
0 0 0
1 0 1
2 1 0
3 1 1
2.4.2 Comunicação I2C
A comunicação serial I2C, do inglês Inter-Integrated Circuit, é um protocolo de comuni-
cação de curta distância, desenvolvido pela Philips em 1982, com o objetivo de interligar pe-
riféricos dentro de equipamentos eletrônicos. A grande vantagem da comunicação I2C é que
toda a transmissão de dados emprega apenas um barramento de dois canais, por causa dessa
simplicidade o protocolo I2C se tornou muito comum em equipamentos de audio e vídeo.
Segundo [23], diferentemente da comunicação SPI, a comunicação I2C permite o endereça-
mentos de periféricos pelo próprio barramento, e com isso os pinos SS (Slave select) da comu-
nicação SPI não são necessários. Logo, a comunicação se dá através de apenas duas linhas, a
de clock SCL e dados SDA. O sinal SCL serve para sincronizar os dispositivos enquanto que
os dados são transportadas pela linha SDA tanto na transmissão quanto na recepção. A Figura
2.18 ilustra a comunicação I2C entre um dispositivo mestre (microcontrolador) e 3 dispositivos
escravos, que podem ser sensores, conversores AD, displays e memórias.
Figura 2.18: Comunicação I2C
Cada periférico I2C possui um endereço de 7 ou 10 bits, predefinido pelo fabricante e espe-
cificado nas folhas de dados do componente. Por conta disso, o endereçamento na comunicação
51
I2C é feito através do próprio barramento. Durante a comunicação, além do endereço o dispo-
sitivo mestre informa ao periférico se a operação de comunicação é de escrita ou leitura, e um
bit extra chamado de R/W é responsável por carregar essa informação. O dispositivo mestre lê
dados do periférico fazendo R/W=0 e escreve no periférico fazendo R/W=1. Apesar de o en-
dereçamento ser de 7+1 bits ou 10+1 bits, toda transferência é feita em pacotes de 8 bits, logo,
no caso de endereços de 10 bits o segundo byte é preenchido com 5 bits 1 na posições menos
significativas. Depois que o periférico recebe cada byte ele transmite para o dispositivo mestre
um bit de retorno de acknowledge ACK, que informa que o byte anterior foi adequadamente
recebido.
Enquanto o barramento I2C está ocioso, tanto a linha SCL quanto SDA permanecem em
nível lógico alto. O início da comunicação acontece após a condição de START, onde o dispo-
sitivo mestre realizada uma transição negativa na linha SDA enquanto mantém SCL em nível
lógico alto. Em seguida é enviado o endereço e o bit de R/W, e ocorre o recebimento do bit
ACK. Inicia-se então a transmissão de dados, tantos bytes quantos forem necessários, inter-
calados com um bit de ACK. A comunicação é encerrada com uma condição de STOP, onde
uma nova transição negativa ocorre na linha SDA enquanto SCL permanece em nível lógico
alto. O processo de transmissão com endereçamento de 7 bits é mostrado na Figura 2.19. O
endereçamento em 10 bits é análogo.
Figura 2.19: Transmissão no barramento I2C
Como foi dito anteriormente cada tipo de periférico possui um endereço interno determi-
nado pelo fabricante, e para que seja possível empregar dois periféricos idênticos no mesmo
barramento parte desse endereço é definida pelo usuário através dos pinos do componente. No
caso de um dispositivo com endereço de 10 bits geralmente o fabricante fixa internamente os 7
primeiros bits de endereço do dispositivo, permitindo que os outros 3 bits de endereços sejam
configurados via hardware. Dessa forma é possível empregar até 8 dispositivos idênticos no
barramento I2C. No entanto, segundo [24], que regulamenta as características do protocolo I2C,
52
o fator que limitante do número de periféricos conectados ao barramento de comunicação I2C
é a capacitância associada a linha, que não pode ser superior a 400pF, o que limita o alcance da
comunicação.
53
Capítulo 3
Especificações do Projeto
O medidor de THD+N que é tema deste projeto pode ser divididos em sub circuitos, mos-
trados na Figura 3.1. As subseções a seguir descrevem detalhadamente as características e
funcionalidades de cada um destes circuitos.
Figura 3.1: Diagrama de blocos do equipamento a ser construído
3.1 Circuito gerador
O circuito gerador consiste de um Sintetizador Digital Direto (DDS) acoplado a um ampli-
ficador de ganho variável, ambos controlados digitalmente pelo microcontrolador do equipa-
mento. Os valores de frequência e amplitude desejados para o teste, ou os limites de varredura,
54
são informados pelo usuário através de teclas no painel. Em seguida o sinal senoidal de frequên-
cia e amplitude desejada é encaminhado ao dispositivo sob teste através de um conector BNC
localizado no painel frontal do equipamento.
O gerador deve produzir ondas senoidais entre 20Hz e 20kHz. Como se trata de uma fonte
de sinal para testes de distorção harmônica, o gerador senoidal deve possuir o menor índice de
THD possível.
O amplificador de saída acoplado ao gerador tem dupla função: é responsável por fornecer
uma onda senoidal na amplitude desejada para o teste, ao mesmo tempo em que proporciona o
adequado casamento de impedância com a entrada do dispositivo sob testes.
Para testes em circuitos de áudio é necessário que o amplificador de saída forneça uma
onda senoidal com amplitude de até 2.5V sobre uma impedância mínima de saída de 600Ω.
Como o amplificador de saída está situado no caminho do sinal que será enviado ao dispositivo
sobre teste é necessário que o mesmo possua baixo índice de distorção harmônica a fim de não
degradar o sinal de teste.
3.2 Circuito de entrada
O sinal que retorna do dispositivo sob teste é encaminhado ao atenuador de entrada através
de um conector BNC localizado no painel frontal do equipamento.
Se por exemplo o dispositivo sob teste for um amplificador de potência o sinal que retorna
para o equipamento medidor de THD pode ter amplitudes da ordem de dezenas de volts, muito
superior aos limites que os circuitos integrados do medidor podem suportar com segurança.
Logo, se faz necessário um atenuador capaz de adequar o sinal para leitura.
No entanto, se o dispositivo sob teste for um preamplificador, provavelmente o sinal a ser
analisado é da ordem de dezenas de milivolts, e isso invariavelmente dificulta a leitura precisa
dos níveis de distorção. Sendo assim se faz necessário amplificar o sinal a ser analisado.
A tabela 3.1 mostra 5 escalas desejadas para o atenuador de entrada do medidor de THD. A
cada uma delas é associado um ganho de tensão, de modo que selecionando o ganho apropriado
é possível condicionar o sinal de entrada dentro de uma faixa de tensão ideal (0,1V a 0,9V) a
ser aplicada aos estágios seguintes do equipamento medidor de THD.
Por exemplo, qualquer sinal de entrada com valor de pico entre 11,1mV e 0,1V é amplificado
9 vezes, resultando em valores entre 0,1V a 0,9V na saída do atenuador. Da mesma forma,
qualquer sinal de entrada com valor de pico entre 0,1V e 0,9V sofre um ganho de tensão unitário,
resultando em valores entre 0,1V a 0,9V na saída do atenuador, e assim sucessivamente para as
55
Tabela 3.1: Escalas ideais do circuito de entradaEntrada (Vp) Ganho Saída (Vp)
min max V/V min max
0,0000 0,0111 81 0,1 0,9
0,0111 0,1000 9 0,1 0,9
0,1000 0,9000 1 0,1 0,9
0,9000 8,1000 0,1111 0,1 0,9
8,1000 72,9000 0,0123 0,1 0,9
demais escalas de ganho do atenuador de entrada.
Com as escalas de ganho da tabela 3.1 sinais de até 72V de pico podem ser condicionados
a um adequado valor de leitura. Essa ampla faixa dinâmica permite a medida de distorção
harmônica de amplificadores de alta potência. Um sinal de áudio de 72V de pico em uma carga
de teste de 4Ω corresponde a máxima potência de saída de um amplificador de 650W eficazes.
Como a função de varredura em frequência e amplitude é desejada para o medidor de THD,
o circuito denominado de atenuador de entrada deve possuir a capacidade de ajustar automati-
camente a escala apropriada de ganho para o ideal de funcionamento dos estágios seguintes. O
circuito que executa essa tarefa é chamado de circuito de detecção de escala, e é composto de
comparadores de janela, os quais constantemente verificam a amplitude do sinal de entrada e
atuam sobre o ganho do atenuador de entrada, condicionando o sinal de entrada dentro da faixa
ideal de funcionamento (0,1V a 0,9V) dos demais circuitos do equipamento .
3.3 Circuito de distorção
Uma vez que o sinal oriundo do dispositivo sob teste foi condicionado à amplitude adequada,
o mesmo é encaminhado ao filtro de variáveis de estado, o qual disponibiliza em sua saída passa
banda o componente fundamental do sinal de entrada, livre dos componentes harmônicos. O
circuito somador adicionado ao filtro de variáveis de estado atenuará o componente fundamental
do sinal de teste, liberando em sua saída notch a composição dos harmônicos produzidos pelo
dispositivo sob teste.
A resposta em frequência da saída notch é fortemente dependente dos valores dos resistores
e capacitores do filtro de variáveis de estado. A Figura 3.2 mostra o resultado da simulação,
em LTspice, por método de Monte Carlo, da saída notch com sintonia teórica de 1kHz, para
100 testes com resistores de 1% de tolerância. Um pequeno descasamento nos valores desses
56
componentes proporciona um pequeno deslocamento na frequência de sintonia do filtro, que
por sua vez corresponde a uma grande variação na rejeição do sinal a ser filtrado. A situação
se torna ainda mais complicada quando se trata de um filtro notch de sintonia variável, que é
o caso deste trabalho. Nessa situação se faz necessário um controle automático de sintonia,
que constantemente compensa o descasamento dos componentes, proporcionando a máxima
rejeição na saída notch.
Figura 3.2: Simulação de Monte Carlo para resistores com tolerância de 1% - 100 valores
O controle automático de sintonia escolhido é conhecido como ajuste por detecção de qua-
dratura, e é baseado na condição de quadratura entre as saídas do filtro de varáveis de estado,
abordado na seção 2.1.7. A comparação entre os sinais de duas saídas produz uma tensão de
erro que depende da defasagem entre esses sinais. Esse sinal de erro altera uma das resistências
do filtro (resistência controlada por tensão), até que as saídas assumam a condição de quadra-
tura. Uma maneira simples de criar uma resistência controlada por tensão é mostrada na Figura
3.3, onde um LED é posicionado sobre um LDR.
Figura 3.3: Resistência controlada por tensão construída usando LED e LDR
Como o filtro deve possuir frequência de sintonia variável e ao mesmo tempo controle au-
57
tomático de sintonia, o ajuste de frequência deve ser feito em duas etapas. O pré ajuste da
frequência de sintonia do filtro se dá através da combinação de resistores e capacitores dos inte-
gradores do filtro de variáveis de estado. Posteriormente, a sintonia fina, para máxima rejeição
da onda fundamental, se dá através do circuito de controle que opera a partir do princípio de
detecção de quadratura.
O sinal obtido na saída passa banda é encaminhado ao conversor RMS-DC I, que produzirá
uma tensão contínua proporcional ao valor eficaz do sinal fornecido pelo dispositivo sob teste.
A constante de proporcionalidade é dada pelo ganho do estágio atenuador de entrada, ajustada
pelo circuito de detecção de escala. Na prática, o sinal na saída do conversor RMS-DC não é um
sinal perfeitamente contínuo, pois apresenta pequenas ondulações oriundas do sinal senoidal de
entrada. Para uma medição mais precisa do valor eficaz é necessário filtrar a saída do conversor
RMS-DC através de um filtro passa baixa. Esse filtro deve ter uma frequência de corte menor
que a menor frequência do sinal de entrada e um tempo de acomodação suficientemente pequeno
para não comprometer as medições no modo varredura.
Ja no sinal obtido na saída notch necessita de um pouco mais de atenção. Para pequenos va-
lores de THD+N, o valor eficaz dos componentes harmônicos obtidos na saída do filtro notch é
de apenas alguns milivolts, ou seja, abaixo do limite ideal de conversão da maioria dos converso-
res RMS-DC disponíveis no mercado. Assim, é necessário amplificar este sinal adequadamente
antes da conversão, e para tanto se faz necessário um estágio amplificador com ganho ajustável,
análogo ao discutido no estágio atenuador de entrada. As escalas de ganho para a amplificação
dos harmônicos são mostradas na Tabela 3.2
Tabela 3.2: Escalas do amplificador de distorção
Entrada (Vp) Ganho Saída (Vp)
min max V/V min max
0 0,00041 2187 0,1 0,9
0,00041 0,00370 243 0,1 0,9
0,00370 0,03333 27 0,1 0,9
0,03333 0,30000 3 0,1 0,9
Assim como no atenuador de entrada um circuito de detecção de escala verifica a amplitude
do sinal filtrado e atua sobre o ganho do amplificador de distorção, condicionando esse sinal
dentro de uma faixa de 0,1V e 0,9V.
Depois de condicionar devidamente a amplitude do sinal para leitura, o conversor RMS-
58
DC II, idêntico ao conversor RMS-DC I, produz uma tensão proporcional ao valor eficaz dos
componentes harmônicos produzidos pelo dispositivo sob teste.
3.4 Microcontrolador e controle
O microcontrolador é responsável por controlar todos os circuitos do equipamento. Ele mo-
nitora constantemente as informações dos detectores de autorange e ajusta a escala de acordo
com a necessidade, controla o sinal senoidal produzido pelo gerador de acordo com as solici-
tações do usuário, atua sobre os conversores AD realizando a aquisição dos dados, calcula as
grandezas de interesse a partir dos dados adquiridos, e por fim, informa o resultado das medidas
realizadas através dos dispositivos de saída.
Em geral, o número de portas I/O de um microcontrolador de baixo custo são insuficien-
tes para controlar tantos circuitos periféricos. Provavelmente será necessário recorrer a uma
expansão de portas I/O por meio de um circuito integrado dedicado.
3.4.1 Aquisição de dados
As tensões contínuas produzidas pelos dois conversores RMS-DC são convertidas para va-
lores digitais através de um conversor analógico-digital de duas entradas.
Através da leitura dos valores eficazes produzidos pelos conversores RMS-DC e lançando
mão da equação (1.1), o microcontrolador é capaz de determinar o valor de THD referente ao
dispositivo sob teste.
3.4.2 Dispositivos de entrada e saída
O dispositivo de entrada do circuito medidor de THD é composto de um conjunto de chaves
e um encoder rotativo fixados no painel frontal do equipamento. Através das chaves é possível
selecionar as funções de medição desejadas e através do encoder rotativo as configurações de
amplitude e frequência do gerador.
O medidor de THD se comunica com o usuário através de dois dispositivos de saída: o
display frontal do equipamento e o a comunicação USB com um computador.
Para medições sem varredura o display do painel frontal informa a frequência e amplitude
do gerador e o respectivo nível de THD que o dispositivo sob testes apresenta naquele momento,
nenhuma informação é enviada para o computador pela conexão USB.
Para medições com varredura, os pares de pontos da varredura são enviados ao computador
59
e nenhuma medida é mostrada no display do painel frontal.
3.5 Fonte
A fonte de alimentação fornece alimentação para todos os circuitos do equipamento. A ten-
são da rede elétrica é reduzida, filtrada e regulada para proporcionar o adequado funcionamento
dos circuitos que compõem o equipamento. A fonte deve dispor de saídas simétricas de 5V, e
uma corrente mínima de 150mA.
60
61
Capítulo 4
Materiais e Métodos
A seguir serão descritos os componentes empregados na construção de cada bloco do equipa-
mento, e a motivação para a escolha desses componentes.
4.1 Circuito gerador
4.1.1 Gerador senoidal
Para a construção do gerador senoidal foi escolhido o circuito integrado AD9850, da Analog
Devices, cujas características estão disponíveis em [25]. O AD9850 é um dispositivo sinteti-
zador de frequência digitalmente programado que emprega a tecnologia DDS acoplada a um
conversor D/A de 10 bits de alto desempenho, cujo bloco funcional é mostrado na Figura 4.1.
O AD9850 permite a utilização de clock de referência de até 125MHz, quando alimentado com
5V. O dispositivo é sintonizado através de uma palavra de sintonia de 32 bits, que resulta em
uma resolução de sintonia de 0.0291Hz para um clock de referência de 125MHz. Devido a sua
alta precisão e estabilidade, o AD9850 pode ser usado como fonte de sinal para o projeto do
gerador senoidal.
Tecnicamente o AD9850 permite a geração de frequências de até metade da frequência do
clock de referência, ou seja, no máximo 62.5MHz, e uma taxa de atualização de frequência da
ordem de 23 milhões de novas amostras por segundo. O DDS em questão supera com folga a
necessidade de geração pretendida para o equipamento medidor de THD, de 10Hz a 100kHz.
Além dos 32 bits de sintonia é necessário encaminhar mais 8 bits de controle, responsáveis
pelas funções de modulação do sinal de saída e ajuste fase, funções essas que não são neces-
sárias para o projeto em questão. A comunicação paralela é realizada através de 5 remessas
de 1 byte, onde o primeiro byte controla fase, modulação, e a habilitação do dispositivo, e e os
62
Figura 4.1: Bloco funcional do DDS AD9850 - Imagem retirada do datasheet
demais bytes compõem a palavra de sintonia de 32 bits. Já no modo serial, um pacote de 40 bits
é enviado por um único pino, o que proporciona uma grande simplificação do gerador.
Um diagrama básico interno do AD9850 é mostrado na Figura 4.2, onde é possível observar
um divisor de frequência, denominado de acumulador de fase acoplado a memória que contém
uma função senoidal discretizada pré armazenada, seguida de um conversor D/A e um filtro de
reconstrução. O acumulador de fase é um contador de pulso que divide a frequência do clock de
acordo com o módulo do contador. O modulo do contador é ajustado pela palavra de sintonia de
32 bits. O clock resultante incrementa a posição de memória que é encaminhada ao conversor
D/A. A saída do conversor D/A passa por um filtro reconstrução a fim de eliminar componentes
espectrais da senoide sintetizada.
Figura 4.2: Diagram básico interno do DDS AD9850 - Imagem retirada do datasheet
O AD9850 apresenta saídas complementares em modo de corrente e a corrente máxima
que circula por essas saídas durante a sintetização pode ser ajustada externamente pelo pino
de controle RSET . Segundo as folhas de dados do componente, a corrente máxima em cada
uma das saída é dada por Iout = 32IRSET . Dessa forma, controlando a corrente IRSET é possível
controlar a máxima excursão do sinal sintetizado, uma vez que o DDS apresenta saídas em
63
modo de corrente.
Portanto, a grande capacidade de resolução, aliada a possibilidade de comunicação serial
tornam o AD9850 ideal para a construção do gerador senoidal do equipamento medidor de
THD. A combinação de um DDS e um microcontrolador proporciona um gerador senoidal
mais estável e de mais fácil sintonia que osciladores controlados por tensão (VCO).
4.1.2 Amplificador de saída
O circuito amplificador de saída é composto de um estágio de ganho de tensão e um estágio
ganho de corrente. Para estágio de ganho de tensão foi escolhido o amplificador operacional
LME49710, e para ganho de corrente o buffer LME49600, ambos da Texas Instruments. As
características técnicas estão disponíveis, respectivamente, em [26] e [27].
O LME49710 foi escolhido pois é um amplificador operacional de baixa distorção, baixo
ruído e alto slew rate desenvolvido para aplicações de alto desempenho em áudio. A tabela 4.1
mostra as principais características desse amplificador operacional.
Tabela 4.1: Características do amplificador operacional LME49710
Alimentação 2.5V a 17V
THD+N (Av = 1, VOUT = 3VRMS,1kHz) 0.00003%
Densidade de ruído 2.5nV/√
Hz
Largura de banda 55MHz
Slew rate 20V/µs
Ganho em malha aberta 140dB
Corrente de polarização de entrada 7nA
Offset de tensão 0.05mV
Apesar das características do LME49710, ele não é adequado para operar diretamente como
etapa de saída do gerador senoidal, para tanto foi decidido o emprego de um LME49600, um
buffer especialmente desenvolvido para esse tipo aplicação. As principais características desse
circuito integrado são mostradas na tabela 4.2
A figura 4.3, retirada do datasheet do circuito integrado, mostra que o buffer apresenta baixa
distorção harmônica em função da potência fornecida em sua saída.
64
Tabela 4.2: Características do buffer LME49600
Alimentação 2.25V a 18V
THD+N (Av = 1, VOUT = 3VRMS,1kHz) 0.00003%
Corrente de saída 250mA
Largura de banda 110MHz
Slew rate 2000V/µs
Figura 4.3: Gráfico de THD x P, do LME49600 com VCC = 15V , RL = 32Ω, f = 1kHz - Imagem retirada
do datasheet
4.2 Circuito de entrada
Para a construção do circuito atenuador de entrada foi escolhido, por conveniência, o mesmo
amplificador operacional a ser empregado no amplificador de saída do circuito gerador senoidal,
o LME49710. O LME49710 será empregado como amplificador não inversor em conjunto
com relês, que proporcionarão ganho adequado de acordo com a solicitação do circuito de
autorange. Inevitavelmente, quando o circuito de realimentação é alterado a tensão de offset na
saída do amplificador operacional muda, e isso pode influenciar o funcionamento dos circuitos
subsequentes. A fim de evitar esse desvio de tensão será empregado um circuito integrado
OP07, da Analog Devices, para o controle automático de offset do LME49710.
O OP07 é um amplificador operacional de baixo offset de tensão e alto ganho de malha
aberta, muito empregado em circuitos de instrumentação. Possui alta impedância de entrada
que proporciona grande precisão quando operado na configuração não inversora. Suas caracte-
rísticas técnicas estão disponíveis em [28].
O circuito de detecção de escala do atenuador de entrada funciona a partir de detectores
de níveis, construídos a partir de circuitos comparadores de tensão. Esses comparadores mo-
65
nitoram o sinal de entrada e informam ao controle do equipamento a escala apropriada para o
correto condicionamento de sinal. Os comparadores, no entanto, não possuem a capacidade de
armazenar variações em suas saída, uma vez que essas acompanham as variações do sinal de
entrada. A função de armazenar essas informações, que indicariam uma possível sobretensão
de entrada, pode ser atribuída a um flip-flop do tipo D. Para a construção do circuito de auto-
range do atenuador do entrada foram escolhidos o comparador de tensão LM319, e o flip-flop
74HC74.
O LM319 é um comparador de tensão duplo, com saídas em coletor aberto, desenvolvimento
para operar com fontes simples ou simétricas [29]. Já o integrado 74HC74, da família TTL, é
um flip-flop duplo, com set e reset, e acionamento por borda de subida [30].
4.3 Circuito de distorção
4.3.1 Filtro Notch
O filtro de variáveis de estado empregará o amplificador operacional LME49710, pelas mes-
mas razões anteriormente apresentadas. Para que o filtro de variáveis de estado da Figura 2.1 do
Capítulo 2 possua frequência de sintonia ajustável é necessário variar simultaneamente os com-
ponentes R4, R5 , C1 e C2. Os capacitores determinam as faixas de operação do filtros. Como é
desejada a cobertura de 3 décadas (20Hz a 20kHz), 3 pares de capacitores são necessários. Esse
capacitores serão selecionados através de reed relay, do tipo SIP-1A05. O SIP-1A05, mostrado
na Figura 4.4 apresenta um contato normalmente aberto, e é comutado por uma tensão contínua
de 5V, fornecida pelo microcontrolador do equipamento.
Figura 4.4: Reed Relay
O ajuste de frequência dentro de uma das três escalas é realizado através da variação dos
resistores R, do esquema da Figura 2.1. Um conjunto de resistores é combinado através de reed
relay , do tipo SIP-1A05.
4.3.2 Controle automático de sintonia
A máxima rejeição na saída notch ocorre quando a condição de quadratura entre as saídas
66
do filtro de variáveis de estado é alcançado. Essa condição é indicada pela tensão de erro
gerada a partir da comparação entre a fase desses sinais. Essa tensão de erro atua sobre uma das
resistência do filtro, corrigindo o desbalanceamento causado pela dispersão dos componentes
Essa resistência controlada por tensão é construída usando um LDR GL5516 acoplado a um
LED amarelo. A Figura 4.5 retirada de [31] mostra a resposta espectral do LDR. O comprimento
de onda do amarelo (570 - 590 nm) proporciona a máxima sensibilização do elemento foto
resistivo.
Figura 4.5: Resposta espectral do GL5516 - Imagem retirada do datasheet
A tensão de erro que atua sobre o LED e varia a resistência do LDR é obtida através de um
detector de quadratura construído usando comparadores LM319, amplificadores operacionais
TL072 e JFET BF245.
4.3.3 Conversor RMS-DC I e II
Para a conversão RMS-DC foi escolhido o circuito integrado LTC1968, da Linear Techno-
logy, que emprega o método de conversão delta sigma. O LTC1968 apresenta alta linearidade,
grande largura de banda. O circuito suporta sinais com fator de crista até 4, podendo operar
com entrada diferencial ou simples [32]. A tabela 4.3 resume as principais características desse
conversor RMS-DC.
A figuras 4.7 e 4.8 foram retiradas da folha de dados do componente e mostram os erros
estáticos de linearidade e ganho do LTC1968, em função da temperatura e a tensão de entrada,
respectivamente.
O circuito LTC1968 apresenta apenas 8 terminais no formato MSOP, e exige poucos com-
ponentes externos para funcionar, como mostra a Figura 4.8. O capacitor CAV E em conjunto
67
Tabela 4.3: Características do conversor RMS-DC LTC1968Alimentação 6V Offset de tensão 0,2mV
Linearidade 0,05% Entrada mínima 5mVRMS
Largura de banda 500kHz Impedância de entrada 1,2MΩ
Entrada máxima 1Vp Impedância de saída 12,5kΩ
Figura 4.6: Erro de linearidade - Imagem re-
tirada do datasheet
Figura 4.7: Erro de ganho - Imagem reti-
rada do datasheet
com a resistência de saída do circuito formam o primeiro estágio de filtro passa baixa do con-
versor. Para necessidades mais exigentes, outros estágios de filtragem podem ser adicionados
externamente.
Figura 4.8: Diagram básico interno do LTC1968 - Imagem retirada do datasheet
Para a construção do filtro passa baixa localizado após a conversão RMS-DC foi escolhido
o amplificador operacional OP07 por sua característica de baixo offset de tensão. O OP07 foi
mencionado na descrição dos materiais do atenuador de entrada.
68
4.3.4 Amplificador de distorção
O circuito amplificador de distorção tem como objetivo amplificar o sinal resultante da fil-
tragem para que o conversor RMS-DC seja capaz de detectá-lo. Como o sinal na saída do filtro
notch pode possui uma grande faixa dinâmica é necessário que o ganho do amplificador de dis-
torção seja ajustado pelo microcontrolador. Isso pode ser obtido substituindo os resistores de
realimentação de um amplificador não inversor. Para comutar os resistores de realimentação
serão usados reed relay do tipo SIP-1A05, anteriormente mencionados.
O amplificador operacional LME49710 foi escolhido para integrar o circuito amplificador de
distorção por suas boas características elétricas, apresentadas na seção de materiais do atenuador
de entrada.
4.4 Microcontrolador e controle
4.4.1 Microcontrolador
Para o controle de todos os circuitos do equipamento foi escolhido o microcontrolador de
baixo custo ATmega328, da Atmel. Segundo [33], o ATmega328 é um microcontrolador de 8
bits, com 14 portas digitais I/O, 6 portas analógicas, 32 kB de memória flash, 2 kB de memória
RAM e 1 kB de memória EEPROM.
O ATmega328 é empregado em plataformas de desenvolvimento Arduino Nano, e esse fator
foi decisivo na escolha desse microcontrolador, devido a facilidade de desenvolvimento que
essa plataforma oferece.
Figura 4.9: Plataforma Arduino Nano que emprega o microcontrolador ATmega328
4.4.2 Expansor de portas I/O
O microcontrolador em questão apresenta um total de 14 portas de entrada e saída digitais.
Ao microcontrolador serão conectados todos os estágios descritos no capítulo 2. Logo, o total
de portas é insuficiente para estabelecer todos as conexões com os periféricos. A saída para esse
69
problema pode ser alcançada através da utilização de um circuito expansor de portas I/O, como
o PCF8574, da Philips.
O circuito integrado PCF8574 é um expansor de portas I/O de 8 canais, com interface de
comunicação I2C. O protocolo de comunicação I2C, desenvolvido Philips, emprega um barra-
mento de dois fios (serial clock (SCL) e serial data (SDA)) para realizar a comunicação entre
periféricos [34]. O diagrama funcional do circuito é mostrado na figura 4.10
Figura 4.10: Diagrama de blocos do PCF8574 - Imagem retirada do datasheet
O PCF8574 possui 3 terminais de configuração de endereços (A0, A1 e A2), os quais tor-
nam possível a conexão de até 8 circuitos integrados PCF8574 no mesmo barramento I2C. Isso
possibilita a transformação de 2 portas do microcontrolador em até 64 portas de I/O. O pino
INT pode ser conectado ao terminal de interrupção do microcontrolador para informar que uma
alteração de nível lógico ocorreu em uma das portas I/O do PCF8574.
Cada porta I/O do PCF8574 apresenta uma capacidade de de 20mA, o que o torná apropriada
para o acionamento de LEDs ou até mesmo relês do tipo micro switch.
4.4.3 Aquisição de dados
O microcontrolador ATmega328 possui internamente conversores AD de 8 e 10 bits, cuja
resolução é insuficiente para a leitura da tensão contínua produzida pelos conversores RMS-
DC. Em vista disso, foi escolhido um conversor analógico de digital de maior resolução, o
ADS1115, da Texas Instruments. O ADS1115 é um conversor AD de 16 bits de quatro entradas
multiplexadas com ganho programável, que opera com referência interna. O dispositivo possui
comunicação I2C, e é capaz de realizar até 860 amostras por segundo [35]. A Figura 4.11 mostra
o diagrama de blocos do ADS1115.
70
Figura 4.11: Diagrama de blocos do ADS1115 - Imagem retirada do datasheet
4.4.4 Dispositivos de entrada
Para a configuração manual de frequência e amplitude foi escolhido um encoder rotativo
com chave, mostrado na Figura 4.12.
Figura 4.12: Encoder rotativo para ajuste de frequência e amplitude do gerador senoidal
Para a habilitação das demais funções do aparelho foram escolhidas chaves momentâneas
do tipo Push Button.
4.4.5 Dispositivo de saída
Painel
Para compor o painel do equipamento medidor de THD escolheu-se uma tela de LCD co-
lorida de 1,8"com resolução de 160 x 128 pixels, mostrada na Figura 4.13. A tela emprega um
controlador ST7735 que permite o uso comunicação SPI, com isso, é possível transferir e atu-
alizar um grande número de informações na tela usando apenas 4 vias de comunicação, como
mostrado na Seção 2.4.1.
Ao contrário dos displays de LED convencionais a tela de LCD dispensa multiplexação. O
controlador ST7735 possui internamente uma memória RAM que armazena os dados corres-
pondentes a cada pixel da tela.
71
Figura 4.13: Tela de LCD
USB
Os microcontroladores de baixo custo disponíveis no mercado não apresentam comunica-
ção USB nativa. Apresentam apenas comunicação UART, do inglês Universal Asynchronous
Receiver/Transmitter, que não permite conexão direta com computadores. No passado, a co-
municação serial RS232 era largamente empregada nesse tipo de tarefa mas, com o advento da
comunicação por USB, o protocolo RS232 perdeu espaço. A plataforma Arduino Uno apre-
senta um conversor USB/UART, que permite que o ATmega328 envie e receba dados de um
computador por meio de uma comunicação USB
4.5 Fonte
Para a fonte de alimentação foram escolhidos os reguladores 7805, 7905 e 7809, 7909, para
tensões positiva e negativa, respectivamente. Um transformador com primário de 127/220V e
secundário de 24V com derivação central, com potência de 30VA. Os demais componentes da
fonte de alimentação são convencionais e dispensam maior detalhamento.
72
73
Capítulo 5
Projeto do medidor de THD
A seguir será apresentado detalhadamente os circuitos desenvolvidos usando os componentes
descritos no capítulo 4 . Todos os circuitos especificados no capítulo 3 foram agrupados em
blocos funcionais na Figura 5.1, representando as placas de circuito impresso do equipamento
medidor de THD.
Figura 5.1: Diagrama de blocos e divisão dos circuitos
As setas entre os blocos da Figura 5.1 indicam a interligações entre as placas de circuito
impresso. As conexões de todas as placas com a fonte de alimentação foram omitidas a fim de
simplificar a representação.
74
5.1 Circuito gerador
O circuito gerador senoidal do medidor de THD é montado na placa de circuito nomeada de
Placa A, e é composto pelo DDS e pelo amplificador de saída. A Figura 5.2 mostra o esquema
parcial desse circuito.
Figura 5.2: Esquema do circuito gerador e amplificador de saída
O conector GERADOR interliga a placa do gerador senoidal com a placa do microcontrola-
dor. A palavra de sintonia é enviada serialmente pelo microcontrolador até o terminal DATA do
AD9850. O clock no terminal CLK sincroniza a comunicação de cada bit da transmissão. Um
pulso no terminal FUDPT aciona a sintetização e um pulso em RST sinaliza ao DDS que uma
nova palavra de sintonia está a caminho.
O ajuste da amplitude do sinal sintetizado é feito controlando a corrente drenada pelo termi-
nal RSET do integrado U001. No terminal RSET do integrado U001 existe uma tensão de 1,248V
produzida internamente. A corrente que circula por RSET é então
IRSET =1,248−VA3
R001
onde a tensão no nó A3 é produzida pelo DAC U006 de acordo com a solicitação do usuário.
As correntes complementares de saída do DDS dependem de IRSET , como citado na seção 4.1.
Essas correntes produzem tensões em contra fase nós A1 e A2 sobre os resistores R002 e R003.
O capacitor C001 forma junto com esses resistores o primeiro estágio do filtro de reconstrução,
configurado para uma frequência de corte de 200kHz.
O amplificador operacional U002, configurado como amplificador de diferença subtrai os
75
sinais dos nós A1 e A2 eliminando a componente contínua produzida pelo DDS, além de pro-
porcionar um ganho de tensão de 2 V/V.
O integrado U003 opera como amplificador de corrente, e é capaz de liberar correntes de até
250mA. O resistor R009 torna a resistência de saída do gerador proxima de 50Ω, e o capacitor
C005 forma um filtro passa baixas configurado para uma frequência de corte de 800kHz. A
saída do sinal senoidal se dá por um conector BNC indicado como SAIDA, localizado no painel
do instrumento.
O processo configuração do sintetizador é ilustrado no fluxograma da Figura 5.3.
Figura 5.3: Fluxograma de configuração do DDS
No Apêndice A é mostrado o esquema completo do circuito gerador senoidal, e a sua res-
pectiva placa de circuito impresso.
5.2 Circuito de entrada
O circuito de entrada do medidor de THD, montado na placa de circuito indicada por Placa
B, é composto dos seguintes blocos: atenuador de entrada, limitador, amplificador, controle de
offset, circuito de detecção de escala. A seguir serão apresentados os esquemas de cada um
desses blocos, e no Apêndice B o esquema completo do circuito de entrada, conectando todos
os blocos aqui descritos.
O sinal a ser medido entra no circuito de entrada pelo conector ENTRADA do esquema
da Figura 5.4. Em seguida o capacitor de desacoplamento C101 bloqueia tensões contínuas e
76
permite apenas a passagem de sinais alternados para dentro do circuito. O sinal de entrada é
enviada a um conjunto de divisores resistivos com saídas em 1V/V , 0,1V/V e 0,01V/V do
sinal de entrada.
Figura 5.4: Esquema parcial do circuito de entrada
Os relês RL101, RL102 e RL103 são responsáveis por colocar no nó B1 a adequada atenu-
ação de entrada, de acordo com as solicitações fornecidas pelo microcontrolador com base nas
saídas do circuito detector de escala. Os componentes R105, D101 e D102 são responsáveis por
limitar o sinal de entrada durante o ajuste de escala, a fim de proteger a entrada do amplificador
operacional conectada ao nó B2.
O amplificador operacional U102 é responsável por proporcionar ganho de tensão de 1V/V ,
11V/V e 84,333V/V , de acordo com o estado dos relês RL104 e RL105, também ajustados
pelo microcontrolador de acordo com as solicitações do circuito de detecção de escala. O
77
amplificador operacional U101 opera como controle automático de offset do amplificador U102.
O sinal amplificado por U102, disponível no nó B3, é enviado ao detetor de escala esque-
matizado da Figura 5.5. O circuito detector de escala é mostrado na Figura 5.5, e é composto
de dois comparadores e dois flip-flops tipo D. O sinal alternado presente no nó B3 é compa-
rado com as tensões de referência de 900mV e 70mV, proporcionadas pelos divisores de tensão
formados pelos resistores R111 a R114. Essas tensões de referência formam duas janelas de
comparação, de 70mV < VB3<900mV. E com essas janelas três situações são possíveis para o
sinal em B3.
Figura 5.5: Esquema do circuito de entrada - Detalhe do autorange
Quando o sinal em B3 é tal que VB3 < 70mV significa que o sinal em ENTRADA é muito
baixo, e que outra combinação dos relês RL101 a RL106 deve ser ajustada a fim de amplificar
esse sinal. Essa condição de baixo sinal de entrada é indicada pelo estado lógico 00 na saída dos
flip-flops U104. A Figura 5.6 mostra a simulação em LTspice do comportamento do detector
de escala da Figura 5.5 para um sinal senoidal de 60mV de pico em B3. A linha tracejada
representa a tensão de referência do comparador.
Quando o sinal em B3 é tal que VB3 > 900mV significa que o sinal em ENTRADA é muito
alto, e que outra combinação dos relês RL101 a RL106 deve ser ajustada para atenuar esse sinal.
Essa condição de alto sinal de entrada é indicada pelo estado lógico 11 na saída dos flip-flops
78
Figura 5.6: Simulação para VB3 = 60mV
U104. A Figura 5.7 mostra a simulação em LTspice do comportamento do detector de escala
da Figura 5.5 para um sinal senoidal de 1,2V de pico em B3. A linha tracejadas representa a
tensão de referência do comparador.
Figura 5.7: Simulação para VB3 = 0,7V
Por fim, quando o sinal em B3 está contido dentro do intervalo 70mV < VB3 < 900mV
significa que a configuração dos relês RL101 a RL106 proporciona a correta escala de leitura,
e essa condição é indicada pelo estado lógico 01 na saída dos flip-flops U104. A Figura 5.8
79
mostra a simulação em LTspice do comportamento do detector de escala da Figura 5.5 para um
sinal senoidal de 700mV de pico em B3. A linha tracejadas representa a tensão de referência do
comparador.
Figura 5.8: Simulação para VB3 = 1,2V
Portanto, o microcontrolador verifica constantemente os níveis lógicos na saída de U104
e atua sobre os relês RL101 a RL106 a fim de tornar 70mV < VB3 < 900mV. Os ganhos e
atenuações ideais foram apresentados nas especificações do projeto, na Tabela 3.1. Na prática,
devido ao emprego de resistores de valor comercial os ganhos e atenuações sofreram alterações,
e os valores reais são apresentados na Tabela 5.1. A Tabela 5.1 mostra que qualquer tensão de
entrada entre 0.9mV e 92V é convertida para o intervalo 70mV < VB3 < 900mV, através das
cinco escalas disponíveis. Isso proporciona uma faixa dinâmica de entrada de mais de 100dB.
Tabela 5.1: Escalas reais do atenuador de entradaEntrada (Vp) Ganho VB3 (Vp)
min max V/V min max
0,0009 0,0107 84,333 0,072 0,904
0,0066 0,0822 11,00 0,072 0,904
0,0725 0,9040 1,000 0,072 0,904
0,6762 8,4376 0,1071 0,072 0,904
7,3182 91,3131 0,0099 0,072 0,904
O processo de seleção de escala realizado pelo microcontrolador é ilustrado no fluxograma
80
da Figura 5.9.
Figura 5.9: Fluxograma para a seleção de escala.
O Apêndice B mostra o esquema completo do circuito de entrada, e sua respectiva placa de
circuito impresso, identificada por Placa B.
5.3 Circuito de distorção
O sinal condicionado pelo estágio de entrada é obtido no conector SFV, do esquema da
figura 5.4. Esse sinal é enviado ao filtro de variáveis de estado mostrado na Figura 5.10.
81
Figura 5.10: Esquema do filtro de variáveis de estado
No nó C2 é obtido a composição dos harmônicos e no nó C3 a onda fundamental. A razão
entre o valor eficaz das tensões nesses dois nós é o índice THD do sinal de entrada.
Os relês RL209 a RL214 são responsáveis por selecionar os capacitores C201 a C206 que
determinam as três escalas de frequência do equipamento. Essas escalas são selecionadas atra-
vés de um código binário no conector ESCALA, como mostrado na Tabela 5.2.
Tabela 5.2: Escalas de frequência do filtro de variáveis de estado
Escala Código Faixa
1 001b 20Hz - 200Hz
2 010b 200Hz - 2kHz
3 100b 2kHz - 20kHz
Os relês RL201 a RL208 selecionam os resistores R204 a R207 e R212 a R215 que deter-
minam o pré ajuste de frequência. Os relês são selecionados por um código binário no conector
FREQ, como mostrado na Tabela 5.3.
82
Tabela 5.3: Pré ajuste de frequência do filtro de variáveis de estado
Frequência [Hz]
Código 1 2 3
0000b 21 217 2179
0001b 34 346 3466
0010b 47 476 4762
0011b 60 604 6049
0100b 71 710 7100
0101b 83 838 8387
0110b 96 968 9683
0111b 109 1097 10971
1001b 122 1228 12288
1010b 135 1358 13585
1011b 148 1487 14872
1100b 159 1592 15922
1101b 172 1720 17209
1110b 185 1850 18506
1111b 197 1979 19793
Os resistores R204 a R207 e R212 a R215 foram escolhidos de modo a proporcionar uma
distribuição uniforme dos pontos de pré ajuste de frequência dentro de cada escala. A Figura
5.11 mostra a disposição das frequências de pré ajuste na escala 1.
Figura 5.11: Disposição das frequências de pré ajuste na escala 1 (20Hz - 200Hz)
83
O circuito de sintonia automática por quadratura mostrado na Figura 5.12 atua sobre o LDR
do filtro preenchendo os espaços entre as frequências de pré ajuste da Tabela 5.3, tornado as
escalas contínuas. Dessa forma, é possível ajustar o filtro de variáveis de estado para medir
THD em qualquer frequência entre 20Hz e 20kHz.
Figura 5.12: Esquema do circuito de sintonia automática por quadratura
O sinal da saída passa baixa disponível no nó C1 é transformado em uma onda quadrada
que atua sobre os transistores FET Q201 e Q202, recortando o sinal da saída notch. Quando C1
e C2 estão em quadratura a tensão média na entrada do integrador é nula. Se a defasagem em
relação a C1 é maior que 90, a tensão se torna positiva, e negativa para defasagem menor que
90. O integrador atua como compensador do circuito realimentado. A saída do integrador é
conectada a um conversor tensão-corrente, que alimenta o LED que ilumina o LDR, alterando
a sintonia do filtro até que a defasagem seja de 90, nessa condição ocorre a máxima rejeição
da fundamental na saída notch.
O sinal referente a saída passa banda presente em C3 é encaminhado para o conversor RMS-
DC como mostra a Figura 5.13. O circuito integrado U211 é responsável pela conversão RMS-
DC discutida na seção 2.3. O amplificador operacional U212 compõem um filtro passa-baixas,
abordado na seção 2.3.5.
84
Figura 5.13: Esquema do circuito de entrada - Detalhe conversor RMS-DC e filtro passa baixa
Os componentes do filtro passa baixa foram determinados a partir do equacionamento da
seção 2.3.5. O resistor R1 da figura 2.14 corresponde a resistência de saída do conversor RMS-
DC. O capacitor C209 de 2.2µF é uma recomendação do fabricante, contida na folha de dados
do componente. A Figura 5.14 mostra a resposta do filtro passa baixa do conversor RMS-DC.
Figura 5.14: Resposta em frequência do filtro passa baixa de terceira ordem da Figura 5.13
No conector RMS_FUND da figura 5.13 é obtida uma tensão contínua proporcional ao valor
eficaz da onda fundamental do sinal de entrada, que corresponde ao denominador da equação
(1.1).
O sinal após a remoção da onda fundamental, disponível no nó C2 do circuito da Figura
5.10, é enviado ao circuito amplificador de distorção da Figura 5.15. Esse estágio consiste de
três seções de amplificadores não inversores com ganho ajustado pelos relês RL215 a RL217.
Esses relês são controlados pela placa do microcontrolador.
85
Os três estágios são desacoplados a fim de evitar ceifamentos devido a uma eventual pre-
sença de offset de tensão.
Figura 5.15: Esquema do circuito amplificador de distorção
As combinações possíveis de ganho do amplificador de distorção da Figura 5.15 e suas
respectivas faixas de entrada e saída são mostradas na Tabela 5.4. O estágio somador da Figura
5.10, que produz a resposta notch, também é responsável por proporcionar um ganho de tensão
fixo de 3V/V, já contabilizado nas combinações de ganho mostrada na Tabela 5.4.
86
Tabela 5.4: Escalas reais do amplificador de distorção
Entrada (Vp) Ganho VB3 (Vp)
min max V/V min max
0,000037 0,000379 2382 0,088 0,904
0,000341 0,003509 257,543 0,088 0,904
0,003150 0,032458 27,843 0,088 0,904
0,029136 0,300233 3,010 0,088 0,904
Durante a seleção da escala ideal de leitura o microcontrolador verifica as saída dos flip-flops
do circuito detector de escala, mostrado na Figura 5.15, e atua sobre o ganho do amplificador
de distorção, segundo a Tabela 5.4. Todo o processo é ilustrado na Figura 5.16.
Figura 5.16: Fluxograma de ajuste do circuito de distorção
87
Após a conversão RMS-DC e a filtragem, é obtida no conector RMS_DIST do circuito da
Figura 5.15 uma tensão contínua proporcional ao valor eficaz dos componentes harmônicos do
sinal de entrada, onde a constante de proporcionalidade é dada pelo ganho do estágio amplifi-
cador de distorção. O valor eficaz obtido corresponde ao numerador da equação (??).
O conector MONITOR é um conector BNC no painel do equipamento que possibilita a
visualização da forma de onda da distorção do sinal de entrada em um osciloscópio.
No Apêndice C é mostrado o esquema completo do circuito de distorção e sua respectiva
placa de circuito impresso, identificada por Placa C.
5.4 Microcontrolador, controle, aquisição de dados, dispositivos de en-
trada e saída
A Figura 5.17 mostra as conexões entre o microcontrolador e todos os periféricos do equi-
pamento.
Figura 5.17: Esquema do circuito de controle
A tela de LCD e o DDS se comunicam com o microcontrolador por meio da conexão SPI
disponível nos pinos D11 e D13. Os pinos D6 a D10 operam como Enable e Reset nesses
88
dois periféricos. Os pinos A0 a A3 e A6 e A7 são conectados aos dois encoders rotativos, de
ajuste de frequência e amplitude do gerador, e provocam interrupções durante a execução das
rotinas do microcontrolador. Os relês do circuitos de entrada e distorção são controlados pelos
expansores I/O PCF8574, que se comunica com o microcontrolador por meio de conexão I2C,
disponível nos pinos A5 e A6. O conversor AD de 16 bits ADS1115 responsável pela leitura dos
valores eficazes dos sinais filtrados também se comunicam com o microcontrolador por meio
de conexão I2C. No modo varredura em frequência ou amplitude o microcontrolador transfere
dados para o computador graficador por meio de comunicação USB.
O Apêndice VI apresenta o código fonte programado no microcontrolador
5.5 Fonte
O esquema da fonte de alimentação de todos os circuitos do equipamento é mostrado na Fi-
gura E.2 do Apêndice V. O transformador possui um secundário de 24V com derivação central,
e uma potência de 30VA. Os integrados 7805 e 7905 são responsáveis por regular as saídas da
fonte me +5V , -5V , +9V e -9V, e possuem capacidade de 1A. A Figura E.1 do Apêndice V
mostra a placa de circuito impresso da fonte de alimentação, denominada de Placa E.
89
Capítulo 6
Resultados
A Figura 6.1 mostra as placas de circuito do analisador de distorção em funcionamento. Nas
seções a seguir serão apresentados os resultados obtidos juntamente com suas respectivas dis-
cussões.
Figura 6.1: Placas de circuito impresso do analisador de distorção
No canto superior esquerdo é mostrada a placa do gerador senoidal, no centro superior a
placa dos circuitos de distorção, no canto superior direito a placa do atenuador de entrada, e na
parte inferior o microcontrolador e o display.
90
6.1 Gerador Senoidal
6.1.1 Precisão do Gerador
Testes de bancada foram realizados a fim de verificar o funcionamento do gerador senoidal.
Experimentalmente observou-se que o gerador é capaz de sintetizar senoides de até 2.5V de
amplitude, com resolução de 10mV, e frequência entre 20Hz e 20kHz, com resolução de 10Hz.
A Figura 6.2 mostra o sinal obtido no conector BNC do gerador para a condição de 1kHz e 1V
de amplitude.
Figura 6.2: Saída do gerador senoidal, 1kHz, 1Vp
A fim de se verificar experimentalmente a precisão do gerador senoidal foram comparados
os valores de amplitude e frequência programados com aqueles os medidos experimentalmente.
A Figura 6.3 mostra a correlação entre frequência medida e programada, e a Figura 6.4 mostra
a correlação entre amplitude medida e programada.
Figura 6.3: Correlação entre frequência medida e programada
91
Figura 6.4: Correlação entre amplitude medida e programada
A partir dos gráficos das Figuras 6.3 e 6.4 é possível concluir que o gerador senoidal cons-
truído apresenta boa precisão tanto em frequência quanto em amplitude, pois as retas ajustadas
possuem inclinação de 1.0005 no gráfico de frequência e 1.00325 no gráfico de amplitude.
6.1.2 Distorção produzida pelo gerador senoidal
A fim de quantificar o nível de distorção harmônica produzido pelo gerador senoidal, obteve-
se, usando um analisador de espectro HP3582A, a intensidade de cada um das componentes
harmônicas presentes na saída do gerador para dois casos em particular: 100Hz e 1kHz. As
Tabelas 6.1 e 6.2 mostram as medidas obtidas.
Tabela 6.1: Componentes harmônicos de 100Hz em diferentes amplitudes
Amplitude Harmonicos (dB) THD
(V) 100Hz 200Hz 300Hz 400Hz 500Hz 600Hz 700Hz (%)
0,1 0 -65,4 -67,2 -70,0 -75,0 -78,0 -80,0 0,0797
0,2 0 -65,3 -67,0 -71,0 -75,0 -80,0 -80,0 0,0793
0,3 0 -65,5 -68,0 -69,7 -72,3 -78,3 -80,0 0,0795
0,6 0 -65,3 -67,3 -71,0 -74,0 -78,2 -80,0 0,0793
1,0 0 -65,1 -67,0 -70,0 -79,1 -82,3 -85,6 0,0792
2,0 0 -65,8 -67,2 -69,2 -74,6 -77,9 -80,2 0,0796
2,4 0 -65,3 -67,8 -71,2 -75,4 -78,0 -80,0 0,0769
Nos dois casos os dados tabulados contemplam a onda fundamental normalizada em 0dB
e mais seis componentes harmônicos. A justificativa para desconsiderar harmônicos de ordem
92
superior a 7 baseia-se na limitação da faixa dinâmica do analisador de espectro empregado na
medição, onde o oitavo harmômico se torna indissociável do ruído de fundo presente (grama).
Tabela 6.2: Componentes harmônicos de 1kHz em diferentes amplitudes
Amplitude Harmonicos (dB) THD
(V) 1kHz 2kHz 3kHz 4kHz 5kHz 6kHz 7kHz (%)
0,1 0 -65,5 -67,1 -70,5 -74,6 -78,2 -79,3 0,0790
0,2 0 -64,9 -67,5 -71,4 -74,7 -79,2 -79,7 0,0800
0,3 0 -65,8 -68,7 -69,3 -72,5 -78,9 -80,4 0,0797
0,6 0 -64,7 -67,3 -70,5 -73,4 -77,8 -80,6 0,0800
1 0 -64,5 -66,5 -70,0 -79,7 -83,1 -85,7 0,0803
2 0 -65,5 -67,0 -69,6 -74,6 -78,3 -80,7 0,0798
2,4 0 -65,8 -67,4 -71,6 -74,9 -78,1 -79,5 0,0784
A partir dos medidas contidas nas Tabelas 6.1 e 6.2 foi possível determinar o valor de THD
para cada caso. Os resultados são mostrados nas mesmas tabelas, e apresentados graficamente
na Figura 6.5.
Figura 6.5: Distorção Harmônica do gerador senoidal em 100Hz e 1kHz, em função da amplitude
A partir do gráfico da Figura 6.5 é possível concluir que o gerador senoidal construído pro-
duz THD em torno de 0,08%, para qualquer valor de amplitude. Para a aplicação em questão,
o nível de THD produzido pelo gerador é um pouco alto, mas aceitável considerando a simpli-
cidade e o custo do circuito gerador. Talvez a inserção de um filtro passa-baixa mais elaborado
na saída do gerador proporcione resultados mais adequados à medição de THD.
93
6.1.3 Testes de varredura
Quando controlado remotamente pelo computador, para a confecção de gráficos, o gerador
deve operar no modo varredura de amplitude ou frequência. Testes foram realizados a fim de
verificar essa função. A Figura 6.6 mostra o gerador senoidal operando no modo de varredura
em frequência, de 1kHz a 10kHz, e 1V de amplitude.
Figura 6.6: Varredura em frequência de 1kHz a 10kHz
A Figura 6.6 mostra o gerador senoidal operando no modo de varredura em amplitude,
10mVp a 1Vp , e frequência de 1kHz.
Figura 6.7: Varredura em amplitude de 10mVp a 1Vp
A partir das Figuras 6.6 e 6.7 é possível concluir que o gerador desenvolvido é capaz de
operar no modo varredura, e, portanto, atende as necessidades do projeto.
94
6.2 Atenuador de Entrada
O atenuador de entrada foi testado com o auxílio de um Variac de bancada conectado a
um divisor resistivo. O conector do atenuador de entrada foi conectado ao divisor resistivo, e
o divisor resistivo foi conectado ao Variac. Girando a manivela do Variac foi possível testar o
funcionamento do detector de escalas do atenuador de entrada, o qual funcionou como esperado.
De acordo com a amplitude do sinal de entrada o microcontrolador escolheu a combinação de
relês de ganho e atenuação que proporcionou o maior sinal possível, sem saturar os estágios
seguintes do medidor de distorção.
6.3 Medidor de Distorção
A fim de verificar o funcionamento do filtro notch a entrada do analisador de distorção foi
diretamente conectada à saída do gerador senoidal configurado para 1kHz e 1Vp. O circuito
atenuador de entrada foi ajustado de forma a não ocorrer overload, como explicado na seção
5.2. O filtro de variáveis de estado foi então pré-ajustado da maneira mencionada na seção 5.3,
e em seguida a frequência de sintonia foi corretamente corrigida pelo circuito automático de
sintonia. O sinal resultante da filtragem foi amplificado segundo as condições abordadas na
Tabela 5.4, também da seção 5.3. A Figura 6.8 mostra os sinais obtidos nos conectores SFV e
DIST, do esquema da Figura III.2 do Apêndice III.
Figura 6.8: Teste do medidor de distorção - Sinal de entrada e harmônicos pós filtro notch
Como citado na seção 5.3, o detector de escala do circuito de amplificador de distorção
seleciona para o sinal em questão a adequada escala de ganho. Logo, para o cálculo de THD o
95
sinal residual, mostrado em verde na Figura 6.8, deve ser dividido pelo ganho do amplificador
de distorção. Para o caso da Figura 6.8 o ganho ajustado pelo detector de escala foi de 2385V/V,
o que resulta em um valor de THD de 0.096%.
Foram realizadas medições do valor eficaz da onda fundamental e do sinal residual para
diversos níveis de amplitude do gerador, nas frequência de 100Hz e 1kHz. Os resultados são
mostrados na Tabela 6.3.
Tabela 6.3: Componentes harmônicos de 1kHz em diferentes amplitudes
Amplitude THD (%)
(V) 100Hz 1kHz
0,1 0,0899 0,0887
0,2 0,0904 0,0898
0,3 0,0910 0,0897
0,6 0,0905 0,0899
1 0,0911 0,0903
2 0,0905 0,0912
2,4 0,0885 0,0891
A partir das Tabelas 6.1, 6.2 e 6.3 foram construídos os gráficos das Figuras 6.9 e 6.10,
que comparam os valores de THD medidos usando o analisador de espectro e o medidor de
distorção construído.
Figura 6.9: THD do gerador senoidal em 100Hz - Medições com analisador de espectro e com o medidor
construído
96
Figura 6.10: THD do gerador senoidal em 1kHz - Medições com analisador de espectro e com o medidor
construído
A partir dos gráficos das Figuras 6.9 e 6.10 é possível concluir que as medidas obtidas
usando o medidor de distorção construído são compatíveis com as obtidas usando o analisador
de espectro. No entanto, nos dois casos se observa que as medições obtidas usando o anali-
sador construído aparentam estar constantemente deslocadas em relação as medições usando o
analisador de espectro. Isso provavelmente se deve a inserção de ruído no circuito, principal-
mente nos amplificadores do circuito de distorção. O ruído é indissociável dos componentes
harmônicos, e por conta disso acaba sendo contabilizado pelo conversor RMS-DC do circuito
de distorção. Uma maneira de minimizar o efeito do ruído seria através da inserção de filtros
para limitar a largura de banda do circuito de distorção.
6.4 Display e modo manual
A Figura 6.11 mostra o display do equipamento durante a medição de THD do próprio
gerador senoidal. O display é divido ao meio, sendo a seção superior reservada ao gerador e a
seção inferior associada ao medidor de THD.
Do lado esquerdo da seção do gerador é possível observar o ajuste atual de amplitude e
frequência. No lado direito é mostrado o passo de frequência e amplitude do gerador. Rota-
cionando os encoders é possível incrementar e decrementar amplitude e frequência pelos seus
respectivos passos. Os passos podem ser modificados através do botão presente no eixo de cada
encoder. Os passos possíveis para frequência são 10Hz, 50Hz, 100Hz, 500Hz e 1kHz, e os
97
Figura 6.11: Display do analisador de distorção
passos de amplitude são 10mV, 50mV, 100mV e 500mV.
A seção do medidor de THD mostra a quantidade de distorção presente no sinal analisado
em duas escalas, em porcentagem e decibéis. As medições de THD são atualizadas a cada 1
segundo.
6.5 Gráficos e modo de varredura
No modo de varredura, tanto em frequência quanto em amplitude, as leituras de distorção
são encaminhadas para o computador por meio de uma porta USB. Foi desenvolvido uma soft-
ware em linguagem Python, disponível no Apêndice VII, para controlar o microcontrolador e
ao mesmo tempo plotar as leituras obtidas pelo equipamento construído. O modo varredura
nada mais é do que a automatização do modo manual. A Figura 6.12 mostra uma varredura em
amplitude onde se encontram plotados os índices de THD do gerador senoidal, em 1Khz, no
intervalo de 100mV a até 2.1V.
As funções dos botões presentes na janela da Figura 6.12 são:
• Media - Clicando neste botão é possível configurar quantas medidas são realizadas para
cada frequência, ou amplitude;
• Congela - Este botão permite que uma curva seja mantida na tela enquanto uma nova
curva é plotada;
• Auto ajuste - Verifica os valores máximo e mínimo do gráfico e dimensiona adequada-
mente a escala vertical;
98
Figura 6.12: Interface graficadora para o modo de varredura
• Liga - Inicia a varredura;
• Desliga - Desliga a varredura;
• Amp inicial ou Freq inicial - Ajusta a amplitude ou frequência inicial da varredura;
• Amp Inicial ou Freq Inicial - Ajusta a amplitude ou frequência inicial da varredura;
• +0.01% ou -0.01% - Desloca a curva 0.01 para cima ou para baixo;
• +0.1% ou -0.1% - Desloca a curva 0.01 para cima ou para baixo;
• +%/div ou %/div - Aumenta ou diminui o número de divisões na janela;
• +amostras ou -amostras - Aumenta ou diminui o passo da varredura;
99
Capítulo 7
Conclusão
Este trabalho de conclusão de curso apresentou o desenvolvimento e a construção de um
medidor de distorção harmônica de baixo custo. Este equipamento se faz necessário na caracte-
rização de circuitos eletrônicos que operam em baixa frequência, principalmente equipamentos
de áudio.
Dada a complexidade do tema em questão todo o trabalho foi dividido e organizado sequen-
cialmente. Primeiramente foi realizada uma revisão bibliográfica sobre conceitos relacionados
à medição de distorção harmônica. Em seguida foram definidas as hipóteses e objetivos do
trabalho. A partir dos objetivos foi possível recorrer novamente à literatura técnica a fim de
se obter o embasamento teórico necessário para propor as especificações do projeto. De posse
das especificações foi possível escolher os materiais usados no projeto, bem como os circuitos
onde esses materiais foram aplicados. Após a construção física dos circuitos foi possível obter
resultados experimentais que validaram as hipóteses inicias do trabalho.
O equipamento construído engloba um gerador senoidal, um circuito medidor de distorção
e uma interface gráfica por meio de um computador. O gerador senoidal possui ajuste de am-
plitude e frequência, e fornece o sinal de referência usando na medição de THD. O circuito
medidor de THD é composto de um filtro analógico que separa os componentes harmônicos e
fundamental do sinal distorcido, tornando possível o cálculo de THD segundo sua definição. O
circuito de controle gerencia tanto o gerador como o medidor, além de possibilitar a comunica-
ção com computadores. De modo geral, os circuitos desenvolvidos e apresentados no Capítulo
5 funcionaram em acordo com o previsto pelo embasamento teórico do Capítulo 2, atendendo
as especificações determinadas no Capítulo 3.
Apesar de possuir um gerador senoidal com distorção harmônica acima do ideal o equipa-
mento construído é capaz de medir THD com razoável precisão. O custo final dos componentes
100
foi de aproximadamente R$500, e portanto, pode-se dizer que o objetivo do trabalho foi alcan-
çado, pois os resultados obtidos mostram que é possível construir um equipamento capaz de
medir THD com baixo custo.
Um aspecto bastante positivo encontrado no desenvolvimento do projeto foi a oportunidade
de trabalhar com uma grande variedade de disciplinas, entre elas, eletrônica analógica e digital,
instrumentação eletrônica, programação de microcontroladores, programação em Python, e por
fim a confecção de placas de circuito impresso.
As principais melhorias futuras estão relacionados a diminuição da distorção harmônica
do gerador senoidal por meio de filtros de reconstrução, e a diminuição do ruído presente no
circuito medidor, por meio de limitação da largura de banda. Além disso, a construção de uma
caixa com colmeias metálicas para cada PCB é desejável para minimizar a captação de ruídos
eletromagnéticos.
101
Referências Bibliográficas
[1] METZLER, B. Audio measurement handbook. 2. ed. Beaverton, Oregon: Audio Precision,
Inc., 2005.
[2] WHITAKER, J.; BENSON, B. Standard handbook of audio and radio engineering. 2. ed.
New York: McGraw-Hill Education, 2002.
[3] OTALA, M. Transient distortion in transistorized audio power amplifiers. IEEE Transac-
tions on Audio and Electroacoustics, v. 18, n. 3, p. 234–239, Sep 1970.
[4] MARCHAND, S. Fourier-based methods for the spectral analysis of musical sounds. In:
. c2013. p. 1–5.
[5] CABOT, R. C. Fundamentals of modern audio measurement. Beaverton, Oregon: Audio
Precision, Inc, 1992.
[6] MACDONALD, J. On making accurate measurements with a harmonic distortion meter.
IRE Transactions on Audio, v. AU-5, n. 6, p. 160–161, November 1957.
[7] HIRATA, T. Quantifying amplifier sound. Wireless World, v. 4, p. 72–75, May 1981.
[8] SHMILOVITZ, D. On the definition of total harmonic distortion and its effect on measu-
rement interpretation. IEEE Transactions on Power Delivery, v. 20, n. 1, p. 526–528, Jan
2005.
[9] GLISSON, T.; BLACK, C.; SAGE, A. The digital computation of discrete spectra using
the fast fourier transform. IEEE Transactions on Audio and Electroacoustics, v. 18, n. 3,
p. 271–287, Sep 1970.
[10] WHITAKER, J.; BENSON, B. Electronics handbook of audio. 3. ed. New York: McGraw-
Hill Education, 2005.
[11] TOW, J. Active RC filters - A state-space realization. Proceedings of the IEEE, v. 56, n.
6, p. 1137–1139, June 1968.
102
[12] PACTITIS, S. Active filters: theory and design. 2. ed. Boca Raton: CRC Press, 2002.
[13] ADAD, W.; IUZZOLINO, R. Low distortion signal generator based on direct digital
synthesis for adc characterization. International Measurement Confederation (IMEKO),
v. 1, n. 1, p. 59–64, July 2012.
[14] SANTOS, G.; BATISTA, P. Análise do desempenho do AD9835 para a geração de um
sinal senoidal. Centro Brasileiro de Pesquisas Físicas - Notas Técnicas, v. 3, n. 1, p.
15–19, Junho 2013.
[15] DEVICES, A. A technical tutorial on digital signal synthesis. Norwood: Analog Devices,
Inc., 1999.
[16] KESTER, W. The data conversion handbook. Newnes: Elsevier, 2005.
[17] TIPLER, P.; MOSCA, G. Física para cientistas e engenheiros: Eletricidade e magne-
tismo, Óptica. 6. ed. Rio de Janeiro: LTC, 2011. v. 2.
[18] HAYT, W.; KEMMERLY, J.; DURBIN, S. Análise de circuitos em engenharia. 8. ed. Rio
de Janeiro: AMGH Editora, 2014.
[19] KITCHIN, C.; COUNTS, L. Analog devices rms to dc conversion application guide. 1.
ed. Analog Devices, Inc, 1983.
[20] WILLIAMS, J. Instrumentation circuitry using RMS-TO-DC converters. Application
Note 106, February 2007. RMS Converters Rectify Average Results.
[21] DE SOUZA, D.; LAVINIA, N. Conectando o pic 16f877a: recursos avançados. São
Paulo: Editora Érica, 2005.
[22] INTERSIL. SPI protocol and BUS configuration. Application Note 1340, August 2007.
[23] ZANCO, W. Microcontroladores pic - técnicas de software e hardware para projetos de
circuitos eletrônicos. 2. ed. São Paulo: Editora Érica, 2008.
[24] SEMICONDUCTORS, P. I2c manual. Application Note 10216-01, March 2003.
[25] DEVICES, A. AD9850 - CMOS, 125 mhz complete dds synthesizer.
http://www.analog.com/media/en/technical-documentation/data-sheets/AD9850.pdf,
2004.
103
[26] INSTRUMENT, T. LME49710 - High-performance, high-fidelity audio operational am-
plifier. http://www.ti.com/lit/ds/symlink/lme49710.pdf, November 2006.
[27] INSTRUMENTS, T. LME49600 - High-performance, high-fidelity, high-current he-
adphone buffer. http://www.ti.com/lit/ds/symlink/lme49600.pdf, January 2008.
[28] DEVICES, A. OP07 - Ultralow offset voltage operational amplifier.
http://www.analog.com/media/en/technical-documentation/data-sheets/OP07.pdf, Fe-
bruary 2002.
[29] INSTRUMENT, T. LM319 - High speed dual comparator.
http://www.ti.com/lit/ds/symlink/lm319-n.pdf, August 2000.
[30] SEMICONDUCTORS, N. 74HC74 - Dual d flip-flop with set and reset, positive edge-
trigger. http://www.nxp.com/documents/data_sheet/74HC_HCT74.pdf, December 2015.
[31] ELECTRONIC, S. O. . Gl5516 - CdS Photoresistor.
http://akizukidenshi.com/download/ds/senba/GL55%20Series%20Photoresistor.pdf.
[32] TECHNOLOGY, L. LTC1968 - Precision wide bandwidth RMS-to-DC converter.
http://cds.linear.com/docs/en/datasheet/1968f.pdf, 2004.
[33] ATMEL. Atmega328 - 8 bit microcontroller. http://www.atmel.com/images/doc8161.pdf,
March 2012.
[34] SEMICONDUCTORS, N. PCF8574 - Remote 8-bit I/O expander for I2C-BUS.
http://www.nxp.com/documents/data_sheet/PCF8574.pdf, November 2002.
[35] INSTRUMENT, T. ADS1115 - Ultra-small, low-power, 16-bit Analog-to-Digital conver-
ter with internal reference. http://www.ti.com/lit/ds/symlink/ads1115.pdf, May 2009.
104
105
Apêndice A
Circuito gerador
Figura A.1: Placa de circuito impresso - Circuito gerador - Placa A
106
Figura A.2: Esquema - Circuito gerador - Placa A
107
Apêndice B
Circuito de entrada
Figura B.1: Placa de circuito impresso - Circuito de entrada - Placa B
108
Figura B.2: Esquema - Circuito de entrada - Placa B
109
110
Apêndice C
Circuito de distorção
Figura C.1: Placa de circuito impresso - Circuito de distorção - Placa C
111
Figura C.2: Esquema do circuito de distorção.
112
113
114
Apêndice D
Microcontrolador
Figura D.1: Placa de circuito impresso - Circuito do microcontrolador - Placa D
115
Figura D.2: Esquema - Circuito do microcontrolador - Placa D
116
117
Apêndice E
Fonte
Figura E.1: Placa de circuito impresso - Circuito da fonte - Placa E
118
Figura E.2: Esquema - Circuito da fonte - Placa E
119
Apêndice F
Codificação - Arduino
#include <Wire.h>
#include <SPI.h>
#include <Rotary.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <Adafruit_MCP4725.h>
Adafruit_MCP4725 dac;
#define TFT_SCLK 13
#define TFT_MOSI 11
#define TFT_DC 8
#define TFT_RST 9
#define TFT_CS 10
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
#define AD9850_CLOCK 125000000
#define DATA 2 #define W_CLK 3
#define FQ_UD 4 #define Ampl1 A0
#define Ampl2 A1 #define Freq1 A2
#define Freq2 A3
int AmplStep = A6; int FreqStep = A7;
Rotary i = Rotary(Ampl1, Ampl2); Rotary r = Rotary(Freq1, Freq2);
long signed int freq = 1000; float freq2 = 0;
char* stepFreqText[5] = "10Hz", "50Hz","100Hz","500Hz","1kHz";
byte stepPointerFreq = 2; signed long incrFreq = 0;
120
String unitsFreq = stepFreqText[stepPointerFreq];
volatile float ampl = 1000.0;
char* stepAmplText[5] = "5.0mV","10mV","25mV","100mV","250mV";
byte stepPointerAmpl = 3;float incrAmpl = 0.0;
String unitsAmpl = stepAmplText[stepPointerAmpl];
float distPercen=0.1;
float distdB=-1.0; byte j=0;
byte k=0; byte escala=B0;
byte preFreq=B0; byte ajuste=B0;
#define pulseHigh(pin) digitalWrite(pin, HIGH); digitalWrite(pin, LOW);
void setup()
dac.begin(0x60);
sendAmplitude();
pinMode(Freq1, INPUT_PULLUP);
pinMode(Freq2, INPUT_PULLUP);
pinMode(Ampl1, INPUT_PULLUP);
pinMode(Ampl2, INPUT_PULLUP);
pinMode(AmplStep, INPUT_PULLUP);
pinMode(FreqStep, INPUT_PULLUP);
pinMode(FQ_UD, OUTPUT);
pinMode(W_CLK, OUTPUT);
pinMode(DATA, OUTPUT);
pinMode(TFT_RST, OUTPUT);
pinMode(TFT_DC, OUTPUT); cli();
PCICR |= (1 << PCIE1);
PCMSK1 |= (1 << PCINT10) | (1 << PCINT11);
PCMSK1 |= (1 << PCINT8) | (1 << PCINT9); sei();
digitalWrite(W_CLK, LOW);
digitalWrite(FQ_UD, LOW);
digitalWrite(DATA, LOW); delay(5);
digitalWrite(W_CLK, HIGH); delay(5);
digitalWrite(W_CLK, LOW); delay(5);
digitalWrite(DATA, LOW);
121
digitalWrite(FQ_UD, LOW); delay(5);
digitalWrite(FQ_UD, HIGH); delay(5);
digitalWrite(FQ_UD, LOW);
sendFrequency(1000);
tft.initR(INITR_BLACKTAB);
tft.setRotation(3); tft.setTextWrap(false);
tft.fillScreen(ST7735_BLACK); mascara();
updateDisplayFreq(); updateDisplayFreqStep();
updateDisplayAmpl(); updateDisplayAmplStep();
void loop(void)
if (analogRead(AmplStep)<100) stepPointerAmpl++;
if (stepPointerAmpl > 4) stepPointerAmpl=0;
updateDisplayAmplStep();
delay(250);
if (analogRead(FreqStep)<100) stepPointerFreq++;
if (stepPointerFreq > 4) stepPointerFreq=0;
updateDisplayFreqStep(); delay(250);
if(j==1)sendAmplitude(); j=0;
if(k==1)sendAmplitude();
Wire.beginTransmission(32);Wire.write(ajuste);
Wire.endTransmission(); k=0;
void getStepFreq()
switch(stepPointerFreq)
case 0: incrFreq = 10; break;
case 1: incrFreq = 50; break;
case 2: incrFreq = 100; break;
case 3: incrFreq = 500; break;
case 4: incrFreq = 1000; break;
void getStepAmpl()
switch(stepPointerAmpl)
case 0: incrAmpl = 5.0; break;
case 1: incrAmpl = 10.0; break;
case 2: incrAmpl = 25.0; break;
122
case 3: incrAmpl = 100.0; break;
case 4: incrAmpl = 250.0; break;
void mascara()
tft.drawFastHLine(0,0,160, ST7735_WHITE);
tft.setCursor(53,3); tft.setTextSize(1);
tft.setTextColor(ST7735_WHITE); tft.print("Gerador");
tft.drawFastHLine(0,12,160, ST7735_WHITE);
tft.drawFastHLine(0,65,160, ST7735_WHITE);
tft.setCursor(50,69); tft.setTextSize(1);
tft.setTextColor(ST7735_WHITE);tft.print("Analisador");
tft.drawFastHLine(0,78, 160 , ST7735_WHITE);
tft.drawFastHLine(0,127,160, ST7735_WHITE);
void updateDisplayFreqStep()
unitsFreq = stepFreqText[stepPointerFreq];
tft.fillRect(120, 16, 40, 15, ST7735_BLACK);
tft.setTextColor(ST7735_RED);tft.setTextSize(1);
tft.setCursor(120, 21);tft.print(unitsFreq);
void updateDisplayAmplStep()
unitsAmpl = stepAmplText[stepPointerAmpl];
tft.fillRect(120, 41, 40, 15, ST7735_BLACK);
tft.setTextColor(ST7735_RED); tft.setTextSize(1);
tft.setCursor(120, 45);tft.print(unitsAmpl);
void updateDisplayFreq()
tft.fillRect(0, 16, 110, 25, ST7735_BLACK);
tft.setTextColor(ST7735_GREEN);
tft.setTextSize(2); if (freq < 1000)
tft.setCursor(10, 21); tft.print(freq);
tft.setCursor(40, 21); tft.print(" Hz");
else tft.setCursor(10, 21);
if (freq < 9999) tft.print((float)freq/1000, 3);
if (freq > 9999) tft.print((float)freq/1000, 2);
tft.setCursor(60, 21); tft.print(" kHz");
void updateDisplayAmpl()
123
tft.fillRect(0, 41, 110, 23, ST7735_BLACK);
tft.setTextColor(ST7735_GREEN); tft.setTextSize(2);
if (ampl < 1000.0) tft.setCursor(10,45);
tft.print((float)ampl, 1); tft.setCursor(60,45);
tft.print(" mV"); else tft.setCursor(10,45);
tft.print((float)ampl/1000, 3); tft.setCursor(60,45);
tft.print(" V");
void updateDisplayGain()
tft.fillRect(0, 83, 110, 24, ST7735_BLACK);
tft.setTextColor(ST7735_GREEN); tft.setTextSize(2);
if (ampl < 10.0) tft.setCursor(10, 86);
tft.print(distPercen, 3); tft.setCursor(60, 86);
else tft.setCursor(10, 86); tft.print(distPercen, 2);
tft.setCursor(60, 86); tft.print("%");
tft.fillRect(110, 83, 50, 15, ST7735_BLACK);
tft.setTextColor(ST7735_RED); tft.setTextSize(1);
tft.setCursor(110, 86); if(distdB>-9.999) tft.print(" ");
tft.print(distdB,2); tft.print("dB");
void updateDisplayTHD()
tft.fillRect(0, 104, 110, 23, ST7735_BLACK);
tft.setTextColor(ST7735_GREEN);
tft.setTextSize(2); if (ampl < 10.0)
tft.setCursor(10,109); tft.print(distPercen, 3);
tft.setCursor(60, 109); else
tft.setCursor(10, 109); tft.print(distPercen, 2);
tft.setCursor(60, 109);
tft.print("%"); tft.fillRect(110, 105, 50, 15, ST7735_BLACK);
tft.setTextColor(ST7735_RED);
tft.setTextSize(1); tft.setCursor(110, 109);
if(distdB>-9.999) tft.print(" "); tft.print(distdB,2);
tft.print("dB");
void sendFrequency(double frequency)
unsigned long tuning_word;
124
float tuneword=(frequency * pow(2, 32))
tuning_word=(unsigned long) tuneword;
shiftOut(DATA, W_CLK, LSBFIRST, tuning_word);
shiftOut(DATA, W_CLK, LSBFIRST, tuning_word >> 8);
shiftOut(DATA, W_CLK, LSBFIRST, tuning_word >> 16);
shiftOut(DATA, W_CLK, LSBFIRST, tuning_word >> 24);
shiftOut(DATA, W_CLK, LSBFIRST, 0x0);
digitalWrite (FQ_UD, HIGH); digitalWrite(FQ_UD, LOW);
void sendAmplitude()
dac.setVoltage((int) 4095-1.504*ampl, false);
void ajustaFiltro()
freq2=freq; if(freq2<=200) escala=1;if(freq2>2000) escala=4;
freq2=freq2/100.0;;if(freq2>200&freq2<=2000)escala=2;
freq2=freq2/10.0; preFreq= ceil(0.08077*freq2-0.9087);
if(preFreq>15)preFreq=15;if(preFreq<8)preFreq=preFreq-1;
escala=escala<<4; ajuste=~(escala|preFreq);
tft.fillRect(0, 104, 110, 23, ST7735_BLACK);
tft.setTextColor(ST7735_GREEN);
tft.setTextSize(2); tft.setCursor(10,109);tft.print(ajuste,BIN);
k=1;
ISR(PCINT1_vect) unsigned char result = r.process();getStepFreq();
if (result) if (result == DIR_CW)
if ((freq + incrFreq) <= 22000) freq += incrFreq;
else if((freq-incrFreq)>= 20)freq -= incrFreq;
if (freq <= 20) freq = 20;if (freq >=20000) freq = 20000;
updateDisplayFreq(); sendFrequency(freq);
ajustaFiltro(); unsigned char result2 = i.process();
getStepAmpl();
if (result2)
if(result2 == DIR_CW)if((ampl+incrAmpl)<=2500.0)ampl+= incrAmpl;
else if ((ampl - incrAmpl) >= 2.5) ampl -= incrAmpl;
if (ampl <= 2.5) ampl = 2.5;if (ampl >=2500.0) ampl = 2500.0;j=1;
updateDisplayAmpl();
125
Apêndice G
Codificação - Python
Código fonte baseado no disponível em:
http://rheslip.blogspot.com.br/2015/08/the-simple-scalar-network-analyser.html
import pyaudio
import math
import time
import serial
import numpy
import tkFont
from time import sleep
from Tkinter import *
from tkFileDialog import askopenfilename
from tkSimpleDialog import askstring
from tkMessageBox import *
SERIALPORT = "COM4"
# Values that can be modified
GRWN = 1024 # Width of the grid
GRHN = 512 # Height of the grid
X0L = 20 # Left top X value of grid
Y0T = 25 # Left top Y value of grid
Vdiv = 12 # Number of vertical divisions
TRACEmode = 3 # 1 normal mode, 2 max hold, 3 average
TRACEaverage = 1 # Number of samples
TRACEreset = True # True for first new trace
126
Sweepreset = False # flag to restart the sample sweep
DBdivlist = [1, 2, 3, 5, 10, 20] # dB per division
DBdivindex = 4 # 10 dB/div as initial value
DBlevel = 10 # Reference level
MAXSAMPLES=1000
Samplelist = [100, 200,500,1000] # samples per sweep
Sampleindex = 0 # initial value
SAMPLES = Samplelist[Sampleindex] # samples per sweep
# Colors that can be modified
COLORframes = "#000080" # Color = "#rrggbb" rr=red gg=green bb=blue
COLORcanvas = "#000000"
COLORgrid = "#808080"
COLORtrace1 = "#00ff00"
COLORtrace2 = "#ff8000"
COLORtext = "#ffffff"
COLORsignalband = "#ff0000"
COLORaudiobar = "#606060"
COLORaudiook = "#00ff00"
COLORred = "#ff0000"
COLORMarker1 = "#ff0000"
COLORMarker2 = "#ffff00"
# Button sizes that can be modified
Buttonwidth1 = 12
Buttonwidth2 = 8
# Initialisation of general variables
STARTfrequency = 20.0 # Startfrequency
STOPfrequency = 20000.0 # Stopfrequency
# Other global variables required in various routines
GRW = GRWN # Initialize GRW
GRH = GRHN # Initialize GRH
CANVASwidth = GRW + 2 * X0L # The canvas width
CANVASheight = GRH + 80 # The canvas height
DBmreadings = [0 for x in range(MAXSAMPLES)]
127
REFreadings = [0 for x in range(MAXSAMPLES)]
T1line = [] # Trace line channel 1
T2line = [] # Trace line channel 2
S1line = [] # Line for start of signal band indication
S2line = [] # line for stop of signal band indication
RUNstatus = 1
STOREtrace = False # Store and display trace
Referenceon = 0 # apply calbration reference
REFstore = 0 # save calbration readings
Marker1x = 0 # marker pip 1 location
Marker1y = 0
Marker2x = 0 # marker pip 2
Marker2y = 0
def Zerosamples():
global DBmreadings
DBmreadings = [0 for x in range(MAXSAMPLES)]
# ================== Start widgets routines ========================
def Bnot():
print "Routine not made yet"
# handle markers when mouse is clicked in middle frame
def Bmarker1(event):
global Marker1x
global Marker1y
Marker1x=event.x
Marker1y=event.y
def Bmarker2(event):
global Marker2x
global Marker2y
Marker2x=event.x
Marker2y=event.y
#print "button 2 clicked at", event.x, event.y
def BAveragemode():
global TRACEmode
128
global TRACEaverage
global TRACEreset
TRACEreset = True
TRACEmode = 3
s = askstring("Distorcao Harmonica", "Valor: " + str(TRACEaverage) + "x\n\nNovo valor:\n(1-n)")
if (s == None):
return()
try: v = int(s)
except:
s = "erro"
if s != "erro":
TRACEaverage = v
if TRACEaverage < 1:
TRACEaverage = 1
if TRACEaverage > 30:
TRACEaverage = 30 # avoid very long sweep times
UpdateScreen() # Always Update
def Calibrateref():
global REFstore
global RUNstatus
global Sweepreset
if REFstore == 0:
REFstore = 1
Sweepreset= True # force a new sweep
else:
REFstore = 0
UpdateAll() # Always Update
def Calonoff():
global Referenceon
global RUNstatus
if Referenceon == 0:
Referenceon = 1
129
else:
Referenceon = 0
if RUNstatus == 0: # Update if stopped
UpdateScreen()
def BSTOREtrace():
global STOREtrace
global T1line
global T2line
if STOREtrace == False:
T2line = T1line
STOREtrace = True
else:
STOREtrace = False
UpdateTrace() # Always Update
def BAutoY(): # auto adjust offset and range
global Vdiv
global DBlevel
global DBdivlist
global DBdivindex
global DBmreadings # samples
global REFreadings # reference samples
global Referenceon
global SAMPLES
readings=numpy.array(DBmreadings[0:SAMPLES])
ref = numpy.array(REFreadings[0:SAMPLES])
if Referenceon:
readings=readings-ref
maxDB=max(readings)
minDB=min(readings)
DBlevel=int (maxDB) # round down to nearest int
DBperdivision=(maxDB-minDB)*1.2/Vdiv
#tricky way to find closest value in a list
print DBdivindex
130
UpdateTrace() # Always Update
def BSNmode():
global RUNstatus
if RUNstatus == 0: # Update if stopped
UpdateTrace()
def BSNfreq1():
global RUNstatus
global CENTERsignalfreq
global SNfreqstep
global SNmeasurement
CENTERsignalfreq = CENTERsignalfreq - SNfreqstep
if CENTERsignalfreq < 0:
CENTERsignalfreq = 0
if RUNstatus == 0: # Update if stopped
UpdateTrace()
def BStart():
global RUNstatus
if (RUNstatus == 0):
RUNstatus = 1
UpdateScreen() # Always Update
def Blevel1():
global RUNstatus
global DBlevel
DBlevel = DBlevel - 1
if RUNstatus == 0: # Update if stopped
UpdateTrace()
def Blevel2():
global RUNstatus
global DBlevel
DBlevel = DBlevel + 1
if RUNstatus == 0: # Update if stopped
UpdateTrace()
def Blevel3():
131
global RUNstatus
global DBlevel
DBlevel = DBlevel - 10
if RUNstatus == 0: # Update if stopped
UpdateTrace()
def Blevel4():
global RUNstatus
global DBlevel
DBlevel = DBlevel + 10
if RUNstatus == 0: # Update if stopped
UpdateTrace()
def BStop():
global RUNstatus
global Sweepreset
if (RUNstatus == 1):
RUNstatus = 0
elif (RUNstatus == 2):
RUNstatus = 3
elif (RUNstatus == 3):
RUNstatus = 3
elif (RUNstatus == 4):
RUNstatus = 3
Sweepreset=True # stop the sweep
UpdateScreen() # Always Update
def BStartfrequency():
global STARTfrequency
global STOPfrequency
global Referenceon
global RUNstatus
global Sweepreset
if (s == None):
return()
try:
132
v = float(s)
except:
s = "erro"
if s != "erro":
STARTfrequency = abs(v)
if STOPfrequency <= STARTfrequency:
STOPfrequency = STARTfrequency + 1
Referenceon = 0 # ref level not valid
Zerosamples() # reset sample values
Sweepreset = True # Reset trace peak and trace average
if RUNstatus == 0: # Update if stopped
UpdateTrace()
def BStopfrequency():
global STARTfrequency
global STOPfrequency
global Referenceon
global RUNstatus
global Sweepreset
if (s == None):
return()
try:
v = float(s)
except:
s = "erro"
if s != "erro":
STOPfrequency = abs(v)
if STOPfrequency < 10: # Minimum stopfrequency 10 Hz
STOPfrequency = 10
if STARTfrequency >= STOPfrequency:
STARTfrequency = STOPfrequency - 1
Referenceon = 0 # ref level not valid
Zerosamples() # reset sample values
Sweepreset = True # Reset trace peak and trace average
133
if RUNstatus == 0: # Update if stopped
UpdateTrace()
# samples per sweep can also be set via the setup dialog for custom values
def Bsamples1():
global SAMPLES
global Samplelist
global Sampleindex
global Referenceon
global RUNstatus
global Sweepreset
if (Sampleindex >= 1):
Sampleindex = Sampleindex - 1
SAMPLES=Samplelist[Sampleindex]
Referenceon=0 # reference array is no longer valid
Zerosamples() # reset sample values
Sweepreset = True # restart sweep
if RUNstatus == 0: # Update if stopped
UpdateScreen()
if RUNstatus == 2: # Restart if running
RUNstatus = 4
def Bsamples2():
global SAMPLES
global Referenceon
global Samplelist
global Sampleindex
global RUNstatus
global Sweepreset
if (Sampleindex < len(Samplelist) - 1):
Sampleindex = Sampleindex + 1
SAMPLES=Samplelist[Sampleindex]
Referenceon=0 # reference array is no longer valid
Zerosamples() # reset sample values
Sweepreset = True # restart sweep
134
if RUNstatus == 0: # Update if stopped
UpdateScreen()
if RUNstatus == 2: # Restart if running
RUNstatus = 4
def BDBdiv1():
global DBdivindex
global RUNstatus
if (DBdivindex >= 1):
DBdivindex = DBdivindex - 1
if RUNstatus == 0: # Update if stopped
UpdateTrace()
def BDBdiv2():
global DBdivindex
global DBdivlist
global RUNstatus
if (DBdivindex < len(DBdivlist) - 1):
DBdivindex = DBdivindex + 1
if RUNstatus == 0: # Update if stopped
UpdateTrace()
# =============================== Main routine ======================
def Sweep(): # Read samples
global SERIALPORT
global DBmreadings
global REFstore
global REFreadings
global STARTfrequency
global STOPfrequency
global RUNstatus
global Sweepstatus
global SMPfftlist
global SMPfftindex
global SAMPLES
135
global UPDATEspeed
global RXbuffer
global RXbufferoverflow
global TRACEmode
global TRACEaverage
global Sweepreset
while (True):
# RUNstatus = 1 : Open Stream
if (RUNstatus == 1):
if UPDATEspeed < 1:
UPDATEspeed = 1.0
TRACESopened = 1
try:
ser = serial.Serial(SERIALPORT, 9600, timeout=1)
RUNstatus = 2
except:
RUNstatus = 0
showerror("Nao foi possivel conectar com o arduino")
UpdateScreen()
# RUNstatus = 2: Reading data from power monitor
if (RUNstatus == 2):
adsamplecount=1
if (TRACEmode == 3): # average mode
adsamplecount=TRACEaverage
#create the list of frequencies - X axis
incr=(STOPfrequency-STARTfrequency)/SAMPLES
t = numpy.arange(STARTfrequency, STOPfrequency, incr)
j=0
step=0
# DBmreadings =[] # y axis measurements
#for frequency in t:
frequency=STARTfrequency
while ((step < SAMPLES) & (Sweepreset==False)):
136
cmd = str(long(frequency))
cmd = cmd + "\n"
#print cmd
ser.write(cmd) # set DDS frequency
dbm = 0
i=0
UpdateTrace()
#sleep(0.02)
while (i < adsamplecount) :
ser.write("\n") #
line = ser.readline()
line = line.strip()
if len(line) !=0:
#print line
dbm = dbm + float(line)
i=i+1
dbm = dbm/adsamplecount
#print dbm
DBmreadings[step]= dbm
if REFstore == True:
REFreadings[step]= dbm
frequency=frequency+incr
step=step+1
cmd = str(long(STARTfrequency))
cmd = cmd + "\n"
UpdateAll()
if ((REFstore == True) & (step == SAMPLES)):
# RUNstatus = 3: Stop
# RUNstatus = 4: Stop and restart
if (RUNstatus == 3) or (RUNstatus == 4):
ser.close()
if RUNstatus == 3:
RUNstatus = 0 # Status is stopped
137
if RUNstatus == 4:
RUNstatus = 1 # Status is (re)start
UpdateScreen() # UpdateScreen() call
# Update tasks and screens by TKinter
root.update_idletasks()
root.update() # update screens
def UpdateAll(): # Update Data, trace and screen
MakeTrace() # Update the traces
UpdateScreen() # Update the screen
def UpdateTrace(): # Update trace and screen
MakeTrace() # Update traces
UpdateScreen() # Update the screen
def UpdateScreen(): # Update screen with trace and text
MakeScreen() # Update the screen
root.update() # Activate updated screens
def MakeTrace(): # Update the grid and trace
global SAMPLES
global DBmreadings
global REFreadings
global Referenceon
global T1line
global T2line
global S1line
global S2line
global STOREtrace
global X0L # Left top X value
global Y0T # Left top Y value
global GRW # Screenwidth
global GRH # Screenheight
global Vdiv # Number of vertical divisions
global STARTfrequency
global STOPfrequency
global CENTERsignalfreq
138
global STARTsignalfreq
global DBdivlist # dB per division list
global DBdivindex # Index value
global DBlevel # Reference level
global SAMPLErate
# Set the TRACEsize variable
TRACEsize = SAMPLES # Set the trace length
if TRACEsize == 0: # If no trace, skip rest of this routine
return()
# Vertical conversion factors (level dBs) and border limits
Yconv = float(GRH) / (Vdiv * DBdivlist[DBdivindex])
Yc = float(Y0T) + GRH + Yconv * (DBlevel -(Vdiv * DBdivlist[DBdivindex]))
Ymin = Y0T
Ymax = Y0T + GRH
# Horizontal conversion factors (frequency Hz) and border limits
Fpixel = float(STOPfrequency - STARTfrequency) / GRW
Fsample = float(STOPfrequency - STARTfrequency) / (TRACEsize - 1)
T1line = []
n = 0
while n < TRACEsize:
F = n * Fsample
if F <= STOPfrequency:
x = X0L + F / Fpixel
T1line.append(int(x + 0.5))
try:
if Referenceon:
y = Yc - Yconv * (DBmreadings[n]-REFreadings[n])
else:
y = Yc - Yconv * DBmreadings[n]
except:
y = Ymax
if (y < Ymin):
y = Ymin
139
if (y > Ymax):
y = Ymax
T1line.append(int(y + 0.5))
n = n + 1
def MakeScreen(): # Update the screen with traces and text
global X0L # Left top X value
global Y0T # Left top Y value
global GRW # Screenwidth
global GRH # Screenheight
global T1line
global T2line
global S1line
global S2line
global STOREtrace
global Vdiv # Number of vertical divisions
global RUNstatus
global AUDIOstatus # 0 audio off, 1 audio on
global UPDATEspeed
global STARTfrequency
global STOPfrequency
global CENTERsignalfreq
global STARTsignalfreq
global STOPsignalfreq
global SNenabled
global SNmeasurement
global SNresult
global DBdivlist # dB per division list
global DBdivindex # Index value
global DBlevel # Reference level
global SAMPLErate
global TRACEmode # 1 normal 2 max 3 average
global TRACEaverage # Number of traces for averageing
global AUDIOlevel # Level of audio input 0 to 1
140
global FFTwindow
global COLORgrid # The colors
global COLORtrace1
global COLORtrace2
global COLORtext
global COLORsignalband
global COLORaudiobar
global COLORaudiook
global COLORaudiomax
global COLORMarker1
global COLORMarker2
global CANVASwidth
global CANVASheight
global RXbuffer
global RXbufferoverflow
global REFstore
global Referenceon
global Marker1x
global Marker1y
global Marker2x
global Marker2y
# Delete all items on the screen
de = ca.find_enclosed ( 0, 0, CANVASwidth+1000, CANVASheight+1000)
for n in de:
ca.delete(n)
# Draw horizontal grid lines
i = 0
x1 = X0L
x2 = X0L + GRW
x3 = x1+2 # db labels X location
db= DBlevel
while (i <= Vdiv):
y = Y0T + i * GRH/Vdiv
141
Dline = [x1,y,x2,y]
ca.create_line(Dline, fill=COLORgrid)
txt = str(db) # db labels
idTXT = ca.create_text (x3, y-5, text=txt, anchor=W, fill=COLORtext)
db = db - DBdivlist[DBdivindex]
i = i + 1
# Draw vertical grid lines
i = 0
y1 = Y0T
y2 = Y0T + GRH
freq= STARTfrequency
freqstep= (STOPfrequency-STARTfrequency)/10
while (i < 11):
x = X0L + i * GRW/10
Dline = [x,y1,x,y2]
ca.create_line(Dline, fill=COLORgrid)
txt = str(freq/1000) # freq labels in khz
txt= txt + "k"
idTXT = ca.create_text (x-10, y2+10, text=txt, anchor=W, fill=COLORtext)
freq=freq+freqstep
i = i + 1
# Draw traces
if len(T1line) > 4:
ca.create_line(T1line, fill=COLORtrace1)
if STOREtrace == True and len(T2line) > 4:
ca.create_line(T2line, fill=COLORtrace2)
# Start and stop frequency and dB/div and trace mode
txt = str(STARTfrequency) + "Hz ate " + str(STOPfrequency/1000) + " kHz"
txt = txt + " " + str(DBdivlist[DBdivindex]) + " dB/div"
txt = txt + " Level: " + str(DBlevel) + " dB "
if TRACEmode == 1:
txt = txt + " Modo normal "
if TRACEmode == 2:
142
txt = txt + " Valor maximo "
if TRACEmode == 3:
txt = txt + " Media (" + str(TRACEaverage) + ") "
x = X0L +300
y = Y0T+GRH+40
idTXT = ca.create_text (x, y, text=txt, anchor=W, fill=COLORtext)
if Referenceon == True:
txt = " Com Referencia"
x = X0L +700
y = Y0T+GRH+40
idTXT = ca.create_text (x, y, text=txt, anchor=W, fill=COLORred)
else:
txt = " Sem referencia"
x = X0L +700
y = Y0T+GRH+40
idTXT = ca.create_text (x, y, text=txt, anchor=W, fill=COLORtext)
if REFstore == 1:
txt = "CALIBRANDO!"
x = X0L +430
y = Y0T+40
idTXT = ca.create_text (x, y, text=txt, anchor=W, fill=COLORred)
# Runstatus and level information
if (RUNstatus == 0) or (RUNstatus == 3):
txt = "Varredura desligada"
else:
txt = "Varredura ligada"
x = X0L
y = Y0T+GRH+40
IDtxt = ca.create_text (x, y, text=txt, anchor=W, fill=COLORtext)
txt = str(SAMPLES)+ " amostras por varredura "
143
x = X0L + 100
y = Y0T+GRH+40
idTXT = ca.create_text (x, y, text=txt, anchor=W, fill=COLORtext)
# show the values at the mouse cursor
# note the magic numbers below were determined by looking at the cursor values
# not sure why they don’t correspond to X0T and Y0T
cursorx = (STARTfrequency + (root.winfo_pointerx()-root.winfo_rootx()-X0L-4) * (STOPfrequency-STARTfrequency)/GRW) /1000
cursory = DBlevel - (root.winfo_pointery()-root.winfo_rooty()-Y0T-50) * Vdiv*DBdivlist[DBdivindex] /GRH
txt = "Cursor " + str(cursorx) + " kHz " + str(cursory) + " dB"
x = X0L + 40
y = Y0T -10
idTXT = ca.create_text (x, y, text=txt, anchor=W, fill=COLORtext)
Marker1valid=False
if ((Marker1x > 20) & (Marker1y >20)): # show on screen markers
Marker1valid=True
idTXT = ca.create_text (Marker1x-3, Marker1y+4, text="^", anchor=W, fill=COLORMarker1)
Marker1freq = (STARTfrequency + (Marker1x-19) * (STOPfrequency-STARTfrequency)/GRW) /1000000
Marker1db = DBlevel - (Marker1y-20) * Vdiv*DBdivlist[DBdivindex] /GRH
txt = "Cursor 1 " + str(Marker1freq) + " kHz " + str(Marker1db) + " dB"
x = X0L + 300
y = Y0T -10
idTXT = ca.create_text (x, y, text=txt, anchor=W, fill=COLORMarker1)
Marker2valid=False
if ((Marker2x > 20) & (Marker2y >20)): # show on screen markers
Marker2valid=True
idTXT = ca.create_text (Marker2x-3, Marker2y+4, text="^", anchor=W, fill=COLORMarker2)
Marker2freq = (STARTfrequency + (Marker2x-19) * (STOPfrequency-STARTfrequency)/GRW) /1000000
Marker2db = DBlevel - (Marker2y-20) * Vdiv*DBdivlist[DBdivindex] /GRH
txt = "Cursor 2" + str(Marker2freq) + " kHz " + str(Marker2db) + " dB"
x = X0L + 520
y = Y0T -10
idTXT = ca.create_text (x, y, text=txt, anchor=W, fill=COLORMarker2)
# show marker delta only if both are valid
144
if (Marker1valid & Marker2valid):
Deltafreq = abs(Marker2freq-Marker1freq)
Deltadb = abs(Marker2db-Marker1db)
txt = "Delta " + str(Deltafreq) + " kHz " + str(Deltadb) + " dB"
x = X0L + 750
y = Y0T -10
idTXT = ca.create_text (x, y, text=txt, anchor=W, fill=COLORtext)
# ================ Make Screen ==========================
root=Tk()
root.title("Medidor de THD")
root.minsize(100, 100)
frame1 = Frame(root, background=COLORframes, borderwidth=5, relief=RIDGE)
frame1.pack(side=TOP, expand=1, fill=X)
frame2 = Frame(root, background="black", borderwidth=5, relief=RIDGE)
frame2.pack(side=TOP, expand=1, fill=X)
frame3 = Frame(root, background=COLORframes, borderwidth=5, relief=RIDGE)
frame3.pack(side=TOP, expand=1, fill=X)
ca = Canvas(frame2, width=CANVASwidth, height=CANVASheight, background=COLORcanvas)
ca.bind("<Button-1>", Bmarker1)
ca.bind("<Button-3>", Bmarker2)
ca.pack(side=TOP)
b = Button(frame1, text="Media", width=Buttonwidth1, command=BAveragemode)
b.pack(side=LEFT, padx=5, pady=5)
b = Button(frame1, text="Congela", width=Buttonwidth1, command=BSTOREtrace)
b.pack(side=LEFT, padx=5, pady=5)
b = Button(frame1, text="Auto ajuste", width=Buttonwidth1, command=BAutoY)
b.pack(side=LEFT, padx=5, pady=5)
b = Button(frame1, text="Ref liga/desliga", width=Buttonwidth1, command=Calonoff)
b.pack(side=RIGHT, padx=5, pady=5)
b = Button(frame1, text="Calibrar", width=Buttonwidth1, command=Calibrateref)
b.pack(side=RIGHT, padx=5, pady=5)
b = Button(frame3, text="Liga", width=Buttonwidth2, command=BStart)
b.pack(side=LEFT, padx=5, pady=5)
145
b = Button(frame3, text="Desliga", width=Buttonwidth2, command=BStop)
b.pack(side=LEFT, padx=5, pady=5)
b = Button(frame3, text="Freq inicial", width=Buttonwidth2, command=BStartfrequency)
b.pack(side=LEFT, padx=5, pady=5)
b = Button(frame3, text="Freq final", width=Buttonwidth2, command=BStopfrequency)
b.pack(side=LEFT, padx=5, pady=5)
b = Button(frame3, text="+ amostras", width=Buttonwidth2, command=Bsamples2)
b.pack(side=RIGHT, padx=5, pady=5)
b = Button(frame3, text="- amostras", width=Buttonwidth2, command=Bsamples1)
b.pack(side=RIGHT, padx=5, pady=5)
b = Button(frame3, text="+dB/div", width=Buttonwidth2, command=BDBdiv2)
b.pack(side=RIGHT, padx=5, pady=5)
b = Button(frame3, text="-dB/div", width=Buttonwidth2, command=BDBdiv1)
b.pack(side=RIGHT, padx=5, pady=5)
b = Button(frame3, text="+10dB", width=Buttonwidth2, command=Blevel4)
b.pack(side=RIGHT, padx=5, pady=5)
b = Button(frame3, text="-10dB", width=Buttonwidth2, command=Blevel3)
b.pack(side=RIGHT, padx=5, pady=5)
b = Button(frame3, text="+1dB", width=Buttonwidth2, command=Blevel2)
b.pack(side=RIGHT, padx=5, pady=5)
b = Button(frame3, text="-1dB", width=Buttonwidth2, command=Blevel1)
b.pack(side=RIGHT, padx=5, pady=5)
# self.Canvas.bind(’<Button-1>’, self.on_click) # for cursor location
# ================ Call main routine ===============================
root.update() # Activate updated screens
Sweep()
top related