Điều khiển cánh tay Robot học lệnh gắp sản phẩm trên băng chuyền.pdf

  1. BỘ GIÁO DỤC

    VÀ ĐÀO TẠO
    TRƯỜNG ĐẠI HỌC BÀ RỊA VŨNG TÀU
    KHOA CÔNG NGHỆ KỸ THUẬT–NÔNG NGHIỆP CÔNG NGHỆ CAO
    —–—–
    BÁO CÁO ĐỒ ÁN TỐT NGHIỆP
    ĐIỀU KHIỂN CÁNH TAY ROBOT HỌC LỆNH GẮP SẢN PHẨM
    TRÊN BĂNG CHUYỀN
    T
    Tr

    ìn
    nh
    h đ
    độ
    ộ đ
    đà
    ào
    o t
    tạ
    ạo
    o:
    : Đ
    Đạ
    ại
    i h
    họ
    ọc
    c c
    ch

    ín
    nh
    h q
    qu
    uy
    y
    N
    Ng

    àn
    nh
    h :
    : C

    ôn
    ng
    g N
    Ng
    gh
    hệ
    ệ K
    Kỹ
    ỹ T
    Th
    hu
    uậ
    ật
    t Đ
    Đi
    iệ
    ện
    n –
    – Đ
    Đi
    iệ
    ện
    n T
    Tử

    C
    Ch
    hu
    uy

    ên
    n N
    Ng

    àn
    nh
    h :
    : Đ
    Đi
    iề
    ều
    u k
    kh
    hi
    iể
    ển
    n &
    & T
    Tự
    ự Đ
    Độ
    ộn
    ng
    g H

    óa
    a
    G
    GV
    VH
    HD
    D :
    : T
    Th
    h.
    .s
    s N
    Ng
    gu
    uy
    yễ
    ễn
    n L

    ươ
    ơn
    ng
    g T
    Th
    ha
    an
    nh
    h T

    ùn
    ng
    g
    S
    SV
    VT
    TH
    H :
    : N
    Ng
    gu
    uy
    yễ
    ễn
    n V

    ăn
    n H
    Hi
    iế
    ếu
    u
    L
    Lớ
    ớp
    p :
    : D
    DH
    H1
    17
    7T
    TD
    D
    V

    ũn
    ng
    g T

    àu
    u,
    , T
    Th

    án
    ng
    g 0
    01
    1 N

    ăm
    m 2
    20
    02
    21
    1

  2. TRƯỜNG ĐẠI HỌC

    BÀ RỊA VŨNG TÀU CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
    KHOA CNKT – NNCNC ĐỘC LẬP-TỰ DO-HẠNH PHÚC
    PHIẾU GIAO ĐỀ TÀI ĐỒ ÁN TỐT NGHIỆP
    (Đính kèm Quy định về việc tổ chức, quản lý các hình thức tốt nghiệp ĐH, CĐ ban hành kèm
    theo Quyết định số 585/QĐ-ĐHBRVT ngày 16/7/2013 của Hiệu trưởng Trường Đại học BR-VT)
    Họ tên sinh viên : NGUYỄN VĂN HIẾU Ngày sinh: 20/11/1999
    MSSV: 17032542
    Email: [email protected]
    Lớp : DH17TD
    Chuyên ngành : Điều Khiển Và Tự Động Hóa
    Hệ đào tạo : Đại Học Chính Quy
    1. Tên đề tài: Điều khiển cánh tay robot học lệnh gắp sản phẩm trên băng chuyền
    2. Giảng viên hướng dẫn: Ths. Nguyễn Lương Thanh Tùng
    3. Ngày giao đề tài: 11/2020
    4. Ngày hoàn thành đồ án/ khoá luận tốt nghiệp: 01/2021
    Bà Rịa – Vũng Tàu, ngày … tháng … năm 2021
    Giảng viên hướng dẫn Sinh viên thực hiện
    (Ký và ghi rõ họ tên) (Ký và ghi rõ họ tên)
    Trưởng bộ môn Trưởng khoa
    (Ký và ghi rõ họ tên) (Ký và ghi rõ họ tên

  3. Page | 3
    Nhận

    xét của GVHD
    (Của giáo viên hướng dẫn)
    1.Thái độ tác phong và nhận thức trong quá trình thực hiện đồ án:
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    2.Hình thức, thể thức trình bày đồ án:
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    3. Kiến thức chuyên môn:
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    4.Đánh giá khác:
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    5.Đánh giá kết quả:
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    GIÁO VIÊN HƯỚNG DẪN
    (Ký và ghi rõ họ tên)
    ThS. Nguyễn Lương Thanh Tùng

  4. Page | 4
    Nhận

    xét của GVPB
    (Của giáo viên phản biện)
    1.Thái độ tác phong và nhận thức trong quá trình thực hiện đồ án:
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    2.Hình thức, thể thức trình bày đồ án:
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    3. Kiến thức chuyên môn:
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    4.Đánh giá khác:
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    5.Đánh giá kết quả:
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    ………………………………………………………………………………………………………………..
    GIÁO VIÊN PHẢN BIỆN
    (Ký và ghi rõ họ tên)

  5. Page | 5
    Lời

    cảm ơn
    Đầu tiên em xin gởi lời cảm ơn sâu sắc đến Thầy Nguyễn Lương Thanh Tùng –
    Giảng viên bộ môn Điện – Điện Tử, đã tận tình giúp đỡ, hướng dẫn, giảng giải cho
    chúng em trong lựa chọn đề tài cũng như trong quá trình thực hiện đề tài. Trong quá
    trình thực hiện đồ án cũng đã xảy ra nhiều khó khăn, thiếu sót nhưng được sự hỗ trợ
    và góp ý của Thầy nên nhóm đã hoàn thành được đồ án.
    Trong suốt thời gian được theo học tại trường Đại học Bà Rịa Vũng Tàu, Tp.
    Vũng Tàu, em đã nhận được nhiều sự quan tâm và giúp đỡ từ Thầy Cô và bạn bè.
    Cảm ơn Hiệu Trưởng, cùng các quý thầy cô trường Đại học Bà Rịa – Vũng Tàu đã
    hỗ trợ tận tình về trang thiết bị, phần mềm, cơ sở vật chất tạo điều kiện hoàn thành
    đồ án. Với lòng biết ơn sâu sắc, em xin gửi lời cảm ơn tới quý Thầy Cô, những người
    đã truyền lại cho em rất nhiều kinh nghiệm và kiến thức quý báu, những sự giúp đỡ
    ấy đã tiếp thêm động lực cho em vững bước trên con đường mình đã chọn. Và đặc
    biệt là Thầy, Cô khoa Điện – Điện tử đã truyền đạt kiến thức, kinh nghiệm cũng như
    tạo những điều kiện tốt nhất để em hoàn thành đề tài.
    Xin cảm ơn các bạn cùng khóa, cùng khoa đã động viên, khích lệ, ủng hộ về nhiều
    mặt góp phần làm nên thành công của đồ án này.
    Cảm ơn Đại Học Bà Rịa Vũng Tàu!
    Xin chân thành cảm ơn!
    Sinh viên thực hiện
    (Ký và ghi rõ họ tên)
    Nguyễn Văn Hiếu

  6. Page | 6
    MỤC

    LỤC:
    CHƯƠNG 1: MỞ ĐẦU
    I. Đặt vấn đề
    II. Mục tiêu, nhiệm vụ và giới hạn đề tài
    CHƯƠNG 2: TỔNG QUAN ĐỀ TÀI
    I. Giới thiệu
    II. Lịch sử phát triển
    III. Phân loại arm robot
    IV. Ứng dụng và lợi ích
    CHƯƠNG 3: TỔNG QUAN THIẾT BỊ VÀ PHẦN MỀM SỬ DỤNG
    I. Giới thiệu chung về Arduino
    II. Arduino Uno
    III. Giới thiệu chung về cảm biến
    IV. Động cơ servo
    V. Chiết áp ( biến trở )
    VI. Motor giảm tốc
    VII. Relay đóng ngắt
    VIII. Khung cánh tay robot
    IX. Giới thiệu phần mềm IDE
    CHƯƠNG 4: TỔNG QUAN MÔ HÌNH THỰC TẾ
    I. Kết nối linh kiện
    II. Mô hình thực tế
    III. Nguyên lí hoạt động
    IV. Thuật toán điều khiển
    V. Code điều khiển
    CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI
    I. Kết luận
    II. Hướng phát triển đề tài
    TÀI LIỆU THAM KHẢO

  7. Page | 7
    PHỤ

    LỤC HÌNH ẢNH:
    Hình 1 : Robot hoạt động theo tạo độ DECAC.
    Hình 2 : Robot hoạt động theo hệ tọa độ trụ
    Hình 3 : Robot hoạt động theo hệ tọa độ cầu.
    Hình 4 : Robot kiểu SCARA.
    Hình 5 : Robot khớp nối
    Hình 6 : Robot song song (3-PRS)
    Hình 7: Ứng dụng robot
    Hình 8: Board mạch Arduino Uno.
    Hình 9: Board mạch Arduino Uno.
    Hình 10: Cảm biến vật cản hồng ngoại
    Hình 11: Cảm biến vật cản hồng ngoại
    Hình 12: Động cơ RC Servo Digital RC FR1510
    Hình 13: Động cơ RC Servo 9G.
    Hình 14: Chiết áp
    Hình 15: Động cơ giảm tốc
    Hình 16: Relay
    Hình 17: Khung arm robot tự làm
    Hình 18: Giao diện phần mềm IDE.
    Hình 19: Code sáng tắt led trên phần mềm IDE.
    Hình 20: Kết nối Servo với arduino.
    Hình 21: Kết nối Cảm biến vật cản hồng ngoại, relay và động cơ giảm tốc:
    Hình 22: Mô hình
    Hình 23: Bảng mạch điều khiển
    Hình 24: Cánh tay robot
    Hình 25: Sơ đồ khối
    Hình 26: Thuật toán

  8. Page | 8
    CHƯƠNG

    1: MỞ ĐẦU
    I. Đặt vấn đề
    Hiện nay với nền công nghiệp hóa hiện đại hóa, với sự phát triển của các kỹ
    thuật hiện đại, nền công nghiệp 4.0 cần sản xuất rất nhiều linh kiện hay chế tạo máy
    móc, hay trong nền công nghiệp sản xuất hàng hóa củng cần hiện đại hóa.
    Cùng với sự phát triển không ngừng của các ngành khoa học kỹ thuật, các ngành công
    nghiệp cũng phát triển nhanh chóng. Việc áp dụng máy móc hiện đại vào sản xuất cũng là một
    yêu cầu không thể thiếu trong các nhà máy, nhằm tang năng suất, tăng chất lượng và giảm giá
    thành sản phẩm.
    Song song với sự phát triển đó, công nghệ chế tạo Robot cũng phát triển nhanh chóng đặc
    biệt là ở các nươc phát triển nhằm đáp ứng các nhu cầu về sản xuất, sinh hoạt, quốc
    phòng…Robot có thể thực hiện những công việc mà con người khó thực hiện và thậm chí
    không thực hiện được như : làm những công việc đòi hỏi độ chính xác cao,làm việc trong môi
    trường nguy hiểm( như lò phản ứng hạt nhân, dò phá mìn trong quân sự), thám hiểm không
    gian vũ trụ….
    Với nghành công nghiệp của Việt Nam thì robot chưa được xuất hiện nhiều trong các dây
    chuyền sản xuất. Vì sản phẩm này còn quá đắt với thị trường Việt Nam.
    Nhằm nội địa hóa sản phẩm, góp phần nào đó nâng cao năng xuất lao động , phát triển
    công nghệ chế tạo robot ở nước ta, cũng như nghiên cứu chuyên sâu về Robot, nên em đã chọn
    đề tài “ Cánh tay robot học lệnh gắp sản phẩm trên băng chuyền ”.
    Đề tài này hướng tới có thể thay thế các bộ điều khiển cùa các nhà máy, công ty và xây
    dựng thuật điều khiển tối ưu cho các đối tượng sản xuất, đồng thời sử dụng đề tài này để làm
    đồ án chuyên ngành của mình.
    II. Mục tiêu, nhiệm vụ và giới hạn đề tài
    Mục tiêu của đề tài này là nghiên cứu về cấu tạo và các phương pháp điều
    khiển thích hợp trên cơ sở ứng dụng arduino để hiểu được bộ điều khiển cánh tay
    robot học lệnh gắp sản phẩm trên băng chuyền. có thể áp dụng vào phòng thí nghiệm của các
    trường cao đẳng, đại học cũng như ứng dụng trong sản xuất công nghiệp.

  9. Page | 9
    CHƯƠNG

    2: TỔNG QUAN ĐỀ TÀI
    I. Giới Thiệu
    Đề tài cánh tay robot phân loại sản phẩm là một phân nhánh trong Robot công nghiệp
    vì vậy em xin giới thiệu tổng quát về lịch sử ra đời từ Robot công nghiệp.
    Thuật ngữ Robot xuất hiện lần đầu tiên vào năm 1922 trong tác phẩm “Rossum’s
    Universal Robot” của Karel Capek. Trong tác phẩm nhân vật Rossum và con trai đã tạo
    ra chiếc máy giống con người để phục vụ cho con người.
    Năm 40 nhà văn viễn tưởng Nga, Issac Asimov, mô tả robot là một chiếc máy tự động,
    mang diện mạo con người được điều khiển bằng một hệ thần kinh khả trình Positron, do
    chính con người lập trình. Asimov đặt tên cho ngành nghiên cứu về robot là robotics, trong
    đó có 3 nguyên tắc cơ bản:
    – Robot không được xúc phạm con người và không gây tổn hại cho con người.
    – Hoạt động của robot phải tuân thủ các quy tắc do con người đặt ra. Các quy tắc này
    không được vi phạm nguyên tắc thứ nhất.
    – Một robot cần phải bảo vệ sự sống của mình, nhưng không được vi phạm hai nguyên
    tắc trước.
    Robot là một tác nhân cơ khí, nhân tạo, ảo, thường là một hệ thống cơ khíđiện tử. Với
    sự xuất hiện và chuyển động của mình, robot gây cho người ta cảm giác rằng nó giác quan
    giống như con người. Từ “robot” thường được hiểu với hai nghĩa: robot cơ khí và phần
    mềm tự hoạt động. Về lĩnh vực Robot, Mỹ và Nhật Bản là những nước đi đầu thế giới về
    lĩnh vực này.
    Tay robot có thể được thiết kế để thực hiện bất kỳ công việc mong muốn như hàn,
    nắm, quay, vv, tùy thuộc vào ứng dụng. Ví dụ, cánh tay robot trong dây chuyền lắp ráp ô
    tô thực hiện nhiều công việc khác nhau như hàn và xoay linh kiện và lắp đặt trong quá
    trình lắp ráp. Trong một số trường hợp, sự mô phỏng chặt chẽ của bàn tay con người là
    mong muốn, như trong robot được thiết kế để tiến hành giải trừ vũ khí và thải bỏ bom.

  10. Page | 10
    II.

    Lịch sử phát triển
    Sau sự xuất hiện vào năm 1922, hơn 20 năm sau, sau chiến tranh thế giới thứ 2Hình
    dạng Robot xuất hiện đầu tiên ở nước Hoa Kỳ, là loại tay máy chép hình dung trong phòng
    thí nghiệm vật liệu phóng xạ. Vào những năm 50 của thế kỷ trước, bên cạnh các loại tay
    máy chép hình cơ khí, các loại tay máy chép hình thủy lực điện tử đã xuất hiện.
    Chiếc robot công nghiệp được đưa vào ứng dụng đầu tiên. Năm 1961. ở một nhà máy
    ô tô của General Motors lại Trenlon. New Jerscy Hoa Kỳ. Năm 1967 Nhât Bản mới nhập
    chiếc robot công nghiệp đấu tiên từ Công ty AMF của Hoa Kỳ (American Machine and
    Foundry Company).
    Nên năm 1990 có hơn 40 công ty Nhật Bản, trong đó có những công ty không lẽ như
    Công ty Hitachi và Công ty Mitsubishi, đã đưa ra thi trường quốc tế nhiều lại robot nổi
    tiếng.Từ những năm 70 việc nghiên cứu nâng cao tính năng của robot đã chú ý nhiều đến
    sự lắp đặt thêm các cảm biến ngoại tín hiệu để nhận biết môi trường làm việc. Tại trường
    Đạỉ học Tổng hợp Stanford người ta đã tạo ra loại robot lắp ráp lự động điều khiến bằng
    máy vi tính trên cơ sở xử lý thông tin từ các cảm biến lực và thị giác. Vào thời gian này
    công ty IBM đã chế tạo loại robot có các cảm biến xúc giác và cảm biến lực. điều khiển
    bằng máy tính để lắp ráp các máy in gồm 20 cụm chi tiết.
    Theo Viện Kỹ Thuật robot cảu Hoa Kỳ định nghĩa robot là loại tay máy nhiều chức
    năng, với chương trình làm việc thay đổi được, dùng để thực hiện một số thao tác sản xuất.
    Có nhều tài liệu khi định nghĩa robot rất lưu ý đến tiêu chí điều khiển bằng máy tính nhưng
    trong phân loại robot công nghiệp theo tiêu chuẩn của Nhật Bản (JISB 0134-1979) có cả
    nhóm tay máy điều khiển bằng tay.
    Theo ISO (International Standards Organization) thì: “robot công nghiệp là một tay
    máy đa mục tiêu, có một số bậc tự do, dể dàng lập trình, điều khiển trợ động, dùng để tháo
    lắp phôi, dụng cụ hoặc các vật dụng khác. Do chương trình thao tác có thể thay đổi nên
    thực hiện nhiều nhiệm vụ đa dạng”. Tuy nhiên, robot công nghiệp được định nghĩa như
    thế là chưa hoàn toàn thỏa đáng.
    Robot công nghiệp có thể được hiểu là những thiết bị tự động linh hoạt, bắt chước
    được các chức năng lao động công nghiệp của con người. Nói đến thiết bị tự động linh
    hoạt là nhấn mạnh đến khả năng thao tác với nhiều bậc tự do, được điều khiển trợ động
    và lập trình thay đổi được. Còn nói đến sự bắt chước các chức năng lao động công nghiệp
    của con người là có ý nói đến sự không hạn chế từ các chức năng lao động chân tay đơn
    giản đến trí khôn nhân tạo, tùy theo loại hình công việc lao động cần đến chức năng đó
    hay không. Đồng thời cũng nói đến mức độ cân thiết bắt chước được như con người hay
    không.

  11. Page | 11
    III.

    Phân loại arm robot
    1. Robot Cartesian / Gantry Robot (tọa độ DECAC): (Hình 2.3.1) Được sử dụng để chọn
    và đặt công việc, ứng dụng sealant, hoạt động lắp ráp, xử lý các máy công cụ và hàn hồ
    quang. Đó là một robot có cánh tay có ba khớp lăng trụ, có trục khớp.
    Hình 1 : Robot hoạt động theo tạo độ DECAC.
    2. Robot trụ : (Hình 2.3.2) Được sử dụng cho các hoạt động lắp ráp, xử lý tại các máy
    công cụ, hàn điểm, và xử lý tại các máy đúc. Đó là một robot có trục tạo thành một hệ trục
    tọa độ.
    Hình 2 : Robot hoạt động theo hệ tọa độ trụ.
    3. Robot hình cầu / Robot Polar : (Hình 2.3.3) Được sử dụng để xử lý các máy công cụ,
    hàn điểm, máy đúc, máy hàn nhiệt, hàn hồ quang và hàn hồ quang. Đó là một robot có
    trục tạo thành một hệ tọa độ cực.

  12. Page | 12
    Hình

    3 : Robot hoạt động theo hệ tọa độ cầu.
    4. SCARA robot : (Hình 2.3.4) Được sử dụng để chọn và đặt công việc, ứng dụng sealant,
    hoạt động lắp ráp và xử lý các máy công cụ. Robot này có hai khớp nối song song để cung
    cấp sự tuân thủ trong máy bay.
    Hình 4 : Robot kiểu SCARA.
    5. Robot khớp nối : (Hình 2.3.5) Được sử dụng cho các hoạt động lắp ráp, diecasting,
    fettling máy móc, khí hàn, hàn hồ quang và phun sơn. Đó là một robot có cánh tay có ít
    nhất ba khớp quay.

  13. Page | 13
    Hình

    5 : Robot khớp nối
    6. Robot song song : (Hình 2.3.6) Một sử dụng là một nền tảng di động xử lý mô phỏng
    bay buồng lái. Đó là một robot có cánh tay có khớp nối lăng trụ hoặc khớp quay đồng
    thời.
    Hình 6 : Robot song song (3-PRS)

  14. Page | 14
    IV.

    Ứng dụng và lợi ích
    Robot cánh tay học lệnh gắp sản phẩm trên băng chuyền được ứng dụng trong các hệ
    thống gắp các sản phẩm đã biết trước ở trong các nhà máy, các công ty, xí nghiệp, doanh
    nghiệp, …. khi phát triển đề tài hơn có thể thay vì gắp sản phẩm thông thường ta có thể
    phát triển thành phân loại và gắp sản phẩm theo màu sắc, theo kích thước hay mã vach,
    mã hiệu được cung cấp trước trong hệ thống. Lợi ích lớn nhất của sử dụng cánh tay
    robot trong việc phân loại và gắp sản phẩm là có thể xử lý hàng hóa, linh kiện ở tốc độ
    cao và nhất quán. Có thể dễ dàng lập trình cánh tay Robot trong nhiều ứng dụng giúp đáp
    ứng các yêu cầu trong sản xuất. Cùng với đó việc áp dụng cánh tay Robot cộng tác có kích
    thước nhỏ, nhẹ, sẽ hoạt động tốt trong nhiều không gian, cả những không gian nhỏ hẹp.
    Sử dụng cánh tay Robot gắp sản phẩm giúp tăng sản lượng, đặc biệt hiệu quả trong quá
    trình đóng gói hàng hóa, xây dựng nhà kho thông minh, tạo tỉ lệ hoàn vốn cao trong sản
    xuất. Cánh tay Robot gắp sản phẩm sẽ thay thế con người làm các công việc đơn điệu,
    nhàm chán lặp đi lặp lại.
    Hình 7: Ứng dụng robot
    Lợi ích:
    • Nâng cao hiệu quả hoạt động
    • Tiết kiệm không gian
    • Tiết kiệm chi phí
    • Hạn chế sai sót
    • Giảm tai nạn lao động

  15. Page | 15
    CHƯƠNG

    3: TỔNG QUAN THIẾT BỊ VÀ PHẦN MỀM SỬ DỤNG
    I. Giới thiệu chung về arduino
    Hình 8: Board mạch Arduino Uno.
    Arduino là một board mạch vi xử lý, nhằm xây dựng các ứng dụng tương tác với nhau
    hoặc với môi trường được thuận lợi hơn. 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. Những
    Model hiện tại được trang bị gồm 1 cổng giao tiếp USB, 6 chân đầu vào analog, 14 chân
    I/O kỹ thuật số tương thích với nhiều board mở rộng khác nhau.
    Được giới thiệu vào năm 2005, những nhà thiết kế của Arduino cố gắng mang đến một
    phương thức dễ dàng, không tốn kém cho những người yêu thích, sinh viên và giới chuyên
    nghiệp để tạo ra những nhiết bị có khả năng tương tác với môi trường thông qua các cảm
    biến và các cơ cấu chấp hành. Những ví dụ phổ biến cho những người yêu thích mới bắt
    đầu bao gồm các robot đơn giản, điều khiển nhiệt độ và phát hiện chuyển động. Đi cùng
    với nó là một môi trường phát triển tích hợp (IDE) chạy trên các máy tính cá nhân thông
    thường và cho phép người dùng viết các chương trình cho Aduino bằng ngôn ngữ C hoặc
    C++.
    Arduino cơ bản là một nền tảng tạo mẫu mở về điện tử (open-source electronics
    prototyping platform) được tạo thành từ phần cứng lẫn phần mềm. Về mặt kĩ thuật có thể
    coi Arduino là 1 bộ điều khiển logic có thể lập trình được. Đơn giản hơn, Arduino là một
    thiết bị có thể tương tác với ngoại cảnh thông qua các cảm biến và hành vi được lập trình

  16. Page | 16
    sẵn.

    Với thiết bị này, việc lắp ráp và điều khiển các thiết bị điện tử sẽ dễ dàng hơn bao giờ
    hết. Một điều không hề dễ dàng cho những ai đam mê công nghệ và điều khiển học nhưng
    là người ngoại đạo và không có nhiều thời gian để tìm hiểu sâu hơn về về kĩ thuật lập trình
    và cơ điện tử.
    Hiện tại có rất nhiều loại vi điều khiển và đa số được lập trình bằng ngôn ngữ C/C++
    hoặc Assembly nên rất khó khăn cho những người có ít kiến thức sâu về điện tử và lập
    trình. Nó là trở ngại cho mọi người muốn tạo riêng cho mình một món đồ mang tính công
    nghệ. Do vậy đó là lí do Arduino được phát triển nhằm đơn giản hóa việc thiết kế, lắp ráp
    linh kiện điện tử cũng như lập trình trên vi xử lí và mọi người có thể tiếp cận dễ dàng hơn
    với thiết bị điện tử mà không cần nhiều về kiến thức điện tử và thời gian. Sau đây là nhưng
    thế mạnh của Arduino so với các nền tảng vi điều khiển khác:
    – Chạy trên đa nền tảng: Việc lập trình Arduino có thể thể thực hiện trên các hệ điều
    hành khác nhau như Windows, Mac Os, Linux trên Desktop, Android trên di động.
    – Ngôn ngữ lập trình đơn giản dễ hiểu.
    – Nền tảng mở: Arduino được phát triển dựa trên nguồn mở nên phần mềm chạy trên
    Arduino được chia sẻ dễ dàng và tích hợp vào các nền tảng khác nhau.
    – Mở rộng phần cứng: Arduino được thiết kế và sử dụng theo dạng module nên việc
    mở rộng phần cứng cũng dễ dàng hơn.
    – Đơn giản và nhanh: Rất dễ dàng lắp ráp, lập trình và sử dụng thiết bị.
    – Dễ dàng chia sẻ: Mọi người dễ dàng chia sẻ mã nguồn với nhau mà không lo lắng về
    ngôn ngữ hay hệ điều hành mình đang sử dụng.
    Arduino có rất nhiều module, mỗi module được phát triển cho một ứng dụng. Về mặt
    chức năng, các bo mạch Arduino được chia thành hai loại: loại bo mạch chính có chip
    Atmega và loại mở rộng thêm chức năng cho bo mạch chính. Các bo mạch chính về cơ
    bản là giống nhau về chức năng, tuy nhiên về mặt cấu hình như số lượng I/O, dung lượng
    bộ nhớ, hay kích thước có sự khác nhau. Một số bo có trang bị thêm các tính năng kết nối
    như Ethernet và Bluetooth. Các bo mở rộng chủ yếu mở rộng thêm một số tính năng cho
    bo mạch chính. Ví dụ như tính năng kết nối Ethernet, Wireless, điều khiển động cơ.
    Arduino được chọn làm bộ não xử lý của rất nhiều thiết bị từ đơn giản đến phức tạp.
    Trong số đó có một vài ứng dụng thực sự chứng tỏ khả năng vượt trội của Arduino do
    chúng có khả năng thực hiện nhiều nhiệm vụ rất phức tạp. Sau đây là danh sách một số
    ứng dụng nổi bật của Arduino như trong công nghệ in 3D, robot dò đường theo hướng có
    nguồn nhiệt, tạo một thiết bị nhấp nháy theo âm thanh và đèn laser hay là một thiết bị báo
    cho khách hàng biết khi nào bánh mì ra lò. Đồ án tốt nghiệp SVTH: Nguyễn Đức Thịnh
    22 Arduino đã và đang được sử dụng rất rộng rãi trên thế giới, và ngày càng chứng tỏ
    được sức mạnh của chúng thông qua vô số ứng dụng độc đáo của người dùng trong cộng

  17. Page | 17
    đồng

    nguồn mở (open-source). Tuy nhiên tại Việt Nam Arduino vẫn còn chưa được biết
    đến nhiều. ứng dụng của arduino trong thực tế:
    II. Arduino Uno
    Hình 9: Board mạch Arduino Uno.
    Arduino Uno là một bo mạch vi điều khiển dựa trên chip Atmega328. Nó có
    14 chân vào ra bằng tín hiệu số, trong đó có 6 chân có thể sử dụng để điều chế đô rộng
    xung. Có 6 chân đầu vào tín hiệu tương tự cho phép chúng ta kết nối với các bộ cảm biến
    bên ngoài để thu thập số liệu, sứ dụng một dao động thạch anh tần số dao động 16MHz,
    có một cổng kết nối bằng chuẩn USB để chúng ta nạp chương trình vào bo mạch và một
    chân cấp nguồn cho mạch, một ICSP header, một nút reset. Nó chứa tất cả mọi thứ cần
    thiết để hỗ trợ các vi điều khiển, nguồn cung cấp cho Arduino có thể là từ máy tính thông
    qua cổng USB hoặc là từ bộ nguồn chuyên dụng được biến đổi từ xoay chiều sang một
    chiều hoặc là nguồn lấy từ pin.
    Arduino có thể được hỗ trợ thông qua kết nối USB hoặc với một nguồn cung cấp
    điện bên ngoài. Các nguồn năng lượng được lựa chọn tự động. Hệ thống vi điều khiển có
    thể hoạt động bằng một nguồn cung cấp bên ngoài từ 6V đến 20V. Tuy nhiên, nếu cung
    cấp với ít hơn 7V, chân 5V có thể cung cấp ít hơn 5V và hệ thống vi điều khiển có thể
    không ổn định. Nếu cấp nhiều hơn 12V, bộ điều chỉnh điện áp có thể quá nóng và gây
    nguy hiểm cho bo mạch. Phạm vi khuyến nghị là 7V đến 12V.

  18. Page | 18

    Chân Vin: Điện áp đầu vào Arduino khi chúng ta dùng nguồn điện bên ngoài (khác
    với nguồn 5V lấy từ USB hoặc nguồn thông qua jack cắm nguồn riêng). Chúng ta có thể
    cung cấp nguồn thông qua chân này. 25
    – Chân 5V: Cung cấp nguồn vi điều khiển và các bộ phận khác trên bo mạch và cung
    cấp nguồn cho các thiết bị ngoại vi khi kết nối tới bo mạch.
    – Chân 3,3V: Cung cấp nguồn cho các thiết bị cảm biến.
    – Chân GND: Chân nối đất.
    – Chân Aref: Tham chiếu điện áp đầu vào analog.
    – Chân IOREF: Cung cấp điện áp cho các vi điều khiển hoạt động. Một shield được cấu
    hình đúng có thể đọc điện áp chân IOREF và lựa chọn nguồn thích hợp hoặc kích hoạt bộ
    chuyển đổi điện áp để là việc ở mức 5V hoặc 3,3V.
    Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng:
    – 32KB bộ nhớ Flash: những đoạn lệnh bạn 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 .
    – 2KB cho SRAM (Static Random Access Memory): giá trị các biến bạn khai báo khi
    lập trình sẽ lưu ở đây. Bạn khai báo càng nhiều biến thì càng cần nhiều bộ nhớ RAM.
    – 1KB EEPROM (Electrically Eraseble Programmable Read Only Memory): đây giống
    như một chiếc ổ cứng mini – nơi bạn 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.
    Arduino Uno có 14 chân digital (chân 0 – 13) và 6 chân analog (chân A0 – A5).
    Các chân digital chúng ta có thể cấu hình để làm chân nhần dữ liệu vào từ các thiết
    bị ngoại vihoặc làm chân để truyền tín hiêu ra các thiết bị ngoại vi. Bằng cách sử dụng
    các hàm pinMode(), digitalWrite() và digitalRead(). Mỗi chân có thể cung cấp hoặc nhận
    một dòng điện tối đa 40mA và có một điện trở kéo nội (mặc định không nối) 20 – 50
    kOhms. Ngoài ra có một số chân có chức năng đặc biệt:
    – Chân 0 (Rx): Chân được dùng để nhận dữ liệu nối tiếp.
    – Chân 1 (Tx): Chân được dùng để truyền dữ liệu nối tiếp. – Chân 2 và 3: Chân ngắt
    ngoài.
    – Chân 3, 5, 6, 9, 10 và 11: Chân vào/ra số hoặc để điều chế độ rộng xung
    (chân 13 được nối với một LED đơn, sáng tắt tương ứng với mức logic của chân này).
    – Chân 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK): Chuẩn giao tiếp SPI.

  19. Page | 19

    Các chân analog có độ phân giải 10 bit (tương ứng với 1024 mức giá trị khác nhau)
    ứng với mức từ 0 – 5V. Ngoài ra một số chân có các chức năng đặc biệt:
    – Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI
    với các thiết bị khác.
    III. Giới thiệu chung về cảm biến
    1. Giới thiệu cảm biến:
    Cảm biến – sensor: xuất phát từ chữ “sense” nghĩa là giác quan – do đó nó như các
    giác quan trên cơ thể con người . Nhờ cảm biến mà mạch điện , hệ thống điện có thể thu
    thập thông tin từ bên ngoài. Từ đó hệ thống máy móc, điện tử tự động mới có thể tự động
    hiển thị thông tin về đối tượng hay điều khiển quá trình định trước có khả năng thay đổi
    một cách uyển chuyển theo môi trường hoạt động.
    Cảm biến là thiết bị dùng để cảm nhận biến đổi các đại lượng vật lý và các đại lượng
    không có tính chất điện cần đo thành các đại lượng điện có thể đo và xử lý được.
    Các bộ cảm biến đóng vai trò cực kỳ quan trọng trong lĩnh vực đo lường và điều khiển.
    Chúng cảm nhận và đáp ứng theo các kích thích thường là đại lượng không điện, chuyển
    đổi các đại lượng này thành các đại lượng điện và truyền các thông tin về hệ thống đo
    lường điều khiển, giúp chúng ta nhận dạng đánh giá và điều khiển mọi biến trạng thái của
    đối tượng.
    Hiện nay, con người đã sản xuất được rất nhiều các loại cảm biến khác nhau như: cảm
    biến ánh sang, cảm biến độ ẩm, cảm biến nhiệt độ, cảm biến quang… Các cảm biến có
    ứng dụng rộng rãi và phạm vi sử dụng lớn, ví dụ như trong công nghiệp, khoa học kĩ thuật,
    giám sát thiết bị, viễn thông, giao thông, dân dụng, quân sự…
    2. Cảm biến vật cản hồng ngoại
    Cảm biến vật cản hồng ngoại có khả năng thích nghi với môi trường, có một cặp truyền và
    nhận tia hồng ngoại. Tia hồng ngoại phát ra một tần số nhất định, khi phát hiện hướng truyền
    có vật cản (mặt phản xạ), phản xạ vào đèn thu hồng ngoại, sau khi so sánh, đèn màu xanh sẽ
    sáng lên, đồng thời đầu cho tín hiệu số đầu ra (một tín hiệu bậc thấp).
    Khoảng cách làm việc hiệu quả 2 ~ 5cm, điện áp làm việc là 3.3 V đến 5V. Độ nhạy sáng
    của cảm biến vật cản hồng ngoại được điều chỉnh bằng chiết áp, cảm biến dễ lắp ráp, dễ sử
    dụng,….
    Có thể được sử dụng rộng rãi trong robot tránh chướng ngại vật, xe tránh chướng ngại vật và
    dò đường…

  20. Page | 20
    Hình

    10: Cảm biến vật cản hồng ngoại
    Thông số kỹ thuật :
     Bộ so sánh sử dụng LM393, làm việc ổn định
     Điện áp làm việc: 3.3V – 5V DC.
     Khi bật nguồn, đèn báo nguồn màu đỏ sáng.
     Lỗ vít 3 mm, dễ dàng cố định, lắp đặt.
     Kích thước: 3.2cm * 1.4cm
     Các mô-đun đã được so sánh điện áp ngưỡng thông qua chiết áp, nếu sử dụng ở chế độ
    thông thường, xin vui lòng không tự ý điều chỉnh chiết áp.

  21. Page | 21
    Hình

    11: Cảm biến vật cản hồng ngoại
    IV. Động cơ servo
    Servo là một dạng động cơ điện đặc biệt. Không giống như động cơ thông thường cứ
    cắm điện vào là quay liên tục, servo chỉ quay khi được điều khiển (bằng xung PPM) với
    góc quay nằm trong khoảng bất kì từ 0o –
    180o
    . Mỗi loại servo có kích thước, khối lượng
    và cấu tạo khác nhau. Có loại thì nặng chỉ 9g (chủ yếu dùng trên máy bay mô mình), có
    loại thì sở hữu một momen lực vài chục Newton/m, hoặc có loại thì khỏe và nhông sắc
    chắc chắn,…
    Động cơ servo được thiết kế những hệ thống hồi tiếp vòng kín. Tín hiệu ra của động
    cơ được nối với một mạch điều khiển. Khi động cơ quay, vận tốc và vị trí sẽ được hồi tiếp
    về mạch điều khiển này. Nếu có bầt kỳ lý do nào ngăn cản chuyển động quay của động
    cơ, cơ cấu hồi tiếp sẽ nhận thấy tín hiệu ra chưa đạt được vị trí mong muốn. Mạch điều
    khiển tiếp tục chỉnh sai lệch cho động cơ đạt được điểm chính xác.
    Các động cơ servo điều khiển bằng liên lạc vô tuyến được gọi là động cơ servo RC
    (radio-controlled). Trong thực tế, bản thân động cơ servo không phải được điều khiển
    bằng vô tuyến, nó chỉ nối với máy thu vô tuyến trên máy bay hay xe hơi. Động cơ servo
    nhận tín hiệu từ máy thu này.

  22. Page | 22
    1.

    Động cơ RC Servo Digital RC FR1510:
    Hình 12: Động cơ RC Servo Digital RC FR1510
    Động cơ RC Servo Digital RC FR1510 có cấu tạo một trục xoay giống như servo
    truyền thống giúp bạn dể ứng dụng cho các thiết kế robot của mình, ngoài ra chất lượng
    của loại động cơ này rất tốt, độngc ơ này có bánh răng kim loại, lực kéo mạnh, xoay êm,
    không rung, giữ vị trí tốt
    – Trọng lương: 60g.
    – Kích thước: 40*20*40.5mm.
    – Tốc độ: 0.16s/60o
    tại 4.8VDC đến 7.2VDC.
    – Lực kéo: 17kg/cm tại 4.8VDC đến 7.2VDC.
    – Dòng điện tiêu thụ: >600mA. – Chiều dài cáp: 32cm.
    2. Động cơ RC Servo 9G:
    Hình 13: Động cơ RC Servo 9G.

  23. Page | 23
    Động

    cơ RC Servo 9G có kích thước nhỏ, là loại được sử dụng nhiều nhất để làm các
    mô hình nhỏ hoặc các cơ cấu kéo không cần đến lực nặng. Động cơ RC Servo 9G có tốc
    độ phản ứng nhanh, động cơ RC Servo 9G có tích hợp sẵn Driver điều khiển động cơ bên
    trong nên có thể dễ dàng điều khiển góc quay bằng phương pháp điều độ rộng xung PWM.
    Lưu ý: Các bánh răng được làm bằng nhựa nên cần lưu ý khi nâng tải nặng vì có thể
    làm hư bánh răng.
    THÔNG SỐ KỸ THUẬT: –
    Khối lượng : 9g
    – Kích thước: 22.2×11.8.32 mm
    – Momen xoắn: 1.8kg/cm
    – Tốc độ hoạt động: 60 độ trong 0.1 giây
    – Điện áp hoạt động: 4.8V(~5V)
    – Nhiệt độ hoạt động: 0 ºC – 55 ºC
    V. Chiết áp (biến trở)
    Chiết áp, potentiometer hay biến trở chia áp là phần tử điện trở có ít nhất một tiếp điểm di
    động trên thân điện trở để tạo thành “bộ chia điện áp” chỉnh được. Tiếp điểm di động chia điện
    trở thành các phần có giá trị bù nhau, và khi đặt lên điện trở một điện áp (tín hiệu) V thì điện
    áp tại tiếp điểm là giá trị chia tỷ lệ điện áp đó theo các giá trị điện trở. Đó cũng là nguồn gốc
    để đặt tên là “chiết áp”.
    Chiết áp được dùng để điều khiển mức tín hiệu trong các thiết bị điện và điện tử. Trong
    phần lớn trường hợp công suất tiêu tán trên chiết áp là nhỏ, nhưng cũng có một số trường hợp
    công suất tiêu tán lên tới watt hoặc trăm watt.
    Nếu một đầu ra của thân điện trở không được sử dụng, chỉ có một đầu ra và cần gạt, thì nó
    hoạt động như một điện trở thay đổi hoặc biến trở (trở biến đổi). Trong lịch sử các biến trở,
    thường là trở dây quấn, có công suất tiêu tán chịu được trên 1 W gọi là rheostat.
    Các dạng đặc biệt
    Hầu hết chiết áp chế được chế ra có 1 tiếp điểm di động. Tuy nhiên một số hãng có chế ra các
    chiết áp có bố trí đặc biệt, hiếm gặp trong thực tế.
     Chiết áp trượt có 2 tiếp điểm trượt, để lấy ra hai mức chia áp. Hạn chế không gian cho ra
    các tiếp điểm di chuyển trong phạm vi liên quan đến nhau.
     Chiết áp có điểm ra bù, là chiết áp trên phần thân điện trở có thêm các điểm nối ra phụ.
    Khi nối các điện trở và tụ điện phù hợp vào các điểm này thì cải thiện được đặc trưng tần
    số của mạch chia áp ở các mức chia khác nhau.

  24. Page | 24
    Chiết

    áp kỹ thuật số
    Chiết áp kỹ thuật số là phần tử hiếm có trong ứng dụng thông thường. Có hai dạng:
     Chiết áp có mảng điện trở chính xác cao được nối và điều khiển giá trị chia áp bằng mã
    số, để chia tín hiệu tương tự, như trong các mạch ADC và DAC.
     Chiết áp thuần túy số do phần mềm mô phỏng một hệ số nhân tín hiệu đã chỉ định.
    Ứng dụng
    Chiết áp thường được sử dụng để điều khiển các thiết bị điện như điều khiển âm lượng trên
    thiết bị âm thanh. Khi dịch chuyển thanh trượt được vận hành bởi một cơ chế xác định thì nó
    có thể được sử dụng làm đầu dò vị trí, ví dụ trong joystick. Chiết áp hiếm khi được sử dụng
    để điều khiển trực tiếp công suất đáng kể, cỡ hơn một watt, vì công suất tiêu tán trong chiết
    áp sẽ tương đương với công suất trong tải điều khiển
    Hình 14: Chiết áp
    VI. Motor giảm tốc
    Động cơ giảm tốc vàng là loại được lựa chọn và sử dụng nhiều nhất hiện nay cho các thiết kế
    Robot đơn giản.
    Động cơ DC giảm tốc vàng có chất lượng và giá thành vừa phải cùng với khả năng dễ lắp ráp
    của nó đem đến chi phí tiết kiệm và sự tiện dụng cho người sử dụng, các bạn khi mua động cơ
    giảm tốc vàng có thể mua thêm gá bắt động cơ vào thân Robot cũng như bánh xe tương thích.
    THÔNG SỐ KỸ THUẬT

  25. Page | 25

    Điện áp hoạt động: 3-9VDC
     Dòng điện tiêu thụ: 110140mA
     Tỉ số truyền: 1:120
     Số vòng/1phút:
     50 vòng/ 1 phút tại 3VDC.
     83 vòng/ 1 phút tại 5VDC.
     Moment: 1.0KG.CM
    Bánh xe V1 được thiết kế để sử dụng với động cơ giảm tốc V1. Bánh xe V1 là loại bánh được
    sử dụng nhiều nhất trong các thiết kế robot hiện nay vì có giá thành phải chăng, chất lượng
    tốt, dể lắp ráp và ứng dụng trong thiết kế.
     Chất liệu: Nhựa, cao su, mút.
     Đường kính: 65mm.
    Hình 15: Động cơ giảm tốc
    VII. Relay đóng ngắt
    Module 1 Relay gồm 1 rơ le hoạt động tại điện áp 5VDC, chịu được hiệu điện thế lên đến
    250VAC 10A. Module 1 relay kích mức thấp được thiết kế chắc chắn, khả năng cách điện
    tốt. Trên module đã có sẵn mạch kích relay sử dụng transistor và IC cách ly quang giúp cách
    ly hoàn toàn mạch điều khiển (vi điều khiển) với rơ le bảo đảm vi điều khiển hoạt động ổn
    định.

  26. Page | 26
    Hình

    16: Relay
    Có sẵn header rất tiện dụng khi kết nối với vi điều khiển. Mô-đun này tuân thủ các tiêu
    chuẩn an toàn quốc tế, khu vực đầu vào và khu vực tải có các khe cách ly
    THÔNG SỐ KỸ THUẬT
     Mức logic : 0V (GND)
     Điều khiển đóng ngắt điện DC hoặc AC, bạn có thể điều khiển tải AC 220 V 10A
     Có tiếp điểm thường mở và thường đóng:
    o NO : thường mở (khi kích tiếp điểm đóng lại)
    o COM : chung
    o NC : Thường đóng (khi kích tiếp điểm mở ra)
    Đầu vào:
    -Điện áp nuôi : 5VDC
    -Tín hiệu vào điều khiển: 0V
    + Tín hiệu là 0: thì Relay đóng
    + Tín hiệu là 1 : thì Relay mở
    Đầu ra:
    + Tiếp điểm relay 220V 10A ( Lưu ý tiếp điểm , không phải điện áp ra)
    + NC : Thường đóng
    + NO: Thường mở
    + COM: Chân chung
    Ký hiệu nguồn:
    + VCC, GND là nguồn nuôi Relay
    + in là chân tín hiệu điều khiển

  27. Page | 27
    VIII.

    Khung cánh tay robot
    Hình 17: Khung arm robot

  28. Page | 28
    IX.

    Giới thiệu phần mềm IDE
    (Integrated Development Environment)
    Hình 18: Giao diện phần mềm IDE.
    Môi trường phát triển tích hợp (IDE) của Arduino là một ứng dụng crossplatform
    (nền tảng) được viết bằng Java, và từ IDE này sẽ được sử dụng cho Ngôn ngữ lập trình
    xử lý (Processing programming language) và project Wiring. Nó được thiết kế để dành
    cho những người mới tập làm quen với lĩnh vực phát triển phần mềm. Nó bao gồm một
    chương trình code editor với các chức năng như đánh dấu cú pháp, tự động brace
    matching, và tự động canh lề, cũng như compile(biên dịch) và upload chương trình lên
    board chỉ với 1 cú nhấp chuột. Một chương trình hoặc code viết cho Arduino được gọi là
    một sketch.
    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

  29. Page | 29
    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) có thể chạy được:
    – : hàm này chạy mỗi khi khởi động một chương trình, dùng để thiết
    lập các cài đặt
    – : hàm này được gọi lặp lại cho đến khi tắt nguồn board mạch
    Một chương trình điển hình cho một bộ vi điều khiển đơn giản chỉ là làm cho một
    bóng đèn Led sáng/tắt. Trong môi trường Arduino, ta sẽ phải viết một chương trình
    giống như sau:
    Hình 19: Code sáng tắt led trên phần mềm IDE.
    Một đặc điểm của hầu hết các board Arduino là chúng có một đèn LED và điện trở
    nối giữa chân 13 với đất; một đặc điểm thuận tiện cho nhiều ứng dụng đơn giản.
    Đoạn code ở trên không thể đọc được bởi một compiler C++ chuẩn như là một
    chương trình đúng, vì vậy khi ta click vào nút “Upload to I/O board” trong
    IDE này, một bản copy của đoạn code này sẽ được ghi vào một file tạm với một extra
    include header ở phía trên cùng và một hàm main () đơn giản nằm ở phía đáy, để làm
    cho thàn một chương trình C++ khả dụng.
    Arduino IDE này sử dụng GNU toolchain và AVR Libc để biên dịch chương trình,
    và sử dụng avrdude để upload chương trình lên board.
    Vì nền tảng của Arduino là các vi điều khiển của Atmel, cho nên môi trường phát
    triển của Atmel, AVR Studio hoặc các phiên bản Atmel Studio mới hơn, cũng có thể
    được sử dụng để làm phần mềm phát triển cho Arduino.
    setup()
    loop()

  30. Page | 30
    CHƯƠNG

    4: TỔNG QUAN MÔ HÌNH THỰC TẾ
    I. Kết nối linh kiện
    1. Sơ đồ kết nối Servo, biến trở, led, nút nhấn với Arduino:
    Hình 20: Kết nối Servo với arduino.
    LINH KIỆN ARDUINO UNO PIN
    SERVO 1 Dây cam -7, dây đen-GND Dây đỏ -VCC
    SERVO 2 Dây cam -6, dây đen-GND Dây đỏ -VCC
    SERVO 3 Dây cam -5, dây đen-GND Dây đỏ -VCC
    BIẾN TRỞ 1 Chân giữa-A0, chân âm-GND Chân dương-
    VCC
    BIẾN TRỞ 2 Chân giữa -A1, chân âm-GND
    Chân dương –
    VCC
    BIẾN TRỞ 3 Chân giữa -A2, chân âm-GND
    Chân dương –
    VCC
    BIẾN TRỞ 4
    Chân giữa -A3, chân âm-GND
    Chân dương –
    VCC

  31. Page | 31
    LED

    Chân 13 & điện trở &-GND
    BUTTON 1 Chân 12 & GND
    BUTTON 2 Chân 7 & GND
    BUTTON 3 Chân 2 & GND
    Hình 21: Kết nối Cảm biến vật cản hồng ngoại, relay và động cơ giảm tốc:
    – Chân VCC cảm biến vật VCC
    – Chân GND cảm biến vật GND
    – Chân OUT cảm biến vật IN Relay và chân số 8 arduino
    – Chân IN Relay OUT Cảm biến
    – Chân VCC Relay VCC
    – Chân GND Relay GND
    – Chân COM Relay VCC
    – Chân NC Relay GND Motor
    – VCC Motor VCC
    – GND Motor NC Relay

  32. Page | 32
    III.

    Mô hình hoàn thiện
    – Dưới đây là hình ảnh toàn bộ mô hình sau khi hoàn thành
    Hình 22: Mô hình

  33. Page | 33
    Hình

    23: Bảng mạch điều khiển
    Hình 24: Cánh tay robot

  34. Page | 34
    III.

    Nguyên lí hoạt động và sơ đồ khối
    * Cấp nguồn cho mô hình, sau đó thực hiện dạy lệnh, sau khi day lệnh xong ấn Playpause để
    chạy ( cảm biến sẽ phát hiện, nếu có vật cản thì cánh tay robot mới hoạt động), muốn dừng thì
    ấn lại playpause.
    – Bước 1: Đầu tiên ta bật công tắc để cấp nguồn cho băng tải và các thiết bị
    – Bước 2: bắt đầu dạy lệnh: vặn biến trở thứ nhất để điều khiển servo thứ nhất quay theo ý
    muốn, sau đó ấn nút ấn record trên bảng điều khiển, tương tự vặn biến trở thứ 2 và 3 để điều
    khiển servo thứ 2 và 3 quay theo ý muốn và ấn record ( nếu cánh tay có nhiều servo hơn thì
    tăng số lượng biến trở lên và cũng làm tương tự như trên )
    – Bước 3: Ấn nút ấn Playpause để cánh tay robot thực hiện chạy như lệnh vừa dạy ở bước 2.
    – Muốn dừng tạm thời cánh tay robot thì ấn Playpause, và ấn lại nút Playpause để tiếp tục chạy
    lại.
    -Nút ấn Enable Eeprom là nút ấn dung để chuyển dữ liệu từ ram qua Eeprom để phòng khi
    mất điện. Sau khi ấn nút Enable Eeprom, thì khi rút nguồn(mất điện), thì sau khi ta cấp nguồn
    lại sẽ ko bị mất lệnh ta dạy lúc đầu ( lệnh sẽ được chuyển từ ram qua epprom, khi bật nguồn
    thì lệnh lại được chuyển từ eeprom qua ram để thực hiện chạy).
    Hình 25: Sơ đồ khối
    Khối điều khiển trung tâm: khối điều khiển trung tâm sử dụng Arduino UNO R3 để
    điều khiển các thiết bị khác trong hệ thống
    Khối cảm biến: sử dụng cảm biến vật cản hồng ngoại dùng để thu thập tín hiệu có vật
    cản và đưa tín hiệu về khối điều khiển trung tâm để điều khiển khối arm robot.
    Khối băng tải: dùng để vận chuyển sản phẩm
    Khối Arm robot: dùng để gắp sản phẩm vào vị trí

  35. Page | 35
    Khối

    nguồn cung cấp: Khối nguồn cung cấp là khối quan trọng giúp cung cấp điện
    cho toàn bộ hệ thống. Vì vậy cần tính toán hợp lý để khối nguồn có thể cung cấp đủ dòng
    và áp để mạch có thể hoạt động tốt và ổn định.
    IV. Thuật toán điều khiển
    Hình 26: Thuật toán

  36. Page | 36
    V.

    Code điều khiển
    //ĐỒ ÁN TỐT NGHIỆP
    //CÁNH TAY ROBOT HỌC LỆNH GẮP SẢN PHẨM TRÊN BĂNG CHUYỀN
    //SVTH NGUYỄN VĂN HIẾU
    //GVHD NGUYỄN LƯƠNG THANH TÙNG
    #define servo_max 5
    // số step lớn nhất , nó sẽ tiêu tốn step_max*servo_max (byte) RAM
    // ví dụ cần 200*5=1000 byte RAM
    #define step_max 200
    // nút ấn
    #define start_pause_pin 12
    #define record_pin 7
    #define ENABLE_EEPROM_PIN 2
    // đèn báo
    #define led_pin 13
    // tốc độ nhanh chậm
    #define delay_toc_do 20
    //cài pin vào analog
    byte pin_analog[servo_max] = { A0, A1, A2, A3, A4 };
    // cài đặt pin ra cho servo
    byte pin_servo[servo_max] = { 3, 5, 6, 9, 10 };
    // có 5 servo
    unsigned int A0_value, A1_value, A2_value, A3_value, A4_value;
    //cam bien
    byte cbObj = 8; //pin 8 in uno kit
    byte get_goc(byte servo_i)
    {

  37. Page | 37
    //

    tính toán lấy giá trị góc của biến trở i
    switch (servo_i) {
    case 0:
    A0_value = constrain(analogRead(A0), 200, 823);
    return map(A0_value, 200, 823, 4, 175);
    break;
    case 1:
    A1_value = constrain(analogRead(A1), 200, 823);
    return map(A1_value, 200, 823, 4, 175);
    break;
    case 2:
    A2_value = constrain(analogRead(A2), 200, 823);
    return map(A2_value, 200, 823, 175, 4);
    break;
    case 3:
    A3_value = constrain(analogRead(A3), 200, 823);
    return map(A3_value, 200, 823, 175, 4);
    break;
    case 4:
    A4_value = constrain(analogRead(A4), 200, 823);
    return map(A4_value, 200, 823, 100, 175); // tay gắp, góc quay 100°->180°
    break;
    default:
    break;
    }
    }
    // kích thước eeprom (số byte) trên arduino

  38. Page | 38
    //

    trong ví dụ này em dùng arduino uno r3 có 1024 bytes EEPROM
    const unsigned int SIZE_MEMORY_EEPROM = 1024;
    ///////////////////////////////////////////////////////////////////////////////////
    /////////////////////////MAIN CODE- KHÔNG CẦN CHỈNH SỬA PHẦN
    NÀY////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////////
    #include <EEPROM.h>
    #include <Servo.h>
    Servo servo[servo_max];
    //pin button
    int step_move = 0;
    /* mảng lưu góc cho 5 servo, 90 là giá trị góc khởi tạo cho toàn bộ phần tử*/
    byte goc_servo[servo_max][step_max];
    // mảng 2 chiều quản lý (servo_max) servo
    byte goc_tam_thoi[servo_max] = { 90 };
    // lưu góc tạm thời tại thời điểm cần tín
    void setup()
    {
    pinMode(led_pin, OUTPUT);
    //2 pin button
    Serial.begin(115200);
    pinMode(start_pause_pin, INPUT_PULLUP);
    pinMode(ENABLE_EEPROM_PIN, INPUT_PULLUP);
    pinMode(record_pin, INPUT_PULLUP);
    pinMode(cbObj,INPUT);
    for(int i = 0;i<10;i++){
    Serial.println(“cbOBj =”+ String(digitalRead(cbObj)));

  39. Page | 39
    delay(1000);
    }
    //
    Serial.println(“Bat

    dau day Robot hoc lenh”);
    // cài chế độ 5 pin analog
    for (byte i = 0; i < servo_max; i++) {
    pinMode(pin_analog[i], INPUT);
    servo[i].attach(pin_servo[i]);
    }
    ADCSRA = ((ADCSRA & (B11111000)) | B00000100); // Cài tần số quét analog 1mhz
    //trong hàm void setup sẽ cài đạt rồi chạy hàm learnand move này, mãi mãi
    learn_and_move(); // chạy hàm
    }
    void move_servo(byte i, byte goc_i)
    {
    servo[i].write(goc_i);
    }
    void nhap_nhay(unsigned int time_delay, byte count)
    {
    for (byte i = 0; i < count; i++) {
    digitalWrite(led_pin, HIGH);
    delay(time_delay);
    digitalWrite(led_pin, LOW);
    delay(time_delay * 2);
    }
    }
    void record(unsigned int step_x)

  40. Page | 40
    {
    for

    (byte i = 0; i < servo_max; i++) {
    goc_servo[i][step_x] = get_goc(i);
    }
    nhap_nhay(100, 2);
    Serial.println(goc_servo[0][step_x]);
    }
    void move_all()
    {
    for (byte i = 0; i < servo_max; i++) {
    move_servo(i, goc_tam_thoi[i]);
    } // di chuyển
    }
    void control_servo()
    {
    byte hieu;
    for (byte i = 0; i < servo_max; i++) {
    hieu = abs(goc_tam_thoi[i] – get_goc(i));
    if ((hieu >= 1) && (hieu < 170)) { // chống nhiễu
    // không được di chuyển arm điều khiển quá nhanh
    goc_tam_thoi[i] = get_goc(i);
    }
    } // lấy góc
    move_all();
    }
    void nap_eeprom_sang_ram()
    {

  41. Page | 41
    //

    nạp eeprom sang RAM
    step_move = EEPROM.read(SIZE_MEMORY_EEPROM – 1); // lấy lại step_move từ
    rom
    for (byte i = 0; i < servo_max; i++) {
    for (int step_j = 0; step_j < step_max; step_j++) {
    goc_servo[i][step_j] = EEPROM.read(step_j + i * step_max);
    //nạp dữ liệu từ rom sang ram
    }
    }
    }
    void luu_vao_eeprom()
    {
    // bước 1: lưu dữ liệu vào rom
    EEPROM.write(SIZE_MEMORY_EEPROM – 1, step_move); // ghi step_move vào rom
    delay(15); // đợi 15ms để hoàn thành ghi 1 ô nhớ
    nhap_nhay(500, 3);
    digitalWrite(led_pin, HIGH); // giữ nguyên đèn
    for (byte i = 0; i < servo_max; i++) {
    //Serial.print(“luu”);
    //Serial.println(i);
    for (int step_j = 0; step_j < step_move; step_j++) {
    EEPROM.write(step_j + i * step_max, goc_servo[i][step_j]);
    //nạp dữ liệu từ ram vào rom
    delay(15); // đợi 15ms để hoàn thành ghi 1 ô nhớ
    }
    }
    nhap_nhay(500, 3);

  42. Page | 42
    digitalWrite(led_pin,

    LOW); // tắt đèn
    }
    void pause()
    {
    // chỉ được lưu dữ liệu vào eeprom khi đã có dữ liệu
    // nhấn pause trước, sau đó mới nhấn nút ENABLE_EEPROM_PIN để bắt đầu ghi vào
    eeprom
    //
    if (digitalRead(start_pause_pin) == 0) {
    while (true) {
    digitalWrite(led_pin, 1);
    delay(300); // chống nhiễu
    Serial.println(“PAUSE”);
    if (digitalRead(ENABLE_EEPROM_PIN) == 0) {
    // nhấn lưu eeprom
    delay(300);
    luu_vao_eeprom();
    }
    if (digitalRead(start_pause_pin) == 0) {
    Serial.println(“START”);
    digitalWrite(led_pin, 0);
    delay(300); // chống nhiễu
    goto out_pause;
    }
    } //while
    } //if
    out_pause:;

  43. Page | 43
    //

    thoát lặp
    }
    void auto_move()
    {
    Serial.println(step_move);
    nhap_nhay(50, 3);
    float hieu_f[servo_max];
    unsigned int step = 0, step_next;
    byte time;
    byte thay_doi;
    long tt;
    while (true) {
    //lấy hiệu góc hiện tại và góc sau
    while(digitalRead(cbObj)==1 && step==0){
    //khong co vat, thi chay trong wong while over
    tt = millis();
    Serial.println(“Obj=”+String(digitalRead(cbObj)));
    delay(100);
    //phat hien co vat, thi thoat while de dk robot
    /*
    if(digitalRead(cbObj==0)){
    Serial.println(“Obj=”+String(digitalRead(cbObj)));
    Serial.println(“Time Run:”+String(millis()-tt));
    delay(100);
    break;
    }
    */

  44. Page | 44
    }
    if

    (step < step_move) {
    step_next = step + 1; // không viết : step++
    }
    else {
    /*step = step_mov :thì step tiếp theo của step cuối cùng là step đầu tiên*/
    step_next = 0;
    }
    for (byte i = 0; i < servo_max; i++) {
    hieu_f[i] = (float(goc_servo[i][step]) – float(goc_servo[i][step_next]));
    }
    Serial.println(step);
    Serial.println(goc_servo[0][step]);
    Serial.println(goc_servo[0][step_next]);
    Serial.println(hieu_f[0]);
    //int denta;
    /*vận tốc sẽ tăng dần khi khởi đầu, đạt max , vận tốc giảm dần khi ở cuối quá trình,
    */
    for (float loading = 1.0; loading <= 100.0; loading++) {
    //denta=30+((sq(loading-150))/1000);
    // loading là phần trăm %, đánh giá kết thúc 1 động tác là 100%
    for (byte i = 0; i < servo_max; i++) {
    goc_tam_thoi[i] = byte(float(goc_servo[i][step]) – (((hieu_f[i]) * loading) /
    100.0));
    }
    Serial.print(loading);
    Serial.print(“‚”);

  45. Page | 45
    Serial.print(hieu_f[0]);
    Serial.print(“‚”);
    Serial.println(goc_tam_thoi[0]);
    //

    gia tốc từ chậm->nhanh->chậm
    if ((loading >= 0.0) && (loading < 20.0)) {
    time = delay_toc_do * 2 + 5;
    }
    else if (loading < 30.0) {
    time = delay_toc_do / 2 + 5;
    }
    else if (loading < 90.0) {
    time = delay_toc_do + 5;
    }
    else {
    time = delay_toc_do * 2 + 5;
    }
    // delay(delay_toc_do);
    while ((millis() % delay_toc_do) != 0) { // làm trễ
    /* cứ sau denta_ms, vòng lặp mới được thoát, */
    pause();
    } //while
    /*
    Đoạn code < delay(time) >sẽ tương đương với < while((millis()%time)!=0){;} >
    – Lý do em không chọn delay :về bản chất Delay sẽ vô hiệu hóa hoàn toàn chương tình
    arduino ,
    arduino sẽ không thể làm gì cho đến khi hết Delay.

  46. Page | 46
    Trong

    khi đó chúng ta muốn ấn nút PAUSE(tạm dừng robot) ngay lập tức Robot sẽ không
    dừng ngay vì bị Delay vô hiệu hóa.
    Đấy là lí do em đã cho hàm pause() lồng vào bên trong khối while() như mọi người đã thấy.
    */
    move_all();
    } // for_loading
    if (step < step_move) {
    step++; // tăng cho lần kế tiếp
    }
    else {
    /* step = step_move*/
    step = 0; // lại từ đầu
    }
    //kết thúc 1 động tác
    delay(50);
    } //while
    }
    void learn_and_move()
    {
    step_move = 0;
    while (digitalRead(start_pause_pin) != 0) {
    //b1: điều khiển servo bằng biến trở
    while (digitalRead(record_pin) != 0) {
    control_servo();
    if ((digitalRead(start_pause_pin) == 0) && (step_move == 0)) {
    // nếu chưa có cài đặt náo mà vô thẳng phần chạy thì hiểu : lấy cài đặt từ eeprom
    nap_eeprom_sang_ram();

  47. Page | 47
    }
    if

    ((digitalRead(start_pause_pin) == 0) && (step_move != 0)) {
    goto buoc_3;
    }
    //delay(1);// bỏ delay luôn
    }
    // nút record đươcj nhấn, thoát lặp
    // b2: lưu vào mảng
    record(step_move);
    if (step_move < step_max) {
    step_move++; // tăng step cho bước sau
    }
    }
    // nút start_pause được nhấn, thoát lặp
    buoc_3:
    step_move–; //không có bước sau, giảm step_move xuống 1 đơn vị
    //b4:auto move
    auto_move();
    }
    void loop()
    {
    } // loop

  48. Page | 48
    CHƯƠNG

    5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI
    I. Kết luận
    1. Những nhiệm vụ đã thực hiện:
    – Tìm hiểu được quá trình hình thành và phát triển của Robot.
    – Tìm hiểu về arduino.
    – Nghiên cứu, tìm hiểu phần cứng của đề tài.
    – Sưu tầm, tìm kiếm tài liệu tham khảo phục vụ cho việc nghiên cứu.
    – Nghiên cứu, học hỏi các phương pháp lập trình arduino.
    2. Những thuận lợi và khó khăn khi thực hiện đề tài:
    Thuận lợi:
    – Được thầy cô và các bạn hỗ trợ hết mình.
    – Được tiếp xúc với môi trường năng động ở xưởng thực hành làm tăng niềm
    đam mê tìm tòi học hỏi.
    Khó khăn:
    – Vì vừa nghiên cứu vừa đi thực tập tốt nghiệp và phải đảm bảo việc học trên
    trường nên sự phân bố thời gian chưa được nhiều
    – Tài liệu chủ yếu về đề tài chủ yếu là tiếng anh nên việc dịch có những chổ
    chưa chuẩn xác.
    Ưu điểm đề tài :
    – Đáp ứng được yêu cầu của đề tài.
    – Tiết kiệm được công sức con người.
    – Có thể gắp vật ở nhiều vị trí khác nhau
    Nhược điểm đề tài :
    – Nhiễu do kết nối và nhiễu do linh kiện giá rẻ

  49. Page | 49
    II.

    Hướng phát triển đề tài
    – Đề tài cơ bản đáp ứng được những yêu cầu đặt ra tuy nhiên để sản phẩm hoàn thiện được
    hơn nữa thì đòi hỏi cần được cải tiến và nghiên cứu thêm.
    – Ngoài những gì mà em tìm hiểu được, có thể phát triển hơn nữa đề tài điều khiển cánh
    tay robot gắp sản phẩm trên băng chuyền thành nhiều phiên bản hơn nữa. ví như cánh tay
    robot gắp và phân loại sản phẩm theo kích thước, màu hoặc nhiệt độ.
    – Ngoài ra đề tài này có thể phát triển thành cánh tay robot dùng để gắp linh kiện, hay hàn,
    cắt hay khoan, hoặc là cánh tay robot tự động vẽ theo mẫu có sẵn…
    – Ngoài những hướng phát triển mà em nghĩ mình có khả năng có thể làm được trong
    tương lai với lượng kiến thức đã nghiên cứu, và cần phải tìm hiểu hơn nữa. Vì Robot phát
    triển đa dạng nên mong thầy có thể bổ sung và hướng dẫn em nhiều hơn nữa.

  50. Page | 50
    TÀI

    LIỆU THAM KHẢO
    1. Kỹ thuật điện tử. (1999)
    Đỗ Xuân Thụ. – NXB giáo dục.
    2. Giáo trình cảm biến. (2000)
    Phan Quốc Phô, Nguyễn Đức Chiến. – NXB Khoa học và kĩ thuật.
    3. Vi điều khiển câu trúc lập trình và ứng dụng. (2008)
    Kiều Xuân Thực, Vũ Thị Hương, Vũ Trung Kiên – NXB Giáo Dục.
    4. Website http://alldatasheet.com/
    5. Website http://arduino.vn/
    6. Website http://codientu.org/
    7. Website http://webdien.com/
    8. Website http://www.tailieu.vn/
    9. Website http://hocarm.org/
    10. Webcoban.vn