Monday, June 16, 2014

Bài 1.(Học MSP430 qua ví dụ)Đồng hồ số - Yêu cầu chức năng,thiết kế


         Thông thường khi bắt đầu làm một project về điện tử,việc đầu tiên bạn nghĩ đến sẽ là vẽ mạch. Tuy nhiên,mạch điện lại là phần khó sửa chữa nhất trong một dự án về điện tử,và cũng là phần ảnh hưởng rất lớn tới toàn bộ các công đoạn khác.
Bài này mình sẽ hướng dẫn quy trình cơ bản khi xây dựng một project.Các kiến thức dưới đây là do kinh nghiệm thực hành và một khóa quản lý dự án nhỏ mà mình may mắn được học,nếu có phần nào chưa tốt các bạn có thể góp ý và hòm thư của mình.
          Dưới đây là toàn bộ quy trình.




          Mình sẽ giải thích qua từng mục,khi hướng dẫn đến phần nào thì sẽ giải thích chi tiết và các lưu ý khi thực hiện.
     -       Yêu cầu chức năng : Là tất cả các chức năng mà sản phẩm của bạn phải có,cái này rất quan trọng để lựa chọn linh kiện
     -       Xác định hướng giải quyết bài toán,yêu cầu phần cứng,chọn linh kiện : để giúp giải quyết bài toàn với chi phí rẻ nhất và tối ưu nhất.
     -       Khi lập trình các bạn nên thực hiện các bước hiển thị trước,sẽ rất tiện khi kiểm tra ,nếu không có các thiết bị hiển thị cần thiết thì ở bước vẽ sơ đồ nguyên lý có thể thiết kế thêm phần hiển thị phục vụ kiểm tra( như dùng UART chẳng hạn).

Bây giờ chúng ta sẽ bắt đầu với bài “Thiết kế đồng hồ số dùng MSP430”

1.        Yêu cầu chức năng


Ở bước này chúng ta sẽ liệt kê tất cả các chức năng mà thiết bị cần có,nó sẽ giúp lựa chọn được linh kiện phù hợp nhất và đưa ra các giải pháp thực thi.


1.Hiển thị giờ
2.Hiển thị ngày,tháng,năm
3.Hiển thị nhiệt độ
4.Chỉnh giờ
5.Chỉnh ngày
6.Chỉnh độ tương phản
7.Hẹn giờ
8.Đồng hồ đếm ngược
2.        Hướng giải quyết các yêu cầu chức năng


  -    Điểu khiển bằng MSP430. 
 -    Nguồn cấp 3.3V. 
 -    Hiển thị tất cả các thông số trên led đồng hồ số chuyên dụng,dùng 74HC595 để giảm số chân điều khiển.

 -    Dùng IC BQ32000 làm đồng hồ giữ nhịp. 
 -    Đo nhiệt độ bằng trở nhiệt.
-    Xây dựng menu chứa phần Chỉnh giờ,ngày,tháng năm,chỉnh độ tương phản,hẹn giờ,đồng hồ đếm ngược.
-    Dùng quang trở để tự động chỉnh độ sáng theo môi trường 
 -    Báo thức bằng loa,lưu thời gian báo thức vào bộ nhớ Flash.
-    4 nút nhấn : Up,Down,Enter,Exit để có thể vào ra trong menu.
-    Giữ  nút Up trong vào giây để vào menu.
-    Ngoài màn hình chương trình chính,giữ Down để xem ngày,giữ Enter để xem nhiệt độ.
 -    Chức năng tự động trở về chương trình chính (Hiện giờ) khi không có nút nào được nhấn trong 1 phút; Dùng timer để định thời gian cho tác vụ này. 
 -    Thêm chân TX của UART để dùng khi Test


3.        Yêu cầu phần cứng,phần mềm

Các bước ở trên sẽ giúp chúng ta tính toán cấu hình tối thiểu của các linh kiện trong mạch,đánh giá  các yêu cầu chức năng có thể thực hiện được hay không dựa trên các linh kiện sẵn có,xem xét mức độ phức tạp, dòng điện,công suất tối đa trên các linh kiện,có cần mạch bảo vệ …

       3.1.   Phần cứng

-    Vi điều khiển MSP430 được liệt kê đầu tiên,nhưng vì phải đánh giá số lượng chân và các module cần dùng nên chúng ta sẽ xem xét cuối cùng.

-    Nguồn cấp 3.3V ,với nguồn cấp cho VĐK này chúng ta hoàn toàn có thể sử dụng nguồn cấp 5V qua LM1117(IC ổn áp tuyến tính),tuy nhiên phải ước lượng công suất tối đa áp trên LM1117 để tránh IC bị nóng hoặc quá dòng(trong các trường hợp khác khi mạch phức tạp bạn sẽ thấy công suất đặt trên IC ổn áp nguồn khá lớn gây nóng -> nên xem xét lắp thêm tản nhiệt hoặc dùng IC ổn áp xung).

     -    Cụ thể dòng tiêu thụ tối đa là :Dòng nuôi LED sáng :1 đốt trong đồng hồ led ngốn dòng 1.5mA(bạn phải đoc datasheet hoặc đo thử trực tiếp)*9(đốt Led) +dòng cho loa(10mA)+dòng cho VĐK (tối đa 1mA) =12.5mA nhân với điện áp rơi trên LM1117(5V – 3.3V) = 0.0425 W .Ta thấy dòng và áp đều rất bé,nên sẽ không ảnh hưởng gì.

          -       Để hiển thị Led,chúng ta đọc qua datasheet của Led Clock.






     -   Led này được thiết kế kiểu chân nguồn chung,dòng qua mỗi led là 1.5mA nên dòng tối đa qua các chân (14,11,10,6) là 12mA nên không cần IC đệm,có thể nối trực tiếp với chân VĐK(dòng ra tối đa ở chân MSP430 là 20mA).Các chân (13,9,4,2,1,12,5,3)mắc qua IC 74HC595 hoặc một vài IC ghi dịch khác(dùng 74HC164 sẽ tiết kiệm 1 chân điều khiển tuy nhiên IC này khó mua hơn).2 led 7->8 là 2 led cho dấu hai chấm,sẽ nháy sau mỗi giây,chúng ta có thể nối chân 7 với nguồn và chân 8 với đầu ra của 74HC595(về điểm này thì 74HC164 lại không làm được),hoặc nối vào 1 chân riêng của VĐK(Chương trình sẽ hoạt động tốt hơn).Vì thế sẽ cần số chân VĐK là từ 7-8.

                    -   Dùng BQ32000 sẽ mất 3 chân cho giao tiếp I2C và chân IRQ,chúng ta có thể dùng DS1307 tuy nhiên lại phải dùng IC ổn áp 5V(nếu điện áp cấp trên 5V) và phân áp(hoạt động không ổn định).

                   -    Đo nhiệt độ bằng điện trở nhiệt trong MSP430 nên phải chọn VĐK có chức năng này.

                  -    4 nút bấm sẽ phải mất 4 chân VĐK.

                 -    Dùng quang trở sẽ mất 1 chân ADC.

                 -    Dùng Loa sẽ mất 1 chân GPIO.

                 -   1 chân Tx cho Test.

                 -   Thuật toán yêu cầu có 1 timer.

                 -    Bộ nhớ chương trình khoảng 16K.Việc xác định chính xác yêu cầu về bộ nhớ thường rất khó,dựa nhiều vào độ phức tạp của chương trình và kinh nghiệm người lập trình.Nếu không thể chắc chắn được thì nên chọn loại VĐK mà trong họ VĐK đó có các VĐK có chân và chức ngăng giống hệt nhưng bộ nhớ lớn hơn.Về điểm này thì MSP430 hoàn toàn có thể đáp ứng.

                 -   Từ đó yêu cầu VĐK phải có 18 chân GPIO,trong đó có 1 chân ADC,2 chân I2C,1 chân Tx,trở nhiệt bên trong,1 timer.Tuy nhiên như vậy ít nhất chúng ta sẽ phải chọn VĐK có 28 chân.Giả sử hiện tại mình chỉ có VĐK MSP430G2553 và MSP430G2452.Một trong các giải pháp đưa ra là thay vì dùng 4 chân cho nút nhấn,chúng ta sẽ phân áp khác nhau cho nút nhấn và nối chung vào 1 chân ADC,khi nhấn nút,ta sẽ đọc giá trị ADC để xác định nút nào đang được nhấn(ngoài ra còn nhiều giải pháp khác).Vì vậy cần quay lại bước 2,sửa lại giải pháp cho 4 nút nhấn.khi đó số lượng chân giảm còn 15,có rất nhiều loại VĐK có thể đáp ứng được yêu cầu này.

              -    Chúng ta chắc chắn sẽ chọn MSP430 dòng G vì giá thấp và vì cũng ko cần các chức năng quá đặc biệt.






Sau khi loại trừ sẽ chỉ còn các VĐK sau thỏa mãn:G2433,G2533,G2453,G2553.Còn lại không thỏa mãn vì không có UART và bộ nhớ nhỏ.

Mình chọn MSP430G2553 vì nó có sẵn,và cũng vì nó có bộ nhớ lớn.
     3.2.   Phần mềm,tài liệu

          -       Các phần mềm,tài liệu cần sử dụng,bắt buộc phải có hết trước khi thực hiện bước tiếp theo.
o   Vẽ mạch:Altium
o   Lập trình:CCS cần chú ý vì CCS không có license sẽ giới hạn code 16Kb
o   Phần mềm đọc UART:Hercules
o   Datasheet:MSP430G2553,MSP43x2xx,BQ32000,LM1117,Led đồng hồ.
o   Thu viện MSP430 :I2C,UART,Flash,Clock,Switch,ADC
         -       Yêu cầu là các bạn trước khi thiết kế mạch thì phải xây dựng xong các thư viện liên quan,hoặc các hàm điều khiển,tính toán khó.Để tránh trường hợp không thể làm chủ được phần cứng.
       
4.        Thống kê chi phí

Đến đây sau khi đã thực hiện xong các bước phân tích,chúng ta có thể chắc chắn về thiết kế tối ưu,việc vẽ mạch sẽ thực hiện theo yêu cầu từ bước 2,linh kiện như bước 3.

Trong bài sau chúng ta sẽ tiếp tục với phần Schematic và Layout,thi công mạch
 
5.        Thiết kế mạch

Phần mềm vẽ mạch : Altium

Công việc thiết kế mạch dựa nhiều vào hiểu biết về mạch điện tử,linh kiện điện tử,các bạn phải tự trao dồi.Ở đây mình chỉ nói một số điểm cần lưu ý khi thiết kế mạch.

-       Khi sử dụng linh kiện,các bạn nên xem lại footprint và chỉnh sửa ngay trong layout.

-       Tất cả các linh kiện đều đã được tính toán từ bước phân tích thiết kế,thực ra không có ràng buộc nào trong việc phải tuân thủ trung thành các kết quả từ bước phân tích.Nếu trong quá trình vẽ mạch nguyên lý hoặc mạch in mà thấy không phù hợp có thể sửa lại.

-       Bắt đầu với nguồn ,chúng ta chỉ sử dụng LM1117 nên mạch rất đơn giản.Các bạn nên xác định ngay jack cắm nguồn là loại nào.Như mình chọn loại Jack DC.


-       Nút bấm do còn thừa 2 chân nên mình cho vào 2 ADC để giảm lỗi.Tuy nhiên khi lập trình sau này thì thấy phân áp cho 4 nút rồi đưa vào 1 ADC sẽ tối ưu cho lập trình hơn.


-       Linh kiện nào chưa có thì phải tự tạo,như led đồng hồ chẳng hạn.Thực ra ở các linh kiện mà vai trò các chân giống nhau như Led chẳng hạn,có thể nối tùy ý giữa Led và 74HC595,khi vẽ mạch layout,thì sửa lại sao cho vẽ dễ nhất có thể.Nó sẽ giúp có ít đường câu dây nhất(một mặt),hoặc ít via nhất(2 mặt).Nhiều via sẽ khiến mạch của bạn kém ổn định hơn vì khi làm mạch đôi khi via không thông nhau giữa các layer với nhau gây lỗi. 


-       Còn lại các bạn vẽ như bình thường.Sau khi hoàn tất chúng ta sẽ có mạch nguyên lý đầy đủ.
-       Chú ý nên sử dụng ít loại linh kiện nhất có thể,ví dụ như dùng 1 loại trở,khi hàn mạch sẽ dễ dàng hơn,ngoài ra cũng đỡ tốn tiền mua linh kiện vì thường các bạn phải mua với số lượng lớn chứ ít ai bán cho bạn 1 vài con trở cả.
-       Sau khi hoàn thành vẽ mạch,trước khi chuyển sang vẽ layout,các bạn cần liên hệ với cơ sở làm mạch(nếu làm mạch in) để biết thông số kỹ thuật của mạch có thể gia công được.Ví dụ:
o   Độ rộng đường mạch nhỏ nhất là 0.25mm.
o   Khoảng cách giữa các đường mạch nhỏ nhất là 0.2 mm,
o   Khoảng cách giữa các polygon với các đường nhỏ nhất là 0.25mm
o   Đường kính via nhỏ nhất là 0.6mm tương ứng với đường kính pad nhỏ nhất là 1.1mm nghĩa là khoảng cách giữa via và pad là khoảng 0.5 mm,
o   Màu mạch là màu xanh green,
o   Hình dạng mạch tuỳ theo thiết kế của khách hàng,..
-       Nếu tự làm mạch thì tùy khả năng của các bạn J .Thường có các thông số sau:
o   Độ rộng đường mạch nhỏ nhất là 0.4mm.
o   Khoảng cách giữa các đường mạch nhỏ nhất là 0.4 mm.
6.        Vẽ mạch in
o   Khoảng cách giữa các polygon với các đường nhỏ nhất là 0.4mm.

-       Trước khi vẽ mạch in thì có một chú ý là nếu bạn có nhu cầu đóng hộp thì nên thiết kế mạch có các lỗ khoan trùng với lỗ bắt vít trên hộp,và đặt linh kiện cho phù hợp.
-       Cụ thể việc vẽ mạch như thế nào mình sẽ không đề cập cụ thể.Có rất nhiều nguồn hướng dẫn vẽ mạch với Altium.Còn để vẽ được tốt thì bạn phải thực hành nhiều !
-       Có một số kinh nghiệm khi vẽ layout mà nhiều bạn không để ý.
o   Cài đặt luật thiết kế để đảm bảo không vi phạm các yêu cầu gia công mạch.
o   Đi dây chủ yếu trên 1 mặt,thường là mặt không chứa linh kiện.Mạch sử dụng lâu ngày có thể bị bong lớp phủ xanh làm lộ ra dây mạch,có thể bị chập với các linh kiện kim loại,ví dụ như tản nhiệt chẳng hạn.
o   Nếu đi dây 2 mặt thì nên đặt tất cả linh kiện trên cùng 1 mặt để đảm bảo thẩm mỹ và thuận tiện hơn khi lắp đặt.
o   Công thức tính điện trở dây dẫn:
R= Trở suất đồng x L/S 
Trở suất đồng = 1.7 *10^-8
S: Tiết diện dây dẫn,với fip đồng thì độ dày dây khoảng 0.018-0.035 mm
o   Tính thông thường thì điện trở dây rất bé,cỡ khoảng vài chục mÔm.Tuy nhiên vấn đề là trở suất của đồng trên Fit đồng không tinh khiết,thường ko bằng đồng tinh khiết,ngoài ra lâu ngày còn bị oxi hóa.Nên khi vẽ các đường dây có dòng lớn đi qua phải vẽ dây lớn hơn bình thườn.Vấn đề này các bạn nên tìm hiểu thêm vì mình ít khi thiết kế với dòng quá lớn nên không có nhiều kinh nghiệm.
o   Các chi tiết như Chữ khi vẽ trên mặt Bot đều phải để mirror.
Sau khi vẽ xong chúng ta có mạch như sau.


 

No comments:

Post a Comment

END COMMENT FACEBOOK-->