Algoritmo para trigger/zero crossing

59 views
Skip to first unread message

agaelema .

unread,
Nov 18, 2015, 6:43:04 PM11/18/15
to Texas Instruments Info para Designers e Projetistas, sis_emb...@googlegroups.com

Boa noite pessoal.

Gostaria de implementar um trigger/zero crossing em alguns projetos para poder sincronizar as formas de onda. Por exemplo, desenhar um ciclo da forma de onda já amostrada partindo sempre do cruzamento por zero ou outro valor de referência.

Por acaso alguém possui alguma referência falando sobre este tema?

Desde já, obrigado.

Haroldo L. M. Amaral

Luiz

unread,
Nov 18, 2015, 10:40:14 PM11/18/15
to agae...@gmail.com, Texas Instruments Info para Designers e Projetistas, sis_emb...@googlegroups.com
Olá Haroldo!

Alguns kits com DSP da TI implementam detetores de zero para controle de motores sem escovas:

Esse kit http://www.ti.com/tool/drv8313evm usa um MSP430G2553 para o controle, mas, não sei se é possível abrir o código no CCS.

Imagino que não haja problema ou dificuldade no interfaceamento:

Imagem inline 1

A seguir, alguns artigos interessantes:


Uma base para a programação:


Att,

--
--
Você recebeu esta mensagem porque está inscrito no Grupo Google "Texas Instruments Info para Designers e Projetistas".
Para postar uma mensagem neste grupo, mande um email para texa...@googlegroups.com
Para deixar o grupo, mande um email para texas-sc+u...@googlegroups.com
Para mais opções, visite este grupo no endereço:
http://groups.google.com/group/texas-sc?hl=pt-BR

---
Você recebeu essa mensagem porque está inscrito no grupo "Texas Instruments Info para Designers e Projetistas" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para texas-sc+u...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

agaelema .

unread,
Nov 18, 2015, 11:01:34 PM11/18/15
to Texas Instruments Info para Designers e Projetistas, sis_emb...@googlegroups.com
Luiz, obrigado pelos diversos links. Vou olhar todos aqui.

O circuito da imagem funciona super bem, utilizei um comparador semelhante mas sem histerese no meu tcc da graduação para obter a frequências da rede. Com histerese fica muita interessante para sinais ruidosos.

Não tenho certeza do que estou falando, mas pelos teardown de alguns osciloscópios que vejo, algum parecem utilizar uma técnica semelhante. Você escolhe o nível to trigger, isso gera um sinal DC através de um DAC, esse sinal controlar o ponto de comparação. Mais pra frente quero testar isso na prática para ver o resultado. Mas no momento a ideia é mesmo através de software.

Para o zero crossing em específico, creio que possa considerar o ponto com maior derivada entre uma amostra e sua subsequente, ou estou viajando?

Haroldo L. M. Amaral

Laboratório de Sistemas de Potência e Técnicas Inteligentes - LSISPOTI
Doutorando em Eng. Elétrica - Poli USP - SP

Mestre em Eng. Elétrica - UNESP Bauru

Tecnólogo em Sistemas Biomédicos - FATEC Bauru

Técnico em Eletrônica - CTI/UNESP Bauru

Skype: academic_haroldo_amaral

agae...@gmail.com

Lattes || Linkedin || Embarcados

Luiz

unread,
Nov 19, 2015, 6:21:08 AM11/19/15
to agae...@gmail.com, Texas Instruments Info para Designers e Projetistas, sis_emb...@googlegroups.com
Olá Haroldo!

Um dos links que citei apresenta um algoritmo simples:

Imagem inline 1

Não pude identificar o método que você está usando, dos vários possíveis, mas, a derivada de zero é zero, mesmo. Se o objetivo é somente encontrar o ponto de zero crossing, sem a necessidade de comparar amostras subsequentes.

O que acontece é que podem haver outros pontos de valor zero num ciclo, ou, semiciclo. Aí é ruído, distorção ou erro, e, isso deve ser levado em conta.

O microcontrolador deve calcular o valor médio de todas as amostras da tensão de entrada. O resto fica a cargo dos periféricos (AD, Timer e I/O)

Amplitude do sinal de entrada, frequência e precisão de leitura definem as configurações do Timer e AD.

Esse procedimento foi empregado no TMS320F28335 e MSP430F2554, com as devidas diferenças de performance.

O código de outro link exposto anteriormente exemplifica a análise dos valores a serem comparados:

/* data = input array */
/* zerCross = output zero crossing array */
void zeroCrossing(float *data, float *zerCross, int nx)
{
int i;
bool sign1, sign2;
 
memset(zerCross, 0, nx*sizeof(float));
for(i=0; i<nx-1; i++)     /* loop over data  */
{
sign1 = getSign(data[i]);
sign2 = getSign(data[i+1]);
if(sign1!=sign2)  /* set zero crossing location */
zerCross[i+1] = 1;
}
}
 
/* get sign of number */
bool getSign(float data)
{
if(data>0)      /* positif data */
return (1);
else            /* negatif data */
return (0);
}

Att,

Luiz

unread,
Nov 19, 2015, 11:55:43 AM11/19/15
to agaelema, Texas Instruments Info para Designers e Projetistas, sis_emb...@googlegroups.com
Haroldo, sobre a questão anterior posso interpretar o seguinte:

"...Para o zero crossing em específico, creio que possa considerar o ponto com maior derivada entre uma amostra e sua subsequente, ou estou viajando?"

Imagem inline 1

Se f(x)=sen x, a derivada do seno é f'(x)=cos x

Se f(x)=cos x, a derivada do cosseno é f'(x)=-sen x

No gráfico das formas de onda puras, o ponto de maior, ou, menor, valor do seno corresponde, justamente, ao cruzamento pelo zero do cosseno, respectivamente.

Você não está viajando, mas, deve calcular a média de todas as amostras do sinal de entrada. Amplitude, frequência e taxa de conversão definem a redução da incerteza.

Att,

Helio coragem

unread,
Nov 20, 2015, 8:14:54 PM11/20/15
to sis_embarcados, texa...@googlegroups.com
Olá Haroldo

Muito legal voltar a ver este assunto. As dicas do Luiz são muito boas.

Imagino que vc esteja falando de uma forma de onda periódica (senoide). 
Sim, vc está procurando o ponto de inflexão, onde a curva muda a inclinação e a derivada segunda muda de sinal.
Vc pode rever um pouco de calculo neste link: http://www.uff.br/webmat/Calc1_LivroOnLine/Cap18_Calc1.html

Abs

Helio
Reply all
Reply to author
Forward
0 new messages