Ir ao conteúdo

Acionar um cooler com um Pic16f877


Evertton Laddaga

Posts recomendados

Postado

Boa noite caros colegas, peço a ajuda para poder acionar um cooler com um Pic16f877, meu objetivo é fazer um programa para que o cooler possa ser acionado no sentido normal e no sentido reverso...

se alguem tiver algo semelhante(alguma simulação no proteus) que possa me ajudar ficaria feliz se me passase.

Peço a ajuda de todos,

já agradeço a todos pelas resposta...

Postado
Eu acho que pra mudar a rotação basta inverter os polos Negativo e Positivo. Nenhum segredo.

Na verdade não. Esses coolers de CPU usam um circuito para controlar o um motor brushless. Se você inverter a polaridade esse circuito queima.

Postado
Na verdade não. Esses coolers de CPU usam um circuito para controlar o um motor brushless. Se você inverter a polaridade esse circuito queima.

sim é isso mesmo se eu inverter a polaridade de tensão que alimenta meu cooler ele irá queimar. Dei um exemplo, mas eu estou usando agora um outro tipo de motor, e estou programando em C, porque meu projeto num é apenas inverter a rotação de um motor, fazer isso de acordo com um sensor.

Postado
sim é isso mesmo se eu inverter a polaridade de tensão que alimenta meu cooler ele irá queimar. Dei um exemplo, mas eu estou usando agora um outro tipo de motor, e estou programando em C, porque meu projeto num é apenas inverter a rotação de um motor, fazer isso de acordo com um sensor.

O cooler da cpu é monitorado pelo BIOS do PC.

voce terá que montar um circuito a parte para controle do Cooler e provavelmente desabilitar algums opções na BIOS para não monitorar a velocidade do Cooler ou a placa mão vai reiniciar ou desligar.

Mas não vejo lógica em inverter a rotação do Cooler,inverter vai causar um aquecimento maior do processador.

  • 3 meses depois...
Postado

// LCD module connections

sbit LCD_RS at RB4_bit;

sbit LCD_EN at RB5_bit;

sbit LCD_D4 at RB0_bit;

sbit LCD_D5 at RB1_bit;

sbit LCD_D6 at RB2_bit;

sbit LCD_D7 at RB3_bit;

sbit LCD_RS_Direction at TRISB4_bit;

sbit LCD_EN_Direction at TRISB5_bit;

sbit LCD_D4_Direction at TRISB0_bit;

sbit LCD_D5_Direction at TRISB1_bit;

sbit LCD_D6_Direction at TRISB2_bit;

sbit LCD_D7_Direction at TRISB3_bit;

// End LCD module connections

long leitura_ad = 0, aux = 0;

char texto[5] = "00.0";

char valor[5] = "00.0";

long setpoint;

char teste = 1;

void atualiza_lcd(){ // funçao atualiza lcd

Lcd_Init();

delay_ms(20);

Lcd_Cmd(_LCD_CLEAR);

Lcd_Cmd(_LCD_CURSOR_OFF);

}

void escreve_eeprom() {

EEPROM_Write (0,setpoint);

EEPROM_Write (1,setpoint>>8); // quebra var.teste de 16bit em dois de 8

delay_ms(40);

Lcd_Cmd(_LCD_CLEAR);

Lcd_Cmd(_LCD_CURSOR_OFF);

Lcd_out(1,4, "SUCESSSO");

Lcd_out(2,1, "AJUSTE GRAVADO");

delay_ms(800);

atualiza_lcd();

}

void main() {

trisa.ra0 = 1;

trisa.ra1= 1; //configrada como entrada

trisa.ra2= 1; //configrada como entrada

PORTC = 0;

TRISB = 3; //'configura todos os pinos do portd como saída

TRISD = 3; //'configura todos os pinos do portd como saída

TRISE = 0; //'configura todos os pinos do porte como saída

TRISC = 0; //'configura todos os pinos do portd como saída

ADCON1 = 0b00001110; //'configura AN0,AN1,AN3 COMO analógico e os demais pinos como digital

Lcd_Init();

Lcd_Cmd(_LCD_CLEAR);

Lcd_Cmd(_LCD_CURSOR_OFF);

Lcd_Out(1,13, texto);

Lcd_Out(2,13, valor);

atualiza_lcd();

setpoint = eeprom_Read(1);setpoint<<=8;

setpoint |= eeprom_Read(0);

while(1){

leitura_ad = adc_read(0);

aux = leitura_ad;

leitura_ad = leitura_ad*5000/1023;

texto[0] = (leitura_AD%1000)/100 + 48;

texto[1] = (((leitura_AD%1000)%100)/10) + 48;

texto[2] = '.';

texto[3] = (((leitura_AD%1000)%100)%10) + 48;

Lcd_Out(1,13, texto);

if (Button(&PORTD, 0, 20 ,0)){ //verifica tecla1.

setpoint++;

}

if (Button(&PORTD, 1, 20, 0)){ //verifica se a tecla2.

setpoint--;

}

if (PORTA.RA3 == 0){ //se portb.rb0 estiver em nivel baixo chama funçao

escreve_eeprom(); //chama a funçao escreve na eeprom

}

if (PORTA.RA4 == 0 && teste ==1 ){

portc.rc7 = ~portc.rc7;

teste = 0; }

delay_ms(20);

if (PORTA.RA4 == 1 && teste == 0 ){

teste = 1;

delay_ms(20);

}

if(portc.rc7==1){

Lcd_out(2,10, "TL");

} else Lcd_out(2,10, "TD");

valor[0] = (setpoint%100)/10 + 48;

valor[1] = ((setpoint%100)%10) + 48;

valor[2] = '.';

valor[3] = '0';

Lcd_out(2,13, valor);

Lcd_Out(1,1,"TEMPERATURA");

Lcd_Out(2,1,"AJUSTE");

if (aux/2 <= setpoint){

portc.rc0 = 0;

}

else portc.rc0 = 1;

}

}

////////NA SAIDA DO PIC RC0 PINO 15 COLOQUE UM RESISTOR DE 2 K NO TRANSISTOR BC 547 JUNTAMENTE NA SAIDA DO COLETOR UM RELE DE 6V

NO EMISSOR TERRA VEJA O DESENHO

post-755850-13884961567112_thumb.jpg

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!