BÀI 09 : ENCODER TRONG STM8S .


  1. Sơ lược về lý thuyết.
  2. Để xác định được góc quay, vận tốc quay hay vị trí quay một cách chính xác thì sử dụng encoder là một biện hưu hiệu nhất. Từ các thông số mà encoder đưa về chúng ta phải xử lý và đưa ra các phương pháp điều khiển phù hợp. Thông thường các động cơ như AC Servo hay Dc Servo điều có encoder đi kèm để dễ dàng điều khiển vận tốc cũng như vị trí. Đa số các encoder đều phải cấp nguồn riêng(khác với nguồn cấp cho động cơ). Điều cơ bản cần biết về 1 encoder là độ phân giải bao nhiêu(bao nhiêu xung – càng cao càng tốt), điện áp cấp là bao nhiêu, số dây in-out.

    2 loại cấu tạo thông dụng nhất của encoder là encoder quang(bao gồm một thiết bị phát quang, 1 đĩa chia rãnh hoặc khe, 1 thiết bị thu quang) hoặc dùng cảm biến từ Hall. Người ta chia encoder ra làm 2 loại encoder tuyệt đối(độ chính xác cao, hoạt động ổn định tuy nhiên giá thành cao và tín hiệu ngõ ra phức tạp) và encoder tương đối(độ chính xác ở mức vừa, giá rẻ, dễ sử dụng).

    Encoder có nhiều loại nên cấu tạo, cách sử dụng, số dây ra, điện áp cấp là khác nhau. Tuy nhiên về cơ bản thì thường sẽ có 5 dây chính: 2 dây cấp nguồn cho encoder hoạt đông, 2 dây A,B để xác định chiều quay, 1 dây Z để xác định số vòng quay.

    Ở STM8S003F3P6 thì chỉ có TIM1 tương thích với thư viện đọc encoder. Counter của timer là 16bit đủ để đọc encoder, chúng ta có thể sử dụng ngắt timer4 tạo thời gian để tính vận tốc, sử dụng timer2 để tạo xung điều khiển động cơ. Để tính được vận tốc quay của động cơ thì chúng ta áp dụng công thức:

    V= S/T.

    • V: là vận tốc của động cơ.
    • S là quãng đường được tính bằng số xung đọc được/độ phân giải của encoder.
    • T: là thời gian để đọc được quãng đường S(ngắt timer4 được sử dụng cho mục đích này).
  3. Cấu hình đọc encoder bằng thư viện chuẩn của ST.
    1. Cấu hình chương trình con TIMER1 để sử dụng mode encoder.
    2. Cấu hình ngắt timer4.
    3. Cấu hình chương trình ưu tiên ngắt khi có 2 ngắt xảy ra.
    4. Sự kiện trong ngắt tràn của timer encoder- tim1.
    5. Sự kiện trong ngắt của timer tính thời gian – timer4.
    6. Chương trình thực thi trong main:.

    LƯU Ý :

    • Ở đây 2 chân của timer 1 tương ứng với 2 phase A,B của encoder. Giá trị đọc được là số xung đọc về trong vòng 1s. 2 chân timer enocder là 2 chân Remap nên cần sử dụng chức năng remap khi nạp(xem thêm ở bài timer).
    • Mình quan sát số xung đọc về được hiển thị lên máy tính qua UART bằng phần mềm Hercules(xem thêm ở bài UART).
    • Sử dụng khai báo +slpit để tối ưu code trong STVD(xem thêm bài ADC).
    • File cấu hình ưu tiên ngắt là stm8s_itc.c cần được add vào khi có nhiều ngắt xảy ra và cần mức ưu tiên cao hoặc thấp.
Link tải chương trình sử dụng encoder