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 độ dùng pic 16f877a và lm35 giao tiếp PC (http://www.picvietnam.com/forum/showthread.php?t=7186)

hoangtuan8911 17-10-2010 09:25 AM

đo nhiệt độ dùng pic 16f877a và lm35 giao tiếp PC
 
em chưa biết gì vê pic cũng như cách làm mạch đo nhiệt độ này, vì vậy áo ai có thể hướng dẫn cho em không ạ? vì đồ án môn học thầy kêu làm, mà pic thì em giờ mới học, đợi học xong rồi làm thì môn này em rớt chắc, rất mong là mấy anh chị hướng dẫn cơ bản để em có thể làm được đề tài này

em nói sơ qua đề tài của em, em muốn dùng lm35 và pic đo nhiệt độ, rồi gửi kết quả đo về máy tính qua cổng COM, máy tính sử dụng VB để thiết kế giao diện và ra quyết định tắt, mở lò nhiệt, hay điều chỉnh nhiệt độ đặt cho lò nhiệt (có thể sử dụng khâu PID).

em xin lỗi vì em mới làm thành viên, tìm hoài không thấy bài em cần nên lập topic này, nếu như đã có topic này rồi thì em thành thật xin lỗi!'

thanks to all

thundernhut 18-10-2010 07:52 AM

cái này cũng đơn giản này,
bạn đọc phần cấu hình bộ dao động, timer, ADC của PIC 16f887
rồi tìm hiểu cách giao tiếp cổng com.
vậy là xong , tài liệu trên mạng khá nhiều

hoangtuan8911 24-10-2010 02:27 PM

cho em hỏi tí nữa, em vẫn không biết làm cách nào để tăng giảm điện áp vào của lò nhiệt.

vì thực ra em làm 1 lò ấp trứng (một mô hình đơn giản sử dụng một bóng đèn), em muốn thay đổi điện áp qua bóng đèn để tăng giảm nhiệt độ

có ai co thể chỉ cho em với, em cảm ơn nhiều nhiều!

nhauruou 07-03-2011 11:16 AM

em cũng đang rất cần đề tài này. mọi người có tài liệu nào gữi cho em với. mail của em là nhaukhongxin@gmail.com

hein_ts 13-03-2011 01:29 AM

Hjhj. Hôm nay vui vui khi trên diễn đàn mình đã được làm đệ tử một túi. Thực ra mình mới nghiên cứu pic được gần tháng nay thôi mà. Về vấn đề của bạn mình có vài góp ý như sau:
Các nguyên liệu:
Labview( nếu bạn chưa học VB thì đảm bảo học cái này nhanh và giao diện trông nó "khoa học hơn nhiều)
PicC (CCS) đương nhiên là bạn đang nghiên cứu nhé:
Đầu tiên là lập trình cho Pic:
Nên dùng ADC 10bit, sẽ chính xác hơn nhiều phải không ạ?
Pic sẽ đọc một giá trị ADC qua đó tính ra nhiệt độ để làm các thao tác tiếp theo.
Nếu dùng bộ PWM chuyên sâu thì e rằng hơi phức tạp vì môi trường truyền nhiệt là không đồng nhất. Bạn chỉ nên chạy 2 chế độ là sáng mờ và sáng nhất.
Nhiệt độ đọc được sẽ đem so sánh với giá trị máy tính gửi xuống
nếu nhỏ hơn thì làm cho bóng điện ở chế độ full
nếu nếu lớn hơn khoảng cho phép thì chạy chế độ 50% chẳng hạn.
Vấn đề là điều xung cho bóng đèn dây tóc phải không ạ?
IRF840N 10A 500V, chỉnh lưu điện lưới tín hiệu qua so quang. Máy hết pin thông cảm

kshoaiviet 27-04-2011 05:35 PM

mong cai anh chi dum bai cua em sai o diem nao,tks



#incluce <16F877A.h> //Khai báo con bit ta sử dụng và file khai báo các bít các thanh ghi quan trọng trong con bit này
#incluce <def_877a.h> //Khai báo sự định nghĩa các thanh ghi và các bít quan trọng
#divice*=16 adc=10 //Khai báo dùng poiter 16 bít và ADC 10 bít
#FUSES NOWDT, HS, NOPUT,NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT //Khai báo các config
#use delay(clock=20000000) //Khai báo sử dụng hàm delay và tần số dao động sử dụng
int8 high,low; //Khai báo các biến số nguyên 1byte(8bít)
//Khai báo mảng hằng số là số nguyên 1 byte
int8 const a[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 };
//Chương trình con tách hàng chục và hàng đơn vị thành hai số chứa trong hai biến đã khai báo trên high va low
Void convert_bcd(int8 x)
{
low=x%10;//chia lấy phần dư=hàng đơn vị
high=x/10;
high=high%10; //high=số hàng chục
}
// Chương trình con giải mã và hiển thị nhiệt độ
Void display()
{
PORTB=a[low]; // Gửi dữ liệu đến LED1
RD0=0; // Bật LED1,LED1 sẽ hiển thị đúng giá trị của low

delay_2ms(2); // Cho trễ 2ms
RD0=1 // tắt LED1
PORTB=a[high]; // LED2
RD1=0;
delay_ms(2);
RD1=1;
}
//Chương trình con thực hiện việc báo động
Void bao_dong(){
int8 i;
for(i=0;i<200;i++)
{
REO=0;delay_us(100);
REO=1;delay_us(100);
} //kêu 200 tiếng
}
// Chương trình chính
void main() {
float value;
int 16 i;

trisb = 0x00; //thiết lập các chân của PORTB là các chân Ouput
trisc = 0x00; //thiết lập các chân của PORTC là các chân Ouput
trisd = 0x00; //thiết lập các chân của PORTD là các chân Ouput
trise = 0x00; //thiết lập các chân của PORTE là các chân Ouput
trisa = 0xff; //thiết lập các chân của PORTa là các chân Input
portC = 0xff; //thiết lập các chân của PORTC xuất ra điện áp ở mức cao
portD = 0xff; //thiết lập các chân của PORTd xuất ra điện áp ở mức cao


//Thiết lập cho ADC
Setup_adc(ADC_CLOCK_INTERNAL_; //Chia ra cách thức hoạt động của ADC là thời gian lấy mẫu bằng xung clock
//Thiết lập chân lấy tín hiệu Analog là chân ANO
setup_adc_ports(AN0);
setup_adc_chanel(0)

delay_us(10); //Trễ 10us

value=(float)read_adc();
value=(value – 558.5)/2.048;
convert_bcd(int8)value0;
i=0;
//Vòng lặp vô tận
While(1)
{
i++;
value = (float)read_adc();
value = (value – 558.5)/2.048; //for 5V supply
if(i==150) { convert_bcd(int8)value);i=0;}
if(((int8)value > 40) || ((int8)value < 15)) bao_dong();
}
}

tanbka 27-04-2011 05:59 PM

Ít nhất bạn cũng phải cho mọi người biết bệnh mình đang mắc phải chứ, đi kiểm tra tổng thế thế này mất thời gian lắm.

windy_90 02-07-2011 08:48 AM

chào mọi người!
mình muốn nhờ các bạn một tí ?
có ai có đọan code về điều khiển lò nhiệt dùng PID bằng pic 16f877a cho mình với.
mình đang làm đề tài này mà viết mãi không chạy.

windy_90 02-07-2011 09:18 AM

Pid
 
đây là hình mô phỏng minh cần làm.mình làm mạch điều khiển lò nhiệt dùng PID viết bằng CCS với pic 16f877a.có bạn nào có thể giúp mình viết đoạn code được không?
lm35 sẽ đưa vào chân A0.bàn phím dùng để cài đặt nhiệt độ đặt cho lò nhiệt.mình viết không được phần lấy mẫu PID để biết nhiệt độ hồi tiếp về,để cài đặt cho hệ số P,I,D.
ai có thể giúp mình không?thanks

pdkxlily 02-07-2011 10:57 AM

value = (float)read_adc();
value = (value – 558.5)/2.048;
cho mình hỏi float ở đây có ý ngiã gì vậy ,có fai đọc số thập phân là cần float :-?

danghien719 02-07-2011 01:55 PM

hì, float ở đây chả là cái gì bạn ạ.
read_adc() trả về là int8.
nhưng bạn thấy đấy value của mình là chia cho 2.048 là chia số thực ko phải nguyên vì thế value phải khai báo thì phép toán mới đúng, còn ko nó chia sẽ sai.
Vì thế câu lệnh trên cần khai báo như thế này là được rồi :

float value ;
value = read_adc();
value = (value = 558.5)/2.048
thế là đc rồi bạn ạ.
Thân !

danghien719 02-07-2011 01:59 PM

Trích:

Nguyên văn bởi windy_90 (Post 46554)
chào mọi người!
mình muốn nhờ các bạn một tí ?
có ai có đọan code về điều khiển lò nhiệt dùng PID bằng pic 16f877a cho mình với.
mình đang làm đề tài này mà viết mãi không chạy.

Hì, cái bạn quan tâm thì cũng là cái mình quan tâm.
Cũng có 1 số đồ án làm điều khiển nhiệt dùng PID nhưng mình thấy chưa hiệu quả lắm.
Mình có làm nhưng ko chơi PID đc, mình dùng TRIAC điều khiển tuyến tính chứ ko dùng PWM như nhiều người.
Nếu bạn cần mình có thể send 2 đồ án :
1. điều khiển nhiệt + PID +LM35
2. điều khiển nhiệt + TRIAC + DS18B20

Thân.

pdkxlily 02-07-2011 09:57 PM

Trích:

Nguyên văn bởi danghien719 (Post 46560)
Hì, cái bạn quan tâm thì cũng là cái mình quan tâm.
Cũng có 1 số đồ án làm điều khiển nhiệt dùng PID nhưng mình thấy chưa hiệu quả lắm.
Mình có làm nhưng ko chơi PID đc, mình dùng TRIAC điều khiển tuyến tính chứ ko dùng PWM như nhiều người.
Nếu bạn cần mình có thể send 2 đồ án :
1. điều khiển nhiệt + PID +LM35
2. điều khiển nhiệt + TRIAC + DS18B20

Thân.

send mình 2 cái đồ án đó đi bạn email : iphuoc.bi@yahoo.com.vn tiện thể cho mình hỏi cách xuất xuất ra ký tự độ C ,mình ko bik xuất cái ký tự đặc biệt đó

windy_90 17-07-2011 10:03 PM

pid
 
1 Attachment(s)
co ai co the xem giup minh,code nay` dung hay sai hok z?
mạch của mình dùng adc 10 bit,lcd 8 bit,biến dat là gtri đặt lấy từ bàn phím,thuc la` giá trị thực lấy từ cảm biến LM35,kp=8,ki=1,kd=10.
sao mà nó hok xuất xung hok bt nữa?
có bạn nào có thể giúp mình hok?

sonluyen 27-07-2011 09:12 PM

cái này y hệt cái đồ án của mình =.=!
vào http://www.picvietnam.com/forum/showthread.php?t=10317 ma xem cái nền vb có thể viết theo.
code thì có thể tìm hiểu kĩ về PID.mình nghĩ như vậy là đủ để hoàn thành 1 cách ok :)
lưu ý là mình đua links k phải muốn maketing sản phẩm của mình.mình chỉ muốn đưa cái phông vb để bạn tham khảo :)


Múi giờ GMT. Hiện tại là 09:08 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