Ir ao conteúdo
  • Cadastre-se

eletronicav

Membro Pleno
  • Posts

    144
  • Cadastrado em

  • Última visita

posts postados por eletronicav

  1. Legal heim, fiquei curioso agora kk. Realmente o proteus pra isso deixa a desejar, também tive problemas em testar com ele, no começo nao funcionava nada e na verdade tudo estava funcionando ¬¬. Sobre o DAC eu ja conhecia R/2R, até montei porém ficou muito ruim o som, dai montei este outro que também era muito mais fácil pra montar na mão e no final acabou com a metade de componentes porque os valores que eu "escolhi" acabaram sendo os tradicionais do mercado então na questão dos valores diferenciados não tive problema. E outro problema era que o único amp. op. que eu tinha precisava de fonte simétrica e eu não tenho, dai uma vantagem pra mim usar esse outro DAC, porque ele não precisa de operacional o que facilitou pra mim. Realmente o R/2R é mais fácil mas não quis perder tempo procurando o erro, pensava que era a fonte mas não era, tanto que eu liguei todos os resistores do R/2R pro terra e coloquei no osciloscópio e continuou essa interferência, dai desisti do R/2R e montei esse outro.

     

    valeu.

  2. Aproveitando o tópico, @eletronicav, não entendi muito bem a lógica que você usou pra reproduzir o som. Do jeito que você lê o byte da memoria já manda direto pra porta, tipo, sem uma conversão de digital pra analógico, pwm, etc? Usou um buzzer ou alto-falante mesmo? Conectado direto na porta?

     

    extamente, eu leio o byte da memoria e mando direto pra porta 8bits e no DAC(conversor de digital para analogico) eu utilizei o Weighted DAC igual a esse da imagem porém de 8-bit, apenas acrescentando mais 2 resistores com valores de R*64 e R*128. Na saida utilizei um falante simples porém mesmo a saida variando de 0v a 5v não tem força suficiente para tocar, então precisa de um amplificador simples, no meu caso usei um LM comum de 0.5W e foi mais que suficiente.

    04273.png

     

    PS.: O valor do resistor não importa muito desde q seja fiel à multiplicação R*(x), não precisa ser exato mas quanto mais proximo melhor o som e menos chiado. O valor inicial de R pode ser qualquer um, no meu caso utilizei 100R pois se tivesse utilizado valor maior teria q usra no final resistores acima de 1M e nao tinha ai vai do que voce achar melhor.

     

    Att,

    Victor.

  3. Não tinha reparado isso, mas por padrão ele é habilitado, por isso que i2c_read() sem nada funcionou..  Se alguém quiser saber, sobre o DAC eu utilizei o Weighted DAC R-2R-4R-8R-16R-32R-64R-128R o som ficou melhor do que eu esperava fica melhor ainda colocando um capacitor non polarized de 1uf no positivo do falante e no negativo ou um low pass filter que resolve a chiadera(pouca mas tem).

     

    Att,

    Victor.

  4. Problema nenhum.. O codigo ficou assim:

    #include <16F628A.h>#fuses HS#fuses NOMCLR#fuses NOWDT#fuses NOPUT#fuses PROTECT#fuses NOBROWNOUT#fuses NOLVP#fuses CPD#use delay(clock=20000000)#use i2c(master, fast, sda=PIN_A1, scl=PIN_A0)#use fast_io(A)#use fast_io(B)int byte_atual = 0;int16 length = 23790;int16 i;#separatevoid le_eeprom(){   i2c_start();   i2c_write(0xa0);   i2c_write(0);   i2c_write(0);   i2c_start();   i2c_write(0xa1);   for(i=0;i<length;i++)   {      byte_atual = i2c_read();      output_b(byte_atual);   }   i2c_stop();}void main(){   setup_ccp1(CCP_OFF);   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);   setup_timer_1(T1_DISABLED);   setup_timer_2(T2_DISABLED,0,1);   setup_comparator(NC_NC_NC_NC);   setup_vref(FALSE);      set_tris_a(0b00000000);   set_tris_b(0b00000000);   output_a(0b00000000);   output_b(0b00000000);      output_float(PIN_A0);   output_float(PIN_A1);      delay_ms(500);   le_eeprom();   while(True){}}

    valeu mesmo vtrx você me ajudou muuito!

     

    Att,

    Victor.

  5. Eae galera, estou com um problema e não sei se tem solução, é o seguinte, fiz um programinha aqui pra testar playback de sons no pic, minha 1ª ideia foi usar o Cartão SD(tudo em RAW data) fiz tanto no proteus como na pratica e funcionou parcialmente, porque demorava pra ler de bloco em bloco, eu lia 1 bloco e tinha um delay de 5ms e isso ficou ruim, parti pra EEPROM e escolhi a 24LC512 que é a unica que tem onde moro, porém a velocidade dela de operação é de 400KHz comparado ao Cartão SD que é de 20MHz(velo maxima) e com isso usando a EEPROM um simples "Oi" que tinha 500ms se tornou um som de 2s aproximadamente, sim horrivel. E queria saber se estou fazendo algo errado para reproduzir o som ou o que posso usar de fácil acesso no mercado para armazenar esse som? Estou usando a frequencia máxima do PIC(20MHz). Sei que tem a linha 25LCXXX que é mais rápida trabalha em 20MHz também seria o ideal eu acredito, ja pesquisei rios na internet e nada, se alguém que já testou algo assim pudesse me ajudar seria otimo :D.

     

    Codigo(no CCS C) atual para leitura da EEPROM:

    #include <16F628A.h>#fuses HS#fuses NOMCLR#fuses NOWDT#fuses NOPUT#fuses PROTECT#fuses NOBROWNOUT#fuses NOLVP#fuses CPD#use delay(clock=20000000)#include <24512.c>int16 length = 23790;int16 i;void main(){   setup_ccp1(CCP_OFF);   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);   setup_timer_1(T1_DISABLED);   //setup_timer_2(T2_DIV_BY_4,55,1);   setup_timer_2(T2_DISABLED,0,1);   setup_comparator(NC_NC_NC_NC);   setup_vref(FALSE);      set_tris_a(0b00000000);   set_tris_b(0b00000000);   output_a(0b00000000);   output_b(0b00000000);      init_ext_eeprom();      delay_ms(500);   for(i=0;i<length;i++)   {      output_b(read_ext_eeprom(i));   }   while(True){}}

    valeu,

    Victor Migliatti.

  6. Eae galera, estou tentando fazer uma comunicação entre o android(usando eclipse 4.2) e o pc(usando delphi 2010) usando socket, so que estou tendo problema no codigo do android, ele funciona como cliente e o pc como servidor, ate ai tranquilo, mas quando eu tento receber alguma mensagem do pc no android ele trava e fecha, mas o contrário funciona tranquilamente, android -> pc. ja usei varios tipos de recepção de dados e nenhum obtive sucesso e com o delphi não há problemas pois testei com outra aplicação cliente no proprio delphi e funcionou ok. Minha intenção é apenas enviar string de um pro outro, porém necessito que os dois hajam esse envio, tanto o android quanto o pc. Segue o codigo do android:

     

    Delphi:

    servidor.Socket.SendText('12345' + Chr(10));

    Android:

    package com.example.wifi;import java.io.BufferedReader;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.Socket;import java.net.UnknownHostException;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;public class MainActivity extends Activity{    //variaveis para conexão    Socket socket = null;    DataOutputStream dataOutputStream = null;    DataInputStream dataInputStream = null;        Button button;    TextView textIn,textOut;        @[member=override]    protected void onCreate(Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                button = (Button) findViewById(R.id.button);        button.setOnClickListener(buttonSendOnClickListener);                textIn = (TextView) findViewById(R.id.textin);        textOut = (TextView) findViewById(R.id.textout);        Thread cliente = new Thread(new ClientThread());        cliente.start();    }    Button.OnClickListener buttonSendOnClickListener = new Button.OnClickListener()    {        @[member=override]        public void onClick(View arg0)        {            // TODO Auto-generated method stub            try            {                dataOutputStream = new DataOutputStream(socket.getOutputStream());                dataInputStream = new DataInputStream(socket.getInputStream());                dataOutputStream.writeUTF(textOut.getText().toString());                textIn.setText(dataInputStream.readUTF());            }            catch (UnknownHostException e)            {                // TODO Auto-generated catch block                e.printStackTrace();            }            catch (IOException e)            {                // TODO Auto-generated catch block                e.printStackTrace();            }            finally            {                if (socket != null)                {                    try                    {                        socket.close();                    }                    catch (IOException e)                    {                        // TODO Auto-generated catch block                        e.printStackTrace();                    }                }                                if (dataOutputStream != null)                {                    try                    {                        dataOutputStream.close();                    }                    catch (IOException e)                    {                        // TODO Auto-generated catch block                        e.printStackTrace();                    }                }                                if (dataInputStream != null)                {                    try                    {                        dataInputStream.close();                    }                    catch (IOException e)                    {                        // TODO Auto-generated catch block                        e.printStackTrace();                    }                }            }        }    };        class ClientThread implements Runnable    {        public void run()        {            try            {                socket = new Socket("192.168.0.164", 8888);            }            catch (UnknownHostException e1)            {                e1.printStackTrace();            }            catch (IOException e1)            {                e1.printStackTrace();            }        }    }}

    O servidor identifica o cliente tranquilo eu so estou com problema na hora de receber a string do pc, no delphi eu uso quebra de linha e converti o texto para UTF-8.

     

    valeu.

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!