Gerador de Funções

Para "abobrinhas" use o " Boteco"

Moderadores: andre_luis, 51, guest2003, Renie

Mensagempor edison » 10 Jul 2011 23:34

Pois é... :oops: um dia aprendo.......acho....(?)

Valeu!
-----------------------------------------------
"Os políticos e as fraldas devem ser trocados freqüentemente. E pelas mesmas razões"
-----------------------------------------------
Avatar do usuário
edison
Dword
 
Mensagens: 2011
Registrado em: 10 Mar 2007 00:18
Localização: Curitiba

Mensagempor Red Neck Guy » 11 Jul 2011 09:01

Bom...
Se o pessoal quiser fazer um desenvolvimento em grupo desse gerador com DDS, eu estou disposto a ajudar.
Tem até um lugar barato pra fazer as placas dupla face

http://www.engemauticos.com.br Não cobra fotolito e faz 6 peças somente...

Eu poderia ajudar com o layout, software e talvez software controlador pelo PC.[/url]
ASM51 descanse em paz!
Avatar do usuário
Red Neck Guy
Dword
 
Mensagens: 1968
Registrado em: 12 Out 2006 22:24

Mensagempor mastk » 11 Jul 2011 10:51

Mas tipo, um gerador de funções normalmente cria 3 padrões, senoidal, triangular/dente de serra e quadrada.

Matematicamente dizendo, apenas o senoidal é complexo e pode ser sintetizado com a seguinte formula:

y = A * seno ( (2 pi / lambda) * x )

Sendo:

y = o valor de tensao atual.

A = amplitude.

x = posicao atual

tudo que for y pode ser jogado dentro de um PWM, que te gera um sinal que deve ser passado em um filtro passa baixa, apos isso, jogue em um circuito para controlar o offset, amplitude alem do que o PWM pode gerar e tal e crei o eu que pronto.
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Mensagempor mastk » 11 Jul 2011 11:13

Ha sim, como esses calculos serão feitos com ponto fluante, se torna razoavel usar um DSP, me lembro que mesmo DSP de mentirinha quem nem os DsPIC podem calcular seno por hardware, tendo assim uma perfomace razoavel.

MOR_AL eu estou no comecinho da engenharia e transformadas ainda são queijo para mim, não faço nem ideia do pq delas nessa empreitada.
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Mensagempor xultz » 11 Jul 2011 11:20

Eu acabei de passar em Análise de Sinais e essas tranformadas só serviram para eu perder cabelo.
Sinta medo desta matéria, e desosse de estudar cálculo porque esta maldição vai usar em toda a faculdade.
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Mensagempor MOR_AL » 11 Jul 2011 11:53

andre_teprom escreveu:
MOR_AL escreveu:...Não entendi o que ele quis dizer com não linearidade do filtro passa-baixas...


Então...

Como essas formas de onda seriam tabeladas para o duty-cicle do PWM, a taxa de amostra também deveria ser variável, pois a quantidade de amostras por ciclo seria fixa.

Com isso, para frequencias muito baixas, aquele filtro físico passa-baixas, já não teria o mesmo efeito em manter o valor da amostra, assumindo agora uma característica de carga não linear no capacitor mais acentuada.

+++


Ha! Entendi, então, que o filtro seria implementado digitalmente, dentro do micro. Pois fora dele, analogicamente, o filtro não introduziria não linearidade apreciável.
MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor MOR_AL » 11 Jul 2011 12:36

edison escreveu:Literalmente "tá na mão"

