Ở đây chúng tôi sẽ xây dựng một dự án khác với Vi điều khiển AVR Atmega16. Nếu bạn chưa quen với vi điều khiển AVR thì bạn có thể tham khảo các dự án và hướng dẫn AVR trước đó.
Chế tạo một con robot luôn là một điều hồi hộp đối với tất cả những người có sở thích điện tử. Và cảm giác hồi hộp này có thể được tối đa hóa nếu robot có thể tự động làm một số việc mà không cần bất kỳ hướng dẫn bên ngoài nào. Một trong những robot thường được chế tạo bởi những người mới bắt đầu điện tử là Robot theo dòng. Như tên cho thấy robot sẽ đi theo đường vẽ trên bề mặt. Đường thẳng không cần phải là đường thẳng. Ngoài ra, các đường có thể có bất kỳ màu nào.
Trước đây chúng tôi đã xây dựng các dự án Robot theo dòng bằng các Bộ điều khiển khác nhau:
- Robot theo dòng sử dụng Vi điều khiển 8051
- Robot theo dòng sử dụng Vi điều khiển PIC
- Robot theo dòng sử dụng Arduino
- Robot theo dòng sử dụng Raspberry Pi
- Robot theo dòng sử dụng bàn di chuột MSP430
Hôm nay chúng ta sẽ sử dụng vi điều khiển AVR để chế tạo Robot theo dòng.
Chủ yếu là các cảm biến IR được sử dụng để phát hiện các dòng. Các cảm biến IR rất tốt trong việc phát hiện các bề mặt trắng hoặc đen. Mặc dù bạn có thể sử dụng các cảm biến phức tạp khác có thể phát hiện tất cả các màu và có thể tạo ra một robot có thể theo dõi tất cả các đường màu. Robot sẽ có thể phát hiện đường ngay cả khi đường bị thay đổi bằng cách thay đổi góc và tiếp tục đi theo đường. Ngoài ra, nó sẽ dừng lại ở bất cứ nơi nào có vùng dừng.
Robot theo đường dây ngày nay được sử dụng rộng rãi trong các ngành công nghiệp sản xuất, y tế, ứng dụng trong nước và kho hàng hóa. Robot không chỉ giới hạn ở những ứng dụng này và có thể mở rộng ứng dụng của nó trong nhiều ứng dụng trong tương lai.
Khái niệm về Robot theo dòng
Các cảm biến IR đóng vai trò quan trọng trong dự án này. Cảm biến hồng ngoại được đặt ở phía trước của robot để theo dõi đường màu đen được vẽ và bề mặt. Robot được đặt ở giữa đường và với sự trợ giúp của cảm biến hồng ngoại, robot sẽ theo dõi đường. Cảm biến IR phản hồi việc đọc tới bộ vi điều khiển và với sự trợ giúp của việc đọc IR, bộ vi điều khiển di chuyển động cơ sang bên trái hoặc bên phải và một lần nữa đưa robot đến đường dẫn.
Robot theo dòng có thể theo dõi một đường với sự trợ giúp của cảm biến IR. Cảm biến này có Bộ phát hồng ngoại và Bộ thu hồng ngoại. Bộ phát hồng ngoại (IR LED) truyền ánh sáng và Bộ thu (Điốt quang) đợi ánh sáng truyền trở lại. Đèn hồng ngoại sẽ chỉ quay trở lại nếu nó bị phản xạ bởi một bề mặt. Trong khi đó, tất cả các bề mặt đều không phản xạ ánh sáng IR, chỉ có bề mặt màu trắng là có thể phản xạ hoàn toàn chúng và bề mặt màu đen sẽ hoàn toàn quan sát được chúng như trong hình bên dưới. Tìm hiểu thêm về mô-đun cảm biến hồng ngoại tại đây.
Bây giờ chúng tôi sẽ sử dụng hai cảm biến IR để kiểm tra xem rô bốt có đi đúng hướng hay không và hai động cơ để sửa rô bốt nếu nó di chuyển ra khỏi đường đua. Những động cơ này yêu cầu dòng điện cao và phải là hai chiều; do đó chúng tôi sử dụng mô-đun trình điều khiển động cơ như L293D. Chúng ta cũng sẽ cần một Vi điều khiển như ATmega16 để chỉ dẫn động cơ dựa trên các giá trị từ cảm biến IR. Một sơ đồ khối đơn giản của cùng một được hiển thị bên dưới.
Hai cảm biến IR này sẽ được đặt ở hai bên của đường thẳng. Nếu không có cảm biến nào phát hiện vạch đen thì bộ vi điều khiển AVR sẽ hướng dẫn động cơ di chuyển về phía trước như hình dưới đây
Nếu cảm biến bên trái có vạch đen thì bộ vi điều khiển sẽ hướng dẫn robot rẽ trái bằng cách xoay bánh xe bên phải.
Nếu cảm biến bên phải xuất hiện trên vạch đen thì bộ vi điều khiển sẽ hướng dẫn robot rẽ phải bằng cách xoay bánh xe bên trái một mình.
Nếu cả hai cảm biến trên vạch đen, robot sẽ dừng lại.
Bằng cách này, Robot sẽ có thể đi theo dòng mà không bị ra ngoài đường đua. Bây giờ chúng ta hãy xem mạch và Code trông như thế nào.
Thành phần bắt buộc
- Động cơ bánh răng DC (2 chiếc)
- Mô-đun cảm biến hồng ngoại (2 đơn vị)
- Mô-đun L293D
- Nguồn điện không dây (ví dụ: Pin, Pin dự phòng)
- Robot Chaises
- IC vi điều khiển Atmega16
- Bộ dao động tinh thể 16Mhz
- Hai tụ điện 100nF
- Hai tụ điện 22pF
- Nút ấn
- Dây nhảy
- Breadboard
- USBASP v2.0 (Để lập trình Atmega16)
Sơ đồ mạch
Kết nối tất cả các thành phần như hình dưới đây trong Sơ đồ mạch
Lập trình Atmega16 cho Robot theo dòng
Ở đây, Atmega16 được lập trình bằng USBASP và Atmel Studio7.0. Nếu bạn không biết cách Atmega16 có thể được lập trình bằng USBASP thì hãy truy cập liên kết. Chương trình hoàn chỉnh được đưa ra ở cuối dự án, chỉ cần tải lên chương trình trong Atmega16 bằng lập trình JTAG và Atmel Studio 7.0 như đã giải thích trong hướng dẫn trước.
Chúng tôi đã cố gắng giữ mã ngắn nhất và đơn giản nhất có thể. Vì vậy, chúng tôi đang sử dụng Macro và thanh ghi chức năng Đặc biệt trong mã này.
nếu (bit_is_clear (Pina , leftSen)) { // kiểm tra nếu bộ cảm biến bên trái là OFF
Câu lệnh này kiểm tra xem PA0 nơi cảm biến bên trái được kết nối là THẤP hay CAO.
Nếu bạn muốn tìm hiểu thêm về câu lệnh này và các macro khác, hãy truy cập liên kết này
Có bốn điều kiện mà chúng tôi đang tuân theo để đọc cảm biến hồng ngoại đáy. Cảm biến IR được đặt tên theo vị trí của chúng ở mặt trước của Robot. IR bên trái là cảm biến trái và IR bên phải là cảm biến phải. Các điều kiện sau đây sẽ quyết định chuyển động của robot.
Chúng tôi đã viết mã theo các điều kiện trên. Chỉ có một thay đổi là chúng tôi chỉ sử dụng hai chân đầu vào của L293D để điều khiển cả hai động cơ.
Mã hoàn chỉnh với một video minh họa được đưa ra bên dưới.