PIC Vietnam

Go Back   PIC Vietnam > Truyền thông > Giao tiếp cổng COM và LPT

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

Giao tiếp cổng COM và LPT RS232, RS485 và LPT là những giao tiếp cơ bản và kinh điển khi mới học về vi điều khiển...

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 30-08-2009, 03:58 PM   #1
maiduy082
Đệ tử 4 túi
 
Tham gia ngày: Apr 2008
Bài gửi: 66
:
lại vấn đề RS232 và adc

em có 1 mạch khuếch đại, đưa tín hiệu đó vào chân AN0 của pic16f877a, rồi truyền tới pc bằng RS232, nhưng giá trị nhận được trên pc lại không đúng so với Vin.
cho em ý kiến khắc phục được ko ạ.

ps: khi em truyền 1 chuỗi hay 1 ký tự thì mọi chuyện ok, chỉ bị sai khi nhận giá trị từ adc.
e sử dụng adc 10 bit.

cám ơn rất nhiều.
maiduy082 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-08-2009, 05:06 PM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi maiduy082 View Post
em có 1 mạch khuếch đại, đưa tín hiệu đó vào chân AN0 của pic16f877a, rồi truyền tới pc bằng RS232, nhưng giá trị nhận được trên pc lại không đúng so với Vin.
cho em ý kiến khắc phục được ko ạ.

ps: khi em truyền 1 chuỗi hay 1 ký tự thì mọi chuyện ok, chỉ bị sai khi nhận giá trị từ adc.
e sử dụng adc 10 bit.

cám ơn rất nhiều.
Đoạn code liên quan của bạn như thế nào? Theo mô tả của bạn, tôi cho rằng có lẽ sai sót nằm ở khâu chuyển số liệu lấy từ ADC thành các ký tự để gửi về PC.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-08-2009, 05:22 PM   #3
maiduy082
Đệ tử 4 túi
 
Tham gia ngày: Apr 2008
Bài gửi: 66
:
đoạn code của em thế này:

setup_adc(adc_clock_internal);
setup_adc_ports( ALL_ANALOG);
set_adc_channel(0);

data = read_adc();
putc(data);

anh cho em hỏi thêm 1 ý nữa, khi mình không sử dụng (không nối đi dâu) chân Vref+ và chân Vref- thì pic sẽ hiểu như thế nào.
cám ơn anh Nam.
maiduy082 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-08-2009, 06:33 PM   #4
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi maiduy082 View Post
đoạn code của em thế này:

setup_adc(adc_clock_internal);
setup_adc_ports( ALL_ANALOG);
set_adc_channel(0);

data = read_adc();
putc(data);

anh cho em hỏi thêm 1 ý nữa, khi mình không sử dụng (không nối đi dâu) chân Vref+ và chân Vref- thì pic sẽ hiểu như thế nào.
cám ơn anh Nam.
Nếu kết quả của read_adc() là một giá trị 8-bit thì lệnh putc(data) vẫn truyền được giá trị đó về PC, nhưng không phải là mã ASCII của 1 ký tự. Do đó, ở phía PC bạn phải hiểu là đã nhận được 1 byte giá trị, chứ không phải mã ASCII của 1 ký tự.

Nếu kết quả của read_adc() là một giá trị 10-bit thì lệnh putc(data) có lẽ chỉ lấy byte thấp của giá trị 10-bit đó, và gửi về PC như đã nói trên. Tôi thường không viết sai kiểu này nên mới có cụm từ "có lẽ" trong câu trước.

Vấn đề không phải là bạn có nối các chân Vref+ và Vref- hay không, mà là bạn có thiết lập để sử dụng hay không. Nếu thiết lập để không dùng các chân này thì không cần phải nối chúng đi đâu cả.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-08-2009, 08:15 PM   #5
maiduy082
Đệ tử 4 túi
 
Tham gia ngày: Apr 2008
Bài gửi: 66
:
đây là đoạn code của em, anh xem xét giúp em với

#include <16f877a.h>
#fuses HS,NOWDT,NOPROTECT,PUT,BROWNOUT,NOLVP
#device *=16 ADC=8
#use delay(clock=8000000)
#use rs232(baud=2400, parity=N, xmit=pin_C6, rcv=pin_C7, bits=9)

int8 offset;
void main()
{
setup_adc(adc_clock_internal);
setup_adc_ports(AN0);
delay_ms(10);
while (1)
{
offset = read_adc();
putc(offset);
delay_ms(5000);
}
}


