Ir ao conteúdo
  • Cadastre-se

Outro Como detectar o pico de um pulso ou senoide


Posts recomendados

Pessoal estou com um desafio aqui... tenho um pulso (semi ciclo de uma senoide) de 11 volts por 1 ms de largura, conforme aumenta a frequência a tensão sobe até 100 volts e a largura cai também proporcionalmente. Vamos supor que o pulso dure 1 ms com pico em 500 micro segundos, eu preciso de um circuito que dispare um pulso quando chegar na metade do pulso, onde esta o pico.

 

Já vi alguns circuitos que detectam o pico de tensão mas a saída fica fixa (como se eu alimentasse um capacitor, a tensão máxima dele é igual ao pico máximo do pulso).

 

Alguma luz?

Link para o comentário
Compartilhar em outros sites

Que tal mandar um desenho dessas diversas formas de onda, com seus respectivos níveis DC e tempos ?

 

O problema que vejo é como saber que estamos no meio do ciclo, antes dele terminar para sabermos o período dele ?

 

Por outro lado, você pode ficar medindo a tensão, e quando ela parar de subir, fazer o disparo do pulso. Se for mesmo algo tipo um semiciclo positivo de uma senóide, acho que dá para confiar nesse procedimento.

 

Eu faria isso com um microcontrolador.

 

Paulo

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Um detetor de pico deve te ajudar. Algo como...

250px-PeakDet.svg.pnghttps://es.wikipedia.org/wiki/Rectificador_de_precisión

O hw acima em C...o maior em 100 valores p.ex. algo como:
 

pico=0; //uma 'ligadinha na chave' pra 'descarregar o capacitor'
while(adc_read(0)<valorminimo)); //um mimo... espera passar pelo zero
for (i=0;i<100;i++)
{
if (read_adc(0)>pico) pico=read_adc(0);
delay(consiente);
}

ops... não entendi direito sua questão e acho que ndv o acima... Mas mantenho o post ok?...

Se quiser, explique melhor e com desenhos e fotos e etc...

Link para o comentário
Compartilhar em outros sites

@aphawk

5 horas atrás, aphawk disse:

 

IMG-20200410-WA0206.thumb.jpeg.70d3bf82f5e60edebb068450ba2e2106.jpeg

 

A forma de onda seria essa amarela, passei por um divisor de tensão e um filtro básico (originalmente era a azul), essa onda varia de 500mv a 20 volts agora após o divisor, a largura dela é aproximadamente 5% o tempo do período, nesse caso 10ms ela tem 500us.

 

@Isadora Ferraz desculpa minha falta de informação... Pensei em fazer pelo microcontrolador, mas como a largura do pulso é bem estreita (100us na frequência máximanqie usarei) pensei que a aquisição ADC não daria conta de processar vários pontos da senóide.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
13 horas atrás, mlegnari disse:

pico em 500 micro segundos, eu preciso de um circuito que dispare um pulso quando chegar na metade do pulso, onde esta o pico.

Ok... Nem sei se li melhor... Pensemos em termos de sw. Que tal

-no primeiro pulso, meça o pico
 

pico=0;

for (i=0;i<250;i++) //esta iteração deve durar o suficiente pra ler seu pulso TODO...
    {
    p=ADC1_Get_Sample(8);
    if (p>pico) pico=p;

//asm("NOP");// ... se não, faça microajustes
    }

-no 2º, ache sua metade
 

#define disparo GPIOB_ODRbits.ODR3

while(ADC1_Get_Sample(8)<(pico/2));//...
disparo=1;
//asm("NOP");//microajuste da largura
disparo=0;

 

Talvez seja melhor você dizer exatamente o propósito do projeto pra direcionar melhor  e o chute doer menos

 

7 horas atrás, mlegnari disse:

a largura do pulso é bem estreita (100us

 

Ah sim... tem mc que leva menos de 2uS pra fazer a leitura. Então na prática é suficiente...

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Isadora Ferraz eu usaria em aplicações automotivas de sensores de rotação, todos tem formatos semelhantes mas tensões e larguras diferentes, e não existe a possibilidade do usuário final (leigo) ajustar. Meu circuito hj detecta logo na subida com 500mv, e como o pulso dura aproximadamente 5% do período, metade é 2.5%, meu circuito dispara 2.5% mais cedo do pico. Para uma aplicação não há problema, eu ajusto a correção e está ok, o problema é quando tem que tornar mais universal!

 

Eu tenho um esp32 aqui bem rápido e boa resolução dele ADC, pensei em usar interrupção para detectar o início do pulso, assim que iniciar faz a varredura como você programou. Como a ação a ser tomada não é instantânea, eu posso medir a largura e após terminar de medir desconto a metade do pulso dos cálculos que viriam em seguida.

 

Pode parecer insignificante, mas se eu disparo um bico injetor de alta vazão 2.5% mais cedo já é uma catástrofe nos resultados.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Sim é bom que a cpu seja rápida. Mas o que determina a performance é a velocidade do conversor ad dela. P.ex. um pic a 20Mhz leva nanosegundos pra executar uma instrução mas leva mil vezes mais pra converter analógico em digital. Esta é a limitação do hw do mc. Pra maiores velocidades (p.ex. osciloscópio de Ghz) é usado caro hw dedicado externo.

Falando nisso, você pode tentar fazer algo como um osciloscópio - não necessariamente com tela. Assim você vai ter todos os dados, amplitude, período, frequência digitalizados e fazer o que quiser com eles. Neste caso uma cpu bem rápida faz alguma diferença. Dica: leia o mínimo de dados possível. O desafio além da velocidade da conversão é que seu sistema pode exigir a leitura de vários canais e não conheço mc que o faça simultaneamente.

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Bom, vou dar uns palpites aqui ....

 

Um Atmega qqr rodando a 20 Mhz tem um Clock de conversor A/D a 156Khz aproximadamente, o que não seria muito recomendado para ter a resolução máxima, mas para 8 bits funciona perfeitamente e dentro das características para o qual foi feito.

Como precisamos de 13 ciclos de clock do conversor A/D  para ter uma conversão, temos uma conversao a cada 0,083 milissegundos, ou 83 microsegundos. Ou seja, se a duração de seu pulso pode ter apenas 100 microssegundo, não tem como fazer ..... ou melhor, tem sim dando um jeitinho .... usando apenas 8 bits de resolução, o que não me parece ser problema nesse seu projeto.

 

Se você não utilizar os 10  bits de resolução, pode usar o Clock do conversor até 1 Mhz , neste caso sugiro usar um Atmega qqr rodando a 16 Mhz e dividindo por 16 para gerar o Clock de 1 Mhz.

 

Assim, seu tempo de conversor do A/D cai para 13 microssegundo, melhorou né ? daria para amostrar seu sinal 7 vezes para achar o pico .... Mas pera que tem ainda mais ...

 

Sabemos que o conversor dos Atmega é por aproximação sucessiva, São necessários 13 ciclos de Clock para converter os 10 bits, mas você precisa de apenas 11 ciclos para ter 8 bits !

 

Então, pode programar um Timer para gerar uma interrupção nesse instante, e você lê os 8 bits ao final de sua leitura e já manda fazer uma nova conversão !

 

Assim, temos um novo tempo de 11 ciclos de Clock para ter uma conversão, o que permite uma conversão a cada 11 microssegundo, e com isso podemos amostrar 9 vezes seu sinal durante os 100 microssegundo, acho que no pior caso você vai detectar a descida da tensão em uma amostragem posterior, com um erro máximo de 11 microssegundo em relação ao instante correto.

 

não sei se isso te ajuda, mas é o que dá para fazer com a maioria desses microcontroladores baratos.

 

Uma solução é usar um conversor A/D externo de alta velocidade, como o ADC141 da Texas, custa lá fora cerca de US$ 7, a interface dele é paralela, e faz 150 MegaSamples em 1 segundo !!!

 

Paulo

 

 

 

 

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Apenas para complementar o post ...

 

Sobre o ESP-32, o conversor A/D  numero 1  faz uma conversão a cada 9,5 microssegundos, mais rápido que os Atmegas conseguem fazer !

 

Mas existe muita dúvida sobre a precisão, resolução e repetibilidade ( sim, existem até 10% de erro de leitura entre um ESP-32 e outro ! ) , mas tem muita informação online sobre como corrigir esse erro entre dois módulos diferentes.

 

É um caminho ....

 

Paulo

  • Amei 1
Link para o comentário
Compartilhar em outros sites

Acabei resolvendo de um jeito mais “simples”: usei um schimidt trigger que dispara logo no inicio da senoide, o uC pega o pulso de subida e conta o tempo ate o pulso de descida (quando da rising ativo o falling) o tempo que deu considero metade o pico da senoide (semi ciclo positivo) e repasso aos calculos. Logo na 1 senoide o circuito calcula sua duracao e nao toma ação ja na segunda assim q detecta a borda de subida usa o tempo da senoide anterior  (quando o pulso deve desencadear ação instantanea) e calcula a senoide atual.

 

porém felizmente os pulsos sao curtos e ha bastante tempo para cálculos ate disparo do circuito, entao na última aplicação calculei a largura do pulso atual, e descontei 50% no tempo dos cálculos, consegui uma precisao muito boa!

 

@Isadora Ferraz e @aphawk obrigado por me ajudarem mais uma vez!

 

@Isadora Ferraz só uma curiosidade.... não sei sua idade mas por acaso você teria um gravador de microcontrolador fujitsu estilo 8051? Ano 1978 ? Ja desisti de procurar...

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
Em 21/04/2020 às 19:07, mlegnari disse:

dispare um pulso quando chegar na metade do pulso, onde esta o pico.

 

Já vi alguns circuitos que detectam o pico

A menção da palavra pico nos (me) provocou erro de interpretação eletro & técnica. Então o que você queria era trabalhar com a estrutura do tempo e não valores analógicos.. aahhmulék..😑.  Neste caso o smt trig ou entrada do mc que o possua era de fato o caminho mais indicado mesmo.

 

2 horas atrás, mlegnari disse:

não sei sua idade mas

Tenho várias idades... uma para cada situação e estrutura do tempo (gostei do termo). Mas resumindo digamos que tenho várias juventudes acumuladas kk. E não tenho informação sobre o gravador. Mas o que você quer com esta velharia?

Link para o comentário
Compartilhar em outros sites

@Isadora Ferraz realmente preciso trabalhar sim nos valores analógicos, ainda não implementei como quero, mas ja peguei a trilha com você e o Paulo.

 

Sobre o uC é um módulo de moto antigo que aínda acha o uC compatível 8051 mas o gravador só serve se for pra Fujitsu, eu já fiz uma placa bem melhor e moderna, mas tem aqueles clientes malas que querem a original... Então se achar o gravador vamos vender a preço de original x10 kkkk

Link para o comentário
Compartilhar em outros sites

@mlegnari

Em 26/04/2020 às 04:38, mlegnari disse:

 

@Isadora Ferraz só uma curiosidade.... não sei sua idade mas por acaso você teria um gravador de microcontrolador fujitsu estilo 8051? Ano 1978 ? Ja desisti de procurar...

 

Uau, que pergunta mais indelicada para uma dama !!!!!

Esse gravador de 1978, não era para o 8051 .... era para o Z-80 ...  só se tinha uma atualização de firmware para ele ....

@Isadora Ferraz não percebe a passagem do tempo, ela disse uma vez que fica na espera dos anos passarem voando perto dela mas me esquecí para que que era .....

Enfim....

Bom chute esse do Schimidt trigger !

 

Paulo

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!