Índice:

Controle PWM DIY para fãs de PC: 12 etapas
Controle PWM DIY para fãs de PC: 12 etapas

Vídeo: Controle PWM DIY para fãs de PC: 12 etapas

Vídeo: Controle PWM DIY para fãs de PC: 12 etapas
Vídeo: How To Make Cooling Fan Speed Control Circuit - Homemade Project 2024, Novembro
Anonim
Controle PWM DIY para fãs de PC
Controle PWM DIY para fãs de PC

Este Instructable descreve a construção de um controlador PWM de ventoinha para PC de 12 V com todos os recursos. O design pode controlar até 16 ventiladores de computador de 3 pinos. O projeto usa um par de CIs de sinais mistos configuráveis Dialog GreenPAK ™ para controlar o ciclo de trabalho de cada ventilador. Também inclui duas maneiras de alterar a velocidade do ventilador:

uma. com um codificador de quadratura / rotativo

b. com um aplicativo Windows integrado em C # que se comunica com o GreenPAK por meio de I2C.

Abaixo, descrevemos as etapas necessárias para entender como o chip GreenPAK foi programado para criar o controle PWM para ventiladores de PC. No entanto, se você deseja apenas obter o resultado da programação, baixe o software GreenPAK para visualizar o arquivo de design GreenPAK já concluído. Conecte o GreenPAK Development Kit ao computador e acesse o programa para criar o IC personalizado para controle PWM para ventiladores de PC.

Etapa 1: Diagrama de blocos do sistema

Diagrama de Bloco do Sistema
Diagrama de Bloco do Sistema

Etapa 2: Projeto do decodificador giratório SLG46108

Projeto do decodificador giratório SLG46108
Projeto do decodificador giratório SLG46108
Projeto do decodificador giratório SLG46108
Projeto do decodificador giratório SLG46108
Projeto do decodificador giratório SLG46108
Projeto do decodificador giratório SLG46108

Um codificador rotativo é usado para aumentar ou diminuir o ciclo de trabalho dos ventiladores manualmente. Este dispositivo emite pulsos em suas saídas do Canal A e Canal B que estão 90 ° afastadas. Consulte AN-1101: Decodificador de quadratura desbloqueado para obter mais informações sobre como funciona um codificador rotativo.

Um decodificador giratório de relógio pode ser criado usando um Dialog GreenPAK SLG46108 para processar os sinais do canal A e do canal B e enviá-los como pulsos no sentido anti-horário (CCW) e horário (CW).

Quando o canal A lidera o canal B, o projeto emite um pulso curto em CW. Quando o canal B lidera o canal A, ele emite um pulso curto no CCW

Três DFFs sincronizam a entrada do Canal A com o relógio. Da mesma forma, o atraso do tubo com OUT0 definido para dois DFFs e OUT1 definido para três DFFs criam a mesma funcionalidade para o canal B.

Para criar saídas CW e CCW, use alguns LUTs. Para obter mais informações sobre o projeto do decodificador rotativo padrão, visite este site.

O decodificador rotativo GreenPAK receberá os pulsos de entrada A e B e produzirá os pulsos CW e CCW conforme mostrado na Figura 4.

O circuito após as portas XOR garante que nunca haverá um pulso CW e um pulso CCW ao mesmo tempo, permitindo qualquer erro com o codificador rotativo. O atraso de borda descendente de 8 ms nos sinais CW e CCW os força a permanecer altos por 8 ms mais um ciclo de clock, o que é necessário para os GreenPAKs SLG46826 downstream.

Etapa 3: Design do controlador de ventilador SLG46826

SLG46826 Fan Controller Design
SLG46826 Fan Controller Design

Etapa 4: Geração de PWM com contadores de deslocamento

Geração PWM com contadores de compensação
Geração PWM com contadores de compensação
Geração PWM com contadores de compensação
Geração PWM com contadores de compensação

Um par de contadores de deslocamento com o mesmo período é usado para gerar o sinal PWM. O primeiro contador define um DFF e o segundo o redefine, criando um sinal de PWM de ciclo de trabalho consistente, conforme mostrado na Figura 6 e na Figura 7.

CNT6 define DFF10 e a saída invertida de CNT1 redefine DFF10. Os pinos 18 e 19 são usados para dar saída ao sinal PWM para circuitos externos

Etapa 5: Controle do ciclo de trabalho com injeção de relógio e pulo de relógio