[IMG=http://img683.imageshack.us/img683/9780/dsc09721j.jpg][/IMG]

O número de posições é ajustável de 2 a 13 e tem proteção na trilha de contatos.

Se ainda quiser te mando essa na faixa!


Valeu Edson!
Essa chave me parece de boa qualidade, não deu pra ver detalhes.

Ontem já havia decidido por aquelas chaves da Joto. Com um polo e duas posições. Apesar de ter que prestar atenção em manter apenas uma "fechada" para que funcione, o que não é um bicho-de-sete-cabeças, essas chaves são fáceis de encontrar. Eu até já as comprei pela internet.
[]'s
MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor MOR_AL » 11 Jul 2011 12:50

xultz escreveu:Eu acabei de passar em Análise de Sinais e essas tranformadas só serviram para eu perder cabelo.
Sinta medo desta matéria, e desosse de estudar cálculo porque esta maldição vai usar em toda a faculdade.


Que isso Xultz! ...
Ainda vai chegar a fase de usar essas transformadas na vida profissional...
...Reserve um pouco de cabelo pra esta fase. Hehe! :lol:
MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor Djalma Toledo Rodrigues » 17 Jul 2011 13:05

mastk escreveu: ... Matematicamente dizendo, apenas o senoidal é complexo e pode ser sintetizado com a seguinte formula:

y = A * seno ( (2 pi / lambda) * x )

Ou para 'nosotros' :

y = Emáx Sen ω t

Normalizando a amplitude (Emáx=1)

resulta, apenas, a função Seno

DJ
Editado pela última vez por Djalma Toledo Rodrigues em 17 Jul 2011 14:32, em um total de 2 vezes.
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor mastk » 17 Jul 2011 13:22

Nao entedi dialma. O que vc escreveu esta errado, nao?

Teta = 2 pi / T, ou seja frequencia angular.

No caso sugerir, usar K, numero de onda angular.

Usando a frequencia angular a formula seria:

y = A . seno ( K . x - teta . t)
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Mensagempor Djalma Toledo Rodrigues » 17 Jul 2011 18:30

mastk escreveu:Nao entedi dialma. O que vc escreveu esta errado, nao?

Teta = 2 pi / T, ou seja frequencia angular. ...


Então ω = 2 π f

já que f é 1/T

E = Emáx sen 2 π f t

DJ
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor rcakto » 17 Jul 2011 19:56

eu ja conheco essa função sendo V(t) = Vpp sen ( 2 pi f t ) sendo ambos os t de mesmo valor assim podese saber qual a tensao a cada milisegundo por exemplo...
(parado por culpa da faculdade...)Osciloscopio opensource... entre e participe:
http://asm51.eng.br/phpBB/viewtopic.php?t=10710
rcakto
Word
 
Mensagens: 787
Registrado em: 09 Jun 2010 00:57
Localização: vitoria ES

Mensagempor mastk » 17 Jul 2011 23:11

Legal.

O objetivo do MORAL, eh gerar um sinal de 13Mhz. Seria possivel gerar uma senoide nessa velocidade e com boa resolucao com DsPic ou algum DSP de rua?

Ha uns anos atras, vi algumas empressas lancarem DSPs de 400Mhz em encapsulamentos de ate 32 pinos QFP. Eles seriam perfeitos para esse objetivo, mas igualmente nao sei dizer se eh viavel.
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Mensagempor msamsoniuk » 18 Jul 2011 01:27

dah uma olhada nisso:

http://www.ee.ic.ac.uk/pcheung/teaching ... ration(708).pdf

na pratica eh um filtro... aqui tem uma versao bem maceteada:

Código: Selecionar todos
main()
{
  float w0, freq, fref, ampl, b0;
  int y0, y1, y2, k;

  freq = 100e6;
  fref = 1e9;
  w0 = 2*M_PI*freq/fref;
  b0 = sin(w0)*32767;

  k  = (2*cos(w0))*32767;
  y1 = 0;
  y2 = -b0;

  for(;;)
  {
    y0 = ((k*y1)>>16)-y2;
    y2 = y1;
    y1 = y0;

    printf("%d\n",y0);
  }
}


ele calcula os coeficientes iniciais e depois o loop consiste em uma instrucao MAC com shift, o que acelera bastante a computacao da senoide. isso eh particularmente trivial de implementar em uma FPGA e permite gerar um sample por clock e consegue trabalhar na boa com 100 Msample/s:

Código: Selecionar todos
module tone(
  input CLK,
  input CLR,
  input [15:0] K,
  input [15:0] Y1,
  input [15:0] Y2,
  output [15:0] OUT
);

  reg [15:0] Y[1:2];

  wire [31:0] MAC;

  assign MAC = K*Y[1];
  assign OUT = Y[1];

  always@(posedge CLK)
  begin
    Y[1] = CLR ? Y1 : (MAC[31:16]-Y[2]);
    Y[2] = CLR ? Y2 : Y[1];
  end


basta passar os coeficientes iniciais, calculados por um microcontrolador externo, por exemplo. outro detalhe interessante eh que permite vc criar senoides com resolucoes arbitrarias sem precisar de tabelas gigantes.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor msamsoniuk » 18 Jul 2011 21:36

soh para complementar... fiz o teste comparando lado a lado a senoide com o filtro e a senoide gerada com uma tabela e, no caso de ponto flutuante o erro eh praticamente nulo. no caso de ponto fixo com 16 bits, existe um erro mensuravel, em funcao da quantizacao, mas da mesma forma tambem existe um erro mensuravel no caso da tabela do seno. o erro pode ser minimizado colocando-se tabelas maiores, o que nem sempre eh possivel, enquanto que no caso do filtro basta usar acumuladores maiores, o que normalmente eh bem trivial.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

AnteriorPróximo

Voltar para Assuntos Gerais

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x