điện áp em đo được ở chân AN0 là 1v vậy mà trên pc chỉ cho giá trị là 23, đúng ra phải là khoảng 52.
em có mắc 1 điện trở 1k từ chân AN0 lên Vcc giống như trong TUT của anh Linh.

cám ơn anh.
maiduy082 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-08-2009, 10:04 PM   #6
maiduy082
Đệ tử 4 túi
 
Tham gia ngày: Apr 2008
Bài gửi: 66
:
anh Nam ơi cứu em với, em mới chạy test lại cái mạch, em cho nguồn vô chân AN0 là từ 1 biến trở thì kết quả xuất ra trên PC đúng, còn khi em cho tín hiệu vô là từ mạch khuếch đại của em thì nó bị sai, sai không chấp nhận được (em bảo đảm là cái mạch khuếch đại của em chạy tốt, em đã kiểm tra rất nhiều cái mạch KD này).

giúp em với các cao thủ ơi
maiduy082 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-09-2009, 10:12 AM   #7
ThanhPhuc
Đệ tử 2 túi
 
Tham gia ngày: Jul 2005
Bài gửi: 35
:
Bạn kiểm tra điện áp tại Vout và giá trị hiển thị trên PC như thế nào?
Kết quả đo được có ổn định không hoặc số nhảy lung tung!
ThanhPhuc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-09-2009, 01:31 PM   #8
maiduy082
Đệ tử 4 túi
 
Tham gia ngày: Apr 2008
Bài gửi: 66
:
Trích:
Nguyên văn bởi ThanhPhuc View Post
Bạn kiểm tra điện áp tại Vout và giá trị hiển thị trên PC như thế nào?
Kết quả đo được có ổn định không hoặc số nhảy lung tung!
số nhảy lung tung bạn ơi, cũng không đúng với giá trị chuyển đổi so với Vout
maiduy082 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-09-2009, 10:35 PM   #9
maiduy082
Đệ tử 4 túi
 
Tham gia ngày: Apr 2008
Bài gửi: 66
:
mình xin khái quát lại vấn đề mình đang mắc phải:
mình lấy data (Vout của 1 cái cân điện tử) đưa vào bộ khuếch đại (V sau khi khuếch đại đúng với tính toán trên lý thuyết) , rồi vào bộ adc của Pic, sau đó đưa qua opto và max232 để truyền kết quả vào PC.
kết quả mình nhận được là không đúng và không ổn định, mặc dù mình đo áp ở chân AN0-tức là sau khi đã khuếch đại tín hiệu- thì vẫn ổn định.
mình đã làm như anh Nam hướng dẫn, truyền 1 gói dữ liệu từ pic (ko lấy gia trị từ adc) thì kết quả nhận trên pc hoàn toàn đúng.
kế tiếp mình đưa giá trị từ ADC vào, giá trị được lấy từ 1 biến trở, đưa V vào chân AN0, kết quả vẫn đúng, tuy có hơi hơi sai, nhưg chấp nhận được.
tiếp đó mình cho khuếch đại tín hiệu cũng tù 1 biến trở, rồi sau đó mới đưa vào ADC rồi truyền sang PC, kết quả sai, rất không ổn định, số nhảy lung tung.
mình thử cho tín hiệu sau khuếch đại đi qua 1 mạch lọng thông thấp (R=10k, C=33p) rồi mới đưa vào ADC thì kết quả nhận được khá hơn 1 chút, nhưng vẫn còn sai (theo như mình tính toán thì sai 10 đơn vị).
mình đang sử dụng ADC 8-bit.
bộ nguồn 4.94v và -5.04v sử dụng lm7805 và lm7905.
khuếch đại sử dụng 2 ic AD620, giữa 2 ic này mình chưa có mạch lọc nào cả.
anh Nam có nói mạch khuếch đại của mình có thể bị nhiễu mạnh, nhưng mình không biết nguyên nhân, và bị từ đâu.
có 1 điều mình rất thắc mắc, mặc dù Vout sau khi khuếch đại vẫn ổn định (sai số 1 hoặc 2 mV) nhưng khi đưa qua ADV thì kết quả bị sai và không ổn định,
mong các bạn và các anh chị giúp đỡ.
mình rất cảm ơn.
Hình Kèm Theo
File Type: jpg Untitled.jpg (14.6 KB, 6 lần tải)
maiduy082 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-09-2009, 12:37 AM   #10
maiduy082
Đệ tử 4 túi
 
