Mục lục:
2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-13 06:58
Trong hướng dẫn này, chúng ta sẽ viết mã Verilog để điều khiển động cơ servo. Servo SG-90 được sản xuất bởi Waveshare. Khi bạn mua động cơ servo, bạn có thể nhận được một biểu dữ liệu liệt kê điện áp hoạt động, mô-men xoắn cực đại và Điều chế độ rộng xung (PWM) được đề xuất… vv. Tuy nhiên, FPGA DuePrologic cung cấp điện áp đầu vào là 3,3V trong đó điện áp hoạt động của servo SG-90 là 5V - 7V. Trong trường hợp thiếu điện, tôi sẽ liệt kê PWM đã hiệu chỉnh của mình để quay động cơ servo thành công.
Nhiệm vụ của chúng tôi: Động cơ servo được quay qua lại với khoảng thời gian 5 giây
Menu đầy đủ:
Bước 1: Xây dựng vi mạch điện tử
Bước 2: Thiết lập Công cụ lập kế hoạch ghim
Nhấp vào "Bắt đầu phân tích phân công I / O" để kiểm tra xem công cụ lập kế hoạch ghim có được đặt chính xác hay không. Nếu không, bạn phải tự nhập tất cả các tên cổng.
Bước 3: Mã Verilog
Chúng tôi tạo bộ hẹn giờ "servo_count". Khi "servo_A" ở mức CAO, PWM là 1,5ms và do đó servo nằm ở 120 độ. Ngược lại, khi "servo_A" ở mức THẤP, PWM là 0,15ms và do đó servo được giữ nguyên ở 0 độ.
gán XIO_2 [3] = servo_pulse; // cho V '
reg [31: 0] servo_count;
bắt đầu ban đầu
servo_count <= 32'b0;
servo_A <= 1'b0;
kết thúc
always @ (posedge CLK_66)
bắt đầu
servo_count <= servo_count + 1'b1;
if (servo_count> 400000000) // Chu kỳ xung nhịp 66MHz, 1 / 66M * 400000000 ~ 5 giây
bắt đầu
servo_A <=! servo_A;
servo_count <= 32'b0;
kết thúc
kết thúc
reg [31: 0] ex_auto;
bắt đầu ban đầu
ex_auto <= 32'b0;
servo_auto <= 1'b0;
kết thúc
always @ (posedge CLK_66)
bắt đầu
if (servo_A == 1'b1)
bắt đầu
ex_auto <= ex_auto + 1'b1;
if (ex_auto> 100000) // Chu kỳ xung nhịp 66MHz, PWM này là ~ 1,5ms, servo quay đến 120 độ
bắt đầu
servo_auto <=! servo_auto;
ex_auto <= 32'b0;
kết thúc
kết thúc
if (servo_A == 1'b0)
bắt đầu
ex_auto <= ex_auto + 1'b1;
if (ex_auto> 10000) // Chu kỳ xung nhịp 66MHz, PWM này là ~ 0,15ms, servo xoay đến 0 độ
bắt đầu
servo_auto <=! servo_auto;
ex_auto <= 32'b0;
kết thúc
kết thúc
kết thúc
Bước 4: Tải lên mã Verilog
Nhấp vào "Bắt đầu biên dịch". Nếu không có thông báo lỗi nào được hiển thị, hãy chuyển đến "Lập trình viên" để hoàn tất thiết lập phần cứng. Hãy nhớ cập nhật tệp pof trong "Thay đổi tệp" nếu cần. Nhấp vào "Bắt đầu" để tải lên mã.
Rốt cuộc, bạn sẽ thấy rằng động cơ servo được quay theo chu kỳ.