Como faço para amostrar um sinal analógico de -2 V a +2 V com um microcontrolador PIC?


10

Estou usando um PIC micro com um ADC de 10 bits para fazer leituras de um sinal analógico com uma frequência menor que 300 hz. No entanto, esse sinal analógico está na faixa de -2 V e +2 V. Como posso condicionar o sinal para colocá-lo em uma faixa utilizável (assumindo que a entrada para o ADC deva ser positiva) Também não tenho um sinal positivo e fonte de alimentação negativa.





@Kellenjb - as perguntas que você vincula para não abordar os cálculos para este caso específico, em que a tensão de entrada vai além dos trilhos.
stevenvh

As seguintes perguntas foram fechadas como duplicatas de um presente, e ter respostas úteis: electronics.stackexchange.com/questions/15985/... , electronics.stackexchange.com/questions/15940/...
Kevin Vermeer

Respostas:


14

nota importante:
esta resposta foi publicada para resolver o problema de entrada de -20V a + 20V , porque foi isso que foi solicitado. É um método inteligente, mas não funciona se o limite de tensão de entrada permanecer entre os trilhos.

Você precisará escalar a tensão com um divisor de resistor para obter uma tensão entre -2,5V e + 2,5V e adicionar 2,5V. (Presumo que uma fonte de alimentação de 5V para o seu PIC).

O cálculo a seguir parece longo, mas isso é apenas porque explico cada etapa em detalhes. Na realidade, é tão fácil que você pode fazer isso em sua cabeça em pouco tempo.

Primeiro isso:

R1 é o resistor entre e , R2 é o resistor entre e e R3 é o resistor entre e . V O U T + 5 V V O U T V O U T G N DVINVOUT
+5VVOUT
VOUTGND

Quantas incógnitas temos? Três, R1, R2 e R3. Não é bem assim, podemos escolher um valor livremente, e os outros dois dependem desse. Vamos escolher R3 = 1k. A maneira matemática de encontrar os outros valores é criar um conjunto de duas equações simultâneas a partir de dois pares ( , ) e resolver os valores desconhecidos do resistor. Qualquer par ( , ) serve, mas veremos que podemos simplificar tremendamente as coisas escolhendo cuidadosamente esses pares, ou seja, os valores extremos: ( , ) e ( , ). V O U T V I N V O U T + 20 V + 5 V - 20 V 0 VVINVOUTVINVOUT+20V+5V20V0V

Primeiro caso: , Observe que (e essa é a chave da solução!) Ambas as extremidades do R2 vêem , portanto não há queda de tensão e, portanto, nenhuma corrente R2. Isso significa que deve ser o mesmo que (KCL). . Conhecemos a corrente através de R1 e também a tensão sobre ela, para podermos calcular sua resistência: . Encontrou o nosso primeiro desconhecido! V O U T = + 5 V + 5 V I R 1 I R 3 I R 3 = + 5 V - 0 VVIN=+20VVOUT=+5V
+5VIR1IR3
R1=+20V-5VIR3=+5V0V1kΩ=5mA=IR1
R1=+20V5V5mA=3kΩ

Segundo caso: , A mesma coisa com o R2 acontece agora com o R3: sem queda de tensão, portanto, sem corrente. Novamente, de acordo com a KCL, agora = . . Conhecemos a corrente através de R2 e também a tensão sobre ela, para que possamos calcular sua resistência: . Encontrou o nosso segundo desconhecido! V O U T = 0 V I R 1 I R 2 I R 1 = - 20 V - 0 VVIN=20VVOUT=0V
IR1IR2
R2=+5V-0VIR1=20V0V3kΩ=6.67mA=IR2
R2=+5V0V6.67mA=0.75kΩ

Portanto, uma solução é: . R1=3kΩ,R2=0.75kΩ,R3=1kΩ

