STM32F103 có rất nhiều ứng dụng: dùng cho driver để điều khiển ứng dụng, điềukhiển ứng dụng thông thường, thiết bị cầm tay và thuốc, máy tính và thiết bị ngoại vichơi game, GPS cơ bản, c
Trang 1ĐẠI HỌC BÁCH KHOA HÀ NỘI
TRƯỜNG ĐIỆN – ĐIỆN TỬ
BÁO CÁO BÀI TÂP LỚN
KỸ THUẬT VI XỬ LÝ
ĐỀ TÀI: THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN ĐÈN GIAO THÔNG
Giảng viên hướng dẫn: TS.Nguyễn Hoàng Dũng
Sinh viên thực hiện: Đỗ Kim Hoàn
MSSV: 20192862
Trang 3Mục lục
Danh mục bảng biểu và hình vẽ 4
1 Hình vẽ 4
2 Bảng biểu 5
Lời mở đầu 6
Lời cam đoan 7
Chương 1: Tổng quan chung về đề tài thiết kế 8
1 Đặt vấn đề 8
2 Giải quyết vấn đề 8
2.1 Kit phát triển STM32F103C8T6 9
2.1.1 Tổng quan về vi xử lý STM32F103C8T6 9
2.1.2 Cấu hình chi tiết của STM32F103C8T6 10
2.1.3 Kit phát triển STM32F103C8T6 BluePill 12
2.2 IC 74HC595 14
2.2.1 Tổng quan 14
2.2.2 Sơ đồ chân 74HC595 15
2.2.3 Đặc tính thông số kỹ thuật IC 74HC595 17
2.3 Led 7 đoạn 18
2.3.1 Tổng quan về Led 7 đoạn 18
2.3.2 Phân loại LED 7 đoạn 19
2.3.3 Nguyên lý hoạt động 19
2.4 Các phần mềm 21
2.4.1 STM32 CubeMX 21
Trang 42.4.3 Proteus 8 Professional 22
2.4.4 KiCad 23
3 Kết luận 24
Chương II: Quy trình thiết kế đề tài 25
1 Đặt vấn đề 25
2 Quy trình thiết kế 25
2.1 Tìm hiểu kiến thức 25
2.2 Mô phỏng thiết kế 26
2.3 Cấu hình cho vi xử lý STM32F103C8T6 27
2.5 Vẽ mạch nguyên lý 32
2.5.1 Mạch vẽ nguyên lý bằng Kicad sử dụng vi xử lý STM32F103C8T6 32
2.5.2 Vẽ mạch bằng Altium cho kit STM32F103C8T6 36
2.5.2.1 Mạch nguyên lý 36
2.5.2.2 Mạch PCB 37
2.6 Làm mạch in 39
2.6.1 Chọn mua linh kiện 39
2.6.2 Các bước tiến hành làm mạch in 40
2.6.2.1 In board mạch 40
3 Kết luận 43
3.1 Đánh giá các công cụ sử dụng khi thiết kế 43
3.2 Tìm hiểu về vi xử lý STM32F103C8T6 45
3.2 Tìm hiểu về thiết kế mạch đèn giao thông 45
Chương III: Kết quả và thảo luận 47
1 Đặt vấn đề 47
2.1 Kết quả mô phỏng trên proteus 47
Trang 52.2 Kết quả làm mạch thật 48
3 Kết luận 49
3.1 So sánh kết quả mô phỏng với chạy mạch thật 49
3.2 Phương hướng cải thiện 50
Tài liệu tham khảo 52
Trang 6Hình 5: Sơ đồ chân của Led 7 đoạn
Hình 6: Các linh kiện cho mạch mô phỏng
Hình 7: Sơ đồ mạch mô phỏng
Hình 8: Chọn bộ dao động ngoài cho vi xử lý
Hình 9: Sơ đồ chân của vi xử lý sau khi đã cấu hình
Hình 10: Cấu hình xung nhịp cho vi xử lý
Hình 11: Chọn tạo file HEX sau khi build code
Hình 12: Code logic của mạch
Hình 13: Sơ đồ nguyên lý mạch cho vi xử lý trên Kicad
Hình 14: Khối nguồn cho vi xử lý
Hình 15: Khối tạo dao động ngoài cho vi xử lý
Hình 16: Khối chân nạp cho vi xử lý
Hình 17: Khối ổn áp cho vi xử lý
Hình 18: Khối điều khiển led 7 đoạn của mạch
Hình 19: Sơ đồ nguyên lý cho kit STM32F103C8T6 BluePill vẽ trên Altium
Hình 20: Sắp xếp linh kiện trên mạch PCB cho Kit
Hình 21: Mạch PCB sau khi đi dây
Hình 22: Sơ đồ mạch sau khi hoàn thiện
Hình 23: Đánh giấy giáp cho bề mạch phíp đồng
Hình 24: Là mạch in
Trang 7Hình 25: Mạch sau khi là và chỉnh sửa
Hình 26: Ăn mòn mạch
Hình 27: Khoan lỗ cho mạch
Hình 28: Hàn và đi dây cho mạch
Hình 29: Kết quả mạch chạy mô phỏng
Hình 30: Mạch thật sau khi hoản thiện
2 Bảng biểu
Bảng 1: Chi tiết các chân của IC 74HC595
Bảng 2: Bảng giải mã Led 7 đoạn anot chung
Bảng 3: Bảng giải mã Led 7 đoạn cathod chung
Trang 8Lời mở đầu
Em xin gửi đến thầy/cô và các bạn báo cáo đồ án của em về việc thiết kế hệ thống đèn giao thông sử dụng vi xử lý STM32F103C8T6 và phần mềm Proteus Em hy vọng rằng báo cáo này sẽ cung cấp thông tin hữu ích về quy trình thiết kế mạch điện tử, các công cụ phát triển phần mềm và kỹ năng lập trình cho vi xử lý
Trong báo cáo này, em sẽ giới thiệu tổng quan về quy trình thiết kế mạch điện tử
và cách sử dụng phần mềm Proteus để mô phỏng và kiểm tra độ tin cậy của mạch thiết
kế Em cũng sẽ trình bày chi tiết về việc lập trình cho vi xử lý STM32F103C8T6 và sử dụng phần mềm CubeMX và KeilC để phát triển phần mềm điều khiển hệ thống đèn giaothông
Em cũng sẽ trình bày về kết quả thiết kế mạch điện tử và mô phỏng của nó trên Proteus, cùng những vấn đề và thách thức em đã gặp phải trong quá trình thiết kế Cuối cùng, em sẽ đưa ra những đề xuất và phương hướng để cải thiện và phát triển hệ thống đèn giao thông trong tương lai
Em xin chân thành cảm ơn thầy/cô và các bạn đã dành thời gian đọc báo cáo này
Em rất mong nhận được ý kiến đóng góp và phản hồi của thầy/cô và các bạn để em có thểcải thiện và hoàn thiện báo cáo của mình
Trân trọng,
Trang 9Lời cam đoan
Với đồ án thiết kế hệ thống đèn giao thông, em cam đoan rằng tất cả các thông tin
và kết quả trình bày trong báo cáo đều được thực hiện với tinh thần trách nhiệm cao và chính xác
Để hoàn thành đồ án này, em đã dành nhiều thời gian để tìm hiểu và nghiên cứu vềviệc thiết kế mạch điều khiển đèn giao thông sử dụng vi xử lý STM32F103C8T6 Chúng tôi đã sử dụng các phần mềm như Proteus, CubeMX và KeilC để mô phỏng, thiết kế và viết code cho mạch
Kết quả cuối cùng của đồ án đạt được những mục tiêu đã đề ra ban đầu và cũng đạt được
sự hài lòng của em và giáo viên hướng dẫn Đồng thời, em cũng nhận thấy những điểm yếu trong quá trình thiết kế và triển khai mạch điều khiển đèn giao thông Em sẽ tiếp tục nghiên cứu và cải thiện để đạt được kết quả tốt hơn
Vì vậy, em cam đoan rằng báo cáo này được hoàn thành với sự tận tâm, trung thực và chính xác Em mong muốn rằng nội dung của báo cáo sẽ hữu ích cho những người quan tâm đến việc thiết kế và lập trình mạch điều khiển đèn giao thông."
Trang 10Chương 1: Tổng quan chung về đề tài thiết kế
1 Đặt vấn đề
Trong những năm gần đây, cùng với sự phát triển của nền kinh tế là tốc độ giatăng không ngừng về các loại phương tiện giao thông Sự phát triển nhanh chóng của cácphương tiện giao thông đã dẫn tới tình trạng ùn tắc giao thông xảy ra thường xuyên Vấn
đề đặt ra ở đây là làm sao đảm bảo giao thống được thống suốt và sử dụng đèn điều khiểngiao thông ở những ngã tư, những nơi giao nhau của các làm đường là một giải pháp
Hệ thống đèn giao thông mà một đền tài hấp dẫn, mang tính thực tiễn cao vì nó liên quanđến an toàn giao thông và ảnh hưởng trực tiếp quá trình tham gia giao thông của mỗingười Đầu tiên, phải nói tới tác dụng to lớn của đèn giao thống là đảm bảo an toàn giaothông, giảm thiểu ùn tắc giao thông và đảm bảo sự thuận tiện cho người đi đường
Với các lý do trên, em đã chọn đề tài “Thiết kế hệ thống điều khiển đèn giaothông” cho môn học “Kỹ thuật vi xử lý” của mình Thiết kế hệ thống điều khiển đèn giaothống đỏi hỏi sử dụng các công nghệ mới, như các vi điều khiển, vi xử lý, hệ thống đèn,camera, Việc tìm hiểu và áp dụng các công nghệ này giúp em có cơ hội tiếp cần với các
kỹ thuật với và phát triển khả năng lập trình và thiết kế hệ thống Ngoài ra, hệ thống đèngiao thông là một sản phẩm có tính thương mại cao Nó được sử dụng rộng rãi ở cácthành phố, các khu vực đông dân cư trên toàn thế giới Vì vậy, nếu sau này em có khởinghiệp, việc thiết kế và phát triển hệ thống đèn giao thông có thể là một cơ hội tốt để tạo
ra một sản phẩm có giá trị thực tế và tiềm năng thương mại cao
2 Giải quyết vấn đề
Để thiết kế được một hệ thống đèn giao thông đòi hỏi rất nhiều kỹ năng: kỹ năng
tự học, tự tìm hiểu, kỹ năng lập trình, kỹ năng thiết kế mạch, Đầu tiên là về phần cứng,
em lựa chọn vi xử lý STM32F103C8T6 làm bộ điều khiển trung tâm của mình Đây làmột vi xử lý rất mạnh mẽ mà giá thành lại hợp lý, nó thuộc dòng ARM Cortex-M3 hoàntoàn đáp ứng được yêu cầu của đề tài, dễ làm quen và có sẵn tại các cửa hàng xung quanh
Trang 11khu vực Hà Nội Hệ thống đèn giao thông thì còn có các con led hiển thị số, ở đây em sửdụng led 7 thanh để hiện thị vì đây là một bài mô phỏng nên không cần dùng loại đèn caocấp khác Để có thể điều khiển các con led 7 thanh đó thì em cần có thêm con vi điềukhiển 74HC595 để xuất tín hiệu là led Với con vi điều khiển này em có thể mở rộngthêm nhiều con led 7 thanh khác chỉ bằng việc kết nối 3 chân của nó với con vi xử lýSTM32F103C8T6 Nếu không dùng vi điều khiển 74HC595 thì ta cần kết nối 8 chântrên mỗi con led vào con vi xử lý, điều này làm rất tốn chân kết nối của vi xử lý và làmmạch ở trên rối hơn Nên việc chọn thêm vi điều khiển 74HC595 là rất cần thiết Tiếptheo, ta cần có các phần mềm để có thể điều khiển các phần cứng đã nêu Để có thể cấuhình cho vi điều khiển STM32F103C8T6 em lựa chọn phần mềm CubeMX vì đây đều làcác sản phẩm của STMicroelectronics để cấu hình các chân giao tiếp Phần mềm soạnthảo và biên dịch code thì KeilC là một lựa chọn vô cùng hợp lý vì với giao diện vô cùngđơn giản thì những người mới bắt đầu lập trình cho vi xử lý như em có thể tiếp cận dễdàng Ngoài ra ta cần có phần mềm Proteus để mô phỏng mạch và Kicad để có thể vẽ lên
sơ đồ nguyên lý và sơ đồ mạch in của hệ thống đèn giao thông
2.1 Kit phát triển STM32F103C8T6
2.1.1 Tổng quan về vi xử lý STM32F103C8T6
STM32 là một trong những dòng chip phổ biến của ST với nhiều họ thông dụngnhư F0,F1,F2,F3,F4… Stm32f103 thuộc họ F1 với lõi là ARM COTEX M3.STM32F103 là vi điều khiển 32 bit, tốc độ tối đa là 72Mhz Giá thành cũng khá rẻ so vớicác loại vi điều khiển có chức năng tương tự Mạch nạp cũng như công cụ lập trình khá
đa dạng và dễ sử dụng
STM32F103 có rất nhiều ứng dụng: dùng cho driver để điều khiển ứng dụng, điềukhiển ứng dụng thông thường, thiết bị cầm tay và thuốc, máy tính và thiết bị ngoại vichơi game, GPS cơ bản, các ứng dụng trong công nghiệp, thiết bị lập trình PLC, biến tần,máy in, máy quét, hệ thống cảnh báo, thiết bị liên lạc nội bộ…
Phần mềm lập trình: có khá nhiều trình biên dịch cho STM32 như IAR EmbeddedWorkbench, Keil C… Ở đây em sử dụng Keil C để có thể viết code cho vi xử lý Thưviện lập trình: có nhiều loại thư viện lập trình cho STM32 như: STM32snippets,STM32Cube LL, STM32Cube HAL, Standard Peripheral Libraries, Mbed core Mỗi thư
Trang 12viện đều có ưu và khuyết điểm riêng, ở đây em sử dụng Standard Peripheral Libraries vì
nó ra đời khá lâu và khá thông dụng, hỗ trợ nhiều ngoại vi và cũng dễ hiểu rõ bản chấtcủa lập trình
Mạch nạp: có khá nhiều loại mạch nạp như: ULINK, J-LINK, CMSIS-DAP,STLINK… ở đây em sử dụng Stlink vì giá thành khá rả và debug lỗi cũng tốt Board đểlập trình: các bạn có thể mua sẵn 1 số kit ra chân đã có sẵn trên thị trường hoặc thiết kế 1cái board dành riêng cho bản thân mình Ở đây mình đã thiết kế 1 board đã tích hợp sẵnmạch nạp, mình cũng đã test và chạy khá ổn, debug bằng Keil C khá giống với phiên bảnSTlink V2 trên thị trường
2.1.2 Cấu hình chi tiết của STM32F103C8T6
Vi điều khiển STM32F103C8T6 là một sản phẩm của STMicroelectronics, mộttrong những nhà sản xuất vi điều khiển hàng đầu thế giới Đây là một loại vi điều khiểnARM Cortex-M3 32-bit có tốc độ xử lý lên đến 72MHz, được tích hợp với bộ nhớ flash64KB và bộ nhớ SRAM 20KB
Vi điều khiển STM32F103C8T6 có nhiều tính năng và ưu điểm, bao gồm:
Đa năng: STM32F103C8T6 có thể được sử dụng trong nhiều ứng dụng khác nhau,
từ điều khiển đơn giản đến các ứng dụng phức tạp hơn như hệ thống nhúng
Các tính năng bổ sung: Vi điều khiển này có các tính năng bổ sung như một bộADC, các cổng giao tiếp nối tiếp, các cổng SPI và I2C, các cổng GPIO và bộ giámsát nạp
Hiệu suất cao: STM32F103C8T6 có tốc độ xử lý cao lên đến 72MHz và được tíchhợp với bộ nhớ flash và SRAM lớn, giúp nó đáp ứng được nhu cầu xử lý cao vàlưu trữ dữ liệu
Tiết kiệm năng lượng: Vi điều khiển này được thiết kế để tiết kiệm năng lượng và
có tính năng điều khiển tiêu thụ điện năng thấp
Hỗ trợ phát triển phần mềm: STMicroelectronics cung cấp cho người dùng một bộcông cụ phát triển phần mềm (SDK) và các phần mềm hỗ trợ khác nhưSTM32CubeMX, để giúp người dùng dễ dàng phát triển các ứng dụng nhúng
Vi điều khiển STM32F103C8T6 được sử dụng rộng rãi trong các ứng dụng nhúng,bao gồm các ứng dụng điều khiển, đo lường và định vị Với các tính năng mạnh mẽ vàhiệu suất cao, vi điều khiển này là một lựa chọn tốt cho các nhà phát triển ứng dụngnhúng muốn xây dựng các ứng dụng hiệu quả và đáng tin cậy
Trang 13Hình 1: Sơ đồ chân vi xử lý STM32F103C8T6Thông số chi tiết:
ARM 32-bit Cortex M3 với clock max là 72Mhz
o Thạch anh nội dùng dao động RC ở mode 8Mhz hoặc 40khz
o Sử dụng thạch anh ngoài 32.768khz được sử dụng cho RTC
Trong trường hợp điện áp thấp:
o Có các mode :ngủ, ngừng hoạt động hoặc hoạt động ở chế độ chờ
o Cấp nguồn ở chân Vbat bằng pin để hoạt động bộ RTC và sử dụng lưu trữdata khi mất nguồn cấp chính
Trang 14 2 bộ ADC 12 bit với 9 kênh cho mỗi bộ.
o Khoảng giá trị chuyển đổi từ 0 – 3.6V
o Lấy mẫu nhiều kênh hoặc 1 kênh
o Có cảm biến nhiệt độ nội
DMA: bộ chuyển đổi này giúp tăng tốc độ xử lý do không có sự can thiệp quá sâucủa CPU
o 7 kênh DMA
o Hỗ trợ DMA cho ADC, I2C, SPI, UART
7 timer
o 3 timer 16 bit hỗ trợ các mode IC/OC/PWM
o 1 timer 16 bit hỗ trợ để điều khiển động cơ với các mode bảo vệ như ngắtinput, dead-time
o 2 watdog timer dùng để bảo vệ và kiểm tra lỗi
o 1 sysTick timer 24 bit đếm xuống dùng cho các ứng dụng như hàmDelay…
Hỗ trợ 9 kênh giao tiếp bao gồm:
o 2 bộ I2C(SMBus/PMBus)
o 3 bộ USART (ISO 7816 interface, LIN, IrDA capability, modem control)
o 2 SPIs (18 Mbit/s)
o 1 bộ CAN interface (2.0B Active)
o USB 2.0 full-speed interface
Kiểm tra lỗi CRC và 96-bit ID
2.1.3 Kit phát triển STM32F103C8T6 BluePill
Kit STM32F103C8T6 là một kit phát triển dựa trên vi điều khiển ARM M3 STM32F103C8T6 của STMicroelectronics Kit này cung cấp cho người dùng mộtnền tảng để phát triển ứng dụng nhúng có khả năng xử lý tốt, đa năng và hiệu quả vớinhiều tính năng bổ sung
Trang 15Cortex-Hình 2: Cấu tạo Kit STM32F103C8T6 BluePill
Ra chân đầy đủ tất cả các GPIO và giao tiếp: CAN, I2C, SPI, UART, USB,…
Tích hợp Led trạng thái nguồn, Led PC13, Nút Reset
Kích thước: 53.34 x 15.24mm
Sử dụng với các mạch nạp:
Trang 16 Vi điều khiển ARM Cortex-M3 32-bit với tốc độ xử lý 72MHz, bộ nhớ flash64KB và bộ nhớ SRAM 20KB.
Điều khiển đa năng: Kit STM32F103C8T6 có thể được sử dụng để phát triểnnhiều loại ứng dụng, bao gồm các ứng dụng điều khiển, đo lường và định vị
Các tính năng bổ sung: Kit STM32F103C8T6 có nhiều tính năng bổ sung như mộtcổng USB, một cổng USART, một cổng SPI, một cổng I2C, và các cổng GPIO
Hỗ trợ phần mềm: Kit này có sẵn một bộ công cụ phát triển phần mềm (SDK) vàcác phần mềm hỗ trợ khác như STM32CubeMX, để giúp người dùng dễ dàng pháttriển các ứng dụng nhúng
Dễ dàng sử dụng: Kit STM32F103C8T6 được thiết kế để dễ dàng sử dụng với các
bộ vi điều khiển STM32 khác Nó cung cấp cho người dùng một bảng mạch dạngđĩa và các linh kiện để giúp họ nhanh chóng bắt đầu phát triển các ứng dụng.Tóm lại, kit STM32F103C8T6 là một nền tảng phát triển ứng dụng nhúng có tính năngmạnh mẽ, đa năng và dễ dàng sử dụng Nó là một lựa chọn tuyệt vời cho các nhà pháttriển ứng dụng nhúng muốn xây dựng các ứng dụng hiệu quả và đáng tin cậy
2.2 IC 74HC595
2.2.1 Tổng quan
IC 74HC595 là một IC dạng shift register dùng để điều khiển nhiều thiết bị đầu ra
từ một số lượng đầu vào nhỏ hơn IC này là một phiên bản tăng cường của IC 74HC164,
có thể dùng để mở rộng số lượng đầu ra của vi điều khiển hoặc bất kỳ hệ thống điện tửnào
Trang 17Hình 3: IC 74HC595
IC 74HC595 có 8 đầu vào dữ liệu (D0-D7), 1 đầu vào cho chân ST_CP (latch), 1đầu vào cho chân SH_CP (shift clock) và 1 đầu vào cho chân OE (enable output) IC nàycũng có 8 đầu ra độc lập (Q0-Q7) và có khả năng điều khiển được đến 8 thiết bị đầu rabên ngoài
Các đầu vào dữ liệu D0-D7 được dùng để truyền dữ liệu từ vi điều khiển hoặc bất
kỳ nguồn dữ liệu nào đến IC Đầu vào SH_CP dùng để đồng bộ hóa dữ liệu và đầu vàoST_CP dùng để lưu trữ dữ liệu vào bộ đệm của IC Đầu vào OE được dùng để kích hoạthoặc tắt tất cả các đầu ra của IC
IC 74HC595 được sử dụng rộng rãi trong các ứng dụng điều khiển đèn LED, động
cơ, màn hình 7 đoạn và các thiết bị đầu ra khác Nó được sử dụng để mở rộng số lượngđầu ra của vi điều khiển hoặc bất kỳ hệ thống điện tử nào mà không cần sử dụng nhiềuchân đầu ra của vi điều khiển hoặc bảng mạch IC 74HC595 cũng được thiết kế để tiếtkiệm năng lượng và có khả năng hoạt động ổn định ở tần số cao hơn so với phiên bảntrước đó, IC 74HC164
2.2.2 Sơ đồ chân 74HC595
IC 74HC595 là một IC thanh ghi dịch có 16 chân bao gồm một chân chốt loại Dcùng với một thanh ghi dịch bên trong chip Nó nhận dữ liệu đầu vào nối tiếp và sau đógửi dữ liệu này ra ngoài thông qua các chân song song
Ngoài các đầu ra song song, nó còn cung cấp một đầu ra nối tiếp, nó có các đầuvào xung nhịp riêng lẻ cho thanh ghi dịch và chân chốt D IC này thuộc họ linh kiện logic
HC được thiết kế để sử dụng trong các ứng dụng công nghệ CMOS 74HC595 có haithanh ghi tích hợp Cái đầu tiên là thanh ghi dịch và cái thứ hai là thanh ghi lưu trữ Dữ
Trang 18liệu được truyền nối tiếp để thay đổi từng bit thanh ghi Nhưng nó chỉ chuyển vào thanhghi lưu trữ khi chân chốt dữ liệu được kích ở mức cao.
10 (MR) Master Reset Reset tất cả các đầu ra ở mức thấp Phải
giữ ở mức cao để hoạt động bình thường
11 (SH_CP) Clock Đây là chân đồng hồ mà tín hiệu đồng hồ
phải được cung cấp từ vi điều khiển hoặc
vi xử lý
12 (ST_CP) Latch Chân Latch dùng để cập nhật dữ liệu vào
các chân đầu ra Nó kích hoạt mức cao
13 (OE) Output Enable Chân OE được sử dụng để tắt đầu ra Phải
giữ ở mức thấp để hoạt động bình thường
14 (DS) Serial Data Đây là chân mà dữ liệu được gửi đến, dựa
trên đó 8 đầu ra được điều khiển
Trang 1915 (Q0) Output Chân đầu ra đầu tiên
Bảng 1: Chi tiết các chân của IC 74HC595
2.2.3 Đặc tính thông số kỹ thuật IC 74HC595
Dưới đây là các đặc tính thông số kỹ thuật chính của IC 74HC595
Điện áp cung cấp: từ 2V đến 6V
Dòng tiêu thụ điện năng tối đa: 70mA
Số lượng đầu vào dữ liệu: 8
Số lượng đầu ra độc lập: 8
Khả năng dòng ra tối đa của mỗi đầu ra: 35mA
Tần số hoạt động tối đa: 100MHz
Thời gian trễ đầu vào đến đầu ra: 25ns
Tổng thời gian lưu trữ dữ liệu: 100ns
Nhiệt độ hoạt động tối đa: từ -40 đến 85 độ C
Đóng gói: PDIP, SOIC, TSSOP, SSOP, PLCC
Các thông số kỹ thuật này cung cấp cho người sử dụng thông tin về các giới hạn vàtính năng của IC 74HC595 Với các thông số này, người dùng có thể thiết kế và lựa chọncác linh kiện khác để đảm bảo rằng hệ thống hoạt động ổn định và đáp ứng các yêu cầu
kỹ thuật.IC 74HC595 là một IC rất phổ biến và được sử dụng rộng rãi trong các ứng dụngđiện tử Dưới đây là một số ứng dụng phổ biến của IC 74HC595:
Điều khiển LED: IC 74HC595 được sử dụng để điều khiển đèn LED một cáchhiệu quả với số lượng lớn Bằng cách kết nối các chân đầu ra của IC với đèn LED
và sử dụng một phần mềm điều khiển để chuyển đổi các đầu ra, bạn có thể tạo racác hiệu ứng ánh sáng đa dạng
Điều khiển động cơ bước: IC 74HC595 cũng được sử dụng để điều khiển các động
cơ bước thông qua việc kết nối các chân đầu ra với các điều khiển động cơ bướcnhư ULN2003
Điều khiển hiển thị LED 7 đoạn: IC 74HC595 có thể được sử dụng để điều khiểncác hiển thị LED 7 đoạn một cách hiệu quả, bằng cách kết nối các chân đầu ra vớicác thanh LED 7 đoạn và sử dụng một phần mềm điều khiển để chuyển đổi cácđầu ra
Trang 20 Điều khiển đèn giao thông: IC 74HC595 cũng có thể được sử dụng để điều khiểnđèn giao thông thông qua việc kết nối các chân đầu ra với các đèn giao thông và sửdụng một phần mềm điều khiển để chuyển đổi các đầu ra.
Điều khiển mạch số: IC 74HC595 cũng có thể được sử dụng để điều khiển cácmạch số thông qua việc kết nối các chân đầu ra với các mạch số và sử dụng mộtphần mềm điều khiển để chuyển đổi các đầu ra
2.3 Led 7 đoạn
2.3.1 Tổng quan về Led 7 đoạn
LED 7 đoạn là một loại hiển thị kỹ thuật số được sử dụng rộng rãi trong các ứngdụng điện tử để hiển thị các ký tự số hoặc chữ cái Nó được gọi là "LED 7 đoạn" bởi vì
nó bao gồm bảy đoạn LED đơn được sắp xếp theo một thứ tự nhất định để tạo ra các ký
tự số và chữ cái
Hình 5: Sơ đồ chân của Led 7 đoạnMỗi LED đơn trong LED 7 đoạn được ký hiệu là "a", "b", "c", "d", "e", "f", "g", vàchúng được kết nối với một bộ điều khiển để tạo ra các chữ số hoặc chữ cái Các LEDnày được kết nối với nhau để tạo thành một dạng hình chữ số 8
Mỗi LED trong LED 7 đoạn có thể được bật hoặc tắt để hiển thị các chữ số hoặcchữ cái khác nhau Để hiển thị một số cụ thể, chúng ta cần bật các LED tương ứng để tạo
ra hình ảnh số đó trên LED 7 đoạn
Để điều khiển LED 7 đoạn, chúng ta có thể sử dụng một số bộ điều khiển khácnhau, nhưng phổ biến nhất là sử dụng IC 74HC595 kết hợp với các IC khác để tạo ra mộtmạch điều khiển đơn giản và hiệu quả
Trang 212.3.2 Phân loại LED 7 đoạn
Dựa vào các cực được nối, có thể phân loại LED 7 đoạn như sau:
Loại dương chung (Common Anode): nếu cực dương (anode) của tất cả 8 LEDđược nối với nhau và các cực âm (cathode) đứng riêng lẻ
Loại âm chung (Common Cathode): nếu cực âm (cathode) của tất cả 8 LED đượcnối với nhau và các cực dương (anode) đứng riêng lẻ
2.3.3 Nguyên lý hoạt động
Nguyên tắc chung : muốn LED nào sáng thì LED đó phải được phân cực thuận
Do đó muốn tạo ra chữ số nào ta chỉ cần cho LED ở các vị trí tương ứng sáng lên Bảng
mô tả cách tạo ra các chữ số để hiển thị lên LED 7 đoạn:
+ Dương chung:
:
Bảng 2: Bảng giải mã Led 7 đoạn anot chung
+ Âm chung:
Trang 22Bảng 3: Bảng giải mã Led 7 đoạn cathod chungLED 7 đoạn là một loại LED đặc biệt được sử dụng để hiển thị các giá trị số hoặcchữ cái Vì vậy, các ứng dụng của LED 7 đoạn phổ biến trong các thiết bị điện tử, đặcbiệt là các thiết bị đo lường và hiển thị, điều khiển và đồng hồ.
Các ứng dụng chính của LED 7 đoạn bao gồm:
1 Hiển thị thời gian trên đồng hồ điện tử và các thiết bị đo lường thời gian khác
2 Hiển thị giá trị nhiệt độ trên các thiết bị đo nhiệt độ
3 Hiển thị các giá trị đo lường khác, ví dụ như tần số, điện áp, dòng điện, độ ẩm, ápsuất, độ sáng,
4 Hiển thị các thông báo trạng thái trên các thiết bị điện tử, ví dụ như cảnh báo,thông báo lỗi, trạng thái hoạt động, và trạng thái kết nối
5 Các ứng dụng trò chơi, ví dụ như hiển thị số điểm và thời gian chơi trên các thiết
bị chơi game điện tử
Trang 23Vì tính tiện lợi và độ bền của mình, LED 7 đoạn đã trở thành một phần không thểthiếu trong nhiều ứng dụng điện tử hiện đại.
2.4 Các phần mềm
2.4.1 STM32 CubeMX
STM32CubeMX là một phần mềm được cung cấp miễn phí giúp ích cho việc cấuhình ngoại vi, clock, tính toán dòng tiêu thụ, tạo project với nhiều dòng chip ARMSTM32… Việc tạo project trở nên đơn giản bằng việc lựa chọn các ngoại vi cần thiết, cấplock tùy chỉnh mà không cần liên quan đến code
Việc tạo project với thư viện chuẩn (standard library) là khá khó khăn vì cần nhiềubước để tạo ra project mới STM32CubeMX ra đời như một lựa chọn để thay thế điều đó,với giao diện trực quan chúng ta sẽ dể dàng lập trình và có cái nhìn tổng quan hơn
Thư viện đi kèm với phần mềm này là STM32Cube HAL, gọi tắt là thư viện HAL,
bộ thư viện này được chuẩn hóa, giúp đồng nhất giữa các dòng F0,F1,F2,F3,F4… Nhàsản xuất cũng cung cấp đầy đủ các ví dụ mẫu đi kèm với thư viện này Cách tốt nhất để tựhọc là tự tìm hiểu các ví dụ mẫu này
Lưu ý: STM32CubeMX không phải là một trình biên dịch, nó chỉ là công cụ đểsinh ra code, chúng ta vẫn phải dùng các trình biên dịch thông thường để quan sát, debug,lập trình, sửa lỗi… Nếu bạn muốn tìm hiều sâu về vi điều khiển hãy bắt đầu nó bằng thưviện chuẩn(standard library) và ngược lai, nếu bạn muốn sử dụng một cách nhanh chónghãy sử dụng thư viện HAL(STM32Cube HAL)
Một số tính năng chính:
Dễ dàng quan sát các tính năng, thông số của IC
Có cái nhìn tổng quan, bao quát hơn về lựa chọn, cấu hình chân, clock,ngoại vi
Lựa chọn các board thí nghiệm của ST với các thông số cài đặt trước hoặcmột MCU cụ thể
Dễ dàng cấu hình ngoại vi, clock, các thông số và tự động sinh ra code
Dễ dàng chuyển đổi giữa các loại MCU STM32 bằng cách tạo project mớimột cách nhanh chóng
Dễ dàng xuất file PDF các chân, tính năng… đã cấu hình
Dễ dàng tạo ra project với nhiều trình biên dịch được lựa chọn
Trang 24 Tính toán, quản lí năng lượng dễ dàng hơn.
Tự động cập nhật thư viện khi có bản cài đặt mới
Thư viện được đồng nhất nên sẽ không có quá nhiều thay đổi khi chuyểnđổi giữa các loại MCU Ví dụ chuyển từ F1 qua F3, hay F4 và ngược lại.Tóm lại, phần mềm STM32 CubeMX là một công cụ hữu ích và đa năng cho việccấu hình và lập trình các ứng dụng nhúng trên các dòng vi điều khiển STM32 củaSTMicroelectronics
2.4.2 KeilC
Phần mềm KeilC là một môi trường lập trình tích hợp (IDE) được phát triển bởicông ty Keil, đặc biệt được sử dụng rộng rãi trong lĩnh vực lập trình nhúng cho các dòng
vi điều khiển của ARM
KeilC cung cấp một giao diện đơn giản và dễ sử dụng cho việc lập trình các dòng
vi điều khiển ARM, bao gồm các tính năng như: soạn thảo mã nguồn, biên dịch, môphỏng và gỡ lỗi KeilC hỗ trợ các ngôn ngữ lập trình phổ biến như C và Assembly, cũngnhư hỗ trợ cho các thiết bị phần cứng và công cụ lập trình phổ biến của ARM
Phần mềm KeilC được tích hợp với các trình biên dịch và công cụ mô phỏng, giúpcho quá trình phát triển phần mềm dễ dàng hơn và giảm thiểu các sai sót trong quá trìnhlập trình KeilC cũng hỗ trợ cho các thiết bị nhúng với nhiều ứng dụng khác nhau, baogồm các hệ thống điều khiển, thiết bị viễn thông, các hệ thống điện tử tiêu dùng và cácsản phẩm IoT
Ngoài ra, KeilC cũng hỗ trợ tích hợp với các công cụ mô phỏng và giả lập phầncứng, giúp người dùng kiểm tra các chương trình của họ trên các thiết bị nhúng một cáchchính xác và dễ dàng hơn
Tóm lại, KeilC là một phần mềm IDE đa chức năng và đáng tin cậy để lập trìnhcác thiết bị nhúng cho các dòng vi điều khiển ARM, với tính năng phong phú và dễ sửdụng, giúp giảm thiểu thời gian và công sức trong quá trình phát triển phần mềm nhúng
2.4.3 Proteus 8 Professional
Phần mềm Proteus 8 Professional là một công cụ thiết kế và mô phỏng mạch điện
tử đầy đủ tính năng, được phát triển bởi công ty Labcenter Electronics Ltd Proteus được
sử dụng rộng rãi trong lĩnh vực thiết kế vi mạch điện tử, mô phỏng, giả lập và kiểm tratính năng của các thiết bị điện tử
Proteus 8 Professional cung cấp một giao diện đồ họa thân thiện, cho phép ngườidùng vẽ và thiết kế các mạch điện tử, từ mạch đơn giản đến mạch phức tạp Phần mềmcung cấp một thư viện linh hoạt các linh kiện điện tử, giúp người dùng dễ dàng thêm các
Trang 25linh kiện vào mạch của họ Proteus cũng hỗ trợ tích hợp với nhiều vi điều khiển phổ biếnnhư các dòng Arduino, PIC, AVR và ARM.
Proteus cung cấp tính năng mô phỏng chính xác, cho phép người dùng kiểm tratính năng của các mạch điện tử của họ trước khi thiết kế và sản xuất Ngoài ra, Proteuscũng hỗ trợ kiểm tra lỗi và gỡ lỗi mạch điện tử, giúp người dùng tìm ra và khắc phục cáclỗi một cách nhanh chóng và dễ dàng
Proteus còn cung cấp tính năng thiết kế PCB (Printed Circuit Board), giúp ngườidùng tạo ra các bản vẽ mạch điện tử chuyên nghiệp và sản xuất chúng Proteus cung cấptính năng in ấn trực tiếp từ giao diện người dùng, cũng như hỗ trợ xuất các bản vẽ mạchđiện tử và danh sách linh kiện để sản xuất
Tóm lại, Proteus 8 Professional là một công cụ thiết kế và mô phỏng mạch điện tửchuyên nghiệp, với tính năng mạnh mẽ và dễ sử dụng, giúp người dùng thiết kế và kiểmtra tính năng của các mạch điện tử một cách chính xác và nhanh chóng
2.4.4 KiCad
Phần mềm KiCad là một công cụ thiết kế mạch điện tử nguồn mở, có tính năngtương tự như các phần mềm thiết kế mạch điện tử thương mại như Altium Designer,Cadence Allegro, hay OrCAD KiCad được phát triển bởi một nhóm các kỹ sư và nhàphát triển đến từ nhiều quốc gia khác nhau, và được phân phối miễn phí theo giấy phépGPL (General Public License)
KiCad cung cấp một giao diện đồ họa dễ sử dụng, cho phép người dùng vẽ và thiết
kế các mạch điện tử, từ mạch đơn giản đến mạch phức tạp Phần mềm cung cấp một thưviện đầy đủ các linh kiện điện tử, giúp người dùng dễ dàng thêm các linh kiện vào mạchcủa họ
KiCad cung cấp các tính năng mô phỏng mạnh mẽ, cho phép người dùng kiểm tratính năng của các mạch điện tử của họ trước khi thiết kế và sản xuất Ngoài ra, KiCadcũng hỗ trợ thiết kế PCB (Printed Circuit Board) và giúp người dùng tạo ra các bản vẽmạch điện tử chuyên nghiệp và sản xuất chúng
KiCad cung cấp nhiều tính năng đáng chú ý như phân tích nguyên lý hoạt độngmạch điện tử, vẽ mạch điện tử đa bản vẽ, xử lý tự động mạch điện tử, xuất bản và in cácbản vẽ mạch điện tử và danh sách linh kiện Ngoài ra, KiCad cũng hỗ trợ các tính năngkết xuất 3D và kiểm tra xung đột các linh kiện trong mạch
Tóm lại, KiCad là một công cụ thiết kế và mô phỏng mạch điện tử đầy đủ tínhnăng, miễn phí và nguồn mở, với tính năng mạnh mẽ và dễ sử dụng, giúp người dùngthiết kế và kiểm tra tính năng của các mạch điện tử một cách chính xác và nhanh chóng
Trang 263 Kết luận
Trang 27Chương II: Quy trình thiết kế đề tài
1 Đặt vấn đề
Thiết kế hệ thống đèn giao thông đòi hỏi sự kết hợp giữa kiến thức về điện tử, lập trình vi điều khiển, mô phỏng mạch, thiết kế mạch in, cũng như sự hiểu biết về các quy định, tiêu chuẩn và quy trình an toàn giao thông
Một trong những vấn đề quan trọng đầu tiên là tìm hiểu về các quy định, tiêu chuẩn và quy trình an toàn giao thông, đảm bảo hệ thống đèn giao thông được thiết kế và vận hành đúng theo quy định Ngoài ra, cần tìm hiểu về các thành phần điện tử, cảm biến,
vi điều khiển, mạch điện để có thể lựa chọn và sử dụng chúng phù hợp với yêu cầu của
hệ thống
Tiếp theo, cần có kiến thức về lập trình vi điều khiển để thiết kế các chức năng, điều khiển hệ thống đèn giao thông Sử dụng phần mềm mô phỏng mạch để kiểm tra tính đúng đắn của mạch, đảm bảo rằng mạch được hoạt động đúng theo thiết kế Cần chú ý đến các yếu tố như tốc độ xử lý, bộ nhớ, các chế độ điều khiển, điều chỉnh để đảm bảo chức năng của hệ thống
Khi đã thiết kế được mạch điều khiển, cần thiết kế mạch in và lắp ráp, đảm bảo các linh kiện được đặt đúng vị trí, chính xác và không bị lỗi kết nối Cuối cùng, cần tiến hành kiểm tra và chạy thử hệ thống đèn giao thông, đảm bảo rằng hệ thống hoạt động đúng và an toàn
Tóm lại, quy trình thiết kế hệ thống đèn giao thông là một quá trình phức tạp và yêu cầu sự kết hợp giữa nhiều kiến thức và kỹ năng Qua quá trình này, người thiết kế cần có sự cẩn trọng và tận tâm để đảm bảo hệ thống đèn giao thông hoạ
2 Quy trình thiết kế
2.1 Tìm hiểu kiến thức
Sau khi em tìm hiểu rất nhiều các đề tài mẫu được giao thì nhận thấy đề tài “Thiết
kế hệ thống điều khiển tín hiệu đèn giao thông” rất phù hợp với bản thân mình bởi vì nó