Controle de ciclo de trabalho com injeção de relógio e pulo de relógio
Controle de ciclo de trabalho com injeção de relógio e pulo de relógio
Controle de ciclo de trabalho com injeção de relógio e pulo de relógio
Controle de ciclo de trabalho com injeção de relógio e pulo de relógio

O controlador do ventilador recebe os sinais CW e CCW como entradas do decodificador rotativo e os usa para aumentar ou diminuir o sinal PWM que controla a velocidade do ventilador. Isso é obtido com vários componentes lógicos digitais.

O ciclo de serviço precisa aumentar quando um pulso CW é recebido. Isso é feito injetando um pulso de clock extra no bloco CNT6, fazendo com que ele produza um ciclo de clock antes do que deveria. Este processo é mostrado na Figura 8.

O CNT1 ainda está sendo cronometrado a uma taxa constante, mas o CNT6 tem alguns relógios extras injetados. Cada vez que há um relógio extra para o contador, ele muda sua saída um período de relógio para a esquerda.

Por outro lado, para diminuir o ciclo de trabalho, pule um pulso de clock para CNT6 como mostrado na Figura 9. CNT1 ainda está sendo cronometrado a uma taxa constante, e há pulsos de clock pulados para CNT6, onde o contador não foi cronometrado quando era suposto para. Desta forma, a saída do CNT6 é empurrada para a direita por um período de clock por vez, encurtando o ciclo de trabalho PWM de saída.

A funcionalidade de injeção e salto de clock é realizada com o uso de alguns elementos lógicos digitais dentro do GreenPAK. Um par de blocos multifuncionais é usado para criar um par de combos de detector de trava / borda. O LUT0 de 4 bits é usado para fazer a mux entre o sinal de relógio geral (CLK / 8) e os sinais de injeção ou salto de relógio. Esta funcionalidade é descrita com mais detalhes na Etapa 7.

Etapa 6: entrada do BOTÃO

BOTÃO de entrada
BOTÃO de entrada

A entrada do BOTÃO é depurada por 20 ms e, em seguida, usada para alternar uma trava que determina se esse chip específico está selecionado. Se for selecionado, o LUT de 4 bits passa o relógio pulando ou sinais de injeção. Se o chip não for selecionado, o LUT de 4 bits simplesmente passa o sinal CLK / 8.

Etapa 7: Prevenir a sobreposição do ciclo de trabalho

Prevenção de capotamento do ciclo de trabalho
Prevenção de capotamento do ciclo de trabalho
Prevenção de capotamento do ciclo de trabalho
Prevenção de capotamento do ciclo de trabalho
Prevenção de capotamento do ciclo de trabalho
Prevenção de capotamento do ciclo de trabalho

As travas RS LUT5 de 3 bits e LUT3 de 3 bits são usadas para garantir que você não possa injetar ou pular tantos relógios que os contadores de deslocamento rolem. Isso evita que o sistema atinja o ciclo de trabalho de 100% e, em seguida, passe para um ciclo de trabalho de 1% se receber outro relógio injetado.

As travas RS evitam que isso aconteça travando as entradas para os blocos multifuncionais quando o sistema está a um ciclo de clock de rolar. Um par de DFFs atrasa os sinais PWM_SET e PWM_nRST por um período de clock, conforme mostrado na Figura 11.

Um par de LUTs é usado para criar a lógica necessária. Se o ciclo de serviço for tão baixo que o sinal PWM_SET atrasado ocorra ao mesmo tempo que o sinal PWM_nRST, uma diminuição adicional no ciclo de serviço causará um rollover.

Da mesma forma, se estiver se aproximando do ciclo de trabalho máximo, de modo que o sinal PWM_nRST atrasado ocorra ao mesmo tempo que o sinal PWM_SET, é necessário evitar qualquer aumento no ciclo de trabalho. Nesse caso, atrase o sinal nRST em dois ciclos de clock para garantir que o sistema não passe de 99% para 1%.

Etapa 8: Controle do ciclo de trabalho com I2C

Controle do ciclo de trabalho com I2C
Controle do ciclo de trabalho com I2C
Controle do ciclo de trabalho com I2C
Controle do ciclo de trabalho com I2C
Controle do ciclo de trabalho com I2C
Controle do ciclo de trabalho com I2C

Este projeto incorpora outra maneira de controlar o ciclo de trabalho diferente do salto / injeção do relógio. Um microcontrolador externo pode ser usado para escrever comandos I2C para o GreenPAK para definir o ciclo de trabalho.

