• Welcome to LusoRobótica - Robótica em Português.
 

Gerar sinal senoidal

Started by Rodnei, 08 de May de 2012, 17:54

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Rodnei

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....


afonso henriques

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

senso

Que frequência, e voltagem precisa de ter o sinal?
Avr fanboy

iyahdub

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



#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)
  {

  }

}
ps-Desculpen a falta de pontuacao, mas vivo no estrangeiro e os teclados sao xenofobos !!

iyahdub

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/

Ou mais simplesmente. tb podes usar
int sin_tab[256];

void setup()
{
  DDRD =0xFF;
}
void loop()
{
  for (int i=0;i<256;i++)
    PORTD=sin_tab[i];
}
ps-Desculpen a falta de pontuacao, mas vivo no estrangeiro e os teclados sao xenofobos !!

Rodnei

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!!!!!


Quote from: senso on 08 de May de 2012, 22:49
Que frequência, e voltagem precisa de ter o sinal?

iyahdub

Entao e mais facil usares algo exterior. se calhar. ja agora, ja sabes quais sao os valores min/max de frequencia que precisas ?!?
ps-Desculpen a falta de pontuacao, mas vivo no estrangeiro e os teclados sao xenofobos !!

senso

Podias ter especificado qual os valores de tensão, amplitude do sinal e frequência do sinal...
Avr fanboy

afonso henriques

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

Rodnei


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

senso

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.
Avr fanboy