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 30-08-2009, 10:42 PM   #7
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
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
Sẽ không thừa nếu bạn để ai đó kiểm tra giúp bạn mạch khuếch đại đó.

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, 11:05 PM   #8
maiduy082
Đệ tử 4 túi
 
Tham gia ngày: Apr 2008
Bài gửi: 66
:
em khuếch đại tín hiệu từ 1 cái cân điện tử.
Hình Kèm Theo
File Type: jpg kd.jpg (39.6 KB, 8 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 30-08-2009, 11:33 PM   #9
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 khuếch đại tín hiệu từ 1 cái cân điện tử.
Bạn bỏ điện trở kéo lên 1k ở chân AN0 của PIC đi. Mạch khuếch đại của bạn nếu đã chạy ổn thì có thể nối vào ngõ vào analog của PIC mà không cần thêm linh kiện gì khác (có thể nối thêm một tụ ceramic nhỏ ở gần chân AN0 của PIC để lọc nhiễu).

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, 11:56 PM   #10
maiduy082
Đệ tử 4 túi
 
Tham gia ngày: Apr 2008
Bài gửi: 66
:
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ì kết quả bị sai.
em không biết lý do nào lại bị như vậy, mong anh cho em 1 ý kiến. em cảm ơn.
maiduy082 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-08-2009, 04:15 PM   #11
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 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ì kết quả bị sai.
em không biết lý do nào lại bị như vậy, mong anh cho em 1 ý kiến. em cảm ơn.
Từ thông tin của bạn, tôi loại bỏ nguyên nhân bạn viết code chưa đúng. Từ đó, tôi mới đề nghị bạn tập trung xem lại mạch khuếch đại mà bạn đang dùng. Bạn đã thử bỏ điện trở kéo lên 1 k như tôi đề nghị chưa?

Bạn đã thử đưa tín hiệu biến trở vào đầu mạch khuếch đại chưa (tất nhiên phải chỉnh lại mạch phân áp của biến trở, vì mạch khuếch đại của bạn có hệ số khuếch đại tổng là 2000)?

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 01-09-2009, 10:12 AM   #12
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:29 PM   #13
maiduy082
Đệ tử 4 túi
 
Tham gia ngày: Apr 2008
Bài gửi: 66
:
Trích:
Nguyên văn bởi namqn View Post
Từ thông tin của bạn, tôi loại bỏ nguyên nhân bạn viết code chưa đúng. Từ đó, tôi mới đề nghị bạn tập trung xem lại mạch khuếch đại mà bạn đang dùng. Bạn đã thử bỏ điện trở kéo lên 1 k như tôi đề nghị chưa?

Bạn đã thử đưa tín hiệu biến trở vào đầu mạch khuếch đại chưa (tất nhiên phải chỉnh lại mạch phân áp của biến trở, vì mạch khuếch đại của bạn có hệ số khuếch đại tổng là 2000)?

Thân,
anh Nam ơi, em đã làm như anh nói, đã bỏ trỏ 1k rồi, và có gằn thêm 1 tụ 33p xuống mass. em cũng thử đưa tín hiệu từ biến trở vào đầu mạch khuếch đại, em điều chỉnh cho Vout là 279mv (đã nối mạch khuếch đại với pic).
Em đang sử dụng adc 8-bit, do đó với mức áp là 279mv thì kết quả mà pc nhận được phải là 14 hoặc 15, nhưng thực tế em nhận lại là 22, 12, 1 ,2...nói chung là lung tung lắm ạ.
Em cũng thử với các mưc Vout khác nhau nhưng kết qu3 vẫn như thê.

cám ơn các anh đã giúp đỡ. em thành thật cám ơn
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, 01:31 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 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, 03:18 PM   #15
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
anh Nam ơi, em đã làm như anh nói, đã bỏ trỏ 1k rồi, và có gằn thêm 1 tụ 33p xuống mass. em cũng thử đưa tín hiệu từ biến trở vào đầu mạch khuếch đại, em điều chỉnh cho Vout là 279mv (đã nối mạch khuếch đại với pic).
Em đang sử dụng adc 8-bit, do đó với mức áp là 279mv thì kết quả mà pc nhận được phải là 14 hoặc 15, nhưng thực tế em nhận lại là 22, 12, 1 ,2...nói chung là lung tung lắm ạ.
Em cũng thử với các mưc Vout khác nhau nhưng kết qu3 vẫn như thê.

cám ơn các anh đã giúp đỡ. em thành thật cám ơn
Tôi cho là mạch khuếch đại của bạn bị nhiễu mạnh, và giải quyết vấn đề này không đơn giản là chỉ nhìn vào sơ đồ nguyên lý của bạn, vì sơ đồ nguyên lý của bạn không thể hiện cơ chế ghép nhiễu vào mạch. Ngay cả khi bạn chụp ảnh mạch thật của bạn cùng với các mạch xung quanh, cũng chưa hẳn có thể xác định được mạch bị nhiễu theo cơ chế nào, và làm thế nào để khắc phục.

Tuy nhiên, bạn nên có các tụ lọc nguồn 100 nF đặt càng gần các chân IC càng tốt, và nên cấp nguồn ổn định bằng ổn áp tuyến tính cho các IC AD620, với giá trị điện áp nằm trong dải điện áp làm việc đã được khuyến cáo (bạn chưa cho biết bạn dùng áp nguồn là bao nhiêu).

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
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à 12:19 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