a. Lưu đồ giải thuật của Arduino UNO R3
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH Trang 79
Giải thích lưu đồ
Bắt đầu chương trình khởi tạo các chân I/O, truyền nhận dữ liệu UART, biến data để nhận dữ liệu, biến speedCar để điều khiển tốc độ xe.
Khởi tạo xong, chương trình thực hiện liên tục cho đến khi mất điện theo chu trình sau: đầu tiên chương trình kiểm tra có phát hiện kim loại hay không? Nếu phát hiện thấy có kim loại thì dừng xe lại trong vòng 5 giây, ngược lại nếu không có kim loại thì không làm gì cả. Sau khi thực hiện xong việc kiểm tra kim loại, tiếp theo chương trình kiểm tra dữ liệu từ module ESP8266 truyền qua. Nếu có dữ liệu từ module ESP8266 gửi đến thì ta gán dữ liệu nhận được cho biến data, sau đó kiểm tra biến data, nếu data = ‘F’ thì cho xe
chạy thẳng, tương tự data = ‘B’ cho xe chạy lùi, data = ‘L’ cho xe rẽ trái, data = ‘R’ cho xe rẽ phải, data = ‘S’ cho xe dừng lại, data = ‘1’ gán biến speedCar = 60, data = ‘2’ gán biến speedCar = 70, data = ‘3’ gán biến speedCar = 80, data = ‘4’ gán biến speedCar =
90, data = ‘5’ gán biến speedCar = 100. Lưu đồ cho các chương trình con
Vị trí 4 động cơ trên khung xe được bố trí như hình 4.14. Việc bố trí ví trí các động cơ nhằm mục đích hỗ trợ cho các lưu đồ con bên dưới.
Hình 4.14. Bố trí vị trí các động cơ trên khung xe.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH Trang 80
Hình 4.15. Lưu đồ giải thuật khi xe chạy thẳng.
Giải thích lưu đồ
Điều khiển 4 động cơ 1, 2, 3, 4 quay theo thuận với tốc độ SpeedCar. Lưu đồ giải thuật khi xe chạy lùi
Hình 4.16. Lưu đồ giải thuật khi xe chạy lùi.
Giải thích lưu đồ
Điều khiển 4 động cơ 1, 2, 3, 4 quay theo ngược với tốc độ SpeedCar. Lưu đồ giải thuật khi xe rẽ trái
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH Trang 81
Hình 4.17. Lưu đồ giải thuật khi xe rẽ trái.
Giải thích lưu đồ:
Điều khiển động cơ 1, 4 quay thuận, động cơ 2, 3 quay ngược. Các động cơ quay với tốc độ SpeedCar.
Lưu đồ giải thuật khi xe rẽ phải
Hình 4.18. Lưu đồ giải thuật khi xe rẽ phải.
Giải thích lưu đồ:
Điều khiển động cơ động cơ 1, 4 quay ngược, động cơ 2, 3 quay thuận. Các động cơ quay với tốc độ SpeedCar.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH Trang 82
Lưu đồ giải thuật khi xe dừng lại
Hình 4.19. Lưu đồ giải thuật khi xe dừng lại.
Giải thích lưu đồ:
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH Trang 83 b. Lưu đồ giải thuật của ESP8266 NodeMCU
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH Trang 84
Giải thích lưu đồ
Bắt đầu chương trình khai báo thư viện, khởi tạo truyền nhận dữ liệu UART, cấu hình các chân I/O, cấu hình module ESP8266 ở chế độ Access point (điểm truy cập), tên của wifi là “WIFI_ESP8266_NODEMCU”.
Sau đó nếu có dữ liệu điện thoại gửi đến thì nhận dữ liệu rồi gửi qua Arduino thông qua truyền thông UART. Tiếp theo kiểm tra có phát hiện kim loại hay không. Nếu có thì gửi lên điện thoại kí tự ‘1’, ngược lại không có kim loại thì gửi kí tự ‘0’. Lặp lại liên tục các công việc trên cho đến khi mất điện.
c.Lưu đồ giải thuật của vi điều khiển PIC16F690
Lưu đồ giải thuật chính
Hình 4.21. Lưu đồ giải thuật chính của PIC 16F690.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH Trang 85
Giải thuật đo tần số của vi điều khiển: Đầu tiên khởi tạo cho phép timer1 hoạt động, timer1 dùng xung nội, hệ số chia trước bằng 8. Tiếp theo cho phép ngắt toàn cục, ngắt tràn timer1 và ngắt ngoài trên chân RA2. Trong trình ngắt ngoài trên RA2, khi có sự thay đổi tín hiệu từ mức cao xuống mức thấp, hoặc từ mức thấp lên mức cao trên chân RA2 sẽ làm tăng giá trị của biến đếm soXung lên thêm 1 đơn vị. Trong trình ngắt tràn timer1 ta lập trình để tạo ra khoảng thời gian lấy mẫu là 0.3 giây. Khi hết 0.3 giây thì ngắt timer1 hoạt động, gán của biến đếm soXung cho biến tanSo, rồi so sánh biến tanSo với tần số ở ngưỡng so sánh để bật tắt buzzer và xuất mức tín hiệu trên chân RC5 và đặt lại Timer1 về giá trị 40536. Trong trình ngắt tràn timer1 này có thêm phần xử lý khi ta nhấn nút nhấn BTN thì chương trình tiến hành cộng dồn 10 giá trị biến tanSo liên tiếp nhau, sau đó lấy giá trị trung bình của 10 lần đó để lấy làm ngưỡng so sánh tần số.
Lưu đồ giải thuật trình ngắt ngoài
Hình 4.22. Lưu đồ giải thuật ngắt ngoài của PIC 16F690.
Giải thích lưu đồ
Nếu xảy ra ngắt ngoài thì ta lấy biến soXung tăng thêm một đơn vị. Lưu đồ giải thuật trình ngắt timer1
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH Trang 86
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH Trang 87
Giải thích lưu đồ
Nếu xảy ra ngắt timer1 thì ta tăng biến dem lên thêm 1 đơn vị, khi biến dem bằng 3 (tương đương thời gian lấy mẫu bằng 0.3 giây) thì gán biến giá trị biến soXung gán cho
biến tanSo, rồi lấy biến tanSo đi so sánh với ngưỡng tần số so sánh đã đặt, nếu nhỏ hơn tần số cài đặt thì bật buzzer, ngõ ra RC5 lên mức 1, ngược lại nhỏ hơn tần số cài đặt thì tắt buzzer, ngõ ra RC5 xuống mức 0. Đặt lại giá trị timer1 bằng 40536.
Trong chương trình ngắt tràn timer1 này có thêm phần xử lý khi ta nhấn nút nhấn BTN thì chương trình tiến hành cộng dồn 10 giá trị biến tanSo liên tiếp nhau, sau đó lấy giá trị trung bình của 10 lần đó để đặt lại ngưỡng tần số so sánh.