Đề tài Tốt nghiệp khóa C6

cooliovato

Cố Vấn CLB
Staff member
nếu như vậy thì là analog, không phải digital :)
hơ...thế cũng là analog sao? đâu có dùng gì đến ADC đâu. Nó gửi nhận dữ liệu số theo kiểu nối tiếp mà! Mọi người cho ý kiến cái, mình đag làm theo hướng này :5cool_sweat:
 

bigboy061293

Thành Viên PIF
nếu như vậy thì là analog, không phải digital :)
hơ...thế cũng là analog sao? đâu có dùng gì đến ADC đâu. Nó gửi nhận dữ liệu số theo kiểu nối tiếp mà! Mọi người cho ý kiến cái, mình đag làm theo hướng này :5cool_sweat:
mình nói giỡn vậy thôi chứ có lẽ về cái này thì mấy anh chị cũng không bắt bẽ đâu :) Lúc trước có làm 1 cái mạch thu, phát hồng ngoại xài 1 con thu với 1 con phát, không biết có giúp ích cho bạn không


hàng trên là phát, hàng dưới là thu, dây tín hiệu là dây s. Bình thường là mức 1, khi có hồng ngoại chiếu vào con led thu thì mức 0
nếu không dùng ADC mà chỉ đọc mức 0 và 1 thôi thì bạn nên nối anode của con led thu với cái biến trở chừng 50k rồi nối anode đó với 1 tụ 104 kéo xuống gnd để có thể điều chỉnh biến trở cho cái cảm biến có thể linh hoạt trong các điều kiện khác nhau. Bình thường thì dùng ADC :) cho đỡ phức tạp
 

Kisses Hacker

Art Supporter
Staff member
Bạn bigboy cũng C6 mà đã tìm hiểu nhiều thật :) Đọc các mục bạn trao đổi mình chẳng hiểu gì ráo, bạn là K11 phải không? Bạn tự tìm hiểu hay được học ở đâu thế?

Led thu phát hồng ngoại là dạng analog nhưng nếu chỉ dùng 2 mức 0 và 1 thì có được xem là digital không (vì nó không cần I2C, SPI, UART)? Các anh chị trả lời giúp với ạ :)

Về đề tài tốt nghiệp, em vẫn rất mù mờ về cái phần game. Đây là 1 game đơn giản tự viết trên GUI (vụ này khó) hay là một game cài đặt ở ngoài (đá bóng, đua xe,...) rồi mình dùng con PIC để điều khiển trong game :-( Lăn tăn vụ này lắm, stress mấy ngày nay vì nó :-s
 

bigboy061293

Thành Viên PIF
Bạn bigboy cũng C6 mà đã tìm hiểu nhiều thật :) Đọc các mục bạn trao đổi mình chẳng hiểu gì ráo, bạn là K11 phải không? Bạn tự tìm hiểu hay được học ở đâu thế?

Led thu phát hồng ngoại là dạng analog nhưng nếu chỉ dùng 2 mức 0 và 1 thì có được xem là digital không (vì nó không cần I2C, SPI, UART)? Các anh chị trả lời giúp với ạ :)

Về đề tài tốt nghiệp, em vẫn rất mù mờ về cái phần game. Đây là 1 game đơn giản tự viết trên GUI (vụ này khó) hay là một game cài đặt ở ngoài (đá bóng, đua xe,...) rồi mình dùng con PIC để điều khiển trong game :-( Lăn tăn vụ này lắm, stress mấy ngày nay vì nó :-s
mình ở C5 :) được may mắn chung phòng với các anh k9, k8 nên có gì không biết thì hỏi mấy ảnh chỉ, còn lại thì cũng mò mò mãi mà ra :)
Vụ con led chắc mấy anh chị không bắt bẽ gì đâu :) Còn vụ cái game thật ra mà nói chắc cũng để kiểm tra sự sáng tạo của mỗi người thôi, ai muốn làm gì thì làm, cũng không quan trọng lắm đâu :)
 
game là gì?
game là 1 trò để chơi, tạo cảm giác hứng thú.
yêu cầu game của CLB?
_1 kết nối digital (IIC, SPI, UART)
_sensor
_GUI cho máy tính
vậy đú với con PIC sao mới vui dc?
dễ ợt, cho cái ví dụ nè
1/game chạy nhảy vận động:
_kết nối digital (IIC, SPI, UART): kết nối UART qua RF đến PC, các giao thức khác cho cảm biến
_sensor: cảm biến độ cao.
_GUI cho máy tính: vẽ lại độ cao theo thời gian
_cách chơi: trò chơi có tên là "ai quay tay bá đạo hơn". thể loại đối kháng. mỗi người cẩm 1 con PIC có gắn cảm biến, sau hiệu lệnh trọng tài bắt đầu quay tay để dồn lực, tới 1 lúc nào đấy đủ phê thì bắn con PIC lên không trung và cố gắng đi chụp nó lại (ko rớt xuống đất thì tèo):D luật thì ai ném cao hơn chiến thắng, hoặc ai ném với độ dốc của đồ thị trên GUI lớn hơn (tay khỏe lực mạnh) thì ăn:D
2/game cho nerd, ngồi tự kỷ.
_kết nối digital (IIC, SPI, UART): kết nối UART đến PC, các giao thức khác cho cảm biến
_sensor: accelerometer
_GUI cho máy tính: vẽ lại chuyển động của sensor
_cách chơi: cho 2 thằng ngồi làm việc cạnh nhau, gắn PIC vào đùi nó. do khoảng cách gần ko cần dùng RF kết nối UART đến PC. rồi bắt đầu thời gian, trong vòng 1 tiếng/ngày/(tuần?) xem thằng nào rung đùi nhiều hơn thì thắng:D kết quả được ghi nhận trên đồ thị, ko ăn gian dc:D
cần ý tưởng nữa ko kisseshacker =))
 

Kisses Hacker

Art Supporter
Staff member
Đã thông suốt tư tưởng. Cảm ơn anh rất nhiều :4cool_beauty:
P.s: Em kết cái game quay tay rồi đấy ":*"
 

cooliovato

Cố Vấn CLB
Staff member
nếu như vậy thì là analog, không phải digital :)
hơ...thế cũng là analog sao? đâu có dùng gì đến ADC đâu. Nó gửi nhận dữ liệu số theo kiểu nối tiếp mà! Mọi người cho ý kiến cái, mình đag làm theo hướng này :5cool_sweat:
mình nói giỡn vậy thôi chứ có lẽ về cái này thì mấy anh chị cũng không bắt bẽ đâu :) Lúc trước có làm 1 cái mạch thu, phát hồng ngoại xài 1 con thu với 1 con phát, không biết có giúp ích cho bạn không


hàng trên là phát, hàng dưới là thu, dây tín hiệu là dây s. Bình thường là mức 1, khi có hồng ngoại chiếu vào con led thu thì mức 0
nếu không dùng ADC mà chỉ đọc mức 0 và 1 thôi thì bạn nên nối anode của con led thu với cái biến trở chừng 50k rồi nối anode đó với 1 tụ 104 kéo xuống gnd để có thể điều chỉnh biến trở cho cái cảm biến có thể linh hoạt trong các điều kiện khác nhau. Bình thường thì dùng ADC :) cho đỡ phức tạp
Thanks bạn, mình làm bằng pt2248 rồi, chạy cũng ổn. Thiệt ko ngờ nó lại là analog, mà nếu dùng ADC thì ứng dụng để làm j hả p? Thu hồng ngoại mà cần ADC ko lẽ để đo nhiệt độ hay khoảng cách?
 

bigboy061293

Thành Viên PIF
à, mình xài ADC để cho nó linh hoạt hơn. Ví dụ như khi thi đấu robocon, mạch dò đường của nó là xài 8 bộ thu phát như vậy, về điều kiện sân(độ phản chiếu, độ nhám), ánh sáng, ... của sàn đấu mỗi chỗ là khác nhau nên ta chỉ cần so sánh sự chênh lệch ADC giữa vạch trắng và vạch khác (đỏ, xanh, đen, ...) là có thể đưa ra thuật toán để dò đường thích hợp.
Trường hợp không xài ADC phải chỉnh 8 cái biến trở và thử lần lượt nhiều trường hợp khác nhau -> tốn công, thời gian -> không tối ưu
 

cooliovato

Cố Vấn CLB
Staff member
Mọi người ơi có ai xài cái mạch USB UART FT232 mua ở Thiên Minh cho mình hỏi tí: chân 3.3V trên mạch mình nối trực tiếp vô VCC của PIC hay là phải hạ xuống 3.3V rồi mới nối vào đc vậy? Với bạn nào có code của phần UART cho mình xin để tham khảo lun, thanks everybody
 

bigboy061293

Thành Viên PIF
hình như chân 3v3 đó là 3v3 out của con chip (ổn áp từ 5v -> 3v3) ở bên trong nó có sẵn. Vậy bạn chỉ cần gắn cọng dây usb, tx, rx, vậy là đủ rồi :)
 

honghiep

Cố Vấn CLB
Staff member
mọi người cho hỏi: MSP430Gxxxx sài nguồn 3.3v tức là mức logic 0-3.3v. vậy có thể giao tiếp trực tiếp với PIC mức logic 0-5v được hay không?
 

2death

Cố Vấn CLB
Staff member
mọi người cho hỏi: MSP430Gxxxx sài nguồn 3.3v tức là mức logic 0-3.3v. vậy có thể giao tiếp trực tiếp với PIC mức logic 0-5v được hay không?
Phụ thuộc vào VIH (V input high), VIL (V input Low) của mỗi em.

+ Đối với em PIC, khi cấp nguồn 5V, tra datasheet của ẻm xem mức "1" input, tức VIH của nó tầm từ bao nhiêu đến bao nhiêu (hình như là từ khoảng 2 chấm mấy đến 5V - không chính xác lắm nghe, muốn biết số chính xác lật datasheet ra coi). Túm lại, em PIC sẽ hiểu được mức 1 và 0 do em MSP430 truyền sang.

+ Đối với em MSP430, mức 1 của ẻm đương nhiên sẽ là từ xxx --> 3V3 < 5V. Như vậy khi kết nối giữa 2 em, nếu chân I/O của em MSP mà ko chịu được 5V thì ẻm sẽ tạch.
Trong trường hợp ẻm chịu được 5V thì kết nối bình thường (cái vụ này ko nhớ rõ là được hay không, bạn nào biết trả lời giúp :D)

+ Tuy nhiên em PIC của mình có thể cấp nguồn từ 2.7V đến 5.5V, vậy thì quẳng cho ẻm nguồn 3v3 luôn là okie.

+ Tuy nhiên 2, nếu có ngoại vi xài 5V thì lại rắc rối cho em PIC. Mà hình như các bạn có làm qua bảo lại rằng, cái LCD cấp nguồn 3v3 vẫn chạy phải ko ta?
 

2death

Cố Vấn CLB
Staff member
Mọi người ơi có ai xài cái mạch USB UART FT232 mua ở Thiên Minh cho mình hỏi tí: chân 3.3V trên mạch mình nối trực tiếp vô VCC của PIC hay là phải hạ xuống 3.3V rồi mới nối vào đc vậy? Với bạn nào có code của phần UART cho mình xin để tham khảo lun, thanks everybody
Xem bài này để hiểu cái mạch FT232 rồi tự suy ra vấn đề:
http://www.payitforward.edu.vn/forum/threads/49/

Code mẫu uart + driver uart: xem kĩ bài này rồi download:
http://payitforward.edu.vn/forum/threads/523/

http://www.payitforward.edu.vn/forum/threads/602/
 

honghiep

Cố Vấn CLB
Staff member
với 3.3v thì LCD thấy mờ mờ. còn DS1307 chẳng thấy gì cả :((
 

2death

Cố Vấn CLB
Staff member
Nếu DS1307 dùng để giao tiếp với PIC thì em cấp nguồn cho con DS1307 là 5V vẫn ok, chân I/O của PIC chắc chắn chịu được 5V (kể cả khi nó cấp nguồn là 3v3). Thử xem sao?
 

Manhdd

Cố Vấn CLB
Staff member
Vậy chắc LCD của mình cùi. Cấp 4V thì mờ mờ chứ 3V3 thì chả đọc được gì :-s
DS1307 cũng chỉ chạy ở 4.5 - 5 V. Vậy mà lúc trước do "nóng vội" :gach gắn thẳng đường I2C của nó vào ngõ I2C của MSP430 vẫn đọc được mà không có thiệt hại gì sau đó:D Cái này khuyến cáo không nên "thử" nữa :6cool_boss:
Về giải pháp chuyển mức logic, các bạn tham khảo các con VOLTAGE-LEVEL TRANSLATOR TXB0104, TXB0108, ... của TI, khá hay đó.
TI có các giải pháp riêng cho đường I2C vì có ảnh hưởng của điện trở kéo lên nữa (I2C Translator) : I2C Guide
Tuy nhiên, với số đường giao tiếp ít và không quá chú trọng về tính đảm bảo, các bạn có thể dùng điện trở chia áp và ngõ vào và khóa BJT ở ngõ ra của MSP430. Như trên đã nói, do qui định về mức logic, ngõ ra 3V3 của MSP430 vẫn được PIC hiểu là mức 1 :1cool_byebye:
 

bigboy061293

Thành Viên PIF
vậy mà đó giờ xài ds1307 với launchpad, em toàn cấp 5v cho nó là cái nguồn của usb rồi cứ I2C vô tư giữa ds1307 với launchpad :| :| vậy là không được làm như vậy phải hông anh ?
 

Manhdd

Cố Vấn CLB
Staff member
vậy mà đó giờ xài ds1307 với launchpad, em toàn cấp 5v cho nó là cái nguồn của usb rồi cứ I2C vô tư giữa ds1307 với launchpad :| :| vậy là không được làm như vậy phải hông anh ?
Em để r pull-up lên VCC nào? 5V thì vượt quá khả năng chịu đựng của chân MSP430 đó =)). Em gợi ý như vậy anh mới để ý xem lại datasheet. Kiếm được chỗ này:
- SCL (Serial Clock Input) – SCL is used to synchronize data movement on the serial interface.
- SDA (Serial Data Input/Output) – SDA is the input/output pin for the 2-wire serial interface. The SDA pin is open drain which requires an external pullup resistor.
Như vậy, ta có thể gắn r pull-up lên 3V3 ở cả 2 chân SCL và SDA để giao tiếp :1cool_byebye:. Lý do:
- DS1307 làm slave nên SCL sẽ là input. Khi ghi thời gian thì SDA cũng làm input. Theo datasheet Logic 1 Input từ 2.2 -> VCC5V + 0.3V . DS1307 có thể đọc điện áp 3V3 là logic 1.
- SDA ở chế độ output khi đọc thời gian. Lúc này nó có dạng open-drain. r pull-up giúp cho logic 1 là 3V3. Khi xuất mức 0, điện áp theo datasheet là max 0.4V. MSP430 có thể đọc 2 mức logic này.
Các em áp dụng thử xem được không nhé. Code với MSP430 chỉ thay đổi mấy làm i2c read/write, còn mấy hàm lớp trên (gọi là API) y chang như PIC :D
 

bigboy061293

Thành Viên PIF
còn em thì để r kéo lên 5v luôn. Không hiểu sao hồi đó giờ vẫn làm vậy mà đọc, ghi ds1307 vẫn ào ào hà anh :)
 
Top