Xem mẫu

  1. Chương 2 Lắp đặt mô hình điều khiển bằng Arduino 2.1. Điều khiển Arduino kết nối Led Bước 1: Biên dịch chương trình để kiểm tra chương trình có lỗi hay không. Trên giao diện phần mềm lập trình Arduino bấm vào biểu tượng ‘Veryfi’ để biên dịch chương trình. Nếu chương trình có lỗi thì xử lý ngược lại chuyển sang bước 4. Hình 2.1: Biên dịch chương trình Bước 2: Nạp chương trình vào Arduino: trên giao diện phần mềm lập trình Arduino, bấm vào biểu tượng ‘Upload’ để nạp chương trình điều khiển vào Arduino. Nếu xuất hiện lỗi thì kiểm tra lỗi và xử lý, ngược lại chuyển sang bước 5. Hình 2.2: Nạp chương trình điều khiển vào Arduino Bước 3: Gạt công tắc nguồn 1 chiều ở khối nguồn một chiều trên đế chung sang vị trí ‘on’ để chạy chương trình và theo dõi quá trình chạy chương trình. 123
  2. int i; void setup(){ for(i ==0; i =0;i--){ digitalWrite(i, 1);} } void loop() {} Bước 3: Biên dịch chương trình để kiểm tra chương trình có lỗi hay không. Nếu chương trình có lỗi thì xử lý ngược lại chuyển sang bước 4. Bước 4: Nạp chương trình vào Arduino. Nếu xuất hiện lỗi trong quá trình nạp thì kiểm tra lỗi và xử lý, ngược lại chuyển sang bước 5. Bước 5: Gạt công tắc nguồn 1 chiều ở khối nguồn một chiều trên đế chung sang vị trí ‘on’ để chạy chương trình và theo dõi quá trình chạy chương trình. Bước 3: Viết chương trình bật/tắt cho 01 LED đơn trên cổng P7 với các lệnh như sau, tên file là bat.tat 1LED bangcongtac.ino: int LED= 13; int ctac= A0; int giatri; void setup(){ pinMode(LED, OUTPUT); pinMode(ctac, INPUT); digitalWrite(LED, 1);} void loop(){ giatri= digitalRead(ctac); if (giatri> 0) digitalWrite(LED, 0); else digitalWrite(LED, 1);} 124
  3. int LED; int time = 1000; void setup() { for(LED=0;LED
  4. } void loop(){ giatri= digitalRead(ctac); if(giatri= HIGH) digitalWrite(LED, 0); else digitalWrite(LED, 1); } 2.2. Điều khiển Arduino kết nối LCD Các bước thực hiện Bước 1: Ghép nối Arduino với LCD: Dùng dây điện có phích cắm hai đầu để nối chốt P10-P13, A0-A1 của Arduino với các chốt D4-D7, E, RS của LCD cụ thể như sau: Nối chốt P10 với chốt D5. Nối chốt P11 với chốt D4. Nối chốt P12 với chốt E. Nối chốt P13 với chốt RS. Nối chốt A0 với chốt D6. Nối chốt A1 với chốt D7. Sau khi kết nối các chốt, ta có sơ đồ kết nối hoàn chỉnh bài thí nghiệm như sau: Hình 2.3: Sơ đồ đấu nối bài tập Lập trình hiển thị đoạn chữ: “Xin chao” lên màn hình LCD 126
  5. Bước 2: Viết chương trình hiển thị chữ ‘Xin chao’ lên màn hình LCD như sau, tên file là hienthixinchao.ino #include LiquidCrystal lcd(13, 12, 11, 10, A0, A1); void setup(){ lcd.begin(16,2); lcd.setCursor(4,0); lcd.print("Xin Chao"); } void loop(){} Bước 3: Biên dịch chương trình để kiểm tra chương trình có lỗi hay không. Nếu chương trình có lỗi thì xử lý ngược lại chuyển sang bước 4. Bước 4: Nạp chương trình vào Arduino. Nếu xuất hiện lỗi trong quá trình nạp thì kiểm tra lỗi và xử lý, ngược lại chuyển sang bước 5. Bước 5: Gạt công tắc nguồn 1 chiều ở khối nguồn một chiều trên đế chung sang vị trí ‘on’ để chạy chương trình và theo dõi quá trình chạy chương trình. 2.3. Điều khiển Arduino kết nối động cơ Lưu đồ thuật toán Hình 2.4: Lưu đồ thuật toán bài tập lập trình bật/tắt động cơ một chiều số 1 127
  6. bằng công tắc qua cổng P6 của Arduino Các bước thực hiện Bước 1: Dùng dây điện có phích cắm 2 đầu để nối chốt của Arduino với chốt của các thiết bị trên Module IA04. Nối chốt P4 với chốt IN2 Nối chốt P5 với chốt IN1. Nối chốt P6 với chốt K1. Nối chốt P9 với chốt ENA. Nối chốt O1 với chốt M1. Nối chốt O2 với chốt M2. Sau khi kết nối các chốt, ta có sơ đồ kết nối hoàn chỉnh của bài thí nghiệm như sau: Hình 2.5: Sơ đồ đấu nối bài tập lập trình bật/tắt động cơ một chiều số 1 bằng công tắc qua cổng P6 của Arduino Bước 2: Viết chương trình lập trình bật/tắt động cơ một chiều số 1 bằng công tắc qua cổng P6 của Arduino với các lệnh như sau, tên file là battatdongco1.ino: //chuong trinh battatdongco1.ino int ct =6; int in1=5; int in2=4; int ena=9; void setup(){ pinMode(6, INPUT); pinMode(9, OUTPUT); 128
  7. pinMode(5, OUTPUT); pinMode(4, OUTPUT); digitalWrite(6,1); } void loop(){ if(digitalRead(6)==1) { digitalWrite(9, 1); digitalWrite(4, 0); digitalWrite(5, 1); } else digitalWrite(9, 0); } Bước 3: Biên dịch chương trình để kiểm tra chương trình có lỗi hay không. Nếu chương trình không có lỗi thì chuyển sang bước 4. Bước 4: Nạp chương trình vào Arduino. Bước 5: Gạt công tắc nguồn 1 chiều ở khối nguồn một chiều trên đế chung sang vị trí ‘on’ để chạy chương trình và theo dõi quá trình chạy chương trình. 2.4. Điều khiển Arduino kết nối cảm biến Lưu đồ thuật toán Hình 2.6: Lưu đồ thuật toán bài thí nghiệm thu thập giá trị nhiệt độ từ cảm biến nhiệt độ hiểnthị lên màn hình LCD 129
  8. Nguyên lý hoạt động Ta sử dụng chân P13 và P12 của Arduino để nối lần lượt vào chân RS và chân E là chân lựa chọn thanh ghi và chân cho phép của LCD. Do sử dụng chế độ dữ liệu 4 bit để xuất dữ liệu đến LCD, nên Arduino chỉ cần nối 4 chân P10, P11, A0, A1 tương ứng với 4 chân dữ liệu của LCD là D4, D5, D6, D7. Cảm biến nhiệt độ DS18B20 được nối với Arduino thông qua chân P3 của Arduino. Dữ liệu nhiệt độ nhận được của cảm biến truyền tới chân DQ của cảm biến dưới dạng dữ liệu số (digital), dữ liệu từ chân DQ của cảm biến ở dạng bit nhị phân được gửi về chân P3 của Arduino sau đó chuyển thành dạng số thập phân và hiển thị lên màn hình LCD với câu lệnh lcd.print(). Các bước thực hiện Bước 1: Dùng dây điện có phích cắm hai đầu để nối các chốt tín hiệu trên Arduino với các chân của LCD: Nối chốt P13 với chốt RS. Nối chốt P12 với chốt E. Nối chốt P11 với chốt D4. Nối chốt P10 với chốt D5. Nối chốt A0 với chốt D6. Nối chốt A1 với chốt D7. Nối chốt P3 của Arduino với chốt DQ của cảm biến nhiệt độ Sau khi kết nối các chốt vậy ta có sơ đồ kết nối hoàn chỉnh của bài thí nghiệm như sau: Hình 2.7: Sơ đồ đấu nối bài thí nghiệm lập trình thu thập giá trị từ cảm biến nhiệt độ hiển thị lên màn hình LCD 130
  9. Bước 2: Viết chương trình lập trình thu thập giá trị từ cảm biến nhiệt độ hiển thị lên màn hình LCD như sau, tên file là hienthinhietdo.ino #include #include OneWire ds(3); LiquidCrystal lcd(13, 12, 11, 10, A0, A1); void setup() {lcd.begin(16,2); } void loop() { lcd.print("DO NHIET DO"); lcd.setCursor(0, 1); float temperature = getTemp(); lcd.println("nhiet do la:"); lcd.println(temperature); lcd.println(); delay(500); } float getTemp(){ byte data[12]; byte addr[8]; if ( !ds.search(addr)) { ds.reset_search(); return -1000; } if ( OneWire::crc8( addr, 7) != addr[7]) { lcd.println("CRC is not valid!"); return -1000;} if ( addr[0] != 0x10 && addr[0] != 0x28) {return -1000; } ds.reset(); 131
  10. ds.select(addr); ds.write(0x44,1); byte present = ds.reset(); ds.select(addr); ds.write(0xBE); for (int i = 0; i < 9; i++) { data[i] = ds.read();} ds.reset_search(); byte MSB = data[1]; byte LSB = data[0]; float tempRead = ((MSB
  11. Chương 3 Lập trình và điều khiển tổng hợp hệ thống cơ điện tử 3.1. Điều khiển sa bàn đèn giao thông Lập trình điều khiển bật/tắt tự động hệ thống LED đơn xanh, đỏ, vàng trên sa bàn mô hình đèn giao thông Mục đích Sinh viên được tiếp xúc với thiết bị công nghệ cao. Hiểu cơ chế điều khiển giao thông tại một cột đèn giao thông Biết cách lập trình trên Arduino và sau khi thí nghiệm, sinh viên tốt nghiệp ra trường có thể chủ động tự viết chương trình điều khiển để thay thế các hệ thống điều khiển cũ không đáp ứng được các bài toán công nghệ mới. Sơ đồ nguyên lý điện tử Hình 3.1: Sơ đồ nguyên lý bài thí nghiệm điều khiển bật/ tắt tự động hệ thống LED đơn (xanh, đỏ, vàntrên sa bàn đèn giao thông Nguyên lý hoạt động Khi cấp nguồn cho hệ thống sa bàn mô hình đèn giao thông, điện áp +5V được đặt lên cực Anode của các đèn LED. Các chân 0, 1, 2, 3, 4, A11, A12, A13, A14, A15 của Arduino kết nối với cực Katot của các LED đơn (xanh, đỏ, vàng). Khi hoạt động Arduino điều khiển bật/tắt các LED thông qua việc đưa tín hiệu các chân ra của Arduino ở mức logic 0 (0V) hay mức logic 1 (5V). Khi đầu ra ở mức logic 0 thì LED phân cực thuận sẽ sáng và đầu ra mức logic 1 thì LED 133
  12. tắt do được phân cực ngược. Thời gian sáng của mỗi LED do người lập trình quy định là 1s. Lưu đồ thuật toán Bắt đầu Khai báo đầu vào, đầu ra Trục chính: Bật đèn xanh trục chính và bật đèn đỏ cho người đi bộ. Trục phu: Bật đèn đỏ trục phụ và bật đèn xanh cho người đi bộ Trễ 1s Trục chính: Tắt đèn xanh và bật đèn vàng Trễ 1s Trục chính: Tắt đèn vàng trục chính, bật đèn đỏ trục chính. Tắt đèn đỏ cho người đi bộ, bật đèn xanh cho người đi bộ. Trục phụ: Tắt đèn đỏ trục chính, bật đèn xanh trục chính. Tắt đèn xanh cho người đi bộ, bật đèn đỏ cho người đi bộ Trễ 1s Trục phụ: Tắt đèn xanh và bật đèn vàng Trễ 1s Hình 3.2: Lưu đồ thuật toán bài tập điều khiển bật/ tắt tự động hệ thống LED đơn (xanh, đỏ, vàntrên sa bàn mô hình đèn giao thông Các bước thực hiện Bước 1: Dùng dây điện có phích cắm 2 đầu để nối chốt của Arduino với chốt của các LED trên mô hình sa bàn đèn giao thông. Nối chốt D1 với chốt A13. Nối chốt D2 với chốt A12. Nối chốt D3 với chốt A11. 134
  13. Nối chốt D4với chốt P1. Nối chốt D5 với chốt P0. Nối chốt D6 với chốt P2. Nối chốt D7 với chốt P3. Nối chốt D8 với chốt P4. Nối chốt D9 với chốt A14. Nối chốt D10 với chốt A15. Nối chốt nguồn 12V của Arduino với chốt 12V trên khối nguồn một chiều. Nối chốt nguồn 5V của hệ thống LED đơn với chốt 5V trên khối nguồn một chiều. Nối chốt GND của Arduino với chốt GND trên khối nguồn một chiều. Sau khi kết nối các chốt, ta có sơ đồ kết nối hoàn chỉnh của bài thí nghiệm như sau: Hình 3.3: Sơ đồ đấu nối bài tập lập trình điều khiển bật/tắt tự động hệ thống LED đơn (xanh, đỏ, vàntrên sa bàn mô hình đèn giao thông Bước 2: Lập trình cho bài thí nghiệm: //Chuongtrinhbattatdengiaothong. const int Green1=2; const int Yellow1=3; const int Red1=4; 135
  14. const int Green2=A13; const int Yellow2 =A12; const int Red2=A11; const int do_dibo1 = A15; const int xanh_dibo1 = A14; const int do_dibo2 = 0; const int xanh_dibo2 = 1; void setup() { pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(A13, OUTPUT); pinMode(A12, OUTPUT); pinMode(A11, OUTPUT); pinMode (do_dibo1, OUTPUT); pinMode (xanh_dibo1, OUTPUT); pinMode (do_dibo2, OUTPUT); pinMode (xanh_dibo2, OUTPUT);} void loop (){ digitalWrite (2,0); digitalWrite (3,1); digitalWrite (4,1); digitalWrite (do_dibo1,0); digitalWrite (xanh_dibo1,1); digitalWrite (A13,1); digitalWrite (A12,1); digitalWrite (A11,0); digitalWrite (xanh_dibo2,0); digitalWrite (do_dibo2,1); delay (1000); 136
  15. digitalWrite (2,1); digitalWrite (3,0); digitalWrite (4,1); digitalWrite (do_dibo1,0); digitalWrite (xanh_dibo1,1); digitalWrite (A13,1); digitalWrite (A12,1); digitalWrite (A11,0); digitalWrite (xanh_dibo2,0); digitalWrite (do_dibo2,1); delay (1000); digitalWrite (2,1); digitalWrite (3,1); digitalWrite (4,0); digitalWrite (do_dibo1,1); digitalWrite (xanh_dibo1,0); digitalWrite (A13,0); digitalWrite (A12,1); digitalWrite (A11,1); digitalWrite (xanh_dibo2,1); digitalWrite (do_dibo2,0); delay (1000); digitalWrite (2,1); digitalWrite (3,1); digitalWrite (4,0); digitalWrite (do_dibo1,1); digitalWrite (xanh_dibo1,0); digitalWrite (A13,1); digitalWrite (A12,0); digitalWrite (A11,1); digitalWrite (do_dibo2,0); digitalWrite (xanh_dibo2,1); delay (1000);} 137
  16. Bước 3: Biên dịch chương trình để kiểm tra chương trình có lỗi hay không. Nếu chương trình không có lỗi thì chuyển sang bước 4. Bước 4: Nạp chương trình vào Arduino. Bước 5: Gạt công tắc nguồn 1 chiều ở khối nguồn một chiều trên đế chung sang vị trí ‘on’ để chạy chương trình và theo dõi quá trình chạy chương trình. Bài tập mở rộng Bài tập: Lập trình điều khiển nhấp nháy hệ thống LED đơn (xanh, đỏ, vàng). Báo cáo kết quả Sinh viên thực hiện thí nghiệm, nhận xét kết quả quan sát được có đúng theo yêu cầu bài toán đặt ra không? Các lỗi phát sinh nếu có, hướng kiểm tra và khắc phục. Sinh viên vận dụng kiến thức có được làm bài tập mở rộng. Lập trình điều khiển bật/tắt tự động hệ thống LED đơn (xanh, đỏ, vàntheo thời gian hiển thị trên hệ thống LED 7 đoạn trên sa bàn mô hình đèn giao thông Mục đích Giúp sinh viên củng cố những kiến thức về thiết kế và lập trình cho hệ thống vi xử lý – vi điều khiển. Giúp Sinh viên chuyển đổi tư duy từ kiến thức lý thuyết đến tiếp cận với thực tế Giúp cho sinh viên hiểu rõ được thí nghiệm là một bộ phận công việc của người làm công tác khoa học kỹ thuật. Giúp sinh viên nắm được nguyên lý điều khiển phân luồng giao thông theo thời gian tại một cột đèn giao thông. Sơ đồ nguyên lý điện tử Hình 3.4: Sơ đồ nguyên lý bài thí nghiệm điều khiển bật/ tắt tự động hệ thống LED đơn (xanh, đỏ, vàntheo thời gian trên sa bàn đèn giao thông 138
  17. Nguyên lý hoạt động Sau khi cấp nguồn cho Arduino thì Arduino sẽ xuất ra tín hiệu điều khiển lần lượt 4 Transistor. Do người lập trình quy định mà tại một thời điểm thì chỉ có 1 trong 4 Transistor có tín hiệu. Ứng với mức 1 (5V) cấp vào chân B (Bazơ) của Transistor thì Transistor mở, ngược lại mức 0 thì Transistor khóa, đầu ra E (Emitơ) của Transistor được nối với chân chung của LED 7 đoạn để điều khiển bật/tắt LED 7 đoạn. Các chân điều khiển A, B, C, D, E, F, G của LED 7 đoạn được nối với các chân từ A0 tới A6 của Arduino. Khi chân chung của LED 7 đoạn được cấp tín hiệu logic mức 1 (5V) và các chân A, B, C, D, E, F, G có tín hiệu logic ở mức 0 LED 7 đoạn đó sáng tại các vị trí A, B, C, D, E, F, G tương ứng. Còn khi các chân A, B, C, D, E, F, G trên LED 7 đoạn có tín hiệu ở mức logic 1 thì thì vị trí A, B, C, D, E, F, G trên LED 7 đoạn đó tắt. Các chân 0, 1, 2, 3, 4, A11, A12, A13, A14, A15 của Arduino kết nối với cực Katot của các LED đơn (xanh, đỏ, vàng). Người lập trình điều khiển bật/tắt các LED đơn (xanh, đỏ, vànthông qua việc đưa tín hiệu từ các chân ra của Arduino ở mức logic 1 (5V) hay mức logic 0 (0V). Khi đầu ra của các chân này ở mức logic 0 thì LED phân cực thuận sẽ sáng và đầu ra mức logic 1 thì LED tắt do phân cực ngược. Người lập trình đặt thời gian trễ của đèn xanh là 15s, đèn vàng là 4s và đèn đỏ là 20s. Lưu ý: Trục đèn giao thông ở ngã tư gồm 4 đèn giao thông với 2 trục đèn giao thông chéo nhau thì giống nhau. 139
  18. Lưu đồ thuật toán Bắt đầu Bắt đầu Xuất tín hiệu điều khiển đến chân A9, A10 để bật LED Xuất tín hiệu điều khiển đến chân A9, A10 để bật LED 7 đoạn ở trục chính. 7 đoạn ở trục chính. Xuất tín hiệu điều khiển đến các chân a, b, c, d, e, f, g Xuất tín hiệu điều khiển đến các chân a, b, c, d, e, f, g của LED 7 đoạn ở trục chính để hiển thị số 15 của LED 7 đoạn ở trục chính để hiển thị số 04 Trễ 1s Trễ 1s Xuất tín hiệu điều khiển đến các chân a, b, c, d, e, f, g Xuất tín hiệu điều khiển đến các chân a, b, c, d, e, f, g của LED 7 đoạn ở trục chính để hiển thị số 14 của LED 7 đoạn ở trục chính để hiển thị số 03 Trễ 1s Trễ 1s Xuất tín hiệu điều khiển đến các chân a, b, c, d, e, f, g Xuất tín hiệu điều khiển đến các chân a, b, c, d, e, f, g của LED 7 đoạn ở trục chính để hiển thị số 00 của LED 7 đoạn ở trục chính để hiển thị số 00 Trễ 1s Trễ 1s Hình 3.5: Lưu đồ thuật toán chương trình Hình 3.6: Lưu đồ thuật toán chương trình khi khi bật đèn xanh ở trục đèn chính bật đèn vàng ở trục đèn chính 140
  19. Bắt đầu Bắt đầu Xuất tín hiệu điều khiển đến chân A9, A10 để bật LED Xuất tín hiệu điều khiển đến chân A7, A8 để bật LED 7 đoạn ở trục chính. 7 đoạn ở trục phụ. Xuất tín hiệu điều khiển đến các chân a, b, c, d, e, f, g Xuất tín hiệu điều khiển đến các chân a, b, c, d, e, f, g của LED 7 đoạn ở trục chính để hiển thị số 20 của LED 7 đoạn ở trục phụ để hiển thị số 20 Trễ 1s Trễ 1s Xuất tín hiệu điều khiển đến các chân a, b, c, d, e, f, g Xuất tín hiệu điều khiển đến các chân a, b, c, d, e, f, g của LED 7 đoạn ở trục phụ để hiển thị số 19 của LED 7 đoạn ở trục chính để hiển thị số 19 Trễ 1s Trễ 1s Xuất tín hiệu điều khiển đến các chân a, b, c, d, e, f, g Xuất tín hiệu điều khiển đến các chân a, b, c, d, e, f, g của LED 7 đoạn ở trục phụ để hiển thị số 00 của LED 7 đoạn ở trục chính để hiển thị số 00 Trễ 1s Trễ 1s Hình 3.7: Lưu đồ thuật toán chương trình Hình 3.8: Lưu đồ thuật toán chương trình khi khi bật đèn đỏ ở trục đèn chính bật đèn đỏ ở trục đèn phụ 141
  20. Bắt đầu Bắt đầu Xuất tín hiệu điều khiển đến chân A7, A8 để bật LED Xuất tín hiệu điều khiển đến chân A7, A8 để bật LED 7 đoạn ở trục phụ. 7 đoạn ở trục phụ. Xuất tín hiệu điều khiển đến các chân a, b, c, d, e, f, g Xuất tín hiệu điều khiển đến các chân a, b, c, d, e, f, g của LED 7 đoạn ở trục phụ để hiển thị số 04 của LED 7 đoạn ở trục phụ để hiển thị số 15 Trễ 1s Trễ 1s Xuất tín hiệu điều khiển đến các chân a, b, c, d, e, f, g Xuất tín hiệu điều khiển đến các chân a, b, c, d, e, f, g của LED 7 đoạn ở trục phụ để hiển thị số 03 của LED 7 đoạn ở trục phụ để hiển thị số 14 Trễ 1s Trễ 1s Xuất tín hiệu điều khiển đến các chân a, b, c, d, e, f, g của LED 7 đoạn ở trục phụ để hiển thị số 00 Xuất tín hiệu điều khiển đến các chân a, b, c, d, e, f, g của LED 7 đoạn ở trục phụ để hiển thị số 00 Trễ 1s Trễ 1s Hình 3.9: Lưu đồ thuật toán chương trình Hình 3.10: Lưu đồ thuật toán chương trình khi bật đèn xanh ở trục đèn phụ khi bật đèn vàng ở trục đèn phụ Các bước thực hiện Bước 1: Dùng dây điện có phích cắm 2 đầu để nối chốt của Arduino với chốt của các LED trên mô hình sa bàn đèn giao thông. Nối chốt D1 với chốt A13. Nối chốt D2 với chốt A12. 142
nguon tai.lieu . vn