Tham gia ngày: Apr 2008
Bài gửi: 66
:
vậy là không có ai cho em thêm ý kiến gì sao ạ.
maiduy082 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-09-2009, 10:23 AM   #11
maiduy082
Đệ tử 4 túi
 
Tham gia ngày: Apr 2008
Bài gửi: 66
:
anh Nam ơi, em đã truyền được rồi, chính xác 99%.
có thể với mọi người, những người đã có nhiều kinh nghiệm trong việc làm mạch thì đây là chuyện nhỏ, không có gì đáng nói.
nhưng với những bạn mới học điện tử, hay học mập mò (giống mình) thì đây là 1 kinh nghiệm đáng để chia sẻ.
như vấn đề mình đã nêu, đó là khuếch đại tín hiệu, đưa vào adc, qua Pic, rồi truyền vào PC, hiện tại mình ko sử dụng mạch lọc gì cả, nhưng đã truyền khá tốt. các bạn lưu ý khi đi dây, dù là test board hay board khoan lỗ, hay chạy layout, nếu đi dây không cẩn thận sẽ gây nhiễu rất lớn, không nên để các dây chồng chéo lên nhau, càng clear càng tốt, vừa dễ xử lý khi gặp sự cố, vừa hạn chế nhiễu.

cám ơn các bạn đã đọc kinh nghiệm cùi bắp này.
em cám ơn anh Nam nhiều nha
maiduy082 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-09-2009, 11:37 PM   #12
maiduy082
Đệ tử 4 túi
 
Tham gia ngày: Apr 2008
Bài gửi: 66
:
có việc này em muốn hỏi các anh các bạn.
cái mạch truyền tín hiệu vào pc của em chạy rồi, giá trị ban đầu thì đúng nhưng sau khi chạy liên tục 1 thời gian, khoảng 30 phút thì em thấy giá trị bị giảm đi.
tín hiểu nhỏ --> khuếch đại --> adc/pic --> max232 -->rs232/pc
tín hiểu nhỏ của em vẫn giữ nguyên, hệ số khuếch đại không đổi, nhưng giá tri nhận được lại bị giảm.
mong các bạn giúp đỡ.
maiduy082 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-09-2009, 10:10 PM   #13
PSL
Đệ tử 1 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 20
:
Có thể do nhiệt. Bạn thử kiểm tra xem:
1> Reset hệ thống khi đang nóng.
2> Hệ thống đang nguội, dùng máy sấy thổi vào để làm nóng nhanh xem sao.
3> Làm mát nó (máy lạnh)...
Nói chung đối với dân kỹ thuật số, đụng đến analogue là vấn đề rắc rối đấy.
PSL vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-09-2009, 03:37 PM   #14
maiduy082
Đệ tử 4 túi
 
Tham gia ngày: Apr 2008
Bài gửi: 66
:
Trích:
Nguyên văn bởi PSL View Post
Có thể do nhiệt. Bạn thử kiểm tra xem:
1> Reset hệ thống khi đang nóng.
2> Hệ thống đang nguội, dùng máy sấy thổi vào để làm nóng nhanh xem sao.
3> Làm mát nó (máy lạnh)...
Nói chung đối với dân kỹ thuật số, đụng đến analogue là vấn đề rắc rối đấy.
tín hiệu mình lấy ra là từ 1 cân điện tử. mình nghi ngờ là do nguồn cấp cho cái cân này bị giảm nên đã là 1 mạch nguồn riêng cho nó, chứ không dùng chung với các mạch kia nữa. tình hình xem ra có vẻ tươi sáng hơn 1 chút. nếu bạn nào thích cái này thì mình sẽ đưa mạch cho. mà chắc là gà quá nên cũng không ai cần đâu nhỉ hihihi.
maiduy082 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-11-2009, 04:04 PM   #15
aqbatbai
Nhập môn đệ tử
 
Tham gia ngày: Jun 2008
Nơi Cư Ngụ: ben tre
Bài gửi: 6
:
Send a message via Yahoo to aqbatbai
ko có ji gọi là gà hay vip cả, có thể nó là đơn giản với người này nhưng là rất hữu ích với người khác, mong bạn post lên cùng chia sẽ với mọi người
aqbatbai 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à 07:13 AM.


Đượ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