Ir ao conteúdo

Nao Sei

Membro Pleno
  • Posts

    126
  • Cadastrado em

  • Última visita

Tudo que Nao Sei postou

  1. Porque a duvida?
  2. O valor de r1 e r2 seria interessante de 10k,para ser resistor de pull down. Se você ligar o A no vcc e B no gnd o que acontece?agora ao contrario A no gnd e B no vcc? "A" diferente de "B" movimenta,"A" e "B" ficar parado.
  3. se o o seu amplificador sair gnd e vcc(provavelmente 12v) da ponte,vai funcionar . O mosfet tipo p satura diferente do tipo n,com vgs 0v,o mosfet tipo p aciona.
  4. Melhor metodo seria trocar os dois mosfet superiores tipo N,por um tipo P. Contudo,o micro nõ vai acionar este sistema,pois vai sair 0v e 5v,você vai precisar elevar este 5v para 12v(vcc do motor),você pode fazer isto de varias maneiras.
  5. O seu circuito não vai funcionar mesmo,há vários erros.usar algum software de simulação,e coloca para simular, verifica as tensões em todos os pontos,após isto vai começar a surgi um luz,ai você vai procurar por mosfet tipo n,para entender como funciona(foco vgs),ai vai entender o motivo por não funcionar corretamente,após isto vai perceber que aqueles mosfet N superiores devem ser trocados por tipo P,e terá que ter um driver(pode ser feito de transistor) de acionamento entre o micro e mosfet.
  6. Olha,se funcionar com "!",sem ele também funcionaria(ao contrario).Tem certeza que modificou apenas isto?
  7. Colocou dentro do while(true) ?
  8. "!input(PIN_C5)" está certo,problema não é ai.Testa apenas um pino,para reduzir as possiveis causas do problema if (!input(PIN_C5)){ //apenas um pino primeiro output_high(pin_a0); }else{ output_low(pin_a0); }
  9. Concordo.Problema como alguém conseguiu fazer lcd funcionar,usar enconder com interrupção e não consegue calcular um simples média?Estou imaginando que pegou código pronto,e queria apenas colocar velocidade média.(tomara que eu esteja errado).
  10. Coloca o código que você já fez primeiro.
  11. Nao Sei

    Ajuste clock

    Não precisa ser o de 22pf,se tiver de 33pf ou valor abaixo dele,possivelmente funciona,claro o de 22pf é melhor pois está no datasheet,dá mais segurança.
  12. É apenas sdcard que está com problema ? Se for apenas sd card,verificar se a conexão está correta,tenta executar spi na menor velocidade possível,verificar se a trava do sd card está na posição correta.
  13. Nao Sei

    Ajuste clock

    Hum,os valores dos capacitores é 22pf mesmo?esta marcado 22 ou 220? caso seja mesmo 22pf,testa com 15pf,este tempos tive problema com pic16f1824,só funcionava com 15pf,porém o datasheet dele não especificava o valor do capacitor.
  14. Nao Sei

    Ajuste clock

    O recomendando,segundo o datasheet seria fuses "hs",não "xt",o xt é recomedando para crystal até 4Mhz,e o "hs" para valores superior a este.
  15. Qual simulador você usa?No proteus por exemplo,o pic funcionaria mesmo se tivesse faltando alguma coisa. Colocar o circuito aqui para pessoal ver. Obs:O seu texto não trás quase nada de informação útil,pois você só diz que funciona no simulador e não no hardware real,deveria posta o circuito,o código,assim ficaria mais fácil alguém pode ter ajudar.
  16. Nao Sei

    Ajuste clock

    Então ele está executando a 1Mhz,este valor é do clock interno default. A definição para "Fail-Safe Clock Monito"(datasheet,pg.9) "Fail-Safe Clock Monitor: This option constantly monitors the main clock source against a reference signal provided by the internal oscillator. If a clock failure occurs, the controller is switched to the internal oscillator block, allowing for continued low-speed operation or a safe application shutdown." Ou seja,caso há problema no oscilador externo,ele troca para interno quando está habilitado.Quando você desabilitar ele,seu programa não deveria funcionar.Qual gravador você esta usando?Será que seu gravador está gravando os fuses? off topico @aphawk Não sei se foi no mesmo segundo,mais no mesmo minuto foi.kkkkk
  17. Nao Sei

    Ajuste clock

    Quanto tempo esta demorando?coloca 10s,e veja quanto demora.As vez pode ser problema no seu circuito do crystal. Quando há problema no crystal,por default troca o crystal pelo oscilador interno,ai basta desativar com este fuse: #FUSES NOFCMEN //Fail-safe clock monitor disabled Adiciona esta linha no seu código,e verifica se fica piscando,provavelmente não vai piscar mais.Caso aconteça isto,problema e na parte do circuito do crystal. Sugestão:#use delay(clock=8MHz,crystal=8MHz)//fica mais explicito que o crystal é de 8mhz e clock também,além de ele adiciona pll e hs automatico
  18. Você precisa de algum componente no isis(similiar ou criar um),depois vai na propriedades e adiciona a peça que você criou no ares.Na internet há varios exemplos(proteus componentes),tem um video aqui:
  19. Se você aumentar a frequência de amostragem e tiver um sistema de controle eficiente,provavelmente conseguiria melhorar a resposta.Claro,iria necessitar de mais processamento,possivelmente um dsp.
  20. Este mesmo projeto,pode se encontrado neste site,o arquivo que você mandou é o mesmo do site,sem nenhuma modificação. Você poderia ter falado isto no começo,pois fico com impressão que você não sabe nada,e quer alguém te da a resposta,sem ter feito nada.
  21. int byteEntrada = 0; void setup(){ Serial.begin(9600); // Abre a porta serial pinMode(8,OUTPUT); pinMode(9,OUTPUT); pinMode(10,OUTPUT); pinMode(11,OUTPUT); pinMode(12,OUTPUT); pinMode(13,OUTPUT); digitalWrite(13,LOW); } void loop(){ Serial.write(Serial.read(A0)); byteEntrada = Serial.read(); if(byteEntrada == '0'){ digitalWrite(8,LOW); }else if(byteEntrada == '1'){ digitalWrite(8,HIGH); } if(byteEntrada == '2'){ digitalWrite(9,LOW); }else if(byteEntrada == '3'){ digitalWrite(9,HIGH); } if(byteEntrada == '4'){ digitalWrite(10,LOW); }else if(byteEntrada == '5'){ digitalWrite(10,HIGH); } if(byteEntrada == '6'){ digitalWrite(11,LOW); }else if(byteEntrada == '7'){ digitalWrite(11,HIGH); } if(byteEntrada == '8'){ digitalWrite(12,LOW); }else if(byteEntrada == '9'){ digitalWrite(12,HIGH); } } public void enviarDados(String dados) { try { output.write(dados.getBytes()); } catch (IOException e) { JOptionPane.showMessageDialog(null, "Algo deu errado", "ERRO", JOptionPane.ERROR_MESSAGE); } } ----------------------------------------------------------------------------------------------------------------- static void delay (int t) throws InterruptedException{ Thread.sleep(t); } ----------------------------------------------------------------------------------------------------------------- private void enviar (int freqpin, int ciclopin, String a, String b) throws InterruptedException{ for(int ciclo=0; ciclo< ciclopin; ciclo++){ enviarDados(a); delay(freqpin); enviarDados(b); delay(freqpin); } } ----------------------------------------------------------------------------------------------------------------- private void enviarciclos () throws InterruptedException{ for(int i=0; i < Integer.valueOf(tfBinary.getText()); i++){ //Loop de ciclos por pino enviar(Integer.valueOf(tfFreqP8.getText()),Integer.valueOf(tfCyclesP8.getText()), "8ON", "8OFF"); enviar(Integer.valueOf(tfFreqP9.getText()),Integer.valueOf(tfCyclesP9.getText()), "9ON", "9OFF"); enviar(Integer.valueOf(tfFreqP10.getText()),Integer.valueOf(tfCyclesP10.getText()), "10ON", "10OFF"); } } ----------------------------------------------------------------------------------------------------------------- private void enviarcar () throws InterruptedException{ int x = Integer.valueOf(tfCyclesCar1.getText()); for(int i=0; i < x; i++){ //Loop do 1º ciclos carreador enviarDados("11ON"); delay(Integer.valueOf(tfFreqP11.getText())); enviarDados("11OFF"); delay(Integer.valueOf(tfFreqP11.getText())); } delay(Integer.valueOf(tfStopCar.getText())*1000); for(int i=0; i < Integer.valueOf(tfCyclesCar2.getText()); i++){ //Loop do 2º ciclos carreador enviarDados("11ON"); delay(Integer.valueOf(tfFreqP11.getText())); enviarDados("11OFF"); delay(Integer.valueOf(tfFreqP11.getText())); } } ----------------------------------------------------------------------------------------------------------------- private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { for(int i=0; i< Integer.valueOf(tfReplicate.getText());i++){ try { enviarciclos(); enviarcar(); } catch (InterruptedException ex) { } } } ----------------------------------------------------------------------------------------------------------------- public synchronized void serialEvent(SerialPortEvent oEvent) { if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) { try { int a = input.read(); int temp = Integer.parseInt(tfTemp.getText()); float t = (float) ((5.0 * a * 100.0) / 1024.0); DecimalFormat decimal = new DecimalFormat( "0.00" ); jLTemp.setText(String.valueOf(decimal.format(t))); if (t <= temp){ enviarDados("TON"); } else { enviarDados("TOFF"); } //System.out.println(a); } catch (Exception e) { System.err.println(e.toString()); } } // Ignore all the other eventTypes, but you should consider the other ones. } adicionado 4 minutos depois @Dianderson qual era sua intenção com esta linha? Serial.write(Serial.read(A0)); Seu firmaware no arduino,enviar,recebe num loop continuo,seria interessante deixar um tempo a cada vez,para dar tempo de processar os dados. Também verificar tanto em java como no arduino,se existe mesmo dado recebido,caso read() retornar -1 não existe dado(verifica na biblioteca do java que você está utilizado,a que eu utilizava -1 era sem dados),ou pode usar Serial.available() para verificar a quantidade de dados que tem no buffer,ai só ler caso tenha dados.
  22. O valor do r3 é muito alto,a comutação vai demorar muito,isto gera muito perda,aquecendo mosfet. Como é 60Hz,nem precisa de um driver,utiliza mais baixo possível o valor de r3(veja quanto de corrente o ci aguenta,para determinar o r3).As perdas do seu mosfet será basicamente a perca de quando está ligada,pois a frequência é muito baixa,você pode desconsiderar as perdas nas comutações,então a potência perdida será P_loss=R_on*I => P_loss=0.008*100^2=80W,considerado que um encapsulamento de to220 com 60C/W,aumentaria em 4800°C a temperatura em relação ao ambiente. Para este pacote seria meio impossivel dissipar tudo isto,mesmo com um sistema com dissipador enorme e sistema de vetilação. A melhor solução seria colocar vários mosfet em paralelos,se você usar 5 mosfet em paralelos,cada um teria 20A,a potência perdida em cada mosfet seria 0.008*20^2 de 3.2W,aumentado em ~200°C sem dissipador,se você usar um dissipador de 15c/w para cada mosfet já seria suficiente,ou utilizar um dissipador "grande",com todos os mosfet fixado nele. Um mosfet com pouca perda,seria irfp1404,com 1.5mOhm,o pacote é to 247,e encontra facilmente no brasil,com uns quatro dele em paralelo,nem precisaria de dissipador.
  23. Testa com algum software de serial(pode ser o da própria ide do arduino),outra coisa Serial.write,envia apenas 1BYTE e não é convertido para ascii,se você colocar 65,vai aparecer no terminal da serial "A","A" é 65 na tabela ascii. Provavelmente sua variavel "I" é de 16bits,deveria usar Serial.print(i). Caso com este software de certo,,o problema seria no seu software em java.
  24. É um loop infinito,poderia se também while(true).
  25. A declaração da variável está correta sim,problema seu era naquele if,até comentei isto no código deste post(apenas trecho do post)

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