![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 |
Nhập môn đệ tử
Tham gia ngày: Oct 2010
Bài gửi: 5
: |
đ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 |
![]() |
![]() |
![]() |
#2 |
Đệ tử 2 túi
Tham gia ngày: Jul 2009
Bài gửi: 33
: |
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 |
![]() |
![]() |
![]() |
#3 |
Nhập môn đệ tử
Tham gia ngày: Oct 2010
Bài gửi: 5
: |
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! |
![]() |
![]() |
![]() |
#4 |
Nhập môn đệ tử
Tham gia ngày: Nov 2010
Bài gửi: 5
: |
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
|
![]() |
![]() |
![]() |
#5 |
Đệ tử 6 túi
Tham gia ngày: Feb 2011
Bài gửi: 156
: |
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 |
![]() |
![]() |
![]() |
#6 |
Nhập môn đệ tử
Tham gia ngày: Mar 2011
Bài gửi: 7
: |
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(); } } |
![]() |
![]() |
![]() |
#7 |
Đệ tử 5 túi
Tham gia ngày: Dec 2008
Nơi Cư Ngụ: Hà Nội
Bài gửi: 91
: |
Í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.
|
![]() |
![]() |
![]() |
#8 |
Nhập môn đệ tử
Tham gia ngày: Jul 2011
Bài gửi: 3
: |
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. |
![]() |
![]() |
![]() |
#9 | |
Đệ tử 3 túi
Tham gia ngày: Jan 2010
Bài gửi: 52
: |
Trích:
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.
__________________
HIENCLUBVN -Naval Academy |
|
![]() |
![]() |
![]() |
#10 | |
Đệ tử 2 túi
Tham gia ngày: Mar 2011
Bài gửi: 27
: |
Trích:
|
|
![]() |
![]() |
![]() |
#11 | |
Đệ tử 2 túi
Tham gia ngày: Nov 2010
Bài gửi: 38
: |
Trích:
|
|
![]() |
![]() |
![]() |
#12 |
Nhập môn đệ tử
Tham gia ngày: Apr 2012
Bài gửi: 1
: |
gui cho minh voi nha ban!cam on
mail:lethanhtung41@gmail.com |
![]() |
![]() |
![]() |
#13 | |
Nhập môn đệ tử
Tham gia ngày: Mar 2010
Bài gửi: 4
: |
her,
Trích:
chúc bạn thành công ! |
|
![]() |
![]() |
![]() |
#14 |
Nhập môn đệ tử
Tham gia ngày: Jul 2011
Bài gửi: 3
: |
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 |
![]() |
![]() |
![]() |
#15 |
Đệ tử 2 túi
Tham gia ngày: Mar 2011
Bài gửi: 27
: |
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 :-? |
![]() |
![]() |
![]() |
|
|