PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Các đề tài khác (http://www.picvietnam.com/forum/forumdisplay.php?f=28)
-   -   có ai rành về ADC của pic xem giùm em cái này nhé (http://www.picvietnam.com/forum/showthread.php?t=3006)

nuacuatoi2010 28-10-2008 08:40 PM

có ai rành về ADC của pic xem giùm em cái này nhé
 
1 Attachment(s)
em dang dùng pic6F877A để làm mạch đo dòng và áp và hiển thị giá trị dòng và áp đó lên máy tính thông qua giao diện VB6.

sơ đồ nguyên lý kèm theo:

áp được lấy thông qua biến áp 220:3 V
dòng dược lấy vào qua biến dòng có tỉ số 200/5A
còn đây là chương trình:
(không biết là em viết vậy có được không? tại vì giờ mới tập viết PIC)
(mà không bít có phải dùng setup_adc_ports(ALL_ANALOG) thì nó sẽ so sánh điện áp analog vào với điện áp chuẩn Vref là 5V kô nữa )
v

#include <16F877A.H>
#DEVICE ADC=10
#use delay (clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6,rcv=PIN_C7, STOP=1)
int16 dong=0, ap=0;
void main()
{

setup_adc_ports(ALL_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL);
while(1)
{
set_adc_channel(0);
delay_us(10);
ap=read_adc();
ap=ap*220/614.4;

set_adc_channel(1);
delay_us(10);
dong=read_adc();
dong=dong*200/1024;
printf("%Lu %Lu\r",ap, dong);

}
}

anh_gioi 30-10-2008 10:13 AM

sao bạn khong dùng proteus để mô phỏng chúng, nó hỗ trợ đày đủ cái cậu cần.
xem là biết ngay code cậu đúng hay sai..

manhdktd 04-07-2010 10:58 AM

Trích:

Nguyên văn bởi nuacuatoi2010 (Post 19940)
em dang dùng pic6F877A để làm mạch đo dòng và áp và hiển thị giá trị dòng và áp đó lên máy tính thông qua giao diện VB6.

sơ đồ nguyên lý kèm theo:

áp được lấy thông qua biến áp 220:3 V
dòng dược lấy vào qua biến dòng có tỉ số 200/5A
còn đây là chương trình:
(không biết là em viết vậy có được không? tại vì giờ mới tập viết PIC)
(mà không bít có phải dùng setup_adc_ports(ALL_ANALOG) thì nó sẽ so sánh điện áp analog vào với điện áp chuẩn Vref là 5V kô nữa )
v

#include <16F877A.H>
#DEVICE ADC=10
#use delay (clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6,rcv=PIN_C7, STOP=1)
int16 dong=0, ap=0;
void main()
{

setup_adc_ports(ALL_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL);
while(1)
{
set_adc_channel(0);
delay_us(10);
ap=read_adc();
ap=ap*220/614.4;

set_adc_channel(1);
delay_us(10);
dong=read_adc();
dong=dong*200/1024;
printf("%Lu %Lu\r",ap, dong);

}
}

anh cho em hỏi 1 tí về cái mạch nguyên lý đấy
em không hiểu con LM324(cách đấu như vậy thì chúc năng của nó làm gi em có phải nó để khuyếch đại không?bác nối khó hiểu quá)


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