Como eu disse, é apenas a relação entre esses valores que é importante, então é melhor escolher . Podemos verificar esta solução em relação a outro par ( , ), por exemplo ( , ). R1 e R3 agora são paralelos (ambos têm + 2,5V-0V sobre eles, portanto, quando calculamos seu valor combinado, encontramos , exatamente o valor de R2 e o valor necessário para obter de ! Portanto, nossa solução está realmente correta. [O selo QC vai aqui]R1=12kΩ,R2=3kΩ,R3=4kΩ
VINVOUT0V2.5V0.75kΩ+2.5V+5V

A última coisa a fazer é conectar ao ADC do PIC. Os ADCs geralmente têm resistências de entrada bastante baixas, portanto isso pode atrapalhar nosso equilíbrio cuidadosamente calculado. Nada para se preocupar, no entanto, basta aumentar o R3 para que . Suponha que , então A partir disso, encontramos . R 3 / / R A D C = 1 k Ω R A D C = 5 k Ω 1VOUTR3//RADC=1kΩRADC=5kΩ R3=1,25kΩ11kΩ=1R3+1RADC=1R3+15kΩR3=1.25kΩ


editar
OK, isso foi inteligente e muito simples, mesmo que eu diga. ;-) Mas por que isso não funcionaria se a tensão de entrada permanecer entre os trilhos? Nas situações acima, sempre tivemos um resistor que não tinha corrente fluindo através dele, de modo que, seguindo o KCL, a corrente que entra no nó por meio de um resistor sai pelo outro. Isso significava que uma tensão tinha que ser maior que e a outra menor. Se ambas as tensões forem mais baixas, a corrente fluirá apenas para fora desse nó, e a KCL proíbe isso. V O U TVOUTVOUT


A entrada de -20V resultará em um pouco abaixo de 0V.
precisa

(e talvez Olin Lathrop): Eu estava tentando descobrir como você encontra o valor do resistor de 7k. Notei que quando a tensão de entrada é de 2,5V, a corrente do nó não flui, seja qual for o valor do resistor, porque não há diferença de tensão. Mas essa entrada de 2,5V não é intermediária, enquanto a saída de 2,5V também. Isso não significa que o divisor deve ter dois resistores diferentes? Se você souber o que quero dizer.
Federico Russo

Talvez isso também explique o comentário de @Olin Lathrop.
Federico Russo

@ Frederico: Sim, não será completamente simétrico. Eu discuto isso na minha resposta. É possível ajustar os três resistores para mapear -20 a +20 volts a 0 a 5 volts, mas Steven e eu mostramos os casos mais simples em que você obtém uma pequena assimetria.
Olin Lathrop

6

A maneira mais fácil é usar um "divisor de resistor".

Você não disse em que voltagem esse PIC está funcionando e, portanto, a faixa de entrada A / D, então vamos usar 5V como exemplo. Sua faixa de tensão de entrada é 40V e a saída 5V, então você precisa de algo que atenue em pelo menos 8. Você também precisa que o resultado seja centrado em 1/2 Vdd, que é 2,5V, enquanto sua tensão de entrada é centrada em 0V .

Isso pode ser realizado com 3 resistores. Uma extremidade dos três resistores está conectada ao pino de entrada PIC A / D. A outra extremidade do R1 vai para o sinal de entrada, R2 vai para Vdd e R3 vai para o solo. O divisor do resistor é formado pelo R1 e pela combinação paralela de R2 e R3. Você pode ajustar R2 e R3 para centralizar o intervalo resultante em 2,5V, mas, para simplificar, explicamos isso, vamos viver com um pouco de assimetria e atenuar um pouco mais para garantir que ambas as extremidades estejam limitadas ao intervalo Vss-Vdd.

Digamos que o PIC quer que o sinal analógico tenha uma impedância de 10 kΩ ou menos. Novamente, por simplicidade, vamos fazer R2 e R3 com 20 kΩ. A impedância que alimenta o PIC não passará da combinação paralela daqueles, que é de 10 kΩ. Para obter a atenuação de 8, R1 precisa ser 7 vezes R2 // R3, que é de 70 kΩ. No entanto, como o resultado não será exatamente simétrico, precisamos atenuar um pouco mais para garantir que -20V não resultará em menos de 0V no PIC. Na verdade, isso requer atenuação de 9, então R1 deve ser pelo menos 8 vezes R2 // R3, que é de 80 kΩ. O valor padrão de 82 kΩ permitirá algumas inclinações e margens, mas você ainda obtém a maior parte da faixa A / D para medir o sinal original.

Adicionado:

Aqui está um exemplo de como encontrar a solução exata para um problema semelhante. Isso não tem assimetria e tem uma impedância de saída especificada específica. Essa forma de solução sempre pode ser usada quando a faixa A / D está totalmente dentro da faixa de tensão de entrada.


+1 porque, no que diz respeito à contagem de peças, esta é a maneira mais fácil de criar o que é necessário. Algumas notas: É possível cuidar da assimetria no código da uC e, adicionando um capacitor em paralelo ao resistor que vai para GND, o sinal pode ser suavizado (filtro passa-baixo). O canto freq. é 1 / (2 * pi R C), onde R é o valor paralelo dos três resistores e C é o valor da tampa que é adicionada (a ADC precisa de tampa de qualquer maneira!). Calcule a precisão desta configuração considerando todas as tolerâncias (erro R, ADC em +/- máx. LSB, erro de referência, ...) - pode ser pior do que o esperado.
zebonaut

@ zebonaut - fiz o cálculo novamente e expliquei cada etapa detalhadamente na minha resposta atualizada (muito menos complicado que pareça!). Dá-lhe um mapeamento exato de (-20V .. + 20V) para (0V .. + 5V)
stevenvh

@ zebonaut: O capacitor pode ser útil como filtro anti-aliasing, mas não faz nada sobre a assimetria. Não achei que a pequena assimetria fosse importante. É fácil o suficiente para cuidar do firmware, como você disse.
Olin Lathrop

Se você deseja compensar a assimetria no software, terá que calcular a função exata de transferência. Se você tiver que fazer isso de qualquer maneira, por que não usar os valores corretos do resistor em primeiro lugar (não os da minha primeira resposta (errônea)!) #
315 stevenvh

@stevenvh: Não há nada errado em usar os valores de resistores "certos". Percebi que era possível um mapeamento exato (como mencionei na minha resposta), mas decidi não entrar na complexidade dos cálculos e responder ao caso conceitualmente mais simples que resulta em um pouco de assimetria. De qualquer forma, você precisa atenuar um pouco mais para explicar o slop e provavelmente deve calibrar o firmware de qualquer maneira.
precisa

2

Este é o circuito padrão para isso. Você precisa dimensionar os valores do resistor para a impedância necessária.


Você precisa garantir que a impedância da fonte seja relativamente baixa se estiver usando isso?
Nick T

Leon, por que não usar um capacitor em vez do resistor de 1k?
Stevenvh

É uma solução acoplada a DC. O resistor em série é necessário para a operação correta.
Leon Heller

3
@ Leon Heller: Eu acho que essa seria uma resposta melhor se você explicasse como encontrar os valores certos para os resistores.
Federico Russo

2

Se o sinal não for CC, ou se uma referência CC não for importante, o sinal poderá ser capacitivamente acoplado à entrada do ADC.

Como alternativa, se o seu terreno para o PIC estiver flutuando, você poderá vincular seu terra de sinal a 1/2 VDD do PIC.


Se você usar acoplamento capacitivo, você se livra do componente DC, mas a parte negativa do sinal ainda fica abaixo do solo, a menos que você ofereça um viés no pino de entrada por um divisor resistivo, como no circuito de Leon.
Stevenvh

A tensão de alimentação não foi especificada - funcionaria com um 5V ADC. Se você estivesse usando um Vdd menor, seria necessário escalar a entrada. Ele se transformaria no circuito de Leon com um capacitor naquele momento.
W5VO

2

O seguinte circuito deve fazer o trabalho:

3.3V
 +
 |
 \
 / 1k
 \
 |
 +-- ADC input
 |
 \
 /  1k
 \
 |
 +-- Signal input (-2V to +2V)

É um divisor em potencial. Em -2V, a saída será 0,65V; a + 2V, 2,65V.

Todo o ruído no trilho de 3,3V será transferido para a entrada, portanto, use uma boa referência de tensão para reduzir esse problema.

Isso funcionará com outros suprimentos também, mas o deslocamento mudará.


Sim, ele funciona, mas seria bom para usar a gama completa ADC :-)
stevenvh

@ stevenh Você pode fazer isso usando referências de 0.65V e 2.65V, embora você possa também usar seu circuito.
Thomas O

VREF+VREFGND

@stevenh PIC24, dsPIC e PIC32 definitivamente possuem Vref-. Eu acho que alguns 18F também.
Thomas O

Sim, ok, eu não conheço todos eles (existem muitos ). O OP não diz qual parte ele está usando e ele parece ter desaparecido, então não adianta perguntar a ele.
Stevenvh

1

VADCREF
VADCVDDVADCVADCREF+

VDD2V3.3VVADC

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.