LusoRobótica - Robótica em Português
Electrónica => Electrónica Geral => Tópico iniciado por: fergas em 21 de Agosto de 2018, 12:14
-
Estou a tentar fazer um circuito para medir o tempo que um condensador demora a carregar / descarregar para 63%, usando um arduino e invertendo a tensão nos pólos, mas não consigo tempos semelhantes para as duas situações. Além disso, reparo que quando a polaridade é invertida surgem picos abaixo e acima da tensão de alimentação com um comportamento semelhante ao que se verifica na simulação que está na imagem, com a diferença de que os valores extremos atingidos diferem aleatóriamente entre si (por exemplo umas vezes vai a -1.17v, outras a -0.9v).
Será que podem ajudar na explicação de porque é que os picos acontecem e porque é que a sua voltagem não é constante? :)
-
Os picos são consequência do circuito que desenhaste, criaste uma charge-pump.
Na primeira fase (Até ao primeiro pico) carregas o condensador com 5V (VU2=5V, VU1=0V). Se depois tornas VU1=5V, no ponto RC somasse-lhe a tensão que tinhas no condensador, dando um pico de 10V. Na realidade é menos um bocadinho porque U2 R1 começam logo a consumir, e os opamps não são ideias. O pico negativo é porque estás a fazer o caminho inverso.
Se meteres um diodo no ponto RC ligado a um condensador, com osz 5V de alimentação consegues aumentar a tensão ou criar uma de valor negativo, dependendo da orientação desse díodo. Isso é uma charge-pump.
(nestes casos partilhar o asc pode dar jeito)
-
Obrigado pela explicação :D
Estou a ver que não se consegue eliminar esse efeito facilmente então directamente no circuito.
Colocar a parte rc a ser controlado por mosfets por exemplo é capaz de ser a alternativa mais prática (tou a imaginar uma espécie de ponte H) . Que te parece?
-
Se queres medir o valor do condensador, basta carregá-lo e descarregá-lo, não precisas de inverter a tensão.
-
Se queres medir o valor do condensador, basta carregá-lo e descarregá-lo, não precisas de inverter a tensão.
Sim, claro. Mas não quis complicar muito a questão para ser mais evidente. Para o que pretendo, tem mesmo de haver inversão.
-
Estou a ver que não se consegue eliminar esse efeito facilmente então directamente no circuito.
Podes experimentar usar dois diodos ( schottky ).
C --|<-- GND
C -->|-- VCC
Nao te vai garantir um clamping completo, ficas com um offset dependendo das caracteristicas do diodo.
-
O arduino tem díodos de clamping nos pinos, a tensão não vai muito acima de Vcc+0.5V nem abaixo de -0.5V. A questão é que corrente vai escapar-se pelos díodos e afectar-te o resultado. O que é que queres fazer exactamente?
-
Podes experimentar usar dois diodos ( schottky ).
Obrigado pela dica. É uma boa sugestão. Na teoria funciona bem, e creio que na prática também vai ser a solução. :D
O arduino tem díodos de clamping nos pinos, a tensão não vai muito acima de Vcc+0.5V nem abaixo de -0.5V. A questão é que corrente vai escapar-se pelos díodos e afectar-te o resultado. O que é que queres fazer exactamente?
A ideia é medir o tempo que o condensador demora a carregar / descarregar, e através desse tempo inferir o valor da resistência (t=rc). Essa resistência é na prática um sensor, e o seu valor por sua vez servirá para o calculo da condutividade dum liquido. Daí a necessidade da tensão ser AC.
Acontece que como disse antes, o tempo que o condensador demora a carregar até aos 63% deveria ser igual ao de descarga até aos 37%, mas não é isso que estou a conseguir. Vou testar a ideia do KammutierSpule para ver se os tempos ficam mais estáveis.
Tenho também que ver se o problema não está no ADC do avr, que pode estar a ser influenciado por ruído da breadboard, mas como a diferença é sempre semelhante, não creio que seja o caso.
-
Porque é que não medes a resistência com uma corrente? Também podes inverter essa corrente alternadamente.
-
Para medir a corrente num avr sem mais nenhum sensor, que eu esteja a ver, seria através dum divisor de resistências.
Assim de repente vejo duas desvantagens com esse método:
A primeira é que ou colocava um ADC externo de maior resolução, ou ficava limitado aos 10 bits de resolução do avr, em contraponto com a resolução do timer1 que é de 16 bits.
A segunda, é que era difícil de ajustar o valor em função da temperatura da resistência do divisor que ficaria na placa, que não seria prático ler. Se bem que talvez não seja um problema muito grave, é sempre um ponto negativo.
-
Como detetas os 63%? Se não usares uma referência de precisão e um condensador estável, os 16bits não te servem para nada.
Para garantir uma onda AC no sensor não precisa dos dois opamps, basta um, com o outro lado do condensador à massa. Ao carregar a resistência vê um potencial, ao descarregar o inverso. Em vez de medires o tempo de subida e de descida, medes só o de subida. Fica mais simples e evitas os picos e diodos.
-
A avaliação que fazes é apenas qualitativa, ou tens números e requisitos concretos para a suportar?
Para medir a corrente num avr sem mais nenhum sensor, que eu esteja a ver, seria através dum divisor de resistências.
Assim de repente vejo duas desvantagens com esse método:
A primeira é que ou colocava um ADC externo de maior resolução, ou ficava limitado aos 10 bits de resolução do avr, em contraponto com a resolução do timer1 que é de 16 bits.
A segunda, é que era difícil de ajustar o valor em função da temperatura da resistência do divisor que ficaria na placa, que não seria prático ler. Se bem que talvez não seja um problema muito grave, é sempre um ponto negativo.
-
Como detetas os 63%? Se não usares uma referência de precisão e um condensador estável, os 16bits não te servem para nada.
Nem mais
Para garantir uma onda AC no sensor não precisa dos dois opamps, basta um, com o outro lado do condensador à massa. Ao carregar a resistência vê um potencial, ao descarregar o inverso. Em vez de medires o tempo de subida e de descida, medes só o de subida. Fica mais simples e evitas os picos e diodos.
O uso dos opamps serviu só para ilustrar o circuito em questão. Na realidade em principio vai ser usado um attiny84.
A avaliação que fazes é apenas qualitativa, ou tens números e requisitos concretos para a suportar?
É apenas qualitativa.
-
A avaliação que fazes é apenas qualitativa, ou tens números e requisitos concretos para a suportar?
É apenas qualitativa.
There you go.
(não é necessariamente relevante, mas por acaso o tiny84 até tem leitura diferencial com ganho de 20x)
-
Mesmo sendo só qualitativa, medir 1K (mais teria de baixar a resolução) fica relativamente escasso. Se avançasse para esse caminho (que já ponderei), seria com um opamp e um adc de 16 bits.
É que SE conseguir colocar as duas ondas simétricas, considero a solução do condensador mais minimalista e com resultados bem simpáticos. 8)
-
A solução que eu dizia, com um micro é "banal" de realizar:
simulação (https://www.falstad.com/circuit/circuitjs.html?cct=$+1+0.000005+8.281975887399955+50+5+50%0Av+144+304+144+176+4+5+100+5+0+0+0.5%0Ag+144+304+144+336+0%0Ar+144+176+272+176+0+1000%0Ac+272+176+272+304+0+0.000001+0.05614691283955743%0Aw+272+304+144+304+0%0Ap+144+144+272+144+1+0%0Aw+144+144+144+176+0%0Aw+272+144+272+176+0%0AO+272+176+352+176+0%0Ao+5+16+0+4098+5+0.1+0+1%0Ao+8+16+0+4098+5+0.1+1+1%0A)
A primeira onda é a tensão vista pela resistência, como podes comprovar é simétrica.
A segunda é a saída que podes usar para apanhar os 63%.
-
Sim, também essa foi a primeira solução que me veio à ideia. Mas na prática obtive resultados muito maus com ela. Mais uma vez creio que as condições em que estou a testar não serão as melhores, mas mesmo assim não cheguei a perceber porque é que o adc fica tão irregular especialmente a detectar quando o condensador está carregado ou descarregado.
Apanhei situações em que ele ficava vários ms até ver os 5v, isto mesmo depois de ter colocado um pino directo para: carregar / Z / descarregar / Z no ponto rc. De maneira que me virei para a alternativa que mostrei.
-
O ADC tb tem um condensador (de amostragem) que tem que ser carregado. Se a resistência de saída da fonte de sinal não for adequadamente baixa, o ADC pode não conseguir acompanhar a variação do sinal. A ATMEL recomendava um máximo de 10K para os AVR.
-
Vamos a ver se percebi esta. Então se a fonte do sinal tiver uma resistência superior a 10k, "não vai lá"? Tenho que ir ver o datasheet. :o
De qualquer modo em circunstâncias semelhantes, na outra configuração ele até não se estava a portar mal...
-
Vai só se não variar "muito" depressa (face à frequência máxima de amostragem especificada para o ADC). Com sinais quietinhos vai lá sempre.
-
Não consegui valores estáveis com o ADC. Acabei por abandonar a ideia de o usar e virei-me para a leitura do estado dum pino.
Parece-me bem mais fiável para já.
-
Os thresholds de detecção de estado variam com vários parâmetros, o comparador de tensão é o mais indicado para essa aplicação.
-
Esta era daquelas coisas que nunca tinha testado. Perdi um bocado para chegar à conclusão que o comparador não parece ser prático para sinais lentos que podem oscilar um cagagésimo.
Mesmo desactivando o ISR do comparador assim que este é activado, aparecem ressaltos que complicam o esquema. Um comparador externo vai continuar a ser a solução.