Controlar o ciclo de trabalho em I2C requer que o controlador execute uma sequência de comando específica. Esses comandos são mostrados em ordem na Tabela 1. Um "x" indica um bit que não deve mudar, "[" indica um bit START e "]" indica um bit STOP

O bloco PDLY gera um pulso alto ativo curto na borda descendente do sinal CLK / 8, que é chamado! CLK / 8. Esse sinal é usado para sincronizar o DFF14 em uma frequência constante. Quando I2C_SET fica alto de forma assíncrona, a próxima borda ascendente de! CLK / 8 faz com que DFF14 produza HIGH, o que aciona o CNT5 OneShot. O OneShot é executado pelo número de ciclos de clock que o usuário escreveu, conforme especificado no comando I2C "Write to CNT5" na Tabela 1. Nesse caso, são 10 ciclos de clock. O OneShot permite que o oscilador de 25 MHz funcione exatamente durante sua duração e não mais, de modo que o LUT0 de 3 bits receba o número de ciclos de clock que foram gravados no CNT5.

A Figura 15 mostra esses sinais, onde os relógios vermelhos são aqueles que são enviados para o LUT0 de 3 bits, que os passa para o CNT6 (o contador PWM_SET), criando assim o offset para a geração do duty cycle.

Etapa 9: Leitura do tacômetro

Leitura do tacômetro
Leitura do tacômetro
Leitura do tacômetro
Leitura do tacômetro

Se desejar, o usuário pode ler o valor do tacômetro em I2C para rastrear a rapidez com que o ventilador está girando lendo o valor CNT2. O CNT2 é incrementado sempre que ACMP0H tem uma borda ascendente e pode ser redefinido de forma assíncrona com um comando I2C. Observe que este é um recurso opcional e o limite de ACMP0H precisará ser ajustado de acordo com as especificações do ventilador em uso.

Etapa 10: Projeto do circuito externo

Projeto de Circuito Externo
Projeto de Circuito Externo

O circuito externo é bastante simples. Há um botão conectado ao Pin6 do GreenPAK para alternar se este dispositivo em particular está selecionado para controle giratório e um LED conectado ao Pin12 e Pin13 para indicar quando o dispositivo é selecionado.

Como o ventilador funciona com 12 V, um par de FETs para controlar sua comutação é necessário. O Pin18 e o Pin19 do GreenPAK conduzem um nFET. Quando o nFET é ligado, ele puxa a porta do pFET LOW, que conecta o ventilador a +12 V. Quando o nFET é desligado, a porta do PFET é puxada para cima pelo resistor de 1 kΩ, que desconecta o ventilador de +12 V.

Etapa 11: Design de PCB

Design PCB
Design PCB

Para fazer o protótipo do projeto, um par de PCBs foram montados. O PCB à esquerda é o "Controlador de ventilador", que abriga o codificador rotativo, conector de 12 V, SLG46108 GreenPAK e conectores para a placa de breakout FT232H USB para I2C. As duas PCBs à direita são "Placas de Ventilador", que contêm os SLG46826 GreenPAKs, botões, interruptores, LEDs e conectores de ventilador.

Cada Fan Board tem um conector macho coberto no lado esquerdo e um conector fêmea no lado direito para que possam ser encadeados juntos. Cada Fan Board pode ser preenchida com recursos para controlar de forma independente dois ventiladores.

Etapa 12: Aplicativo C #

Aplicativo C #
Aplicativo C #

Um aplicativo C # foi escrito para fazer a interface com as Fan Boards por meio da ponte FT232H USB-I2C. Este aplicativo pode ser usado para ajustar a frequência de cada ventilador com comandos I2C que são gerados pelo aplicativo.

O aplicativo executa ping em todos os 16 endereços I2C uma vez por segundo e preenche a GUI com os endereços escravos que estão presentes. Neste exemplo, Ventilador 1 (endereço escravo 0001) e Ventilador 3 (endereço escravo 0011) conectado à placa. Os ajustes para o ciclo de trabalho de cada ventilador individualmente podem ser feitos movendo a barra deslizante ou digitando um valor de 0-256 na caixa de texto abaixo da barra deslizante.

Conclusões

Usando este design, é possível controlar de forma independente até 16 ventiladores (uma vez que existem 16 endereços escravos I2C possíveis) com um codificador rotativo ou com um aplicativo C #. Foi demonstrado como gerar um sinal PWM com um par de contadores de deslocamento e como aumentar e diminuir o ciclo de trabalho desse sinal sem rollover.

Recomendado: