LusoRobótica - Robótica em Português

Robótica => Iniciantes => Tópico iniciado por: Rodnei em 08 de Maio de 2012, 17:54

Título: Gerar sinal senoidal
Enviado por: Rodnei em 08 de Maio de 2012, 17:54
Olá Pessoal,

Vê se alguém pode me ajudar.
Quero gerar um sinal senoidal, com frequencia fixa, esse sinal tem que ter duração de 58 ciclos (Períodos), após 58 ciclos e sinal gerado terá nível lógico 0, ai recomeça de novo.

Isso servirá para simular o sensor de rodafônica de um automóvel, ou seja, um sinal que a Central Eletrônica do carro irá ler.

Obrigado....

Título: Re: Gerar sinal senoidal
Enviado por: afonso henriques em 08 de Maio de 2012, 22:44
olá
(senoidal) possivelmente queres 12 v alternos
vai ser um pouco dificil
queres o sinal do sensor da cambota do tipo indutivo
esse estava nos carros mais antigos
porque se for para um (golf 3) por exemplo já tens sinais digitas
era mais facil controlar um sinal pwm com esses 58 impulsos que queres
não sei se o arduino tem saidas de sinal analogico que possam controlares o que tu queres
mas alguem com mais conhecimento sobre o arduino pudera  dizer mais alguma coisa
Título: Re: Gerar sinal senoidal
Enviado por: senso em 08 de Maio de 2012, 22:49
Que frequência, e voltagem precisa de ter o sinal?
Título: Re: Gerar sinal senoidal
Enviado por: iyahdub em 09 de Maio de 2012, 00:54
Podes simular por um DAC basico

Aqui um exemplo de uma series de resistencias de 6 bits
 de 6 bits com uma serie de resistencias
Claro que depende da frequencia que precisas e da precisao

Código: [Seleccione]

#include <avr/interrupt.h>
#include <stdlib.h>

char sinetable [32];
int  i ;

void ioinit (void)
{
  //Initialize output ports
  PORTD = B11111111;
  DDRD  = B11111111;

}

void timer_setup(){
  TCCR2A = 0;
  TCNT2=455;    //455 outputs 1.007khz
  TCCR2B = B00000010;
  //Timer2 Overflow Interrupt Enable
  TIMSK2 = 1<<TOIE2;
}
void setup(){           

  ioinit();
  arraysetup();
  cli();
  timer_setup();
  i = 0;
  sei();

}


ISR(TIMER2_OVF_vect) {

  PORTD=(sinetable[i++]);
  TCNT2=455;
  if(i==32){
    i=0;
  }

}
void arraysetup(void){
  sinetable[0]=127;  // Put 32 step 8 bit sine table into array.
  sinetable[1]=152;
  sinetable[2]=176;
  sinetable[3]=198;
  sinetable[4]=217;
  sinetable[5]=233;
  sinetable[6]=245;
  sinetable[7]=252;
  sinetable[8]=254;
  sinetable[9]=252;
  sinetable[10]=245;
  sinetable[11]=233;
  sinetable[12]=217;
  sinetable[13]=198;
  sinetable[14]=176;
  sinetable[15]=152;
  sinetable[16]=128;
  sinetable[17]=103;
  sinetable[18]=79;
  sinetable[19]=57;
  sinetable[20]=38;
  sinetable[21]=22;
  sinetable[22]=10;
  sinetable[23]=3;
  sinetable[24]=0;
  sinetable[25]=3;
  sinetable[26]=10;
  sinetable[27]=22;
  sinetable[28]=38;
  sinetable[29]=57;
  sinetable[30]=79;
  sinetable[31]=103;
}
void loop()
{

  while (1)
  {

  }

}
Título: Re: Gerar sinal senoidal
Enviado por: iyahdub em 09 de Maio de 2012, 01:06
Tens aqui uma boa explicacao de series de resistencias para um simples DAC (r2r) http://interface.khm.de/index.php/lab/experiments/arduino-dds-sinewave-generator/ (http://interface.khm.de/index.php/lab/experiments/arduino-dds-sinewave-generator/)

