Ir ao conteúdo
  • Cadastre-se

Felipe Arcaro

Membro Júnior
  • Posts

    12
  • Cadastrado em

  • Última visita

posts postados por Felipe Arcaro

  1. Fala pessoal, tudo bom?

    Bom, não acredito que minha dúvida seja muito complexa, mas como to começando agora acho que seria interessante saber.

    Eu to montando um circuito e em uma das ajudas que tive um cara me disse que deveria usar duas baterias ao invés de uma como fornecedor de tensão para um op amp, para assim criar um terra flutuante. 

    Este é o esquema:

    scdhs4.png

     

    A princípio, fiz isso usando um gerador de tensão e uma bateria 9V, o que foi mais do que necessário (estou usando outros resistores, então meu ganho é menor.)

    Agora, para ficar um pouco mais organizado, instalei isso daqui na minha protoboard: https://www.sparkfun.com/products/10804.

    Consigo normalmente usar o 5V para o sistema do arduino que uso e 12V para a alimentacao positiva (que entra no pino 8 do op amp), mas nao sei o que fazer quanto a alimentacao negativa. Ja tentei puxar do -12V mas nao parece funcionar, assim como nao funcionava quando eu tentava usar apenas o fornecedor de tensão para o negativo e positivo.

    Alguem pode me dar uma ajuda com isso?

    Obrigado.

  2. Eu apenas mudei o capacitor de saida, coloquei um maior, e fui direto disso pra entrada analogica do arduino (A0). 

    O resultado que obtive foi satisfatorio, uma onda senoidal variando de acordo com a onda de entrada, mas nao identica. 

    Eu nao sei exatamente porque nao precisei de filtros pra isso, mas de qualquer forma funcionou. 

    De qualquer forma, caso alguem esteja na mesma situacao, estou usando a placa DDS AD9850 para gerar as funcoes de seno.

    O codigo que usei pra fazer com que ele funcionasse foi:

     

     

    --------------

    /*
     * A simple single freq AD9850 Arduino test script
     * Original AD9851 DDS sketch by Andrew Smallbone at www.rocketnumbernine.com
     * Modified for testing the inexpensive AD9850 ebay DDS modules
     * Pictures and pinouts at nr8o.dhlpilotcentral.com
     * Use freely
     */
     
     #define W_CLK 8       // Pin 8 - connect to AD9850 module word load clock pin (CLK)
     #define FQ_UD 9       // Pin 9 - connect to freq update pin (FQ)
     #define DATA 10       // Pin 10 - connect to serial data load pin (DATA)
     #define RESET 11      // Pin 11 - connect to reset pin (RST).
     
     #define pulseHigh(pin) {digitalWrite(pin, HIGH); digitalWrite(pin, LOW); }
     
     // transfers a byte, a bit at a time, LSB first to the 9850 via serial DATA line
    void tfr_byte(byte data)
    {
      for (int i=0; i<8; i++, data>>=1) {
        digitalWrite(DATA, data & 0x01);
        pulseHigh(W_CLK);   //after each bit sent, CLK is pulsed high
      }
    }
     
     // frequency calc from datasheet page 8 = <sys clock> * <frequency tuning word>/2^32
    void sendFrequency(double frequency) {
      int32_t freq = frequency * 4294967295/125000000;  // note 125 MHz clock on 9850
      for (int b=0; b<4; b++, freq>>=8) {
        tfr_byte(freq & 0xFF);
      }
      tfr_byte(0x000);   // Final control byte, all 0 for 9850 chip
      pulseHigh(FQ_UD);  // Done!  Should see output
    }
     
    void setup() {
     // configure arduino data pins for output
      pinMode(FQ_UD, OUTPUT);
      pinMode(W_CLK, OUTPUT);
      pinMode(DATA, OUTPUT);
      pinMode(RESET, OUTPUT);
     
      pulseHigh(RESET);
      pulseHigh(W_CLK);
      pulseHigh(FQ_UD);  // this pulse enables serial mode - Datasheet page 12 figure 10
      Serial.begin(9600);
    }
     
    void loop() {
      for (unsigned long fq = 30000; fq<= 50000; fq+=50) {
      sendFrequency(fq);  // freq
      //while(1);
      int sensorValue = analogRead(A0);
      float voltage = sensorValue * (5/1023.0);
      Serial.print(voltage);
      Serial.print(",");
      Serial.print(fq); 
      Serial.println();
     delay(1);
    }
    //while (1) {}
    }

    --------------

    • Curtir 1
  3. Felipe_Eletronic, eu fiz mais ou menos o que você falou e com a ajuda de um outro pessoal eu consegui ler a tensão de volta no sinal analógico, pra constatar que meu código estava funcionando. Muito obrigado.

    Agora, como vou mandar essa função de onda para um piezo na ponta de uma placa, e vou receber no outro piezo na outra ponta da placa, vou recebê-lo bem mais fraco, com noise e offset, correto?

    Para tirar o offset, eu imagino que devo colocar um capacitor em série, mas como faço pra tirar o noise?

    Meu objetivo é comparar a onda enviada com a onda recebida num osciloscópio, então tenho que criar um circuito (filtro, imagino) para que a onda continue sendo um seno no segundo piezo.

     

    Obrigado desde já, 

    Felipe.


    Essas fotos são da entrada, da resposta e do sistema.

     

    photo1.jpg

    photo2.jpg

    photo3.jpg

  4. Fala pessoal, eu não comecei a trabalhar em um código, principalmente porque eu realmente não sei como fazê-iniciá-lo. 
    Eu gostaria de algumas direções, pra conseguir achar as respostas que preciso

    Eu estou trabalhando em um projeto, em que eu gero ondas senoidais para serem usadas em uma comunicação entre piezos. Eu usei uma placa DDS AD9850 e com alguns capacitores, amplificadores operacionais e resistores eu consegui um bom output (ondas senoidais com 4V, 30-50KHz). 
    Como eu aprendi, minha saída é analógica, e agora eu tenho que fazê-la digital para que ela possa ser lida pelo arduino. 
    Meu principal objetivo é ser capaz de ler a frequência da onda. 
    Vocês podem me dar alguma direção?


    Obrigado.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!