


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.