Ou mais simplesmente. tb podes usar
Código: [Seleccione]
int sin_tab[256];

void setup()
{
  DDRD =0xFF;
}
void loop()
{
  for (int i=0;i<256;i++)
    PORTD=sin_tab[i];
}
Título: Re: Gerar sinal senoidal
Enviado por: Rodnei em 11 de Maio de 2012, 18:07
Não preciso de frequência alta, nem tensão.
Onda quadrada serve (até melhor), com dutycicle=50%, mas tenho que variar a frequência.
É semelhante à aceleração do carro, quanto mais girar o potenciometro, maior será a freqûencia na saída.
Pessoal, obrigado pelas dicas!!!!!


Que frequência, e voltagem precisa de ter o sinal?
Título: Re: Gerar sinal senoidal
Enviado por: iyahdub em 11 de Maio de 2012, 20:24
Entao e mais facil usares algo exterior. se calhar. ja agora, ja sabes quais sao os valores min/max de frequencia que precisas ?!?
Título: Re: Gerar sinal senoidal
Enviado por: senso em 11 de Maio de 2012, 21:44
Podias ter especificado qual os valores de tensão, amplitude do sinal e frequência do sinal...
Título: Re: Gerar sinal senoidal
Enviado por: afonso henriques em 12 de Maio de 2012, 01:47
boas uma das formas de teres esse sinal
é meteres um dinamo das bicicletas
gera o sinal que tu queres mas tens de ser tu ou por algo a faze lo girar
Título: Re: Gerar sinal senoidal
Enviado por: Rodnei em 13 de Maio de 2012, 03:41

O cenário é o seguinte; (tenho um arduino mega pra tentar implementar)
•tensão máxima - em marcha lenta (aprox. 900 rpm do motor) -> 2,5 VAC e em rotação máxima (aprox. 5000rpm do motor) -> 40VAC
       então, a variação da tensão é proporcional a velocidade de giro da roda dentada e, consequentemente, a variacão do campo magnético.

• A roda fônica na maioria dos veiculos possui 58 dentes.Seu formato original é uma roda de 60 dentes de onde foram extraídos 2.Portanto, fora da região de falha, o sinal se comporta exatamente como uma senoide de 60 pulsos por segundo.Para converter a rotação de minutos para segundos, precisamos primeiramente dividir por 60.Como a freq. do sinal é de 60 pulsos por seg., devemos multiplicar por 60, assim, a leitura de dentes por seg. terá o mesmo valor das rotações por minuto do motor, exemplo: 900rpm = 900 HZ.
•A central só habilita o funcionamento correto do motor, quando reconhece a falha dos dentes e a partir desta falha ela "conta" 20 dentes e ativa a primeira fase de acionamento dos atuadores, ou seja, sincroniza a sequência dos tempos do motor com a faísca das velas e abertura das valvulas do motor ( 120 graus após a falha,a central reconhece o ponto máximo de compressão do motor dos cilindros 1 e 4). Depois na segunda fase no contar dos 50 dentes a fase dos cilindros 2 e 3 em 300 graus.Lembrando que a roda fônica não funciona sozinha, para o motor funcionar, sabemos da existência do motor elétrico(arranque) que permite o deslocamento dinâmico (saindo da imobilidade ) do motor. Então em rotação de partida, a tensão gerada pela roda fônica é de aprox. 1,5 VAC.
•A central lê o tempo todo o sinal da roda. Se perder o sinal o carro para.
•Não é possível geral um sinal de onda quadrada para simular uma roda f. A central reconhece são os picos instantaneos do sinal e a falta de 2 dentes em sua circunferência para ser ativada
Título: Re: Gerar sinal senoidal
Enviado por: senso em 13 de Maio de 2012, 17:14
Aplicação final do projecto?
Simular um motor para testar centralinas?
Se sim, com jeito o melhor é montar o sensor de posição da cambota num motor DC e numa ponte H e varias a rotação desse motor, é que tens uma grande variação de voltagem, o que precisa de um circuito amplificador relativamente complexo, tensões simétricas e coisas assim.