View Full Version : đo nhiệt độ điều khiển động cơ
dinhnambkhn
06-03-2011, 11:08 PM
e mới học PIC và đang làm đồ án đề tà:"đo hiển thị nhiệt độ và điều khiển tốc độ quạt làm mát DC dùng thuật toán fuzzy nhưng có gặp 1 số khó khăn sau xin các a giúp đỡ:
e đã làm và hiển thị dc nhiệt độ trên led7seg và LCD,về thuật toán fuzzy thì ok!nhưng khi đưa chế độ PWM vào thì mạch lại không thể chạy dc(e đã mô phỏng trên protues).
xin các a chỉ giáo cho!
nhauruou
07-03-2011, 10:43 AM
bạn gữi sơ đồ nguyên lý lên cho mọi người rõ hơn chút xiu đi
bạn gữi sơ đồ nguyên lý lên cho mọi người rõ hơn chút xiu đi
Kèm theo file code chương trình nữa chứ nhỉ?
dinhnambkhn
07-03-2011, 04:47 PM
đây là code của chương trình!
code[
// Mo ta phan cung : Dung PIC16F877A - thach anh 20MHz
// : Led7seg giao tiep voi PORTD
// : Dau ra LM335 dua vao chan AN0
//----------------------------------------------------------------
// Chu thich :
// : dung che do Power On Reset
// : chuong trinh tham khao cua anh linhnc308
//================================================= =======
#include <16F877A.h>
#include <def_877a.h>
#device *=16 adc=10
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)
#define speak PIN_A1
#use fast_io(d)
#byte portd=0x8
int8 low,high,min,max,i,j,low1,high1;
int1 do_F;
void convert_bcd(int8 x);
const char led7seg[12]={0xC0,0xcf,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x9 0,0x8e,0xc6};
const char quet[3]={0b00100000,0b01000000,0xb10000000};
#INT_EXT
void test()
{
if (do_F == 1) do_F=0;
else do_F=1;
}
//-----------------------------------------------------------------
void main()
{
float value;
min =15; //nhiet do min
max =35; //nhiet do max
do_F =0 ;
i = 10 ;
set_tris_d(0);
trisa = 0xFF;
trisb = 0x01;
trisc=0x00;
portd=0xff;
output_low(speak);
//==== Khoi tao cho ngat ngoai============================================= ==
enable_interrupts (INT_EXT);
ext_int_edge(H_TO_L);
enable_interrupts (GLOBAL);
//=========== Khoi tao che do cho bo ADC=====================================
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
delay_us(10);// Lay mau nhiet do lan dau tien
value=(float)read_adc();
value = (value - 558.5)/2.048; // For 5V supply
// value = (value - 754.8)/2.048; // For 3.7V Supply
// value = (value - 698.2)/2.048; // For 4V supply
convert_bcd((int8)value); // Tach so tram, chuc, donvi de hien thi len LED 7
delay_ms(500);
while(1)
{
if (i==10)
{
value = read_adc();
value=(value-558.5)/2.048;
if (do_F==1)
value=1.8*value+32;
convert_bcd((int8)value);
if (do_F==0)
{
for(j=0;j<25;j++);
{
PORTD=led7seg[high1];
portc=quet[0];
delay_us(100);
portd=0xff;
delay_us(30);
Portd=led7seg[low1];
portc=quet[1];
delay_us(100);
portd=0xff;
delay_us(30);
portd=led7seg[11];
portc=quet[2];
delay_us(100);
portd=0xff;
delay_us(30);
}
}
if (do_F==1)
{
for(j=0;j<25;j++);
{
PORTD=led7seg[high1];
portc=quet[0];
delay_us(100);
portd=0xff;
delay_us(30);
Portd=led7seg[low1];
portc=quet[1];
delay_us(100);
portd=0xff;
delay_us(30);
portd=led7seg[10];
portc=quet[2];
delay_us(100);
portd=0xff;
delay_us(30);
}
}
i=0;
}
if( ( (int8)value > max ) || ( (int8)value < min) )
{
output_high(speak);
}
i++;
}
}
//The End=============================================== ========================
void convert_bcd(int8 x)
{
low1=x%10; //chia lay phan du, so hang don vi
high1=x/10; //tach hang tram va hang chuc
low = low + 0x30;
high = high + 0x30;
}
]
dinhnambkhn
07-03-2011, 04:55 PM
khi m đưa chế độ PWM vào CC1 thì nó hông chạy!
bạn nào có code do nhiệt độ khác chuẩn hơn không!mong các bạn giúp đỡ!
dinhnambkhn
07-03-2011, 04:58 PM
đây là sơ đồ của mình
dientuvienthong
21-03-2011, 11:48 AM
cảm ơn anh em nhiều
dinhnambkhn
31-12-2012, 01:19 AM
Lâu không vao threat nay nhi. Vấn đề về đo 2 cảm biến nhiệt độ và điều chỉnh tốc độ quạt điều hòa or. Điều chỉnh nhiệt độ bình nước theo thuật toán fuzzy đã được minh làm thanh công.
Nếu ai cần nghiên cứu tiếp thì gửi mail co mình dinhnambkhn@gmail.com .đang thất nghiệp nên free time,sẽ giúp a e hết mình.hj! Ai đang ở Vinh or Hà Tĩnh thì a e trao đổi trực tiếp.hj
Thân!
dinhnambkhn
31-12-2012, 01:20 AM
Ah!code đã hoàn thiện và thuật toán đươc cải tiến hơn nhiều!
Thân
dinhnambkhn
31-12-2012, 01:22 AM
Ah!code đã hoàn thiện và thuật toán đươc cải tiến hơn nhiều!
Thân
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.