PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 30-07-2011, 02:12 AM   #16
ngdnhanbk
Đệ tử 2 túi
 
Tham gia ngày: Nov 2010
Bài gửi: 38
:
Trích:
Nguyên văn bởi danghien719 View Post
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.
Cho mình xin để tham khảo đi bạn. Email mình là nguyennhan612@gmail.com. Cám ơn bạn
ngdnhanbk vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-09-2011, 02:51 AM   #17
ichitea606
Đệ tử 2 túi
 
Tham gia ngày: Nov 2010
Bài gửi: 26
:
Trích:
Nguyên văn bởi danghien719 View Post
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 !
cái này nghĩa là sao vậy huynh đệ đang làm con lm35 sai số 0,5c nhưng không biết phần giải mã làm sao đễ hiển thị kết quả,và kết nối làm sao để con lm35 trong protues mỗi lần tăng 0,5 c.
ichitea606 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-04-2012, 08:10 PM   #18
bahai_tinhban
Nhập môn đệ tử
 
Tham gia ngày: Apr 2012
Bài gửi: 1
:
anh hay chị nào cho e biết kỹ về cách làm máy đo nhiệt độ sử dụng pic 16f877a ko ạ.về code,phần lập trình,.... e mới học thầy cho bài tập lớn rồi,hic e thank mọi ng trước nhá
bahai_tinhban vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-04-2012, 04:08 PM   #19
tungcddt9
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
tungcddt9 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-07-2012, 12:55 AM   #20
kimvothan
Nhập môn đệ tử
 
Tham gia ngày: Dec 2010
Bài gửi: 4
:
cac huynh xem giup e doan code roi cho em hoi vai cau:
1. em khong thay chuong trinh xuat gia tri nhiet do minh da tinh ra khi nao tren lcd ca ngoai cai lenh xuat dong lenh luc dau, va do la len nao vay?
2. va gia tri chia "x=x/2.049" lay so 2.049 o dau ra vay may huynh?
3. va doan code nay e lay tren mang xuong xem thay no chay dua ra gia tri khong dc dung lam, co huynh nao co the toi uu no hon giup e khong.
E cam on cac huynh.
#include <16F877a.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#device 16F877*16ADC=10
#use delay(clock=4000000)
#byte portb=0x06
#byte porta=0x05
#byte portc=0x07
#byte portd=0x08
#byte porte=0x09
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
#use fast_io(e)
#bit rs=portd.0
#bit rw=portd.1
#bit e=portd.2
#byte lcd=portb

const char mht[]={'0','1','2','3','4','5','6','7','8','9','-',' '};
const char nd0[]="nhiet do: do C";
const char tn[]="dungdt08B@gmail.com";
int8 i,chuc,dv,tram;
int8 y;
void doc_ADC();
void hienthi();
void ghilenh();
void ghidata();
void ghilcd();
void main()
{
float x;
set_tris_e(0);
set_tris_d(0);
set_tris_b(0);
lcd=0x80;
ghilenh();
for(i=0;i<=15;i++)
{
lcd=nd0[i];
ghidata();
}
lcd=0xc0;
ghilenh();
for(i=0;i<=19;i++)
{
lcd=tn[i];
ghidata();
}
while(1)
{
doc_ADC();
x= read_adc();
x=x/2.049;
y=x;
hienthi();
}
}
void hienthi()
{
if(y<100)
{
dv=y%10;
chuc=y/10;
tram=11;
if(chuc==0)
{
chuc=11;
}
}
if(y>=100)
{
tram=y/100;
y=y-100;
dv=y%10;
chuc=y/10;
}
lcd =0x38;
ghilenh();
lcd=0x0C;
ghilenh();
LCD=0x89;
ghilenh();
ghilcd();
}
void ghilcd()
{
lcd=mht[tram];
ghidata();
lcd=mht[chuc];
ghidata();
lcd=mht[dv];
ghidata();
}
void ghilenh()
{
rs=0;
rw=0;
e=1;
e=0;
delay_ms(10);
}
void ghidata()
{
rs=1;
rw=0;
e=1;
e=0;
delay_ms(10);
}
void doc_ADC()
{
set_tris_a(0b1);
setup_ADC(ADC_clock_internal);
setup_ADC_ports(AN0_AN1_AN2_AN3_AN4);
set_ADC_channel(0);
delay_us(1000);
}
kimvothan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-07-2012, 09:37 AM   #21
khienpzo
Đệ tử 5 túi
 
Tham gia ngày: Sep 2010
Bài gửi: 107
:
Do sử dụng cảm biến đo nhiệt độ LM35 có độ nhạy 10mV/0C và bộ ADC 10 bit ,điện áp lấy mẫu 5V.
Q= 5 / 210 = 0.00488V = 4.88mV.
Ứng với mỗi sự thay đổi 4.88mV giá trị đọc được từ cảm biến nhiệt độ thì thanh ghi lưu kết quả ADC thay đổi 1 đơn vị..như vậy để tính toán ra giá trị nhiệt độ thực ta chỉ việc lấy giá trị thanh ghi lưu kết quả ADC nhân với (10 / 4.88) = 2.049.
khienpzo vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-07-2012, 10:19 PM   #22
long_hd88
Nhập môn đệ tử
 
Tham gia ngày: Mar 2010
Bài gửi: 4
:
her,

Trích:
Nguyên văn bởi danghien719 View Post
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.
nhờ bạn gủi cho mình tham khảo nhé mail của mình : i_am_windss@yahoo.com
chúc bạn thành công !
long_hd88 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-07-2012, 10:36 AM   #23
kimvothan
Nhập môn đệ tử
 
Tham gia ngày: Dec 2010
Bài gửi: 4
:
cam on ban nhieu nha. vay ban co the gui cho minh qua mail: thanhtuan.vo91@gmail.com dc khong. minh da lam cai mach do roi, va co khuech dai len 3.318 lan de len dc 5v. nhung no cung khong chinh xac lam. no cu nhay quanh mot gia tri xac dinh. nen khong thich lam. khong biet ban co biet cach khac phuc hien tuong do khong?
kimvothan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-03-2013, 12:51 AM   #24
dungdeptrai
Nhập môn đệ tử
 
