Công thức tính độ rộng đường mạch in (trace width) trên PCB dựa vào dòng điện, độ dày lớp đồng, và mức tăng nhiệt độ cho phép (temperature rise) thường được xác định theo tiêu chuẩn IPC-2221 hoặc IPC-2152 (phiên bản mới hơn, chính xác hơn).
🔹 1. Công thức theo tiêu chuẩn IPC-2221 (truyền thống)
Đối với đường mạch ngoài (External Layer):
Đối với đường mạch trong (Internal Layer):
Trong đó:
: dòng điện (A)
: tiết diện mặt cắt ngang của đường mạch (mil²)
: mức tăng nhiệt độ cho phép (°C)
: hằng số kinh nghiệm
Lớp ngoài:
Lớp trong:
Từ đó suy ra:
Sau khi tính được , ta có thể tìm độ rộng như sau:
Với:
: độ dày lớp đồng (mil)
1 oz/ft² = 1.37 mil
2 oz/ft² = 2.74 mil
3 oz/ft² = 4.11 mil (1 mil = 0.0254 mm)
🔹 2. Công thức quy đổi ra mm
Vì 1 oz = khoảng 35 µm, ta có thể tính nhanh:
🔹 3. Ví dụ minh họa
Yêu cầu: Dòng điện 2A, nhiệt tăng cho phép 10°C, lớp đồng 1oz (35 µm), lớp ngoài.
Áp dụng công thức IPC-2221:
→ Độ rộng cần thiết ≈ 3.5 mm
Dưới đây là bảng tra nhanh độ rộng đường mạch (theo chuẩn IPC-2221), giúp bạn ước lượng nhanh độ rộng (mm) cần thiết cho các dòng điện khác nhau, với lớp đồng 1oz, 2oz, 3oz và mức tăng nhiệt độ cho phép 10°C (điều kiện thường dùng trong thiết kế PCB).
🔹 BẢNG TRA NHANH ĐỘ RỘNG ĐƯỜNG MẠCH (PCB TRACE WIDTH)
Dòng điện (A)
1oz (35µm) – Lớp ngoài
2oz (70µm) – Lớp ngoài
3oz (105µm) – Lớp ngoài
0.5A
0.55 mm
0.28 mm
0.19 mm
1A
1.00 mm
0.50 mm
0.34 mm
2A
3.50 mm
1.75 mm
1.20 mm
3A
5.50 mm
2.80 mm
1.90 mm
5A
9.00 mm
4.50 mm
3.00 mm
10A
18.0 mm
9.0 mm
6.0 mm
⚙️ Ghi chú:
Lớp trong thường cần rộng hơn 1.5–2 lần so với lớp ngoài vì khả năng tản nhiệt kém hơn.
Bảng này áp dụng cho tăng nhiệt độ 10°C; nếu cho phép tăng nhiệt cao hơn (ví dụ 20°C), đường mạch có thể hẹp hơn khoảng 25–30%.
Dưới đây là các đường dẫn (liên kết) tham khảo đáng tin cậy về công thức tính độ rộng đường mạch PCB theo chuẩn IPC‑2221 / IPC‑2152, được dùng để dẫn chứng cho các phần mình đã giải thích phía trên:
Xin chào các bạn, cảm ơn bạn đã theo dõi bài viết này!
Đây là chia sẽ của cá nhân mình dựa trên kiến thức và kinh nghiệm có được trong gần 20 năm thiết kế PCB tính từ thời sinh viên năm 2 (2007), thời kỹ sư thiết kế PCB trong công ty Nhật (từ 2011), thời làm tại phòng Lab Hàn Quốc (từ 2024). Mỗi người có thể có một phương pháp khác nhau, vậy nên hãy lựa chọn phương pháp nào mà bạn thấy phù hợp nhất với bạn nhé! Và chia sẽ của mình nêu lên là một trong những phương pháp mà bạn có thể tham khảo.
Giai đoạn 1: Tìm hiểu trước khi thiết kế PCB
Yêu cầu đầu tiên là bạn cần phải hiểu rõ về mạch nguyên lý, những yêu cầu đặc biệt trên bo mạch mà bạn sắp layout!
Yêu cầu thứ hai là bạn phải hiểu rõ bản chất, cấu tạo và đặc tính của các thành phần có trên bo mạch PCB.
Giai đoạn 2: Bố trí linh kiện trên bo
Trước khi bố trí linh kiện cần xem xét đến các khía cạnh sau (ví dụ cho bài mạch nhấp nháy hình trái tim):
Về tính năng: Bạn đã bố trí được LED hình trái tim theo thứ tự nhấp nháy hay chưa, đã đáp ứng được yêu cầu về tính năng của mạch là nhấp nháy LED hình trái tim?
Về tính kỹ thuật: Bạn bố trí linh kiện trên bao nhiêu lớp? Các đường mạch dự kiến to như thế nào để trừa không gian sau này sẽ đi dây. Các linh kiện trong các khối mạch bạn đã bố trí khá hợp lý so với sơ đồ nguyên lý hay chưa? Đã có sự phân chia cách ly theo các khối mạch phù hợp chưa?
Về tính người dùng: Bạn đã có làm chỉ thị chú thích vị trí nguồn cấp vào chưa? Chỉ thị này bàn có làm bằng hoặc to hơn những chữ khác để nhấn mạnh với người dùng biết ngay là chỗ này là nguồn cấp vào và thứ tự 5V -0V là như vậy hay chưa? Thao tác điều chỉnh biến trở (điều chỉnh chế độ nháy LED) có thuận tiện hay không, vị trí cắm dây nguồn vào có bất tiện không? Nếu bo mạch có làm nối tắc đi dây ngoài thì vị trí các nối tắt dễ thực hiện không? Và cuối cùng bo mạch nên thiết kế bo tròn đều các góc tránh sát thương người dùng.
Về tính thẫm mỹ: Bo mạch bố trí linh kiện có chỉnh chu đẹp mắt, dễ nhìn không?
Khi thao tác trên một phần mềm bất kỳ:
Nên chỉ bật một số lớp đơn giản và cần thiết trong quá trình bố trí linh kiện, ví dụ như hình chiếu bằng và tắt lớp overlay/silkscreen để nhìn được tốt hơn.
Nên tạm tắt các dây nối để đỡ rối, có thể thi thoảng bật lên lại để kiểm tra chiều hướng xoắn dây, có thể bật tính năng màu sắc theo NET để dễ phân biệt.
Bố trí thô (làm nhanh) theo từng khối mạch, theo từng vị trí chức năng của linh kiện, và theo yêu cầu bố trí cho trước nếu có.
Bố trí tinh (làm tỉ mĩ) lại các linh kiện trong từng khối.
Giai đoạn 3: Đi dây
Bước 1: Phải suy nghĩ trước khi vẽ bất kỳ một đường dây nào đó, cụ thể đây là đường gì (tín hiệu hay công suất, single hay differential pair …), có đặc tính gì (bình thường hay analog, highspeed hay anten …), có mối quan hệ như thế nào giữa hai linh kiện nối với nó (dài hay ngắn, theo cụm từng bó hay đơn lẻ từng sợi, thông thoáng hay cấn nhiều linh kiện, cấn nhiều vùng đặc biệt).
Bước 2: Căn cứ vào cấu trúc bo mạch đang thiết lập (bo mạch bao nhiêu lớp, các lớp đi dây nằm ở những vị trí nào trong cấu trúc ấy). Đi dây giữa các lớp nên phân theo từng phương (xu hướng ngang hoặc dọc, chứ không phải là ngang hay dọc thẳng tuyệt đối như cây thước, hoặc cũng không phải là tiện đâu đi náy, phải có quy hoạch trước) và cũng không phải là nhất nhất toàn bộ layer đều theo xu hướng đó, cái này đã có ví dụ minh hoạ trong slide bài học.
Bước 3: Căn cứ vào thứ tự ưu tiên khi vẽ (đây là kinh nghiệm riêng của mình, các bạn có thể tham khảo hoặc không nhé). Đó là: dây nhạy cảm (anten, analog, highspeed, differential pair) -> đi dây nguồn (vì dây to mà đi sau cùng thì không còn chỗ mà đi được) -> các dây ngắn (vì cho dù đi trước hay đi sau cũng chỉ một cách đi bởi vì nó quá ngắn) -> các dây theo cụm (bó dây) -> các dây đơn lẻ -> tinh chỉnh lại các dây nếu bị vướng.
Nếu bạn muốn biết mình hàn IC có nhiều chân nhỏ như QFP, TSSOP, SOIC như thế nào:
Bước 1: Chuẩn bị sẵn dụng cụ cần thiết như linh kiện, thiếc hàn, mỏ hàn loại đầu dẹp và loại đầu tròn nhỏ, mỡ hàn, quạt hút khói hàn, bùi nhùi đồng, nhíp, kính lúp, đồng hồ đo thông mạch v.v..
Bước 2: Bôi một lớp mỏng mỡ hàn vừa phải lên vùng đặt linh kiện, sau đó đặt linh kiện lên khớp với vị trí của nó trên PCB (chú ý chân số 1).
Bước 3: Cố định IC khỏi bị xê dịch sau khi đã căn chỉnh đặt đúng vị trí trên PCB, bằng cách dùng mỏ hàn đầu nhỏ cùng với thiếc, hàn một chân bất kỳ (có thể chạm 2,3 chân kề nó và chúng ta sẽ làm sạch ở bước 5).
Bước 4: Tiếp tục dùng mỏ hàn đầu nhỏ đã được “ăn” thiếc trước (chêm trước một đoạn thiếc vào đầu mỏ hàn), rê vào tất cả các chân IC (cho phép dính thiếc hàn ở giữa các chân kề nhau, và chúng ta sẽ làm sạch ở bước 5), nếu hết lượng thiếc trên mỏ hàn thì tiếp tục chêm thêm thiếc để hàn hết các chân còn lại của IC.
Bước 5: Đây là bước quan trọng nhất đó là làm sạch thiếc dính giữa kẻ hở của hai chân kề nhau. Nhờ vào mỏ hàn đầu dẹp cùng với mỡ hàn được bôi bổ sung (sao cho ngập hết các chân IC) bạn có thể tháo bớt thiếc hàn dư trên chân IC. Cụ thể, bạn dùng mỏ hàn đầu dẹp vuốt nhẹ từ mép trên của chân (đoạn dính với thân IC) dọc theo chân và xuống dưới mép dưới của chân (đoạn dính với PCB) theo từng cụm (khoảng 4-5 chân), thiếc hàn dư sẽ tự động bám vào đầu mỏ hàn, và bạn chỉ cần làm sạch đầu mỏ hàn bằng bùi nhùi đồng trước khi làm tiếp các cụm chân IC tiếp theo. Mỗi lần vuốt cần phải làm sạch mỏ hàn ngay, và ở mỗi cụm có thể làm 1-3 lần cho đến khi bạn nhìn vào kính lúp thấy đã sạch thiếc dư.
Bước 6: Bước cuối cùng, bạn dùng xăng thơm hoặc chất làm sạch chuyên dụng tương tự, làm sạch mỡ và muội đen vùng mới hàn. Sau đó, hoặc là bạn có thể dùng đồng hồ vạn năng ở chức năng đo thông mạch để kiểm tra thông mạch giữa hai chân kề nhau (chú ý kiểm tra mạch nguyên lý vì có thể hai chân kề nhau có nối với nhau). Hoặc nếu có điều kiện bạn cũng có thể soi dưới kính hiển vi để quan sát giữa các chân.
Bài biết này sẽ tiếp tục cập nhật thêm dựa trên các ý kiến phản hồi mong được chia sẽ thêm về một vấn đề cụ thể nào đó mà các bạn đề xuất, mình sẽ bổ sung tiếp ở đây, cảm ơn các bạn đã quan tâm và theo dõi đọc nhé! Chúc các bạn thành công!
1. Bạn có biết rằng kỹ thuật dây đi theo cặp với tín hiệu vi sai của chúng thường được dùng rất nhiều trong truyền nhận tín hiệu. Nguyên nhân là do vì chúng đi sát với nhau nên sẽ cùng chịu cùng nhiễu như nhau trên đường truyền, và khi lấy vi sai do cùng một mức nhiễu nên chúng sẽ bị trừ đi chỉ còn tín hiệu.
2. Trong thực tế các bạn có thể bắt gặp dạng kỹ thuật này dưới dạng cáp xoắn đôi (như sợi cáp ethernet) hoặc trên PCB thì thấy các đường mạch được layout đi song song với nhau theo một khoảng cách cố định.
3. Bạn có thể tìm thấy các tín hiệu vi sai này ở các cổng USB (tại chân D+ và D-), ở các cổng HDMI hoặc Ethernet (tại các chân như D0+/D0-, D1+/D1-) v.v.. Và bạn sẽ bất ngờ với điều này, đó là tại các mạch tạo CLOCK và mạch ADC vẫn sử dụng kỹ thuật này để loại bỏ bớt nhiễu đó nhé!
4. Và đây là tài liệu của Altium hướng dẫn về kỹ thuật này, nhớ chọn phiên bản Altium mà bạn đang dùng nhé!
Các bạn nhập vào dòng điện, độ dầy của mặt đồng, độ dài và đối chiếu với các kết quả tính được theo trường hợp mà bạn đang sử dụng nhé (lớp ngoài hay lớp trong). Link hoặc của Digikey tại đây
Dạo qua một vòng trên các website mình thấy có khá nhiều bài viết hướng dẫn lập trình STM32 dùng CubeMX để cấu hình chip STM32 và sinh code, sau đó dùng các IDE như là KeilC để soạn thảo và biên dịch, rất kỹ càng và chi tiết. Tuy nhiên nếu như bạn nào đang quen dùng hệ sinh thái của Visual Studio Code – VSC (đã dùng cái này lập trình cho C/C++, 8051, PIC, ESP8266, ESP32 v.v..) thông qua các Extension như là PlatformIO IDE, Espressif IDF, Code Runner, C/C++ v.v.. Hay là quá thích với các tính năng của VSC như là tính giao diện người dùng cao, tích hợp nhiều nền tảng lập trình All-in-One, lập trình cho nhiều dòng chip khác nhau mà không cần cài nhiều phần mềm v.v.. Ví dụ riêng với dòng STM32 các bạn có thể dùng VSC để lập trình trên các platform như là Arduino, Mbed và ngay cả là HAL. Với Mbed thì mình đã có loạt bài viết hướng dẫn ở đây. Còn trong bài viết này mình sẽ hướng dẫn các bạn dùng CubeMX để cấu hình và sinh code, sau đó soạn thảo chương trình trong Visual Studio Code rồi biên dịch bằng GNU Make và debug với Extentions tích hợp hoặc với pyOCD. Soạn thảo HAL code trên VSC cũng giống như trên KeilC (cái này đã có rất nhiều trên web) do vậy bài viết này chỉ hướng tới cách dùng CubeMX kết hợp với VSC để biên dịch và debug thôi các bạn nhé! Bài toán lập trình mẫu là chúng ta sẽ dùng ngắt TIMER2 để nhấp nháy LED sau mỗi 500ms, sử dụng bộ dao động nội. Vì bài viết khá là dài nên mình sẽ bỏ qua các định nghĩa và các lời giải thích chi tiết, chỉ tập trung đến các bước. Đây được coi như là một cuốn sổ tay lưu lại các bước phù hợp cho những ai xem lại sau một khoản thời gian không dùng tới.
2- STM32 CubeMX
Các bạn tải và CubeMX tại đây (nhớ là đăng ký tài khoản và link tải sẽ gửi về qua E-mail):
Sau khi tải xong các bạn mở lên và tạo Prj với lựa chọn theo tên chip hoặc theo tên bo KIT, ở đây chúng ta lựa chọn tên chip (của mình đang dùng STM32F104RCT6) do vậy mình sẽ chọn như sau nha:
Khởi tạo xong, các bạn vào như hình để lựa chọn cấu hình nạp và debug, ở đây mình dùng Serial Wire với mạch nạp ST-Link:
Tiếp theo mình chọn chân kết nối với đèn LED là PD2, kích chuột trái tại chân PD2 chọn là GPIO_Output và đặt tên gợi nhớ là LED1_PD2 tại mục Configuration.
Tiếp theo là cấu hình bộ Timer2 với nguồn Clock nội 8MHz chia tới APB1 là 8MHz (APB1 phục vụ Timer2), ở đây mình mong muốn sau mỗi 500ms (0-499) sẽ ngắt 1 lần, và lặp lại như vậy. Tại ngắt Timer mình sẽ để lệnh đảo trạng thái LED.
Tiếp theo mình bật ngắt toàn cục cho Timer2:
Cấu hình cho Clock không có gì cần chỉnh:
Cuối cùng trong giai đoạn này là đặt tên dự án và quan trọng nhất đó là chọn Toolchain/IDE là Makefile để có thể biên dịch và Debug từ Visual Studio Code đã cài cùng với GNU Make và pyOCD. Sau đó bấm Generate Code. Thư mục chứa code được tạo ra sau này sẽ được mở lên với VSC. Nếu như chưa thấy Makefile thì có thể bạn cần cài GNU Make trước.
3- Cài đặt GNU Make
Trước tiên bạn cần cài GCC-arm-none-eabi theo đường dẫn bên dưới:
Tải về, giải nén và thả vào ổ đĩa C: các bạn nhé! Đường dẫn này sau này chúng ta sẽ thả vào file Makefile trong thư mục Proj của dự án đã tạo ở trên bởi CubeMX.
Sau đó thử biên dịch bằng cách mở Terminal (Terminal->New Terminal) gõ lệnh make
Chú ý là trước khi bấm lệnh make mà thấy có báo lỗi ở main.c thì cứ kệ nó nhé, cứ biên dịch xem thử, làm xong lệnh make sẽ tự biến mất. Nếu mà có báo lỗi là thiếu file stddef.h thì thêm đường dẫn này (chú ý đổi lại dấu thư mục \ thành /) vào file c-pp_properties.json. Để mở file json này các bạn có thể bấm ctr+shift+p (thẻ show and run commands).
Và thêm ở vị trí này như hình:
Hoặc khi bấm make mà thấy báo là Nothing to be done for ‘all’ nghĩa là không có thay đổi nào cần để build lại –> không cần gõ make để build lại đâu.
Sau khi đã thử build thành công (nghĩa là đã tạo được file bin và file hex rồi đó) chúng ta sẽ bắt đầu chỉnh sửa lại code để thực hiện chức năng dùng ngắt Timer2 để nhấp nháy LED.
Các bạn tìm đến file stm32f1xx_it.c có hàm thực thi ngắt Timer2, đó là hàm TIM2_IRQHandler.
Ctr và kích chuột trái tại dòng HAL_TIM_IRQHandler(&htim2); sẽ nhảy đến file chứa hàm này:
Các bạn tìm đến dòng HAL_TIM_PeriodElapsedCallback(htim);
Ctrl + chuột trái để đi đến nội dung cần copy:
Sau đó dán vào khu vực tiền xử lý trên hàm main() trong main.c và có thêm đoạn chương trình để đảo trạng thái LED khi có sự kiến ngắt timer2.
Và cuối cùng là các bạn tiến hành build lại chương trình với lệnh make như mô tả ở đoạn trên.
File *.bin sẽ có tại thư mục như sau, và đây là file mà các bạn có thể lấy để nạp vào chip với mạch nạp ST-Link:
5- Debug sử dụng Extension
Ưu điểm của Debug sử dụng Extension là nhanh chóng, dễ dàng.
Bạn có thể sử dụng Extension sau:
Bạn cần chỉnh lại một chút trong file launch.json:
Thẻ debug sẽ xuất hiện như thế này sau khi đã chỉnh lại cấu hình:
Hoặc bạn cũng có thể sử dụng Extension sau:
Sau khi cài xong sẽ xuất hiện biểu tượng của nó ở thẻ bên trái của VSC như hình:
Các bạn kích vào và sẽ thấy ban đầu khi chưa có cài đặt gì thì sẽ xuất hiện mặc định như sau, bạn cần cài đặt tại thẻ “Install Build tools”.
Cài xong sẽ xuất hiện các tools như là Build, Flash, Debug:
Bạn có thể debug bằng cách bấm vào thẻ Debug STM32 ở trên, và sau đó tiến hành các thao tác debug như bình thường.
6- Debug sử dụng pyOCD
Tương tự như debug bằng Extension, chúng ta cũng có thể dùng một cách debug khác các với pyOCD, với cách này các bạn cần cài python, với win10 thì có thể cài trực tiếp trong app cũng được nhé các bạn.
Sau đó di chuyển thư mục hiện hành về pyOCD bằng lệnh: cd pyOCD
Tiến hành cài đặt biến môi trường bằng lệnh python -m venv venv
Chúng ta có thể kiểm tra pyOCD bằng lệnh pyOCD như hình:
Thiết lập biến môi trường theo đường dẫn sau: C:\Users\ACER\pyOCD\venv\Scripts (tên máy của mình là ACER). Sau đó các bạn có thể kiểm tra pyocd ngay trong VSC với lệnh như sau:
Vậy là bây giờ chúng ta có thể debug được proj tương tự như với Extention.
Chúc các bạn thành công và trải nghiệm thích thú lập trình HAL cho STM32 trên Visual Studio Code với CubeMX, GNU Make, pyOCD nhé! Dự án mẫu được sử dụng các bạn có thể tải về ở đây.
Bài viết này hướng dẫn các bước cài đặt và sử dụng Visual Studio Code cho các bạn đang muốn thực hành lập trình C. Mình khuyến khích các bạn lựa chọn Visual Studio Code để lập trình C vì công cụ này hoàn toàn miễn phí, giao diện xuất sắc và tích hợp hầu hết các trình biên dịch cho bạn mà không cần phải cài nhiều phần mềm. Học C trên Visual Studio Code, các bạn có thể tiếp tục với C++, lập trình cho vi điều khiển 8051/PIC/AVR/STM32/ESP32 v.v.. ngay trong công cụ này. Quá tiện lợi phải không nào, việc của các bạn chỉ cần chọn các Extensions (bộ công cụ mở rộng đi kèm) của phần mềm phù hợp cho nhu cầu lập trình của bạn. Sau đây là các bước để có thể lập trình C trên Visual Studio Code nhé! Bạn nào quan tâm đến lập trình STM32 trên phần mềm này thì tham khảo tại đây nhé!
Bước 2: Cài 02 Extension sau để lập trình C/C++ trong VSC là C/C++ và Code Runner
Nếu mà các bạn chưa biết cài Extension như thế nào thì các bạn có thể tìm đến biểu tượng của nó rồi theo từ khóa để chọn và cài đặt như hình bên dưới nha:
Tải về theo link trên và cài đến đoạn này thì các bạn làm theo hình nhé!
Đầu tiên là lựa chọn các trình biên dịch, nên chọn hết cho nhu cầu sau này lập trình C++ nữa các bạn nha.
Tiếp theo là cài đặt như hình:
Đợi cho nó cài xong thì các bạn sang bước 4 nhé.
Bước 4: Nếu như trước đây có Turbo C một phiên bản nổi tiếng của Borland C chạy tốt trên môi trường DOS. Việc thiết lập môi trường để trình biên dịch có thể chạy tốt trong Windows là điều cần thiết. Các bạn có thể làm như sau nhé:
Các bạn lưu ý là đường dẫn C:\MinGW\bin là nơi chưa công cụ biên dịch của chúng ta là gcc.exe, và chỉ có sau khi cài MinGW.
Bước 5: Tạo mới một thư mục của project, các bạn có thể tạo sẵn và trỏ tới
Bước 6: Cấu hình “C/C++ extension”. Bước này lựa chọn trình biên dịch C cho Visual Studio Code.
Để cấu hình cho “C/C++ extension” các bạn vào View chọn Command Palette (hoặc bấm tổ hợp phím Ctrl+Shift+P và gõ từ khóa C/C++.
Sau đó chọn 02 thông số chính như hình bên dưới cho lập trình C (với C++ thì sẽ khác nha các bạn). Lưu ý là các bạn cũng có thể chọn cho C++ ngay từ đầu để có thể lập trình cho C cũng được, tuy nhiên để các bạn đi lên từ căn bản nên mình chỉ chọn trình biên dịch cho C như bên dưới:
Bước 7: Để có thể nhập dữ liệu với câu lệnh scanf (trong C) hay cin<< (trong C++ cho sau này) các bạn bật Terminal lên như các hình bên dưới. Đầu tiên là vào cài đặt (bấm Ctrl +), sau đó là gõ từ khóa terminal và tìm đến hộp thoại Code-runner: Run In Terminal và tích vào.
Bước 8: Tạo mới một chương trình C với phần mở rộng là *.c (tương tự cho sau này với C++ là *.cpp)
Bước 9: Biên dịch xem có lỗi không, bấm Ctr Shift B và chọn như hình:
Nếu không có lỗi thì sẽ có thông báo “Build finished successfully.”
Bước cuối: Chạy thử chương trình đầu tiên, bấm Ctrl Alt N (run code). Chương trình hiển thị ra hai chuỗi và sau đó hiển thị ra số vừa được nhập từ bạn phím (ở đây mình nhập số 12).
Hoan hô! Vậy là các bạn đã biết cách cài đặt và lập trình C trên Visual Studio Code rồi phải không nào! Chúc các bạn học tốt nhé! Nếu bạn cần đến các tài liệu liên quan đến lập trình C/C++, giải thuật thì có thể tải miễn phí tại đây nhé! (các bạn vào mục số 3 nhé!)
2. Mạch đo trọng lượng bằng Load Cell với HX711 và Arduino (kèm mạch và code)
Cảm biến Load Cell thường hay có trong các cân điện tử (biến đổi ngoại lực thành tín hiệu điện) đang được ứng dụng rộng rãi dựa trên đo trọng lực như cân điện tử, bình GAS thông minh gửi SMS khi sắp hết, cảm biến mức nhiên liệu v.v.. Vì tín hiệu điện lấy ra từ Load Cell cực bé (cỡ micro volts) nên một IC khuếch đại điện áp và chuyển thành tín hiệu số gửi đến vi điều khiển được sử dụng đến. Đó là IC HX711 với 24 bit chuyển đổi tín hiệu tương tự (điện áp) sang tín hiệu số. Đường link bên dưới hướng dẫn cho các bạn cách sử dụng Load Cell và HX711 với Arduino.
Hai điểm khác nhau cơ bản trong ngắt của PIC và 8051 — 1. PIC chỉ có một mức ngắt, trong khi 8051 có hai mức ngắt (ngắt trong ngắt). Nghĩa là trong vi điều khiển PIC16F887, khi một ngắt được phục vụ, bit GIE tự động xóa do vậy sẽ không có cơ hội cho ngắt khác xảy ra trong lúc đang thực thi chương trình của ngắt hiện tại (khác với họ 8051 thì có ngắt xảy ra trong ngắt nếu ngắt mới có mức ưu tiên cao hơn, nếu hai ngắt cùng xảy ra đồng thời thì chuỗi vòng cố định sẽ xác định ngắt nào được phục vụ trước theo thứ tự: ngắt ngoài 0, timer 0, ngắt ngoài 1, timer 1, uart, timer 2).
— 2. PIC chỉ có một vector ngắt, trong khi 8051 có 7 vector ngắt. Điều này có nghĩa là, trong PIC có nhiều nguồn ngắt nhưng chỉ có mỗi 1 vector ngắt tại địa chỉ 0004H, tức là cho dù ngắt nào xảy ra đi nữa, PC cũng chỉ sẽ nhảy đến địa chỉ 0004H để thực hiện câu lệnh tiếp theo. Do vậy để thực hiện đúng chương trình phục vụ ngắt của ngắt đang gọi thì cần phải có vòng quét (polling) kiểm tra các cờ trạng thái ngắt (interrupt flag), cờ nào đang bằng 1 thì nghĩa là ngắt đó đang xảy ra, và nhớ là cờ này phải xóa bằng phần mềm trước khi một yêu cầu ngắt tiếp theo được gọi.
Bạn có thể vào thư mục Shared with me theo đường link này trong tài khoản Gmail mà bạn đã đăng ký học nhé! Nếu máy tính đang dùng nhiều tài khoản Gmail thì phải xác định xem có đúng tài khoản đang dùng là tài khoản đăng ký không nha!
Ví dụ như hình là các thư mục được chia sẽ của khoá học Full PCB Design bản PCB4.
Hướng dẫn học: Bạn học phần cơ bản trước sau đó mới lên phần nâng cao và chống nhiễu. Khi xem bài học qua video bạn cũng có thể kết hợp xem cùng với slide bài học (mình đã chuyển thành pdf, bạn chỉ cần bấm F11 là ra dạng slide đó nhé). Các slide này được phân theo từng tuần học và nằm ở trong thư mục tài liệu đọc, các bạn tải về và giải nén ra nhé! Nếu có tài liệu nào đó bạn không mở hoặc xem được có thể là do đường dẫn thư mục dài quá, bạn copy ra ngoài desktop để xem nha!
Bạn có thể gắn sao “Starred” và thêm màu để phân loại từng khóa học (nếu bạn mua nhiều khóa học), và khi đó thay vì vào mục Shared with me, bạn vào mục Starred nha!
Gần như 95% số video và 100% tài liệu các bạn có thể tải về được, tuy nhiên khi bạn tải về máy tính cả thư mục trên Drive để học thì 5% video còn lại sẽ không tải được và hệ thống cũng không báo cho bạn biết là còn video chưa tải về. Do đó bạn hãy kiểm soát số video tải về và so sánh với số video có ghi ở trong mỗi thư mục nhé! Ví dụ thư mục ghi có 20 video mà bạn tải về có 18 thì có nghĩa là 2 video còn lại bạn cần xem online trên web nha!
Bạn có thể xem thêm bài viết “Hướng dẫn truy cập và sử dụng” ở đây nhé!
Trong quá trình học nếu bạn cảm thấy vướng mắc ở chỗ nào bạn có hỏi mình nha!
6. Tham gia và trao đổi các vấn đề cụ thể của bài học qua nền tảng Google Classroom (link Google Classroom chỉ gửi qua email các bạn học online với lớp qua Meet đã đăng ký)
Một lần nữa xin cảm ơn các bạn đã tin tưởng và theo học các khóa học tại Elec2PCB.com nhé!
Nội dung bài học số 1 này đã được ghi lại thành video các bạn có thể xem ở đây nhé!
Trích dẫn một số nội dung bài học (Sẽ còn tiếp tục cập nhật thêm)
PHẦN 1 – Lập trình IoT cơ bản với ESP32 dùng ESP-IDF, Node-RED, MQTT
Bài học số 1 – ESP-IDF: Hướng dẫn cài ESP-IDF và chạy dự án đầu tiên bài Blink LED (Trích dẫn https://youtu.be/BCVQtz5f8eE)
Có thể trích xuất nội dung bài học này gồm 4 phần như sau:
1.Giới thiệu ESP32 DEVKIT V1 – DOIT
2.Hướng dẫn cài đặt ESP-IDF
3.Tạo một dự án đầu tiên với ESP-IDF
4.Một số lệnh thường dùng: Menuconfig, Build, Flash, fullclean
Bài học số 2 – ESP-IDF: Tìm hiểu về Timer Group trên ESP32 và hướng dẫn GIT trong Visual Studio Code (Trích dẫn https://youtu.be/3PTQybZcY4k)
Bài học số 3 – ESP-IDF: Sử dụng Free RTOS nhấp nháy LED và một số ví dụ Multi-Task (Trích dẫn https://youtu.be/nO6XoJ6N_uo)
Bài học số 4 – ESP-IDF: Kết nối WiFi – WiFi Station + Lấy thông tin thời tiết từ Internet (Trích dẫn https://youtu.be/dga3AKIVgRo)
Bài học số 5 – ESP-IDF: HTTP GET – ESP32 gửi data đọc được từ cảm biến lên ThingSpeak để vẽ biểu đồ theo thời gian thực (Trích dẫn https://youtu.be/7VE_8f10AjE)
Bài học số 6 – ESP-IDF: CLOUD MQTT – MQTT Broker
Bài học số 7 – ESP-IDF: Interrupt + Button + ADC (analog Sensor) + MQTT
Bài học số 8 – ESP-IDF: PWM + Touch Pin + WiFi AP Mode + Webserver
Bài học số 9 – ESP-IDF: Internal Temperature Sensor (ESP32S2/ESP32C2) + Uart Events
Bài học số 10 – ESP-IDF: BLE + Lưu trữ vào Flash
Bài học số 11 – ESP-IDF: OTA Remote Firmware Update