Chương 2 CƠ SỞ LÝ THUYẾT
2.3. Arduino Mega2560 và các linh kiện điện tử liên quan
2.3.1.1. Giới thiệu Arduino
Hình 2.35. Board Arduino Mega 2560
Arduino là một nền tảng mã nguồn mở được sử dụng để xây dựng các ứng dụng điện tử tương tác với nhau hoặc với môi trường được thuận lợi hơn.
Arduino giống như một máy tính nhỏ để người dùng có thể lập trình và thực hiện các dự án điện tử mà khơng cần phải có các cơng cụ chun biệt để phục vụ việc nạp code. Arduino Mega2560 là một vi điều khiển bằng cách sử dụng ATmega2560.
2.3.1.2. Một vài thông số của Arduino Mega 2560
Bảng 2.1. Thông số kĩ thuật Arduino Mega 2560
Vi điều khiển ATmega2560
Điện áp hoạt động 5V
31 Điện áp vào khuyên dùng 7-12V DC
Điện áp giới hạn 6-20V DC
Số chân Digital I/O 54 (15 chân hardware PWM) Số chân Analog 16 (độ phân giải 10bit) Dòng tối đa trên mỗi chân I/O 20mA
Dòng tối đa (3.3V) 50mA
Bộ nhớ flash 256 KB với 8 KB dùng bởi bootloader
SRAM 8 KB (ATmega328) EEPROM 4 KB (ATmega328) LED_BUILTIN 13 Chiều dài 101.52 mm Chiều rộng 53.3 mm Trọng lượng 37 g 2.3.1.3. Năng lượng
Arduino Mega 2560 có thể được cấp nguồn 5V thơng qua cổng USB hoặc cấp nguồn ngoài với điện áp khuyên dùng là 7-12V DC và giới hạn là 6-20V. Thường thì cấp nguồn bằng pin vng 9V là hợp lí nhất nếu chúng ta khơng có sẵn nguồn từ cổng USB. Nếu cấp nguồn vượt quá ngưỡng giới hạn trên, Arduino Mega 2560 sẽ bị hỏng.
2.3.1.4. Các chân năng lượng
Các chân cấp nguồn và đo kiểm:
• GND (Ground): cực âm của nguồn điện cấp cho Arduino Mega 2560. • 5V: cấp điện áp 5V đầu ra.
• 3.3V: cấp điện áp 3.3V đầu ra.
• Vin (Voltage Input): để cấp nguồn ngồi cho Arduino Mega 2560, chúng ta sẽ nối cực dương của nguồn với chân này và cực âm của nguồn với chân GND.
• IOREF: điện áp hoạt động của vi điều khiển trên Arduino Mega 2560 có thể được đo ở chân này. Và dĩ nhiên nó ln là 5V. Mặc dù vậy chúng ta không được lấy nguồn 5V từ chân này để sử dụng bởi chức năng của nó khơng phải là cấp nguồn.
• RESET: việc nhấn nút Reset trên board để reset vi điều khiển tương đương với việc chân RESET được nối với GND qua 1 điện trở 10KΩ.
32
2.3.1.5. Bộ nhớ
Vi điều khiển Atmega2560 tiêu chuẩn cung cấp cho người dùng:
• 256KB bộ nhớ Flash: những đoạn lệnh khi lập trình sẽ được lưu trữ trong bộ nhớ Flash của vi điều khiển. Thường thì sẽ có khoảng vài KB trong số này sẽ được dùng cho bootloader nhưng hiếm khi nào cần quá 20KB bộ nhớ này.
• 8KB cho SRAM (Static Random Access Memory): giá trị các biến khai báo khi lập trình sẽ lưu ở đây. Khi chúng ta khai báo càng nhiều biến thì càng cần nhiều bộ nhớ RAM. Khi mất điện, dữ liệu trên SRAM sẽ bị mất.
• 4KB cho EEPROM (Electrically Eraseble Programmable Read Only Memory): đây giống như một chiếc ổ cứng mini – nơi chúng ta có thể đọc và ghi dữ liệu của mình vào đây mà không phải lo bị mất khi cúp điện giống như dữ liệu trên SRAM.
2.3.1.6. Các cổng vào/ra
Hình 2.36. Các cổng vào/ra (in/out).
Arduino Mega 2560 có 54 chân digital dùng để đọc hoặc xuất tín hiệu. Chúng chỉ có 2 mức điện áp là 0V và 5V với dòng vào/ra tối đa trên mỗi chân là 40mA. Ở mỗi chân đều có các điện trở pull-up từ được cài đặt ngay trong vi điều khiển ATmega2560 (mặc định thì các điện trở này khơng được kết nối).
33 • Serial: 0 (RX) and 1 (TX); Serial 1: 19 (RX) and 18 (TX); Serial 2: 17 (RX) and 16 (TX); Serial 3: 15 (RX) and 14 (TX): dùng để gửi (transmit – TX) và nhận (receive – RX) dữ liệu TTL Serial. Arduino Mega 2560 có thể giao tiếp với thiết bị khác thơng qua 2 chân này. Kết nối bluetooth thường thấy nói nơm na chính là kết nối Serial khơng dây. Nếu không cần giao tiếp Serial, không nên sử dụng 2 chân này nếu khơng cần thiết.
• Chân PWM (~): 2 đến 13 và 44 đến 46: cho phép xuất ra xung PWM với độ phân giải 8bit bằng hàm analogWrite(). Nói một cách đơn giản, chúng tacó thể điều chỉnh được điện áp ra ở chân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V như những chân khác.
• Chân giao tiếp SPI: 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS). Ngồi các chức năng thơng thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giao thức SPI với các thiết bị khác.
• LED 13: trên Arduino MEGA 2560 có 1 đèn led màu cam (kí hiệu chữ L). Khi bấm nút Reset, sẽ thấy đèn này nhấp nháy để báo hiệu. Nó được nối với chân số 13. Khi chân này được người dùng sử dụng, LED sẽ sáng.
2.3.2. LCD 20x4 sử dụng giao tiếp I2C
Để hiển thị thông tin lên LCD tùy nhu cầu làm việc chúng ta có thể dùng một trong hai loại LCD phổ biến là LCD 16x2 và LCD 20x4. Với nhu cầu cần hiển thị nhiều thông tin cùng một lúc, nhóm chúng em chọn LCD 20x4.
2.3.2.1. LCD2004 – LCD 20x4
34 LCD 20x4 được sử dụng để hiển thị trạng thái hoặc các thông số.
Thơng số kỹ thuật LCD2004 - LCD 20x4: • Điện áp 5V
• LCD 20x4 có 16 chân trong đó 8 chân dữ liệu (D0 – D7) và 3 chân điều khiển (RS, RW, EN).
• 5 chân còn lại dùng để cấp nguồn và đèn nền cho LCD 20x4.
• Các chân điều khiển giúp ta dễ dàng cấu hình LCD ở chế độ lệnh hoặc chế độ dữ liệu. • Chúng còn giúp ta cấu hình ở chế độ đọc hoặc ghi.
• LCD 20x4 có thể sử dụng ở chế độ 4 bit hoặc 8 bit tùy theo ứng dụng ta đang làm.
2.3.2.2. Module giao tiếp I2C
Hình 2.38. Module I2C gắn vào LCD
Thay vì phải sử dụng 6 chân Arduino để kết nối với LCD 20x4 (RS, EN, D7, D6, D5, D4) thì I2C giải quyết được vấn đề gọn nhẹ và tiết kiệm chân cho Arduino đó là chỉ sử dụng 2 chân SCL và SDA để kết nối với Aruidno.
Thông số kỹ thuật:
• Điện áp hoạt động: 2.5-6V DC.
• Hỗ trợ màn hình: LCD1602, 1604, 2004 (driver HD44780). • Giao tiếp: I2C.
• Địa chỉ mặc định: 0X27 (có thể điều chỉnh bằng ngắn mạch chân A0/A1/A2). • Tích hợp Jump chốt để cung cấp đèn cho LCD hoặc ngắt.
• Tích hợp biến trở xoay điều chỉnh độ tương phản cho LCD. • Giao tiếp I2C LCD Arduino.
35
2.3.3. Module relay 5V
Module relay 5V là module kích hoạt relay gồm một relay hoạt động tại điện áp 5V DC, kích trạng thái đóng mở ở mức cao. Được sử dụng để đóng ngắt tải với cơng suất phù hợp, đầu ra có thường đóng, thường mở dễ sử dụng và tiết kiệm chi phí.
Module đảm bảo hoạt động ổn định, lâu dài. Trên module có opto để cách ly dòng ngược về, hiệu suất ổn định. Có thể set các mức cao thấp bằng cách thiết lập jumper trên module có led báo nguồn màu xanh, led báo trạng thái relay màu đỏ. Kết nối module với mạch điều khiển đơn giản.
Hình 2.39. Module relay 5V
Thơng số kỹ thuật:
• Tải tối đa module relay: AC 250V/10A, DC 30V/10A • Dòng kích hoạt: 5mA
• Điện áp làm việc: 5V
• Kích thước mơ-đun: 50 x 26 x 18.5mm (L x W x H) • Bốn lỗ bu lơng gắn, đường kính 3.1mm
• DC +: nguồn điện dương (VCC) • DC - : tiêu cực cung cấp điện (GND)
• IN: có thể là relay điều khiển mức cao hoặc thấp đầu ra relay • NO: giao diện relay thường mở
• COM: relay giao diện chung • NC: giao diện relay thường đóng
36
2.3.4. Mạch nguồn ổn áp 5V LM2596
Vì điện áp đầu vào của một ắc quy là khơng ổn định, thường có điện áp từ 10.8V – 13V nên Arduino có thể bị nhiễu trong q trình hoạt động. Do đó nhóm chúng em chọn mạch ổn áp 5V LM2596 có chức năng tạo ra điện áp nhỏ hơn điện áp đầu vào và ln duy trì mức điện áp 5V dù điện áp đầu vào bị tăng hoặc giảm. Ngồi ra mạch ổn áp cịn có các tụ có khả năng lọc nhiễu cao và trữ điện tốt, rất thuận tiện cho việc lập trình và mơ phỏng các hệ thống sử dụng Arduino của nhóm.
Mạch giảm áp DC LM2596 3A nhỏ gọn có khả năng giảm áp từ 30V xuống 1.5V mà vẫn đạt hiệu suất cao (92%). Thích hợp cho các ứng dụng chia nguồn, hạ áp, cấp cho các thiết bị như camera, motor, robot,…
Module có 2 đầu vào IN, OUT, một biến trở để chỉnh áp đầu ra. Khi cấp điện cho đầu vào (IN) thì chúng ta vặn biến trở và dùng VOM để đo mức áp ở đầu ra (OUT) để đạt mức điện áp mà mình mong muốn. Điện áp đầu vào từ 4-35V, điện áp ra từ 1,25-30V, dịng Max 3A, có thể cấp nguồn sử dụng tốt cho raspberry và module sim…
Hình 2.40. Mạch nguồn giảm áp LM2596
Thơng số kỹ thuật:
• Điện áp đầu vào: từ 3V đến 30V
• Điện áp đầu ra: điều chỉnh được trong khoảng 1.5V đến 30V • Dòng đáp ứng tối đa là 3A
• Hiệu suất: 92% • Cơng suất: 15W
37
2.3.5. Cảm biến Hall
Với mục đích mơ phỏng và thi cơng hệ thống nhớ vị trí ghế, nhóm chúng em chọn cảm biến Hall để xác định từ tính của nam châm (nam châm này được đặt trên đường truyền mơ tơ tiến lùi), qua đó nhóm chúng em sẽ lập trình đọc giá trị điện áp đầu ra của cảm biến Hall – đó chính là cơ sở chính phục vụ cho việc mơ phỏng và thi cơng hệ thống nhớ vị trí ghế của nhóm.
2.3.5.1. Cảm biến Hall là gì?
Cảm biến Hall là loại cảm biến dùng để phát hiện từ tính của nam châm để đo độ lớn của từ trường. Điện áp đầu ra của nó tỷ lệ thuận với cường độ từ trường qua nó.
Cảm biến hiệu ứng Hall được sử dụng cho các ứng dụng phát hiện độ gần, định vị, phát hiện tốc độ và cảm biến hiện tại.
Hình 2.41. Cảm biến Hall
2.3.5.2. Nguyên tắc hoạt động của cảm biến Hall
• Hiệu ứng Hall là một hiệu ứng vật lý được thực hiện khi áp dụng một từ trường vng góc lên một thanh Hall đang có dòng điện chạy qua.
• Khi dòng điện chạy qua vật liệu dẫn điện, các electron di chuyển theo một đường thẳng.
• Đặt vật liệu trong từ trường và cho dòng điện chạy qua. Một lực tác dụng lên chúng làm cho chúng lệch khỏi đường thẳng ban đầu.
• Nhìn chung, trong ví dụ này dòng electron sẽ bị uốn cong như hình 2.42.
• Với nhiều electron hơn ở bên phải của vật liệu và nó tạo nên sự khác biệt về hiệu điện thế giữa hai bên. Độ lớn của hiệu điện thế này tỉ lệ thuận với độ lớn của dòng điện và cường độ từ trường.
38
Hình 2.42. Electrol bị uốn cong
2.4. Các phần mềm hỗ trợ thiết kế
2.4.1. Phần mềm thiết kế 2D AUTOCAD
Hình 2.43. Giao diện sử dụng của Autocad
Để phác thảo ý tưởng thiết kế, nhóm chúng em sử dụng phần mềm AUTOCAD để hỗ trợ về mặt thiết kế sơ bộ phần khung cho mơ hình ghế điện. AUTOCAD được phát triển và ứng dụng phổ biến trong các nghành chế tạo máy, xây dựng, công nghiệp,…
Nhờ tính tiện dung trong các nghành sử dụng bản vẽ thiết kế 2D thậm chí là 3D. AUTOCAD giúp giải quyết 1 cách nhanh gọn các vấn đề liên quan tới thiết kế, mô phỏng kết cấu, kiến trúc,….
39
2.4.2. Phần mềm thiết kế 3D SOLIDWORKS
Hình 2.44. Giao diện sử dụng của phần mềm SOLIDWORKS
Để thiết kế mơ phỏng mơ hình từ bản vẽ 2D, nhóm chúng em sử dụng phần mềm thiết kế 3D SOLID trong các ngành kỹ thuật, công nghiệp. SOLIDWORKS được phát triển và ứng dụng rộng rãi trong các ngành khác như: đường ống, kiến trúc, nội thất, xây dựng...
Nhờ tính năng thiết kế 3D mạnh mẽ và danh mục các giải pháp hỗ trợ đa dạng. Các dịng sản phẩm phân tích, mơ phỏng của SOLIDWORKS giúp giải quyết các vấn đề liên quan đến lắp ghép, truyền động, động học (motion), độ bền, ứng suất, mô phỏng dòng chảy và áp suất….
2.4.3. Phần mềm thiết kế mô phỏng mạch điện PROTEUS 8
Trong quá trình lập trình và thiết kế mạch đánh pan, nếu thực hiện luôn trên mạch Arduino thật sẽ tốn thời gian lắp mạch và nếu có sai sót bị hư mạch thì sẽ tốn kém chi phí. Do đó nhóm chúng em đã sử dụng phần mềm mơ phỏng Proteus 8. Tuy phần mềm mô phỏng này chưa chính xác hồn tồn tuyệt đối nhưng cũng giúp ích rất nhiều cho việc thiết kế, mô phỏng các mạch điện trên mặt lí thuyết.
40
Hình 2.45. Phần mềm Proteus
Phần mềm vẽ Proteus là phần mềm vẽ mạch điện tử được phát triển bởi công ty Lancenter Electronics. Phần mềm có thể mơ tả hầu hết các linh kiện điện tử thông dụng hiện nay.
Proteus có khả năng mơ phỏng hoạt động của các mạch điện tử bao gồm phần thiết như kế mạch và viết trình điều khiển cho các loại vi điều khiển như MCS-51, AVR, PIC… Có 2 chương trình trong phần mềm đó là ARES dùng trong vẽ mạch in và ISIS sử dụng cho mơ phỏng mạch. Trong 2 chương trình này thì nhóm chủ yếu sử dụng ISIS, với khả năng mô phỏng hoạt động của các vi điều khiển mà không cần dùng thêm bất kỳ một phần mềm phụ trợ nào khác.
Hình ảnh mạch điện được tạo bởi ISIS rất đẹp và dễ nhìn, cho phép tùy chọn các đường nét, các màu sắc mạch điện hoặc các thiết kế theo các templates. Ngồi ra phần mềm mơ phỏng mạch của Protues có khả năng sắp xếp các đường mạch và vẽ điểm giao mạch tự động.
41
Hình 2.46. Giao diện người dùng Proteus 8
2.5. Các phần mềm hỗ trợ viết thuật toán 2.5.1. Arduino IDE 2.5.1. Arduino IDE
Nhóm sử dụng phần mềm Arduino IDE để viết chương trình thuật tốn và xuất file hex để nạp vào phần mềm mô phỏng mạch Proteus 7. Sau đây là một số thơng tin cơ bản nhóm chúng em tìm hiểu về Arduino IDE.
2.5.1.1. Sơ lược về Arduino IDE
Arduino IDE là một phần mềm mã nguồn mở chủ yếu được sử dụng để viết và biên dịch mã vào module Arduino. Nó có các phiên bản cho các hệ điều hành như MAC, Windows, Linux và chạy trên nền tảng Java đi kèm với các chức năng và lệnh có sẵn đóng vai trò quan trọng để gỡ lỗi, chỉnh sửa và biên dịch mã trong mơi trường.
Có rất nhiều các module Arduino như Arduino Mega 2560, Arduino Mega, Arduino Leonardo, Arduino Micro và nhiều module khác. Mỗi module chứa một bộ vi điều khiển trên board mạch được lập trình và chấp nhận thơng tin dưới dạng mã. Mã chính, còn được gọi là sketch, được tạo trên nền tảng IDE sẽ tạo ra một file Hex, sau đó được chuyển và tải lên trong bộ điều khiển trên bo.
Môi trường IDE chủ yếu chứa hai phần cơ bản: trình chỉnh sửa và trình biên dịch, phần đầu sử dụng để viết mã được yêu cầu và phần sau được sử dụng để biên dịch và tải mã lên module Arduino.
42
Hình 2.47. Giao diện Arduino IDE
2.5.1.2. Cách Arduino IDE hoạt động
Khi chúng ta viết mã và biên dịch, IDE sẽ tạo file Hex cho mã. File Hex là các file thập phân Hexa được Arduino hiểu và sau đó được gửi đến board mạch bằng cáp USB. Mỗi bo Arduino đều được tích hợp một bộ vi điều khiển, bộ vi điều khiển sẽ nhận file hex và chạy theo mã được viết.
2.5.1.3. Thư viện
Các thư viện rất hữu ích để thêm chức năng bổ sung vào module Arduino. Có một danh sách các thư viện chúng ta có thể thêm bằng cách nhấp vào nút Sketch trong thanh menu và đi tới Include Library.
Khi nhấp vào Include Library và thêm thư viện tương ứng, nó sẽ xuất hiện trên đầu sketch với ký hiệu #include. Hầu hết các thư viện đều được cài đặt sẵn và đi kèm với phần mềm Arduino. Tuy nhiên, chúng ta cũng có thể tải xuống từ các nguồn bên ngồi.
43
Hình 2.48. Thư viện
2.5.1.4. Chọn board
Để tải sketch lên, chúng ta cần chọn board mạch phù hợp mà chúng ta đang sử dụng và các cổng cho hệ điều hành đó. Chỉ cần nhấp vào Tool trên Menu, đi tới phần Board và chọn bo chúng ta muốn làm việc. Tương tự, COM1, COM2, COM4, COM5, COM7 hoặc cao hơn được dành riêng cho board Serial và board USB. Chúng ta có thể tìm thiết bị serial