LusoRobótica - Robótica em Português
Robótica => Iniciantes => Tópico iniciado 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....
-
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
-
Que frequência, e voltagem precisa de ter o sinal?
-
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)
{
}
}
-
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
int sin_tab[256];
void setup()
{
DDRD =0xFF;
}
void loop()
{
for (int i=0;i<256;i++)
PORTD=sin_tab[i];
}
-
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?
-
Entao e mais facil usares algo exterior. se calhar. ja agora, ja sabes quais sao os valores min/max de frequencia que precisas ?!?
-
Podias ter especificado qual os valores de tensão, amplitude do sinal e frequência do sinal...
-
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
-
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
-
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.