Ir ao conteúdo

Posts recomendados

Postado

Prezados, 

 

Estou desenvolvendo um circito com PIC 16F628A e preciso incluir uma função de acender, apagar e controlar luminosidade de uma lampada 12VAC (L1).

O mesmo botão quando pressionado liga lampada, se pressionado mais uma vez desiga a lampada mas se deixar pressionado ele precisa ir aumentando o brilho dessa lampada até o máximo. dai se eu soltar e voltar a deixar pressionado o brilho vem reduzindo até o mínimo assim por diante. Pensei em fazer com a ajuda de um Dimmer conforme imagem. Poderiam me ajudar no código ? ou com um outro hardware que seja mais simples e economico? Uso o MikroC

 

#define subida_encosto  RA0_bit
#define descida_encosto RA1_bit
#define subida_cadeira  RA2_bit
#define descida_cadeira RA3_bit
#define lamp RA4_bit
#define lamp_on RB0_bit
#define subida_encosto_on RB1_bit
#define descida_encosto_on RB2_bit
#define subida_cadeira_on  RB3_bit
#define descida_cadeira_on RB4_bit


void volta_zero();

void main()
{

bit flag_lamp;

  CMCON = 7;
  TRISA = 0xff;
  TRISB = 0;
  PORTA = 0xff;
  PORTB = 0xfe;

  while(1)
  {
      if(Button(&PORTA, 0, 50, 0))
      subida_encosto_on = 0;
      else
      subida_encosto_on = 1;

      if(Button(&PORTA, 1, 50, 0))
      descida_encosto_on = 0;
      else
      descida_encosto_on = 1;
      
      if(Button(&PORTA, 2, 50, 0))
      subida_cadeira_on = 0;
      else
      subida_cadeira_on = 1;
      
      if(Button(&PORTA, 3, 50, 0))
      descida_cadeira_on = 0;
      else
      descida_cadeira_on = 1;
      
      if(Button(&PORTA, 4, 50, 0) && (flag_lamp == 0))
      {lamp_on = ~lamp_on;
       flag_lamp = 1;
      }
      if(!Button(&PORTA, 4, 50, 0) && (flag_lamp == 1))
      flag_lamp = 0;
      
      if(Button(&PORTA, 7, 50, 0))
      volta_zero();
      

  }

}

void volta_zero()
{

  lamp_on = 0;
  subida_encosto_on = 0;
  descida_cadeira_on = 0;
  delay_ms(7000);

}

 

1264561176_CKTOdonto.thumb.jpg.7a82cd63ccf67028585d1adba89d75d0.jpg

Postado

Para implementar a funcionalidade de controlar a luminosidade da lâmpada utilizando o Dimmer, você pode usar o oscilador interno do microcontrolador para gerar um sinal de PWM (modulação por largura de pulso). A intensidade da lâmpada pode ser controlada variando a relação ciclo ativo/ciclo total do sinal PWM.

A seguir está um exemplo de como implementar o sinal PWM no seu código:

#define _XTAL_FREQ 4000000 // frequência do oscilador interno

// configura o oscilador interno e o módulo CCP
void setup_PWM() {
    // configura o oscilador interno para trabalhar a 4 MHz
    OSCCON = 0b01110010;
    
    // habilita o módulo CCP1 em modo PWM
    CCP1CON = 0b00001100;
    
    // configura o período do sinal PWM
    PR2 = 249; // período de 4 ms (250 * 16 us)
    
    // habilita o timer 2
    T2CON = 0b00000101;
}

// define a duty cycle do sinal PWM (de 0 a 100)
void set_duty_cycle(unsigned char duty_cycle) {
    // calcula o valor do ciclo ativo
    unsigned int t_on = (duty_cycle * PR2) / 100;
    
    // atualiza o registrador CCPR1L
    CCPR1L = t_on >> 2;
    // atualiza os bits de menor peso do registrador CCP1CON
    CCP1CON &= 0b11001111;
    CCP1CON |= (t_on & 0b00000011) << 4;
}

void main() {
    // configura o PWM
    setup_PWM();
    
    // habilita a saída do sinal PWM no pino RC2
    TRISC2 = 0;
    
    while (1) {
        // ajusta o duty cycle para 0%
        set_duty_cycle(0);
        delay_ms(500);
        
        // ajusta o duty cycle para 50%
        set_duty_cycle(50);
        delay_ms(500);
        
        // ajusta o duty cycle para 100%
        set_duty_cycle(100);
        delay_ms(500);
    }
}

 

  • Membro VIP
Postado

Me fez re-re-re...lembrar. Certa feita fiz dimmer conceitual com pic10f...

Ei-lo mais uma vez.. e mais uma vez pode não ser totalmente inútil...

 

  • Curtir 1
  • 4 semanas depois...
  • Membro VIP
Postado

Na minha limitada visão, um tiristor (triac) em ac e pwm também não se dão bem. Mesmo pra um triac que se desliga na ausência de sinal no gate. ..

(Uma versão dc pra tiristor scr...) :

 

E dizem que tem também pra ac... nem sei se entendi direito 🤔... mas nem preciso no momento 🙃

STATIC+AC+CIRCUIT+BREAKER1.png

https://www.ecstuff4u.com/2018/03/static-circuit-breaker.html

 

Pra usar o pwm num mosfet, uma ideia seria uma ponte retificadora e claro um mosfet que suporta a tensão da rede.

dimmer-with-a-mosfet-circuit-diagram.gif

https://www.learningelectronics.net/circuits/dimmer-with-mosfet.html

Claro mais indicado apenas pra cargas resistivas

Postado

Não precisa de PWM nenhum para controlar uma carga em AC..... basta controlar o ângulo de disparo do Triac usando um sinal de referência de passagem por zero. Tão complicando muito uma coisa tão simples ....

 

Paulo

  • Curtir 1
Postado
Em 02/02/2023 às 12:47, Eng.Proxy disse:

@herbertbahia Opa amigo, tudo bem? Mas nesse caso, sendo uma lampada AC eu teria que trocar o Hardware para um FET direto na lampada correto?

Vire e mexe volto a postar um exemplo antigo.

Foi programado utilizando o compilador CCS,vai ter que alterar o código,mas o Hardware é o mesmo.

 

 

 

 

CCS dimmer.rar

ccs dimmer(1).rar

  • Curtir 1
Postado

@vtrx Opa, baixei os arquivos aqui e vou estudar eles. Qualquer duvid te falo. Mas ja antecipo o agradecimento.

@vtrx porque a questão não é só o dimmer mas asim a jogada de ligar/desligar e controlar luminosidade no mesmo botão (infelizmente o painel da máquina onde vou usar essa placa só disponibiliza um botão.

  • Triste 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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!