Động cơ Servo, Điều khiển góc quay bằng Timer0, Lập trình Pic

dong-co-servo-dieu-khien-quay-goc-su-dung-timer0-lap-trinh-pic-phan-cung
Động cơ Servo có nhiều loại như Servo DC hoặc Servo quay góc được sử dụng nhiều trong các dự án bên ngoài hoặc kể các các đồ án sinh viên điện tử, servo quay góc có tính ứng dụng như làm cánh tay robot, điều khiển tấm pin năng lượng mặt trời, mở cửa,… tùy theo yêu cầu sử dụng mà có nhiều cách kết nối khác nhau để đáp ứng được nhu cầu người sử dụng.

Mua linh kiện điện tử tại Điện tử Nhật Tùng

Liên hệ làm mạch  Phone: 0967.551.477 Zalo: 0967.551.477 Email: dientunhattung@gmail.com Địa Chỉ: 171/25 Lê Văn Thọ, P8, Gò Vấp, Tp HCM Chi tiết: Nhận làm mạch và đồ án Điện tử  
Khóa học Vi điều khiển có phí Hình thức học: Video hoặc Kèm trực tiếp ===>>>>  Kích vào hình để được biết thêm chi tiết khóa học lập trình vi điều khiển online

Tải File bài giải

Pass giải nén: Huynhnhattung.com
===>>>   Nếu bạn chưa có phần mềm giải nén:

Hướng dẫn Tải và Cài đặt phần mềm giải nén Winrar

 

Video Động cơ Servo, Điều khiển góc quay bằng Timer0

 

Blog Động cơ Servo, Điều khiển góc quay bằng Timer0

Đề bài động cơ Servo:

dong-co-servo-dieu-khien-quay-goc-su-dung-timer0-lap-trinh-pic

Bài giải động cơ Servo:

Phần cứng chương trình động cơ Servo:

  • Đề yêu cầu tạo xung bằng timer0 vì vậy phải sử dụng và tính toán timer0 để tạo ra xung chính xác nhất điều khiển động cơ Servo quay góc mong muốn.
  • Động cơ Servo được kết nối vào chân RB0, động cơ chỉ cần kết nối tín hiệu và tạo sóng theo yêu cầu sẽ cho phép tạo góc.
  • Sử dụng dao động ngoài thạch anh 20M gắn vào chân OSC1 OSC2.
  • Các linh kiện chính cần sử dụng tham khảo tại.
    Thông số kỹ thuậtMua Linh kiện
    Pic16F887Pic16F877
    Led đơnLed đơn
    Điện trởĐiện trở
    Nút nhấnNút nhấn
    Thạch anhThạch anh
     
dong-co-servo-dieu-khien-quay-goc-su-dung-timer0-lap-trinh-pic-phan-cung

Phần mềm động cơ Servo:

Khai báo thư viện tiền sử lý của đếm thời gian Timer0:

  • Vi điều khiển hiện tại mình đan dùng là Pic16F877A
  • Hiện đan dùng thạch anh ngoài và thạch anh ngoài 20M bằng lệnh #Fuses    hs     và    #delay(clock=20M).
  • Khi sử dụng timer0 phải biết được địa chỉ thanh ghi của biến cờ tràn. Với timer0 thì địa chỉ là 0x0b.2 tên thanh ghi vị trí tương ứng là TMR0IF, ở đây khai báo trước để dễ nhớ nếu các bạn ngại định nghĩa thì có thể sử dụng trực tiếp hoặc đặt một tên khác để dễ nhớ hơn.
  • Định nghĩa chân: tùy theo chức năng của chân mà tên định nghĩa được bám sát vào nội dung đan thực hiện.
  • Vì đây là bài thi nên việc định nghĩa chân phụ thuộc rất lớn vào nội dung đề bài.
  • Tên khai báo biến thì cái này tùy thuộc vào chức năng để khai báo cho phù hợp. 
  • Khi không biết giá trị cụ thể là bao nhiêu thì chỉ cần khai báo signed int32 đây là biến 32bit có dấu vì vậy giá trị rất rộng không sợ sai yêu cầu của đề bài đưa ra.
dong-co-servo-dieu-khien-quay-goc-su-dung-timer0-lap-trinh-pic-khai-bao

Chương trình chính thực hiện toàn bộ hoạt động của vi điều khiển dùng động cơ Servo

  • Bắt đầu chương trình chính phải khỏi rạo ngõ vào ra cho vi điều khiển. Một chân của vi điều khiển thì làm nhiệm vụ I/O vì thế phải khỏi tạo. Port B kết nối vào động cơ Servo điều khiển góc nên xuất dữ liệu nên khởi tạo là 0x00.
  • Sử dụng timer0 để đếm chu kỳ tạo xung 0.1ms nên khai báo t0_internal và sử dụng bộ chia timer02. từ đó suy ra cách tính: 20M/4=5M sử dụng bộ chia 4 là chia của phần cứng do nhà sản xuất quy định. 5M/4=1.25M sử dụng bộ chia 2 của timer0, từ đó suy ra f = 1.25M   => T = 0.8uS. Timer0 đếm 8bit => 2^8 = 256 xung    => t0 max = 0.8uS x 256 = 0.2048ms. Chọn thời gian tràn timer00.1ms    => bắt đầu đếm từ 6.
  • Gán giá trị ban đầu bằng 0 chuẩn bị cho chu kỳ đếm, nếu không gán giá trị sẽ Random trong dãy khai báo của các biến.

  • Kiểm tra nếu biến cờ tràn TMR0IF=1 tức timer0 đã đếm đến ngưỡng 255 thì xóa cờ tràn cho TMR0IF=0 chuẩn bị cho chu kỳ mới, đồng thời khởi tạo giá trị ban đầu là 6 để đếm chu kỳ tiếp theo bằng 0.1ms. Sau 0.1ms thì biến tg tăng lên một đơn vị, khi giá trị tràn đạt ngưỡng 20 tức được 2ms thì tạo xung mức cao cho động cơ ngược lại nếu đạt ngưỡng 200 tức đếm được 17.9ms tức 17.9ms tiếp theo tạo xung mức thấp, và một lần tràn tiếp theo cũng tắt xung sẽ tạo đủ 18ms đủ chu kỳ xung là 20ms, cho tg=0 chuẩn bị cho chu kỳ mới.
dong-co-servo-dieu-khien-quay-goc-su-dung-timer0-lap-trinh-pic-chuong-trinh-chinh

Chúc các bạn có một kỳ thi thành công…!!!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *