


Preview text:
Báo cáo thí nghiệm Thiết kế hệ thống điều khiển
1. Để đọc tín hiệu từ encoder, cần kết nối encoder với một thiết bị đọc tín hiệu
như một vi điều khiển, một máy tính hoặc một bộ điều khiển. Sau đó, có thể
sử dụng một trong các phương pháp sau để đọc tín hiệu từ encoder:
- Đọc tín hiệu số: Encoder thông thường sẽ có các đầu ra số nhị phân hoặc
số xung để đại diện cho vị trí hoặc vận tốc. Có thể sử dụng các chân đầu
ra của encoder để đọc các tín hiệu số này và chuyển đổi chúng thành giá trị tương ứng.
- Đọc tín hiệu analog: Một số encoder có thể cung cấp tín hiệu analog,
chẳng hạn như tín hiệu dòng điện hoặc áp suất, để đại diện cho vị trí hoặc
vận tốc. Có thể sử dụng một bộ chuyển đổi tín hiệu analog để đọc các giá trị analog từ encoder.
- Sử dụng giao thức truyền thông: Có thể kết nối encoder với thiết bị đọc
tín hiệu và sử dụng các lệnh truyền thông để đọc dữ liệu từ encoder.
2. chương trình đọc và đếm encoder cả 2 kênh (nhân 4 lần)
// Encoder output to Arduino Interrupt pin. Tracks the pulse count. #define ENC_A 2 #define ENC_B 3
// Keep track of the number of right wheel pulses
long pulse_count = 0, oldcount=-1; void setup() {
// Open the serial port at 9600 bps Serial.begin(9600);
// Set pin states of the encoder
pinMode(ENC_A , INPUT_PULLUP);
pinMode(ENC_B , INPUT_PULLUP);
// Every time the pin goes high, this is a pulse
attachInterrupt(digitalPinToInterrupt(ENC_A), right_pulse, RISING);
attachInterrupt(digitalPinToInterrupt(ENC_B), left_pulse, RISING); } void loop() { if (pulse_count!=oldcount) { Serial.println(pulse_count); oldcount=pulse_count; }
if (Serial.available() > 0) { if
(Serial.read()=='r') pulse_count=0; }
// Increment the number of pulses by 1
void right_pulse() { int pinB; pinB=digitalRead(ENC_B); if
(pinB==LOW) pulse_count++; else pulse_count--; } void left_pulse() { int pinA; pinA=digitalRead(ENC_A); if (pinA==LOW) pulse_count--; else pulse_count++; } 3.
Để tính toán tốc độ dựa trên tín hiệu từ encoder, cần biết một số thông tin cơ
bản như số xung trên mỗi vòng quay của encoder (PPR - Pulse Per Revolution),
thời gian giữa các xung (T) và đơn vị đo thời gian (ví dụ: giây, mili giây).
Công thức để tính toán tốc độ dựa trên encoder là:
Tốc độ (v) = (Số xung trên một vòng quay * 60) / (PPR * T) Trong đó:
- Số xung trên một vòng quay: Số lượng xung mà encoder phát ra trong một vòng quay đầy đủ.
- PPR: Số xung trên một vòng quay của encoder.
- T: Thời gian giữa các xung.
- Tốc độ (v): Tốc độ của encoder tính bằng đơn vị vòng quay mỗi phút (RPM)
hoặcđơn vị vòng quay mỗi giây (RPS).
Ví dụ, nếu encoder có 1000 xung trên một vòng quay đầy đủ (PPR) và thời gian
giữa các xung là 10 mili giây (T), ta có thể tính toán tốc độ như sau:
Tốc độ (v) = (1000 * 60) / (1000 * 0.01) = 6000 RPM
Lưu ý rằng đơn vị thời gian (T) cần phải được chuyển đổi thành đơn vị giây nếu
công thức yêu cầu đơn vị giây.