Ir ao conteúdo
  • Cadastre-se

Pedro Caio França

Membro Pleno
  • Posts

    24
  • Cadastrado em

  • Última visita

posts postados por Pedro Caio França

  1. Olá, membros.

    Estou querendo fazer um divisor de frequência com um 555, onde a frequência de entrada é 244,14 Hz (4,096ms), e na saída a metade dessa frequência (8,192ms). Estou inicialmente simulando no multisim com a constante de tempo com R=3.3k e C=2.2uF, gerando a frequência desejada. Mas a forma de onda de saída está estranha, em que a borda sobe rapidamente após a descida, não esperando o próximo disparo. Alguém sabe o motivo? Em anexo está o circuito e a imagem do osciloscópio (em cima a saída do 555 e embaixo a onda de disparo na entrada).

    Obrigado desde já.

    circuito 555 divisor de frequência.png

    osciloscópio no 555.png

  2. @aphawk Cara, muito obrigado pela excelente explicação! Mas eu que me expressei errado. Essa parte do disparo funcionou corretamente. 

    O meu programa é pra controlar a velocidade do motor e simultaneamente medi-la. Separadamente, os dois funcionam normalmente. Consigo com um programa controlar a velocidade, e com outro medi-la. Mas quando junto os dois programas que dá pau. Eu consigo controlar a velocidade, mas não medir. Tava usando o pic 16f628a. Então mudei a ideia pra controlar a velocidade usando o pwm e medi-la usando o capture. Pra isso troquei pro pic 16f877 que possui dois modos CCPs. Mas o que eu queria mesmo era continuar com o 628a, mas já bati muita cabeça e não consegui. O pior é que sei é que é algum problema besta. Então voltando pro 877, me surgiu essa dúvida sobre como usar o pwm pra controlar corretamente.

  3. @aphawk Essa sincronização já está feita no programa. Então acho que não entendi muito bem como usar o PWM nesse caso. Eu tô tentando igualar os períodos e só alterar o tempo de nível alto pra controlar. É o controle de velocidade de um motor de indução monofásico. Esse pensamento tá errado?

    Já tentei utilizar esse pelo disparo do triac, usando o modo captura do pic e fazendo a subtração entre registradores, mas não deu muito certo e por isso tô tentando implementar via PWM.

    Não entendi bem essa explicação final "pode ser desde 1 até qualquer múltiplo(...)". :/

    Obrigado.

  4. Estou querendo controlar a entrega de potência média a uma carga através do PWM do PIC 16f877. Para isso, pensei em igualar o período do PWM ao período da rede elétrica de 16,67 ms (na verdade ao semiciclo que é de 8,33ms), e a partir daí controlar o tempo do pulso em nível alto controlando assim a tensão gerada. No entanto, o PWM é controlado pelo timer 2. Estou usando um cristal de 4 MHz, e com isso consigo um período máximo de 4,096 ms [Tpwm = (PR2+1)*Tosc*PrescalerTMR2, com PR2 = 255, Tosc = 250ns e PrescalerTMR2 = 16]. Não quero por hora trocar o cristal para um de frequência maior. Gostaria de saber se tem algum outro modo de aumentar esse período máximo do timer 2 sem trocar o cristal e sem outros prejuízos. Ou alguma outra forma de fazer esse controle sem necessariamente igualar ao período da rede elétrica.

    Desde já muito obrigado.

  5. @mario cesar berardo  obrigado pela resposta.

    A precisão deve ser a suficiente pra mostrar que o controlador funciona, hehe. Nada muito preciso.

    O detector de passagem por zero já está programa do pic, e ele dispara na parte da senoide desejada. O que me estranha é ter vários circuitos na internet e datasheets (como a figura acima). Mas pode ser que eles sejam apenas para ligar e desligar o motor, não para o controle. Não sei.

    • Curtir 1
  6. Talvez o problema esteja no circuito snubber. Não sei se esse datasheet do MOC usa esse circuito apenas para ligar e desligar a carga, e não pra controlar a velocidade do motor, como é o caso.

    Eu também inseri para teste um snubber para o TRIAC, usando a equação que encontrei no livro do Rashid e está disposta abaixo, em anexo. O dv/dt do triac usado é 100  V/microseg, e fixando o capacitor em 100nF, encontrei a resistência de 11 ohm. Mas nada mudou. Ainda estou procurando como calcular corretamente o circuito snubber.

    dvdt.png

    1 hora atrás, _xyko_ disse:

    Mas não dá pra detectar 0V na rede sem uma amostra dela, seja direta ou através de optoacoplador, entre no microcontrolador.

    O AmpOp (U2:A) dá essa amostra.

  7. @Isadora Ferraz @costa Marcelo  Desculpem a demora pela resposta. O circuito utilizado está anexado abaixo. O controle é feito pelo ângulo de disparo. O resistor de 1k2, acredito que foi de 1/8 W (realmente bem pequeno, tanto que queimou instantaneamente). O de 2k2 foi, no "olhômetro", de 1/2W. Será que foi esse o problema? na verdade nunca liguei pra isso porque nunca tive problema com a queima de resistores por isso... Mas parando pra analisar, realmente. O problema é encontrar tais resistores na minha cidade, por isso comprei logo os que encontrei.

    Obrigado pela atenção. 

    circuito fonte.png

  8. Olá, senhores. 

    Estou desenvolvendo um projeto para controlar um motor de indução monofásico de 1/8 cv usando o PIC. No entanto, por algum motivo que não consigo descobrir, o controle não está funcionando corretamente. O problema é na placa que controla o disparo que está ilustrado na figura abaixo, que tirei do datasheet do moc 3010. O optoacoplador que to utilizando é o MOC 3011, o triac é o TIC226D, usei uma resistência de 2.2k no snubber, e o capacitor é de poliéster. Quando coloquei uma carga resistiva (lâmpada incandescente), funcionou normalmente o disparo do triac, mas quando coloquei o motor, essa resistência do snubber quase pega fogo. Aí usei a outra configuração no mesmo datasheet que usa no snubber R=1.2k e 0.2microF, que é para correntes de porta entre 15 e 50mA, mas quando testei inicialmente na lâmpada mais uma vez a resistência queimou (nem cheguei a testar com o motor). Gostaria de saber se alguém já passou por esse problema, ou se alguém sabe o motivo, já que estou usando valores de datasheet. A onda quadrada que chega no MOC tem amplitude 5Vdc, e Rin é 180ohm. Em anexo está o datasheet utilizado. 

     

    Muito obrigado pela atenção.

    carga indutiva.png

    moc3010 motorola.PDF

  9. Olá!

    Tenho duas dúvidas que acredito ser simples. Estou montando o circuito abaixo em um circuito impresso. Na entrada tem uma tensão de 5V, e R1 = 500 ohm. Posso utilizar um resistor de 1k em R1, sem prejuízo? (logo uma corrente de 5mA). Utilizo um MOC 3010, e tensão 127V. No entanto, o TRIAC que possuo é um TIC226D, indicado para tensões 220V (Tensão de pico 400V). Há algum problema nisso? Na minha cidade, não encontrei o TIC226B, por isso só posso usar o da classe D.

    Com a palavra, vocês.

    Grato desde já.

     

    post-718681-0-20879900-1425599281_thumb.

  10. Olá.

    Estou iniciando no mundo PIC, e estou com dificuldade para fazer funcionar uma transmissão serial pelo PIC 16F628A. É apenas a transmissão, onde quero ver o byte através de um osciloscópio. A linguagem usada é ASSEMBLER. Não sei onde estou errando, por isso gostaria de uma colaboração para encontrar o erro. Grato desde já. Eis o código:

     

    #INCLUDE <P16f628A.INC>
    #DEFINE BANK0 BCF STATUS,RP0
    #DEFINE BANK1 BSF STATUS,RP0
    CBLOCK 0X20
    ENDC
    ORG 0X00
    GOTO DEFINICOES
    ORG 0X04
    RETFIE 
     
    DEFINICOES
         BANK0
              CLRF PORTA
              CLRF PORTB
         BANK1
              BCF TRISB,2
              MOVLW .25               ;ou D'25'
              MOVWF SPBRG       ;baud rate = 9600 (erro de 0,16%)
              CLRF TXSTA
              BSF TXSTA,2            ;velocidade alta. bit BRGH
              BCF TXSTA,4            ;modo assíncrono. bit SYNC
         BANK0
              CLRF RCSTA
              BSF RCSTA,7            ;USART habilitada. bit SPEN          
         BANK1     
              BSF TXSTA,5 ;Transmissão habilitada. bit TXEN
         BANK0
     
    INICIO
         TRANSMISSAO     
              MOVWF B'10101010'
              MOVLW TXREG
              BTFSS   PIR,4
              GOTO    $-1
    END
  11.           Olá!

     

              Estou com problemas no meu programa, não consigo fazê-lo funcionar. Já tentei várias alternativas. Acredito que seja algum erro bobo. Gostaria realmente de uma ajuda. O programa foi desenvolvido em linguagem Assembly e compilado no MPLAB. Muito obrigado desde já!

     

             A ideia é a seguinte: possuo uma fonte que gera um sinal DC com período 16,67 ms (advinda da rede elétrica convencional 60 Hz). Utilizando três botões, cada botão que eu apertar gera um sinal na porta do PIC16F628A com períodos diferentes, sincronizados com o sinal da fonte. Exemplo: botão 1 gera sinal de 16,67 ms, botão 2 gera de 4,167 ms (1/4 da fonte) e botão 3 gera sinal com 8,33 ms (1/2 da fonte). 

     

    #INCLUDE <P16f628A.INC>
    #DEFINE BANK0 BCF STATUS,RP0
    #DEFINE BANK1 BSF STATUS,RP0
     
    CBLOCK 0X20
    D1 ;variáveis
    D2
    CONTA
    ENDC
     
    #DEFINE BOTAO0 PORTA,0 ;entradas
    #DEFINE BOTAO1 PORTA,1
    #DEFINE BOTAO2 PORTA,2
    #DEFINE SAIDA PORTB,0 ;saída
     
    ORG 0X00
         GOTO DEFINICOES
    ORG 0X04
         BCF INTCON,0
    RETFIE 
     
    TEMPO1
         ;4163 cycles
         MOVLW 0x40
         MOVWF D1
         MOVLW 0x04
         MOVWF D2
         DELAY
             DECFSZ D1, F
             GOTO $+2
             DECFSZ D2, F
         GOTO DELAY
         ;4 cycles
         GOTO $+1
         GOTO $+1
    RETURN
     
    TEMPO2
         ;8328 cycles
         MOVLW 0x81
         MOVWF D1
         MOVLW 0x07
         MOVWF D2
         DELAY1
              DECFSZ D1, F
              GOTO $+2
              DECFSZ D2, F
             GOTO DELAY
     
              2 cycles
              GOTO $+1
    RETURN
     
    TEMPO3
         ;12498 cycles
         MOVLW 0xC3
         MOVWF D1 
         MOVLW 0x0A
         MOVWF D2
         DELAY2
              DECFSZ D1, F
              GOTO $+2
              DECFSZ D2, F
              GOTO DELAY
     
              ;2 cycles
              GOTO $+1
    RETURN
     
    TEMPO4
         ;16663 cycles
         MOVLW 0x04
         MOVWF D1
         MOVLW 0x0E
         MOVWF D2
         DELAY3
              DECFSZ D1, F
              GOTO $+2
              DECFSZ D2, F
              GOTO DELAY3
     
              ;4 cycles
              GOTO $+1
              GOTO $+1
    RETURN
     
    DEFINICOES
         BANK0
              MOVLW 0x07
              MOVWF CMCON ;desativando comparadores para utilização do PORTA
         BANK1
              CLRF PORTA
              CLRF PORTB
              CLRF INTCON ;Todas as interrupções impedidas
              MOVLW B'00001000' ;Só a interrupção por mudança de estado habilitada
              MOVWF INTCON
              BSF INTCON,GIE ;Permitida a ocorrência de interrupções
              MOVLW B'11111111' 
              MOVWF TRISA
              MOVLW B'11111110' ;RB0 como saída
              MOVWF TRISB
              MOVLW B'00000000' 
              MOVWF OPTION_REG
         BANK0
     
    INICIO
         BTFSS INTCON,0
         GOTO $-1
         MAIN0
              BTFSC  BOTAO0
              GOTO   BOTAO0_ON
              GOTO   BOTAO0_OFF
           
              BOTAO0_ON 
                   BSF PORTB,0
                   CALL TEMPO4 ;16,667 s
                   BCF PORTB,0
                   BCF INTCON,0
              GOTO   MAIN1
                                  
              BOTAO0_OFF
                   BCF PORTB,0
                   BCF INTCON,0
              GOTO   MAIN1
     
         MAIN1
             BTFSC  BOTAO1
             GOTO   BOTAO1_ON
             GOTO   BOTAO1_OFF
     
              BOTAO1_ON
                  CALL TEMPO1 ;4,167 ms
                   BSF PORTB,0
                   CALL TEMPO3 ;12,5 ms
                   BCF PORTB,0
                   BCF INTCON,0
             GOTO   MAIN2
     
              BOTAO1_OFF
                   BCF PORTB,0
                   BCF INTCON,0
              GOTO   MAIN2
     
         MAIN2 
              BTFSC  BOTAO2
              GOTO   BOTAO2_ON
              GOTO   BOTAO2_OFF
       
              BOTAO2_ON
                   CALL TEMPO2 ;8,33 ms
                   BSF PORTB,0
                   CALL TEMPO2 ;8,33 ms
                   BCF PORTB,0
                   BCF INTCON,0
             GOTO   INICIO
     
             BOTAO2_OFF
                   BCF PORTB,0
                   BCF INTCON,0
            GOTO   INICIO
    END

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!