PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   đo nhiệt độ điều khiển động cơ (http://www.picvietnam.com/forum/showthread.php?t=7925)

dinhnambkhn 06-03-2011 11:08 PM

đo nhiệt độ điều khiển động cơ
 
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

ak47 07-03-2011 11:04 AM

Trích:

Nguyên văn bởi nhauruou (Post 42229)
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

1 Attachment(s)
đâ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


Múi giờ GMT. Hiện tại là 12:12 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam