Professional Documents
Culture Documents
- DTV3022
- DTV3022
MỤC LỤC
DANH MỤC HÌNH ẢNH
2.2.2. Cấu trúc một chương trình trong phần mềm IDE 8
2.7. GIAO TIẾP ARDUINO VỚI CẢM BIẾN NHIỆT ĐỘ, ĐỘ ẨM DHT11 19
4.4. THIẾT KẾ VÀ LẬP TRÌNH GIAO DIỆN ĐIỀU KHIỂN LED – MOTOR 27
4.4.1. Sơ đồ nguyên lý mạch điều khiển LED – MOTOR – SERVO27
Thế giới XXI – Thời đại của khoa học công nghệ, thời đại của những con
chip, vi mạch, những thiết bị đột phá của tương lai. Kéo theo đó là sự phát
triển vượt bậc của khoa học kỹ thuật đã cho ra đời nhiều sản phẩm mang tính
đột phá và có sức mạnh vượt trội. Các sản phẩm này ngày càng hoàn thiện và
càng được sử dụng rộng rãi trong đời sống. Kể từ đây thời đại của tự động
hóa, các thiết bị số đang dần thống trị trong cuộc sống cách mạng khoa học kỹ
thuật.
Hì nh 1. Thế kỷ XXI – Thờ i đạ i củ a khoa họ c công nghệ
Được biết đến là một board mạch nhỏ gọn, tiện lợi nhưng đầy sức
mạnh. ARDUINO NANO là một trong những sản phẩm đột phá của công
nghệ vi mạch điện tử. Đặc biệt ứng dụng trong các hệ thống tự động hóa, là
một sản phẩm mã nguồn mở nên ARDUINO dễ dàng tương tác và thân thiện
với người sử dụng. Bất cứ ai cũng có thể học nó, vận hành nó một cách trơn
tru. Chúng ta sẽ cảm thấy thật thú vị khi một sản phẩm do chính mình tạo ra,
rất đơn giản nhưng hiệu quả thiết thực. Chỉ cần một cú click trên điện thoại là
có thể dễ dàng điều khiển các thiết bị trong nhà, hay một chú robot tự động,
một máy đo nhiệt độ cầm tay…Tất cả không gì là không thể với chúng ta. Quả
là một điều tuyệt vời! Các nhà nghiên cứu đã mang đến cho chúng ta một món
quà, một sản phẩm công nghệ giá rẻ nhưng đầy sức mạnh và thân thiện với
tự động là một yêu cầu cần thiết và quan trọng. Điều tối ưu để hệ thống này
hoạt động tốt là sử dụng vi điều khiển tính toán chính xác và hoạt động tin
cậy, một cảm biến nhạy với sự thay đổi của nhiệt độ, độ ẩm. Vậy hệ thống đó
là gì? Cấu tạo hoạt động như thế nào? Và làm thế nào để thiết kế hệ thống đó
động thì có nhiều phương pháp để thực hiện, nghiên cứu khảo sát board mạch
ARDUINO NANO em nhận thấy rằng: ứng dụng ARDUINO và việc đo lường
tự động là phương pháp tối ưu. Em đã tiến hành thực hiện đề tài “MẠCH
ARDUINO ĐO VÀ HIỂN THỊ NHIỆT ĐỘ, ĐỘ ẨM, THỜI GIAN THỰC LÊN
LCD – ĐIỀU KHIỂN MOTOR, SERVO VÀ LED BẰNG PHẦN MỀM VISUAL
STUDIO”.
Với đề tài trên em đã thực hiện và tìm hiểu các vấn đề sau:
Tìm hiểu về cảm biến nhiệt độ, độ ẩm DHT11.
Tìm hiểu về LED đơn, động cơ điện DC, động cơ SERVO.
Tìm hiểu về sơ đồ khối hệ thống và nguyên lí hoạt động của mạch
viên nước Ý thiết kế và đưa ra đầu tiên vào năm 2005. Mạch Arduino được sử
dụng để cảm nhận và điều khiển nhiều đối tượng khác nhau. Nó có thể thực
hiện nhiều nhiệm vụ lấy tín hiệu từ cảm biến đến điều khiển đèn, động cơ, và
nhiều đối tượng khác. Ngoài ra mạch còn có khả năng liên kết với nhiều
module khác nhau như module đọc thẻ từ, ethernet shield, sim900A,… để
Phần cứng bao gồm một board mạch nguồn mở được thiết kế trên nền
tảng vi xử lý AVR Atmel 8bit, hoặc ARM, Atmel 32-bit,… Hiện phần cứng của
Arduino có tất cả 6 phiên bản, Tuy nhiên phiên bản thường được sử dụng
Phần mềm để lập trình cho mạch Arduino là phần mềm IDE
Không giống như hầu hết các board mạch lập trình trước đó, Arduino
không yêu cầu một phần cứng riêng để lập trình mã mới lên board mà bạn chỉ
cần sử dụng cáp USB. Đồng thời, phần mềm Arduino IDE sử dụng phiên bản
cơ bản của C ++, giúp việc học chương trình trở nên đơn giản hơn. Chúng ta có
thể tổng hợp một số loại Arduino phổ biến như sau:
Arduino Uno: Đây chính là loại board đơn giản nhất nên rất phù hợp với
những người mới bắt đầu tìm hiểu về lĩnh vực này. Dữ liệu số bao gồm 14
chân, đầu vào gồm 6 chân 5V, khả năng phân giải là 1024 mức, tốc độ
16MHz, điện áp từ 7V đến 12V. Kích thước của Board này là 5,5x7cm.
Arduino Micro: Bao gồm có đến 20 chân, trong đó có 7 chân có thể phát
PWM. Loại này có thiết kế khá nhỏ gọn, kích thước chỉ 5x2cm.
4
Arduino Nano: Có thể nói đây chính là loại board có kích thước nhỏ nhất
Arduino Pro: Đây là một thiết kế mới mẻ khi chân số không có sẵn, tùy vào
số chân bạn sử dụng để gắn trực tiếp và giúp tiết kiệm được khoảng không
Arduino Mega: Chân số lên đến 64, 14 chân có thể phát PWM, 4 cổng
Arduino Leonardo: Là board không có cổng nối USB dùng lập trình. Được
thiết kế tại một chip nhỏ điều khiển. Kết nối qua COM ảo và có thể kết nối
Arduino LilyPad: Board mạch Lily Pad Arduino là một công nghệ dệt điện
tử có thể đeo được được mở rộng bởi Leah Sang Buechley, và được thiết kế
một cách cẩn thận bởi dòng Lea Leah và SparkFun. Mỗi board được thiết kế
một cách tưởng tượng với các miếng kết nối khổng lồ & một mặt sau mịn
màng để cho chúng được khâu vào quần áo bằng chỉ . Arduino này cũng
bao gồm I / O, nguồn và cả board cảm biến được chế tạo đặc biệt cho hàng
Arduino RedBoard: Board mạch RedBoard Arduino có thể được lập trình
bằng cáp USB Mini-B bằng Arduino IDE. Nó sẽ hoạt động trên Windows 8
mà không phải sửa đổi cài đặt bảo mật của bạn. Nó không đổi do chip USB
hoặc FTDI chúng tôi sử dụng và nó hoàn toàn phẳng ở mặt sau. Tạo nó rất
đơn giản để sử dụng trong thiết kế dự án. Chỉ cần cắm board, chọn tùy
chọn menu để chọn Arduino UNO và bạn đã sẵn sàng để tải lên chương
trình. Bạn có thể điều khiển RedBoard qua cáp USB bằng giắc cắm thùng.
5
2.1.5. Ứng dụng Arduino
Arduino có nhiều ứng dụng trong đời sống, trong việc chế tạo các thiết bị
điện tử chất lượng cao. Một số ứng dụng có thể kể đến như:
Lập trình robot: Arduino chính là một phần quan trọng trong trung tâm xử
Lập trình máy bay không người lái. Có thể nói đây là ứng dụng có nhiều kì
Game tương tác: chúng ta có thể dùng Arduino để tương tác với Joystick,
màn hình,… để chơi các trò như Tetrix, phá gạch, Mario… và nhiều game
Arduino điều khiển thiết bị ánh sáng cảm biến tốt. Là một trong những bộ
phần quan trọng trong cây đèn giao thông, các hiệu ứng đèn nháy được cài
Arduino cũng được ứng dụng trong máy in 3D và nhiều ứng dụng khác tùy
Arduino cung cấp đến môi trường lập trình tích hợp mã nguồn mở hỗ
trợ người dùng viết code và tải nó lên bo mạch Arduino. Đây là môi trường đa
nền tảng, hỗ trợ một loạt các bo mạch Arduino cùng rất nhiều tính năng độc
đáo. Ứng dụng lập trình này có giao diện được sắp xếp hợp lý, phù hợp với cả
Arduino có môi trường lập trình được viết bằng java, hiện đang được sử
dụng cho các bo mạch Arduino và Genuido, được nhiều công ty trên thế giới
sử dụng để lập trình cho các thiết bị của họ. Java 2 Platform Standard Edition
cũng là một IDE hỗ trợ Java. Hiện Java 2 Platform Standard Edition được rất
6
Arduino là môi trường phát triển tích hợp đa nền tảng, hỗ trợ cho một
loạt các bo mạch Arduino như Arduino Uno, Nano, Mega, Esplora, Ethernet,
Fio, Pro hay Pro Mini cũng như LilyPad Arduino. Phần mềm này cũng phù
hợp cho những lập trình viên C và C ++ là thay thế hoàn hảo cho các IDE
khác. Với những ai muốn học lập trình PHP, thì PHP Designer 2007 Personal
là lựa chọn tốt. Phần mềm PHP Designer 2007 Personal cung cấp các giải pháp
tải về chương trình Arduino IDE phù hợp với hệ điều hành của máy mình bao
gồm Windown, Mac OS hay Linux. Đối với Windown có bản cài đặt (.exe) và
bản Zip, đối với Zip thì chỉ cần giải nén và chạy chương trình không cần cài
đặt. Môi trường phát triển tích hợp (IDE) của Arduino là một ứng dụng đa
nền tảng được viết bằng Java.Nó được thiết kế để dành cho các nhà phát triển
và những người mới tập tành làm quen với lĩnh vực phát triển phần mềm. Nó
bao gồm một trình biên tập mã nguồn (code editor) với các chức năng như
đánh dấu cú pháp, tự động kiểm tra phù hợp dấu ngoặc và tự động canh lề,
cũng như biên dịch (complie) và tải (upload) chương trình lên bo. Một chương
trình hoặc mã nguồn viết cho Arduino được gọi là một sketch.
7
2.2.1. Giao diện phần mềm IDE
Các chương trình Arduino được viết bằng C hoặc C++. Arduino IDE đi
kèm với một thư viện phần mềm được gọi là "Wiring", từ project Wiring gốc,
có thể giúp các thao tác input/output được dễ dàng hơn. Người dùng chỉ cần
định nghĩa 2 hàm để tạo ra một chương trình vòng thực thi (cyclic executive)
Arduino IDE là nơi để soạn thảo chương trình, kiểm tra lỗi và nạp
chương trình cho Arduino. Giao diện này gồm có 3 vùng rõ ràng
- Vùng Toolbar có chứa các phím lệnh như kiểm tra chương trình, nạp
Hì nh 4. Minh họa vùng Toolbar trên giao diện Arduino IDE
8
Các nút chức năng có nhiệm vụ như sau.
- Kiểm tra chương trình viết có đúng cú pháp hay không- Verify Sketch
- Biên dịch chương trình và nạp vào board Arduino- Complie and upload
sketch to arduino.
- Mở màn hình hiển thị Serial Monitor sử dụng cài này khi trong Sketch có
lệnh in ra màn hình hay gửi ký tự thông qua chuẩn RS232- Open Serial
Monitor.
- Current tab: Sketch đang được mở hiện tại, có thể đồng thời có nhiều tab
Ngoài ra, trong Tool menu ta quan tâm các mục mạch và cổng nối tiếp
như mục Board. Ở đây việc lựa chọn bo mạch cho phù hợp với loại bo mà
chúng ta đang sử dụng đóng vai trò hết sức quan trọng. Nếu sử dụng loại bo
mạch khác thì phải chọn đúng loại bo mạch, nếu chọn sai thì nạp chương trình
Hì nh 5. Minh họa chọn board Arduino và cổng COM giao tiếp phù hợp
9
Cổng giao tiếp giữa máy tính và Board được thiết lập thông qua tab Serial
Port: đây là nơi lựa chọn cổng COM của Arduino. Khi chúng ta cài đặt driver
thì máy tính sẽ hiện thông báo tên cổng COM của Arduino là bao nhiêu( xem
ở phần Device Manager), ta chỉ việc vào Serial Port chọn đúng cổng COM để
nạp chương trình, nếu chọn sai thì không thể nạp chương trình cho Arduino
được.
- Vùng viết chương trình được đánh số dòng như hình vẽ. Đây là nơi để
viết các dòng lệnh điều khiển hoạt động của VĐK.
2.2.2. Cấu trúc một chương trình trong phần mềm IDE
Hì nh 7. Tổ ng quan quá trì nh xử lý chương trì nh Arduino
10
Phần 1: Khai báo biến
Đây là phần khai báo kiểu biến, tên các biến, định nghĩa các chân trên board
Nghĩa của từ “define” là định nghĩa, hàm #define có tác dụng định nghĩa, hay
còn gọi là gán, tức là gán một chân, một ngõ ra nào đó với 1 cái tên.
Khai báo các kiểu biến khác như: int (kiểu số nguyên), float,…
void setup() {
…………
Cấu trúc của nó có dấu ngoặc nhọn ở đầu và ở cuối, nếu thiếu phần này khi
Dùng để viết các lệnh trong chương trình để mạch Arduino thực hiện các
void loop() {
…………
Bảng 2. Một số ký hiệu và câu lệnh thường gặp
Ký hiệu, câu lệnh Ý nghĩa
11
Dấu // dùng để giải thích, khi nội dung giải thích nằm
// trên 1 dòng, khi kiểm tra chương trình thì phần kiểm tra
sẽ bỏ qua phần này, không kiểm tra
/*
Ký hiệu này cũng dùng để giải thích, nhưng giải thích
….
dành cho 1 đoạn, tức có thể xuống dòng được
*/
Define nghĩa là định nghĩa, xác định. Câu lệnh này nhằm
#define biến chân
gán tên 1 biến vào 1 chân nào đó. Ví dụ #define led 13
Read nghĩa là đọc, lệnh này dùng để đọc giá trị digital tại
digitalRead(chân);
chân muốn đọc
Read nghĩa là đọc, lệnh này dùng để đọc giá trị analog
analogRead(chân);
tại chân muốn đọc
Delay nghĩa là chờ, trì hoãn, duy trì. Lệnh này dùng để
duy trì trạng thái đang thực hiện chờ một thời gian. Thời
delay(thời gian);
gian ở đây được tính bằng mili giây, 1 giây bằng 1 ngàn
mili giây.
if nghĩa là nếu, sau if là dấu (), bên trong dấu ngoặc là
một biểu thứ so sánh.
Ví dụ trong bài về cảm biến độ ẩm đất (phần 5) thì:
if() {Các câu lệnh}
if (giatriAnalog>500)
else (){Các câu
{
lệnh}
digitalWrite(Led,HIGH);
delay(1000);
} else nghĩa là ngược lại
Serial.print() In ra màn hình máy tính, lệnh này in không xuống dòng
12
In ra màn hình máy tính, in xong xuống dòng, giá trị tiếp
Serial.println()
theo sẽ được in ở dòng kế tiếp
Arduino Nano là một bảng vi điều khiển thân thiện, nhỏ gọn, đầy
đủ. Arduino Nano nặng khoảng 7g với kích thước từ 1,8cm - 4,5cm. Bài viết
này trình bày về các thông số kỹ thuật quan trọng, nhất là sơ đồ chân và chức
nhưng khác nhau về dạng mạch. Nano được tích hợp vi điều khiển
ATmega328P, giống như Arduino UNO. Sự khác biệt chính giữa chúng là
bảng UNO có dạng PDIP (Plastic Dual-In-line Package) với 30 chân còn Nano
có sẵn trong TQFP (plastic quad flat pack) với 32 chân. Trong khi UNO có 6
cổng ADC thì Nano có 8 cổng ADC. Bảng Nano không có giắc nguồn DC như
các bo mạch Arduino khác, mà thay vào đó có cổng mini-USB. Cổng này được
sử dụng cho cả việc lập trình và bộ giám sát nối tiếp. Tính năng hấp dẫn của
arduino Nano là nó sẽ chọn công xuất lớn nhất với hiệu điện thế của nó.
13
Điện áp ngõ vào (7 – 12) Volts
Vi điều khiển ATmega328P
Điện áp hoạt động 5V
Kích thước bo mạch 18 x 45 mm
Nguồn tiêu thụ 19mA
Ngõ ra PWM 6
SRAM 2KB
Cân nặng 7g
14
Thứ tự
Tên chân Kiểu Chức năng
chân
Ngõ vào/ra số Chân TX-truyền dữ
1 D1 / TX I/O
liệu
Ngõ vào/ra số Chân Rx-nhận dữ
2 D0 / RX I/O
liệu
3 RESET Đầu vào Chân reset, hoạt động ở mức thấp
4 GND Nguồn Chân nối mass
5 D2 I/O Ngõ vào/ra digital
6 D3 I/O Ngõ vào/ra digital
7 D4 I/O Ngõ vào/ra digital
8 D5 I/O Ngõ vào/ra digital
9 D6 I/O Ngõ vào/ra digital
10 D7 I/O Ngõ vào/ra digital
11 D8 I/O Ngõ vào/ra digital
12 D9 I/O Ngõ vào/ra digital
13 D10 I/O Ngõ vào/ra digital
14 D11 I/O Ngõ vào/ra digital
15 D12 I/O Ngõ vào/ra digital
16 D13 I/O Ngõ vào/ra digital
17 3V3 Đầu ra Đầu ra 3.3V (từ FTDI)
18 AREF Đầu vào Tham chiếu ADC
19 A0 Đầu vào Kênh đầu vào tương tự kênh 0
20 A1 Đầu vào Kênh đầu vào tương tự kênh 1
21 A2 Đầu vào Kênh đầu vào tương tự kênh 2
22 A3 Đầu vào Kênh đầu vào tương tự kênh 3
23 A4 Đầu vào Kênh đầu vào tương tự kênh 4
24 A5 Đầu vào Kênh đầu vào tương tự kênh 5
25 A6 Đầu vào Kênh đầu vào tương tự kênh 6
26 A7 Đầu vào Kênh đầu vào tương tự kênh 7
Đầu ra + 5V (từ bộ điều chỉnh On
Đầu ra hoặc đầu
27 +5V board) hoặc + 5V (đầu vào từ
vào
nguồn điện bên ngoài)
28 RESET Đầu vào Chân đặt lại, hoạt động ở mức thấp
29 GND Nguồn Chân nối mass
30 VIN Nguồn Chân nối với nguồn vào
15
Hì nh 10. ICSP
Các chân: 1, 2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 và 16. Như đã đề cập trước
đó, Arduino Nano có 14 ngõ vào/ra digital. Các chân làm việc với điện áp
tối đa là 5V. Mỗi chân có thể cung cấp hoặc nhận dòng điện 40mA và có
điện trở kéo lên khoảng 20-50kΩ. Các chân có thể được sử dụng làm đầu
16
vào hoặc đầu ra, sử dụng các hàm pinMode (), digitalWrite () và digitalRead
(). Ngoài các chức năng đầu vào và đầu ra số, các chân này cũng có một số
Chân 1, 2: Chân nối đất. Hai chân nhận RX và truyền TX này được sử dụng
để truyền dữ liệu nối tiếp TTL. Các chân RX và TX được kết nối với các
chân tương ứng của chip nối tiếp USB tới TTL.
Chân 6, 8, 9, 12, 13 và 14: Chân xung PWM. Mỗi chân số này cung cấp tín
hiệu điều chế độ rộng xung 8 bit. Tín hiệu PWM có thể được tạo ra bằng
Chân 5, 6: Ngắt. Khi chúng ta cần cung cấp một ngắt ngoài cho bộ xử lý
hoặc bộ điều khiển khác, chúng ta có thể sử dụng các chân này. Các chân
này có thể được sử dụng để cho phép ngắt INT0 và INT1 tương ứng bằng
cách sử dụng hàm attachInterrupt (). Các chân có thể được sử dụng để kích
hoạt ba loại ngắt như ngắt trên giá trị thấp, tăng hoặc giảm mức ngắt và
Chân 13, 14, 15 và 16: Giao tiếp SPI. Khi bạn không muốn dữ liệu được
truyền đi không đồng bộ, bạn có thể sử dụng các chân ngoại vi nối tiếp này.
Các chân này hỗ trợ giao tiếp đồng bộ với SCK. Mặc dù phần cứng có tính
năng này nhưng phần mềm Arduino lại không có. Vì vậy, bạn phải sử dụng
Chân 16: Led. Khi bạn sử dụng chân 16, đèn led trên bo mạch sẽ sáng.
Chân 18, 19, 20, 21, 22, 23, 24, 25 và 26 : Ngõ vào/ra tương tự. Như đã đề cập
trước đó UNO có 6 chân đầu vào tương tự nhưng Arduino Nano có 8 đầu
vào tương tự (19 đến 26), được đánh dấu A0 đến A7. Điều này có nghĩa là
bạn có thể kết nối 8 kênh đầu vào tương tự để xử lý. Mỗi chân tương tự này
có một ADC có độ phân giải 1024 bit (do đó nó sẽ cho giá trị 1024). Theo
mặc định, các chân được đo từ mặt đất đến 5V. Nếu bạn muốn điện áp
17
tham chiếu là 0V đến 3.3V, có thể nối với nguồn 3.3V cho chân AREF (pin
thứ 18) bằng cách sử dụng chức năng analogReference (). Tương tự như các
chân digital trong Nano, các chân analog cũng có một số chức năng khác.
Chân 23, 24 như A4 và A5: chuẩn giao tiếp I2C. Khi giao tiếp SPI cũng có
những nhược điểm của nó như cần 4 chân và giới hạn trong một thiết bị.
Đối với truyền thông đường dài, cần sử dụng giao thức I2C. I2C hỗ trợ chỉ
với hai dây. Một cho xung (SCL) và một cho dữ liệu (SDA). Để sử dụng tính
năng I2C này, chúng ta cần phải nhập một thư viện có tên là Thư viện Wire.
Chân 18: AREF. Điện áp tham chiếu cho đầu vào dùng cho việc chuyển đổi
ADC.
Chân 28: RESET. Đây là chân reset mạch khi chúng ta nhấn nút rên bo.
Thường được sử dụng để được kết nối với thiết bị chuyển mạch để sử dụng
ICSP là viết tắt của In Circuit Serial Programming , đại diện cho một
trong những phương pháp có sẵn để lập trình bảng Arduino. Thông thường,
một chương trình bộ nạp khởi động Arduino được sử dụng để lập trình một
bảng Arduino, nhưng nếu bộ nạp khởi động bị thiếu hoặc bị hỏng, ICSP có thể
được sử dụng thay thế. ICSP có thể được sử dụng để khôi phục bộ nạp khởi
Mỗi chân ICSP thường được kết nối với một chân Arduino khác có cùng
tên hoặc chức năng. Ví dụ: MISO của Nano nối với MISO / D12 (Pin 15). Lưu ý,
các chân MISO, MOSI và SCK được ghép lại với nhau tạo nên hầu hết giao diện
SPI.
18
Hì nh 11. Mà n hì nh LCD 16x2
LCD 16×2 có 16 chân trong đó 8 chân dữ liệu (D0 – D7) và 3 chân điều khiển
5 chân còn lại dùng để cấp nguồn và đèn nền cho LCD 16×2.
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.
LCD 16×2 có thể sử dụng ở chế độ 4 bit hoặc 8 bit tùy theo ứng dụng ta đang
làm.
Chân chọn thanh ghi (Register select). Nối chân RS với logic “0”
(GND) hoặc logic “1” (VCC) để chọn thanh ghi.
4 RS Logic “0”: bus DB0-DB7 sẽ nối với thanh ghi lệnh IR của
19
LCD (ở chế độ “ghi” - write) hoặc nối với bộ đếm địa chỉ
của LCD (ở chế độ “đọc” - read).
Logic “1”: bus DB0-DB7 sẽ nối với thanh ghi dữ liệu DR
bên trong LCD.
Chân chọn chế độ đọc/ghi (Read/Write). Nối chân R/W với logic
5 R/W “0” để LCD hoạt động ở chế độ ghi, hoặc nối với logic “1” để
LCD ở chế độ đọc.
Chân cho phép (Enable). Sau khi các tín hiệu được đặt lên bus
DB0-DB7, các lệnh chỉ được chấp nhận khi có 1 xung cho phép
của chân E.
Ở chế độ ghi: dữ liệu ở bus sẽ được LCD chuyển vào(chấp
nhận) thanh ghi bên trong nó khi phát hiện một xung
6 E
(high-to-low transition) của tín hiệu chân E.
Ở chế độ đọc: dữ liệu sẽ được LCD xuất ra DB0-DB7 khi
phát hiện cạnh lên (low-to-high transition) ở chân E và
được LCD giữ ở bus đến khi nào chân E xuống mức thấp.
Tám đường của bus dữ liệu dùng để trao đổi thông tin với
MPU. Có 2 chế độ sử dụng 8 đường bus này:
Chế độ 8 bit: dữ liệu được truyền trên cả 8 đường, với bit
DB0 đến
7 - 14 MSB là bit DB7.
DB7
Chế độ 4 bit: dữ liệu được truyền trên 4 đường từ DB4 tới
DB7, bit MSB là DB7.
15 - Nguồn dương cho đèn nền.
16 - GND cho đèn nền.
Hoạt động của LCD được điều khiển thông qua 3 tín hiệu E, RS, R/W.
- Tín hiệu E là tín hiệu cho phép gửi dữ liệu. Để gửi dữ liệu đến LCD, chương
trình phải thiết lập E=1, sau đó đặt các trạng thái điều khiển thích hợp lên RS,
R/W và bus dữ liệu, cuối cùng là đưa E về 0. Hoạt động chuyển đổi từ cao-
xuống-thấp cho phép LCD nhận dữ liệu hiện thời trên các đường điều khiển
- Tín hiệu RS là tín hiệu cho phép chọn thanh ghi (Register Select). Khi RS=0,
dữ liệu được coi như là một lệnh hay một chỉ thị đặc biệt (như là xóa màn
20
hình, đặt vị trí con trỏ…). Khi RS=1, dữ liệu được coi là dữ liệu dạng văn bản
- Tín hiệu R/W là tín hiệu “Đọc/Ghi”. Khi R/W=1, thông tin trên bus dữ liệu
được ghi vào LCD. Khi R/W=0, chương trình sẽ đọc LCD.
- Bus dữ liệu gồm 4 hoặc 8 đường tùy thuộc vào chế độ hoạt động mà người
Thay vì phải mất 6 chân vi điều khiển để kết Hì nh 12. Module LCD I2C
nối với LCD 16×2 (RS, EN, D7, D6, D5 và D4) thì module IC2 bạn chỉ cần tốn 2
Module I2C hỗ trợ các loại LCD sử dụng driver HD44780(LCD 16×2, LCD
20×4, …) và tương thích với hầu hết các vi điều khiển hiện nay.
Ưu điểm:
- Đị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.
21
- Tích hợp biến trở xoay điều chỉnh độ tương phản cho LCD.
Hì nh 13. Sơ đồ đấu nối giao tiếp IC2 với LCD 16×2.
Bảng 7. Giao tiếp I2C LCD Arduino
GND GND
VCC 5V
SDA A4/SDA
SCL A5/SCL
cách chính xác ngay cả khi thiết bị đã Hì nh 14. Module DS1307
bị tắt (ngắt điện ngoài). Giao tiếp với vi điều khiển thông qua chuẩn I2C, và
đóng vai trò là slave khi kết nối đến bus I2C này. Có thể đếm thời gian theo
định dạng 24 giờ hoặc 12 giờ với chỉ thị AM/PM. Ngoài ra bên trong chíp có
bộ dò phát hiện mất nguồn và tự động chuyển sang sử dụng nguồn pin dự
phòng. Một số tính năng nổi bật của IC RTC DS1307 được đề cập dưới đây.
22
Lưu trữ và cung cấp các thông tin thời gian thực: ngày, tháng, năm, giờ,
phút, giây,…
Tiêu thụ điện năng thấp: dòng tiêu thụ dưới 500nA khi hoạt động bằng
pin.
Tự động chuyển sang nguồn pin trong trường hợp mất điện.
23
Ngõ xuất ra xung vuông, tần số có thể lập trình để
7 SQW/OUT thay đổi từ 1Hz, 4Khz, 8Khz, 32Khz. Nếu không được
sử dụng, chân này có thể được thả nổi.
2.7. GIAO TIẾP ARDUINO VỚI CẢM BIẾN NHIỆT ĐỘ, ĐỘ ẨM DHT11
thế cho dòng SHT1x ở những nơi không cần độ chính xác cao về nhiệt độ và
24
Hì nh 17. Module DHT11
ỨNG DỤNG:
- Dùng để đo nhiệt độ , độ ẩm
25
CHƯƠNG 3. THI CÔNG VÀ THIẾT KẾ MẠCH
3.1. QUÁ TRÌNH ĐO NHIỆT ĐỘ, ĐỘ ẨM, ĐỌC GIÁ TRỊ THỜI GIAN
Nguyển lý hoạt động chung của mạch: Khối nguồn có nhiện vụ cấp nguồn 5V
chung cho toàn bộ mạch hoạt đông. Cảm biến đo nhiệt độ, độ ẩm ở đây là
DHT11 với tín hiệu vào là nhiệt độ, độ ẩm, tín hiệu ra là tín hiệu tương tự
chuyển cho khối vi điều khiển Arduino Nano .Khối vi diều khiển gồm
Arduino Nano có nhiệm vụ chuyển tín hiệu tương tự nhận được sang tín hiệu
số, đọc giá trị thời gian thực của Module DS1307 và hiển thị ra LCD.
26
3.3. LƯU ĐỒ THUẬT TOÁN
27
3.5. KẾT QUẢ MÔ PHỎNG TRÊN PROTEUS
28
CHƯƠNG 4. ĐIỀU KHIỂN MOTOR, SERVO VÀ LED BẰNG PHẦN MỀM
VISUAL STUDIO
4.1. YÊU CẦU KIẾN THỨC CẦN NẮM KHI LẬP TRÌNH
- Kiến thức về cấu trúc LED, động cơ điện DC và động cơ SERVO.
- Lập trình giao diện trên PC bằng phần mềm Visual studio.
- Mô phỏng hoạt động giao tiếp giữa VĐK và PC bằng phần mềm
- Phân mềm Configure Virtual Serial Port Driver tạo cổng COM ảo giao
LED đơn là linh kiện phát quang dựa trên hiện tượng tái hợp lỗ
trống/eletron ở chân bán dẫn. Ngõ ra của LED gồm hai chân Anode và
Cathode có màu sắc hoàn toàn khác nhau tùy vào phương pháp chế tạo Bằng
cách ghép tổ hợp các LED nối tiếp hay song song chúng ta sẽ tạo ra mạch điện
phát ra màu sắc như ý. LED này sẽ phát sáng khi điện áp đầu Anode cao hơn
Cathode với một giá trị hoàn toàn xác định tùy theo từng loại.
29
4.3.2. Kỹ thuật điều chế độ rộng xung
thuật cho phép điều chỉnh điện áp ra tải hay nói cách khác là phương pháp
điều chế dựa trên sự thay đổi độ rộng của chuỗi xung vuông dẫn đến sự thay
đổi điện áp trung bình. Các xung PWM khi biến đổi thì có cùng 1 tần số và
khác nhau về độ rộng của sườn dương hay hoặc là sườn âm. Đồ thị dạng song
ứng với các tỷ lệ phần trăm điều chế. Cụ thể PWM là phương pháp được thực
hiện theo nguyên tắc đóng ngắt nguồn của tải và một cách có chu kì theo luật
Hì nh 22. Minh họ a phầ n trăm điề u chế xung PWM
Với các đặc điểm như trên, PWM được ứng dụng nhiều trong điều
khiển hoạt động của các thiết bị. Ứng dụng điển hình nhất là điều khiển tốc độ
động cơ và các bộ xung áp, điều áp... Ở đây bằng cách điều khiển xung PWM
thích hợp chúng ta hoàn toàn có thể thực hiện phối màu LED RGB một cách
túy ý.
- Stato (phần đứng yên) với các cực từ bằng nam châm vĩnh cửu hoặc
- Roto (phần chuyển động) với các cuộn dây quấn, cổ góp cùng chổi
điện.
30
Chức năng của chổi than – vành góp là để đưa điện áp một chiều vào
cuộn dây phần ứng và đổi chiều dòng điện một chiều trong cuộn dây phần
ứng. Số lượng chổi than bằng số lượng cực từ (một nửa có cực tính dương và
Hì nh 23. Minh họa cấu tạo động cơ điện một chiều
Động cơ bước được phân loại gồm động cơ nam châm vĩnh cửu, động
cơ từ trở biến thiên và động cơ hỗn hợp. Động cơ bước có nhiều loại góc quay
Động cơ nam châm vĩnh cửu có cấu trúc gồm các cuộn dây quấn trên
roto, stato là các nam châm vĩnh cửu. Loại này có cấu trúc gần giống với động
cơ AC đồng bộ.
Hì nh 24. Minh họa động cơ bước và sơ đồ nguyên lý bên trong động cơ
Động cơ có từ trở biến thiên có cấu trúc là roto làm bằng sắt nhẹ, số cực
của roto ít hơn số cực của stato, mỗi cuộn dây được quấn trên hai cực của stato
đối diện nhau. Loại này còn được gọi là động cơ phản kháng, động cơ phản
kháng có góc quay giới hạn từ 1.80 đến 300 trong chế độ điều khiển bước đủ,
31
moment hãm từ 1 đến 50Ncm, tần số khởi động lớn nhất là 1 Khz và tần số
làm việc lớn nhất trong điều kiện không tải là 20Khz.
Động cơ bước hỗn hợp: Đây là loại động cơ cảm ứng, có góc bước thay
đổi trong khoảng 0.36 độ đến 15 độ trong chế độ moment đủ, moment hãm từ
3 đến 1000Ncm, tần số khởi động lớn nhất là 40Khz. Đây là loại động cơ được
sử dụng nhiều hơn cả vì nó kết hợp được ưu điểm của cả hai loại động cơ nam
Phương pháp điều khiển động cơ bước gồm điều khiển ba đối tượng: Góc
Điều khiển góc quay: Động cơ bước có thể điều khiển được góc quay
một cách rất chính xác, góc quay nhỏ nhất mà động cơ bước quay được hiểu
như là một bước. Có hai phương pháp điều khiển phổ biến: phương pháp
điều khiển đủ bước và phương pháp điều khiển nửa bước. Điều khiển bước
đủ là phương pháp điều khiển mà số bước tối đa trong một chu kỳ bằng số
cặp cực. Phương pháp này được thực hiện bằng cách kích dẫn cùng lúc hai cực
Phương pháp nửa bước là phương pháp điều khiển mà số bước tối đa
trong một chu kỳ nhỏ hơn số cặp cực. Cách thức đơn giản nhất của phương
pháp này là kích dẫn lần lượt các cực từ của stator. Khi đó số bước quay bằng
32
với số cực stator. Ngoài ra, ta cũng có thể kích dẫn hai cực liên tiếp để tạo
Như vậy nếu sử dụng mạch điều khiển tự động, ta cần xuất một chuỗi
xung đưa đến các cuộn dây của động cơ, với tần số hợp lý thì động cơ sẽ quay
với tốc độ hợp lý và theo yêu cầu thiết kế. Qua đó ta xác định được tốc độ thực
thế của động cơ. Thông qua việc điều khiển các dãy xung đưa đến các cuộn
dây của động cơ thì ta hoàn toàn có thể điều khiển cho động cơ quay được các
Điều khiển chiều quay: Việc cấp chuỗi xung vào các cực động cơ bước
giúp động cơ quay một góc xác định. Để đổi chiều quay của động cơ ta chỉ
việc đảo thứ tự các bit của xung cấp vào các cực từ của động cơ bước.
Điều khiển tốc độ quay: Điều khiển tốc độ quay của động cơ bước bằng
cách tăng hoặc giảm thời gian cách nhau giữa các lần cấp xung, hay nói cách
khác là thay đổi tần số cấp xung điện cho các cực từ của động cơ bước.
4.4. THIẾT KẾ VÀ LẬP TRÌNH GIAO DIỆN ĐIỀU KHIỂN LED – MOTOR
4.4.1. Sơ đồ nguyên lý mạch điều khiển LED – MOTOR – SERVO
Hì nh 26. Minh họ a mạ ch điề u khiể n LED – MOTOR – SERVO
33
4.4.2. Giao diện điều khiển LED – MOTOR – SERVO bằng C#
Ưu điểm:
- Phần cứng được thiết kế nhỏ gọn và được lắp ráp theo kiểu module nên dễ
dàng thay thế cũng như kiểm tra các linh kiển trong mạch
- Phần mềm chạy khá ổn định,sai lệch nhiệt độ trong khoảng cho phép.
Nhược điểm:
Như trên em đã trình bày về đề tài tiểu luận môn học : “MẠCH ARDUINO
ĐO VÀ HIỂN THỊ NHIỆT ĐỘ, ĐỘ ẨM, THỜI GIAN THỰC LÊN LCD –
ĐIỀU KHIỂN MOTOR, SERVO VÀ LED BẰNG PHẦN MỀM VISUAL
STUDIO”.
Sau thời gian nghiên cứu tìm hiểu và thực hiện cho đến nay đề tài của em đã
hoàn thành. Em đã nỗ lực cố gắng để hoàn thành đề tài được giao. Trong quá
trình thực hiện em đã nhận được sự giúp đỡ nhiệt tình của bạn bè trong lớp và
đặc biệt là sự hướng dẫn nhiệt tình của thầy" Nguyễn Đức Nhật Quang" giúp
em đã thực hiện được đề tài tiểu luận được giao. Em xin chân thành cảm ơn.
Tuy vậy, do kiến thức còn hạn chế, em không tránh khỏi gặp sai sót, em mong
được sự đóng góp và chỉ bảo của thầy cô và các bạn giúp cho đề tài của em
35
PHỤ LỤC
4. CODE ARDUINO ĐỌC NHIỆT ĐỘ, ĐỘ ẨM, THỜI GIAN THỰC
C#
Tiếng việt:
. Ngô Diên Tập, “Đo lường và điều khiển bằng máy tính”, NXB Khoa học và kỹ
. Trần Quang Vinh, “Cấu trúc máy vi tính”, NXB Giáo dục, năm 1996.
. Trần Quang Vinh, “Nguyên lý phần cứng và kỹ thuật ghép nối máy tính”,
https://bom.to/4KnvFj
Tiếng Anh
CBChT1 CBChT2
(Ký và ghi rõ họ tên) (Ký và ghi rõ họ tên)