Tham gia ngày: Feb 2013
Bài gửi: 1
:
giúp e sửa lỗi đoạn code trên với...code báo sai chỗ void main :(

#include <16f877a.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#device ADC=10
#use delay(clock=200000000)
#byte portb=0x06
#byte porta=0x05
#byte portd=0x08
#bit d0=portd.0
#bit d1=portd.1
#use fast_io(a)
#use fast_io(b)
#use fast_io(d)
int8 const LED[]={0xc0,//0
0xc0,//0
0xf9,//1
0xa4,//2
0xb0,//3
0x99,//4
0x92,//5
0x83,//6
0xf8,//7
0x80,//8
0x98,//9
}
void main()
{
int i;
int8 x,read,hangchuc,hangdonvi;
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(AN0_AN1_VREF_VREF);
set_adc_channel(0);
delay_us(10);
while(1)
{

x= read_adc();
x= (int16) ((float)read_adc() * 500/1024);
read=x;
hangchuc=read/10;
hangdonvi=read%10;
for(i=0;i<=99;i++)
{
output_low(d0);
output_b(LED[hangchuc]);
delay_ms(10);
output_low(d1);
output_b(LED[hangdonvi]);
delay_ms(10);
}

}

}
dungdeptrai vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-04-2013, 09:39 AM   #25
cailopxe
Nhập môn đệ tử
 
Tham gia ngày: May 2010
Bài gửi: 1
:
ta;l;lfhfldsl
cailopxe vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-04-2013, 09:54 AM   #26
lamnhatquan91
Nhập môn đệ tử
 
Tham gia ngày: Dec 2012
Bài gửi: 5
:
tại sao lại la value = value -558.5 thế mọi người . mình chưa hiểu lắm
lamnhatquan91 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-05-2013, 07:07 PM   #27
gió bắc
Nhập môn đệ tử
 
Tham gia ngày: May 2013
Bài gửi: 1
:
chào mọi người. mình dùng pic16f877a đo nhiệt độ từ 3 lm35 kết nối máy tính.trước tiến là phần vb.mình thiết kế giao diện và thực hiện đọc nhiệt độ như thế này.
Private Sub MSComm1_OnComm()

t = MSComm1.Input
If t <> "-" Then
text = text + t
Else
Text1.text = Mid(text, 1, 2)
Text2.text = Mid(text, 3, 2)
Text3.text = Mid(text, 5, 2)
text = ""
End If
End Sub
các phần khai báo cổng com thì đã đúng hết.nhiệt độ 3 điểm được gán lên 3 ô text.
code bên pic mikroC mình viết như sau
unsigned int cb1, cb2, cb3; //khai bao 3 bien cam bien
unsigned int cb4; //bien tong cua 3 cam bien
unsigned char chuoi[6], ketqua[6]; //khai bao chuoi
unsigned char j, i;
// chuong trinh con
void Text_To_Usart(unsigned char *n) //Khai bao ham goi mot chuoi thong qua USART.
{
i = 0; //Gan gia tri ban dau cho i =0
while(n[i] != 0) //Neu phan tu thu I cua chuoi ky tu khac 0 thi goi phan tu thu I cua chuoi qua UASRT.
{
Usart_Write(n[i]); // Goi phan tu thu I cua chuoi qua UASRT.
i++;
Delay_ms(10); //Cho 10 mili giay
}}
void main() //Khai bao chuong trinh chinh
{
ADCON1 = 0xE0; // Thiet lap cac ngo vao analog va dien ap tham chieu Vref = Vdd = 5V.
ADCON0 = 0xC1;//Chon va cho phep xung clock
PORTA = 0; //Gan gia tri ban dau cho cac chan cua PORT A = 0
TRISA = 0xFF; // Khai bao PORT A la ngo vao.
Usart_Init(9600); // khoi tao usart
while (1) //Vong lap vo tan de lap lai chuong trinh lien tuc.
{
cb1 = Adc_read(0); // Doc ket qua chuyen doi AD tu kenh 0.
cb2 = Adc_read(1); // Doc ket qua chuyen doi AD tu kenh 1.
cb3 = Adc_read(2); //doc ket qua chuyen doi ad tu kenh 2
Delay_ms(10); //Cho 100= mili giay
cb1 = cb1/2; //Tinh gia tri nhiet do = gia tri doc chia cho he so chuyen doi (vi du: 2).
cb2 = cb2/2; //Tinh gia tri nhiet do = gia tri doc chia cho he so chuyen doi (vi du: 2).
cb3 = cb3/2; //Tinh gia tri nhiet do = gia tri doc chia cho he so chuyen doi (vi du: 2).
cb4=((cb1*10000) + (cb2*100) + (cb3)); //tinh gia tri cb4
longtostr(cb4,chuoi); // chuyen tu so sang chuoi
//Xu ly chuoi de loai bo cac khoang trang va luu ket qua xu ly vao bien ket qua.
j=0; //Gan gia tri ban dau bang 0 cho bien j (phan tu cua bien ket qua).
for(i=0;i<=6;i++) //Vong lap voi bien i chay 6 lan de quet cac phan tu cua bien chuoi
{if (chuoi[i] != ' ') // Neu phan tu thu i cua chuoi khong phai la khoang trang thi
{
ketqua[j]=chuoi[i]; //Gan phan tu thu i cua chuoi cho phan tu thu j cua ket qua.
j++; //Tang gia tri cua bien j len 1
}}
Usart_write('-'); // them ky tu - vao day ket qua
Text_to_usart(ketqua);// gui bien ket qua
Delay_ms(100); //Cho 100 mili giay sau do truyen lai
} }
vậy mà khi hiển thị nó lại không đúng nhiệt độ. mình mới thử trên protess. các bác nào cao thủ giúp mình với.còn 5 ngày nữa mình phải nạp đồ án ùi!!!
gió bắc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-05-2013, 05:27 PM   #28
buivantuyen89th
Đệ tử 3 túi
 
buivantuyen89th's Avatar
 
Tham gia ngày: Jun 2012
Bài gửi: 54
:
Trích:
Nguyên văn bởi hoangtuan8911 View Post
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
Mình khuyên bạn không nên sử dụng sử dụng LM35 vì nó nhiễu rất lớn. Bạn nên tìm hiểu về Ds18B20.
còn nếu bạn vẫn sử dụng lm35 cho dễ học thì bạn măc lm35 như datasheet. sau đó đưa vào PIC biến đổi AD để chuyển thành kết quả.
lấy kết quả đó gửi lên máy tính. gửi từng số 1 ( sử dụng hàm của thư viện rs232)
điều khiển bằng máy tính thì bạn phải gửi ký tự gì đó về cho PIC. Khi đó mình lập trình cho PIC nhận được ký tự đó là phải thực hiện điều khiển.
còn VB chắc bạn đã biết.
Chúc may mắn!hi
buivantuyen89th vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-06-2013, 05:12 PM   #29
truongbay
Nhập môn đệ tử
 
Tham gia ngày: Nov 2012
Bài gửi: 2
:
mình đang làm đồ án điều khiển tốc độ đông cơ hiển thị lên lcd giao tiếp máy tính băng Vb6 và chuẩn RS232 ai giúp minh với (minh sẻ trả với giá là 300k nếu ai viết code cho mình luôn sô đt cua mình là : 01686916750 gmail: truongbay91@gmail.com). minh đang cần mà giờ rối lắm rồi ko viết đươc ai viêtd đc code thi liên hệ với minh nha thanks....
truongbay vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


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


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam