Post on 26-Jul-2022
Introdução a Engenharia Elétrica - 323100
Escola Politécnica da Universidade de São Paulo
Departamentos da Engenharia Elétrica
PCS Computação e Sistemas Digitais
PEA Energia e Automação Elétricas
PSI Sistemas Eletrônicos
PTC Telecomunicações e Controle Setembro de 2018
Módulo 1 – Conversores AD e DA
Aula S8
V1.1
2
Sumário
1. Porta serial de comunicação com o Kit
2. Sinais analógicos e digitais
3. Conversores Analógico - Digitais
4. Conversor Digital - Analógico
3
● Atualmente: sistema de arquivos
– Para armazenar os executáveis produzidos pelos
programadores.
● Nova função: serial virtual através da USB
– Para comunicação com o Kit
– Para debugar o programa
Porta serial virtual via USB
4
● Instalar o driver da porta serial virtual
No windows, uso o arquivo dpinst_x86.exe ou dpinst_amd64.exe
disponível no arquivo ‘Drivers en.stsw-link009.zip’
Mais detalhes, vide apresentação específica no eDisciplinas.
● Instalar um programa emulador de terminal
No windows, uso o arquivo teraterm-4.84.exe
Mais detalhes, vide apresentação específica no eDisciplinas.
Obs.: Há outros programas emuladores de terminal, tais como o
Hyperterminal, Putty, Minicom, etc.
Esses programas já devem estar instalados na sala de aula.
Como se preparar para o uso...
5
Como utilizar no seu programa
● Em geral, utilize chamadas para a rotina printf da forma tradicional
do ANSI C.
● printf(“Ola mundo!!!\r\n”);
● O kit STM32 envia os caracteres através da porta serial virtual até o
seu computador.
● Seu computador devem estar executando o programa emulador de
terminal Teraterm (ou similar), com a serial USB virtual selecionada
como porta de comunicação.
● As definições padrão da comunicação são: velocidade de 9600 bps, 8
bits de dados, paridade nenhuma, 1 bit de parada.
6
● Sinais analógicos – sinais análogos às grandezas físicas.
– São contínuos no tempo.
– Podem ser medidos ou aferidos em uma ampla gama de valores e
unidades.
● Como um computador/sistema eletrônico pode usar esses sinais?
1. Convertendo a grandeza física em uma tensão equivalente, ou
fazendo sua transdução, usando um sensor por exemplo.
2. Transformando o valor instantâneo do sinal de tensão, em uma
representação numérica simbólica, com uma regra de formação
conhecida.
● Esse dispositivo é denominado de ADC (Analog to Digital Converter).
Conversão analógico - digital
7
● Dispositivo eletrônico capaz de gerar uma
representação digital de uma grandeza analógica,
tipicamente uma tensão.
● Empregados na interface entre dispositivos digitais
(microcontroladores, etc) e dispositivos analógicos,
como sensores de temperatura, pressão, audio, vídeo,
etc.
Conversor Analógico Digital (ADC)
Circuito decondicionamento
externo
Circuitoamostrador
Circuitodigitalizador
001010010011
00101001111
001011110011
011010010011
8
● Problema: Os sinais analógicos podem assumir valores dos mais
diversos em magnitude. Os computadores só trabalham com tensões
próximas de suas tensões de alimentação. Como compatibilizar esses
níveis de tensão?
● Solução: O computador utiliza um circuito de condicionamento para
tornar as medidas condizentes com os limites do dispositivo. As
magnitudes são reescalonadas e limitadas, de forma a proteger os demais
circuitos do ADC do microcontrolador
Conversão analógico/digital - condicionamento
t
V
Sinal analógico original
t
V
Sinal analógico condicionadoSinal analógico original
9
● Problema: Computadores executam operações de forma cíclica,
conforme seu clock ou relógio interno, enquanto que um sinal analógico
pode variar continuamente ao longo do tempo. Dessa forma, como deve-
se registrar um sinal contínuo?
● Solução: O computador registra o valor dos sinais analógicos
periodicamente, conforme uma dada frequência de aquisição, ajustada
adequadamente pelo usuário. Um sinal contínuo torna-se uma série, uma
sequência de valores.
Conversão analógico/digital - amostragem
t
V
Sinal analógico condicionado
t
V
Sinal analógico amostrado
10
● Processo de capturar o valor de um sinal durante um intervalo de
tempo.
● Normalmente, os ADCs são usados para capturar amostras em
intervalos regulares de tempo.
● A taxa ou frequência de captura (amostras/s) deve ser escolhida
corretamente para que seja possível continuar a representar (observar) o
sinal original, mesmo após essa amostragem.
Amostragem no conversor analógico digital
Exemplos de frequência
de amostragem
insuficiente para
representar o sinal
original analógico.
Os pontos em preto são
as amostras do sinal
original.
11
● A amostragem é realizada por um circuito chamado sample-and-hold
(S/H).
● Ele mantém constante o valor do sinal analógico de entrada enquanto o
circuito seguinte de digitalização realiza a quantização do sinal.
Funcionamento da amostragem
Vin Vout
C
12
● O computador pode classificar a tensão amostrada entre os níveis ou
valores disponíveis em uma tabela.
● Os sinais que chamamos de digitais, utilizados até então no
microcontrolador, foram digitalizados usando apenas dois níveis, 0 ou 1.
Um conversor AD possui uma quantidade (resolução) muito maior de
símbolos, valores ou patamares para representar esses sinal.
● Quanto melhor a resolução, melhor será o discernimento ou
discretização dos valores assumidos pela tensão externa.
Conversão analógico/digital - digitalização
t
V
Sinal analógico amostrado Série de valores digitalizados
100, 130, 50, 30, 55, 89, 105, 145, 160, 255, 145, 56, 0, 0, 32, 78, 29, 25, 42, 48, 49, 51, 50, ...
13
● Um ADC digitaliza um sinal amostrado utilizando um valor inteiro
aproximado (quantizado), para representar cada amostra analógica,
constituindo uma série de valores discretos (quantização).
● O valor escolhido é proveniente de uma lista pré-determinada.
● O tamanho da lista é definida pelo número de bits do ADC (resolução).
● Um conversor de N bits possui 2� valores para representar o sinal amostrado.
– Exemplo: supondo um conversor de 8 bits
● 2� = 256 valores distintos, por exemplo, de 0 a 255
● Para uma tensão máxima na entrada de 3,3V (referência) → uPliza-se o valor
máximo da tabela, ou seja, 255.
● Para uma tensão mínima na entrada de 0,0 V → uPliza-se o menor valor da
tabela, 0.
● Todos os valores intermediários estão separados por níveis equivalentes a
3,3/256 = 0,012 [V/patamar]
Funcionamento da digitalização
14
● Quantização
– Normalmente, um ADC escolhe o valor mais próximo da amostra
atual de uma lista uniformemente espaçada.
– Pode haver algum erro de aproximação (erro de quantização no
processo).
Conversor Analógico Digital (ADC)
Sinal de Entrada
15
● Exemplo de Conversão
– Sinal Senoidal de entrada de 5kHz, oscilando entre 0 e 10 [V].
– Taxa de Amostragem de 100kHz (100.000 amostras/s).
– ADC de 2 Bits → Resolução de 2,5 [V]
– ADC de 3 Bits → Resolução 10/(23 )=1,25 [V]
– ADC de 16 bits → Resolução de 0,000152 [V]
Conversor Digital Analógico (ADC)
2-bit
00
01
10
11
16
● Circuito eletrônico capaz de converter uma grandeza digital em uma grandeza
analógica.
● Esse processo é denominado de síntese digital-analógica.
● Características Básicas:
– Velocidade de conversão
– Resolução ou quantidade de patamares para síntese do sinal analógico
(número de bits).
Conversor Digital Analógico (DAC)
17
● 16 canais de ADC (AnalogIn)
- Limites para conversão da tensão de entrada 0 a 3,3 [V]
- Tensão máxima admissível de 3,6[V]. Mínima de -0,3 [V].
- Taxa de amostragem até 14 [MHz].
- Resolução de 12 bits.
Periféricos analógicos de entrada do Kit STM32
As demais portas podem ser encontradas no apêndice
18
● 2 canais de um DAC (AnalogOut)
– Limites da tensão de saída de 0,0 a 3,3 [V]
– Taxa de amostragem 5 a 30kHz
– Corrente saída máxima de 1mA
– Resolução 12-bits
Periféricos analógicos de saída do Kit STM32
As demais portas podem ser encontradas no apêndice
19
● Transdutor Temperatura-Tensão
● Tensão de saída x Temperatura
– Relação linear
– +10 mV / °C
● Faixa de Operação
– -55°C até 150°C
● Pinagem
– Pino 1 – Tensão de alimentação entre 4 a 20,0 [V]
– Pino 2 – Saída do sinal analógico de tensão
– Pino 3 – Terminal de terra ou negativo.
Sensor LM-35
Atenção: O LM-35 não pode ser ligado invertido, com
as tensões erradas. O dispositivo pode queimar!!!!
20
● Resistor variável.
● Possui um valor nominal de
resistência e potência
máximas.
● Possui três terminais.
● Permite implementar um
divisor de tensão, para
produzir uma tensão entre
um valor máximo e mínimo.
Potenciômetro
VinFixo
VoutAjustávelEntre 0 e
5,0 V
+5V
0V
21
● Duas placas metálicas paralelas, isoladas por
um material dielétrico (isolante).
● Várias tecnologias de materiais isolantes
(cerâmicos, eletrolíticos, etc).
● Armazenam energia na forma do acúmulo de
cargas elétricas entre suas placas.
● Utilizados tipicamente como acumuladores,
ou em circuitos de filtragem.
● Alguns tipos são polarizados. Atente à forma
de ligação do componente ao circuito.
● A relação entre a tensão e a corrente em um
capacitor obedece a expressão:
Capacitores
v�t� � 1 ∙ � � ∙ �� � �����
�
���
C
Poliéster
Cerâmico
EletrolíticoPolarizado
Tântalo - polarizado
22
Atenção à documentação e manual de uso.
● A placa só está pronta para uso se as três luzes LED12V, LED5V e
LED3V3 estiverem ligadas!!!
Baseboard da disciplina
23
Exercício 1
#include "mbed.h"
Serial PC(USBTX, USBRX);
int main(){
int Contador;
Contador = 0;
while(1)
{
PC.printf(“Hello Word #%d\r\n”, Contador);
Contador++;
wait(0.5); //500ms
}
}
Exercício SerialComm
24
Exercício 1
Tela do teraterm para abertura da porta serial do kit
25
Exercício 1
Exercício SerialComm – Saída esperada
26
Exercício 2 - Montagem ADC_Pot
Veja o arquivo PDF da montagem ou o arquivo do Fritzingpara mais detalhes.
Não esqueça de ligar a fonte de 12,0 V que alimenta a baseboard.
27
Exercício 2 - Montagem ADC_Pot
#include "mbed.h"
#define MV(x) ((3.3*x)/0xFFFF)
AnalogIn Entrada_AN(PA_0);
Serial PC(USBTX, USBRX);
int main() {
unsigned short Medida_Inteira;
float Valor_Normalizado;
while(1) {
Valor_Normalizado = Entrada_AN;
Medida_Inteira = Entrada_AN.read_u16();
PC.printf("Tensao: %d(Inteiro) %f(Float) %f(Volts)\r\n“,
Medida_Inteira, Valor_Normalizado, MV(Medida_Inteira));
wait(0.5); // 500 ms
}
}
Exercício ADC_Pot
28
Exercício 2 - Montagem ADC_Pot
Exercício ADC_Pot – Saída esperada
Varie o Pot!!
29
Exercício 3 - Montagem ADC_Pot_Temp
Veja o arquivo PDF da montagem ou o arquivo do Fritzingpara mais detalhes.
Não esqueça de ligar a fonte de 12,0 V que alimenta a baseboard.
30
Exercício 3 - Montagem ADC_Pot_Temp
#include "mbed.h"
AnalogIn Entrada_AN_Potenciometro(PA_0);
AnalogIn Entrada_AN_Sensor(PA_1);
Serial PC(USBTX, USBRX);
int main()
{
float Medida_Potenciometro, Medida_Sensor, Temperat ura;
while(1) {
Medida_Potenciometro=Entrada_AN_Potenciometro*3.3;
Medida_Sensor=Entrada_AN_Sensor*3.3;
Temperatura=Medida_Sensor/10E-3; //10mV/C
PC.printf("Pot.: %3.4f [V] ", Medida_Potenciometro) ;
PC.printf("LM35: %3.4f [V] ", Medida_Sensor);
PC.printf("LM35: %3.1f [oC] \r\n", Temperatura);
wait(0.5); // 500 ms
}
}
Exercício ADC_Pot_Temp
31
Exercício 3 - Montagem ADC_Pot_Temp
Exercício ADC_Pot_Temp– Saída esperada
Observe a variação datemperatura!!!
Além do sinal esperado,existe um ruídosubstancial!!!
As medidas possuemuma incerteza de maisde 5 ºC!!!
Esse problema do ruídoé ainda mais expressivose o LM35 estiverdistante da placaBaseboard, com o usode um conjunto de cabosde comprimento maior.
Como resolver isso?!?!
32
Alteração na montagem – Sugestão 1
Cuidado com apolaridade do capacitor.Sua ligação invertidapoderá destruí-lo.
Eliminação de ruído com capacitor de 470,0 nF a 1,0 [μF], ligado entre osterminais de saída e terrado LM35
33
Alteração no programa – Sugestão 2
#include "mbed.h"
AnalogIn Entrada_AN_Potenciometro(PA_0);
AnalogIn Entrada_AN_Sensor(PA_1);
Serial PC(USBTX, USBRX);
int main()
{
float Medida_Potenciometro, Medida_Sensor, Temperat ura, Media=0.0;
while(1) {
Medida_Potenciometro=Entrada_AN_Potenciometro*3.3;
Medida_Sensor=Entrada_AN_Sensor*3.3;
Temperatura=Medida_Sensor/10E-3; //10mV/C
Media = (4.0*Media + Temperatura)/5.0;
PC.printf("Pot.: %3.4f [V] ", Medida_Potenciometro) ;
PC.printf("LM35: %3.4f [V] ", Medida_Sensor);
PC.printf("LM35: %3.1f [oC] ", Temperatura);
PC.printf("Med.: %3.1f [oC] \r\n", Media);
wait(0.5); // 500 ms
}
}
Exercício ADC_Pot_Temp– Uso de médias
34
Exercício 4 - Montagem DAC
#include "mbed.h"
#define PI 3.14159
AnalogOut Saida_AN(PA_4);
int main()
{
float Frequencia,dT,Angulo;
dT=1E-3;
Frequencia=60;
Angulo=0;
while(1) {
Angulo=Angulo+2*PI*Frequencia*dT;
Saida_AN=0.5*sin(Angulo)+0.5;
wait(dT);
}
}
Exercício DAC – Para verificar no osciloscópio
35
Exercício 5 – DAC e potênciômetro no ADC
#include "mbed.h"
#define PI 3.14159
AnalogOut Saida_AN(PA_4);
AnalogIn Entrada_AN_Potenciometro(PA_0);
int main()
{
float Frequencia,dT,Angulo;
dT=1E-3;
Frequencia=60;
Angulo=0;
while(1) {
Angulo=Angulo+2*PI*Frequencia*dT;
Saida_AN=(Entrada_AN_Potenciometro/2)*sin(Angulo)+0 .5;
wait(dT);
}
}
Exercício ADC-DAC – Para verificar no Osc.
36
Para saber mais
• Mbed, http://mbed.org.
• STM32F072 microcontroller ,
https://www.st.com/resource/en/datasheet/stm32f072rb.
pdf., ultimo acesso Set/2018.
• Silberschatz, A., Galvin, P. and Gagne, G., “Operating
System Concepts”, Wiley, 8th Edition, 2008.
• Monk, S., “Hacking Electronics. An illustrated DIY guide for
makers and hobbyists”, Mc Graw Hill Education, 2013.
37
Apêndices
• Materiais para consulta de pinagens do kit.
38
Lista de ports e funções do kit
• No encarte da caixa do kit existe um guia de referência
rápida dos pinos e ports.
39
Detalhes dos pinos com suas funções especiais
40
Detalhes dos pinos com suas funções especiais
41
Detalhes dos pinos com suas funções especiais
42
Detalhes dos pinos com suas funções especiais
43
Detalhes dos pinos com suas funções especiais
44
Lista de ports e terminais do KL25Z