Nghiên cứu Khoa học

Xây dựng hệ thống Điều khiển động cơ dùng FPGA

  • 14/11/2024
  • Nghiên cứu Khoa học

1.        Sơ đồ tổng quát

undefined

Hình 1: Sơ đồ tổng quát hệ thống

 

Sơ đồ tổng quát bao gồm những thành phần:

  • Computer: Dùng để nạp chương trình xuống KIT và truyền nhận dữ liệu để điều khiển.
  • NIOS II Processor: Bộ sử lý trung tâm đóng vai trò truyền nhận và sử lý dữ liệu.
  • JTAG Debug Module: Nạp chương trình xuống KIT.
  • SRAM On-chip: Bộ nhớ chương trình.
  • Avalon Bus: giao tiếp giữa các Component trong một hệ thống SoPC.

 

 undefined

Hình 2:  Chi tiết thiết kế

 2.    Chi tiết thiết kế hệ thống

2.1.       NIOS II Processor – nios2_qsys_0

Trong thiết kế này, không cần nhiều chức năng nên chọn lõi NIOS II/e.

undefined

Hình 3: Chọn phiên bản NIOS II/e

Với phiên bản NIOS II/e này chúng ta có 1 bộ vi xử lý 32bit. Với Jtag debug Module là Level 1. Gồm các thành phần tín hiệu cơ bản sau:

o         Clk: Clock Input

o         Reset_n: Reset Input

o         Data_master: Avalon Memory Mapped Master

o         Intruction_master: Avalon Memory Mapped Master

o         Jtag_debug_module_reset: Reset Output

o         Jtag_debug_module: Avalon Memory Mapped Slave

o         Custom_intruction_master: Custom Intruction Master

 2.2.       SRAM On Chip – onchip_memory2_0

undefined

Hình 4: On-chip memory

 Tạo ra bộ nhớ Ram on Chip với tổng dung lượng có phạm vi từ 0 cho đến 67108864 bytes, tùy vào hệ thống cần ít hay nhiều ô nhớ.

 

2.3.               Tạo các port I/O cho NIOS II

Tùy thuộc vào project số lượng port I/O sẽ thay đổi, trong project này ta sẽ cần 3 port I/O: 1 port để điều khiển motor, 1 port điểu khiển led, 1 port để nhận giá trị từ các switch.

Trong đó:

  • Port điều khiển motor gồm 4 bit tương đương với 4 GPIO.
  • Port điều khiển led gồm 4 bit tương đương với 4 led xanh.
  • Port nhận giá trị từ các switch gồm 16 bit tương đương với 16 switch.

 

Nhiệm vụ của các port được diễn tả như sau:

-       Với 4bits đầu ra chân GPIO ta làm tín hiệu đầu vào cho Driver L298N để điều khiển động cơ. Với 16bits đầu vào được gán với các nút trượt Switch để điều khiển động cơ theo ý muốn như khởi động động cơ, dừng động cơ, thay đổi tốc độ, hướng quay...Và cuối cùng là 4bits đầu ra gán với LED xanh để theo dõi tín hiệu của các chân GPIO. Trước mắt, hệ thống đã đầy đủ những tính năng để điều khiển động cơ bản.

 Sau đây là chương trình gán chân cơ bản của hệ thống:

 #include<system.h>

#include<io.h>

#include<stdio.h>

#include"altera_avalon_pio_regs.h"

 

#define LEGD_0 0x40;

#define LEGD_1 0x2;

#define LEGD_2 0x4;

#define LEGD_3 0x8;

 

//hàm gán chân switch

void GanChanSwich (){

 

//gán biến tốc độ cho switch 2,3,4

speed = 0x1c & IORD_ALTERA_AVALON_PIO_DATA(PIO_1_BASE);

 

//gán biến bắt đầu cho switch 5

start = 0x20 & IORD_ALTERA_AVALON_PIO_DATA(PIO_1_BASE);

 

//gán biến hướng quay cho switch 6

dir = 0x40 & IORD_ALTERA_AVALON_PIO_DATA(PIO_1_BASE);

}

// hàm đọc chân GPIO

void GhiTrangThaiGPIO(){

 

//ghi trạng thái lên địa chỉ LED tương ứng với b'0101

IOWR_ALTERA_AVALON_PIO_DATA(PIO_OUT_LED_BASE, 0x5);

 

//ghi trạng thái lên địa chỉ GPIO tương ứng với b'0101

IOWR_ALTERA_AVALON_PIO_DATA(PIO_2_BASE, 0x5);

}

Các tin khác