Thông báo

Collapse
No announcement yet.

Đo tốc độ động cơ sử dụng encorder hiển thị led 7 đoạn

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Đo tốc độ động cơ sử dụng encorder hiển thị led 7 đoạn

    Tình hình là mình cần sự trợ giúp của các cao thủ đây ! Mình đang làm luận văn mạch điều khiển tốc độ động cơ ,đo xung sử dụng encorder hiển thị lên 4 led 7 đoạn.Động cơ mình sử dụng có encorder 240 xung/vòng.Mình lập trình bằng ngôn ngữ asm ( C mình không biết
    viết ) . số bcd 16 bit mình cũng đã cho hiển thị được.
    Nhưng vấn đề là ở chỗ : vd như mình đo xung trong 1s = 487 => (487:240).60=......(vòng/phút) ; lúc này lại xuất hiện số thập phân.
    Mình không biết phải sử lí số thập phân này như thế nào để hiển thị ra Led 7 đoan nữa.nghe nói keil-c thì dễ nhưng với asm thì mình pó tay.Xin các cao thủ chỉ giáo với!
    do xung.rar

  • #2
    Nguyên văn bởi minhchien8 Xem bài viết
    Tình hình là mình cần sự trợ giúp của các cao thủ đây ! Mình đang làm luận văn mạch điều khiển tốc độ động cơ ,đo xung sử dụng encorder hiển thị lên 4 led 7 đoạn.Động cơ mình sử dụng có encorder 240 xung/vòng.Mình lập trình bằng ngôn ngữ asm ( C mình không biết
    viết ) . số bcd 16 bit mình cũng đã cho hiển thị được.
    Nhưng vấn đề là ở chỗ : vd như mình đo xung trong 1s = 487 => (487:240).60=......(vòng/phút) ; lúc này lại xuất hiện số thập phân.
    Mình không biết phải sử lí số thập phân này như thế nào để hiển thị ra Led 7 đoan nữa.nghe nói keil-c thì dễ nhưng với asm thì mình pó tay.Xin các cao thủ chỉ giáo với!
    do xung.rar
    Bác đem số thập phân đó chia liên tiếp cho 10, mỗi lần chia lưu lại giá trị trong 1 ô nhớ rồi khi nào cần hiển thị thì lấy các giá trị số vừa lưu đó đổi sang mã hexa để đưa ra Led 7 đoạn.

    Comment


    • #3
      Cám ơn bạn!Mình đã làm được nhưng không làm theo cách chia nữa ,mà mình chống chế bằng cách chỉ đo xung encorder trong 125ms thôi.Sau đó từ phép tính mình rút gọn phân số.Vd trong 125ms mình đo được xung là Tf thì phép tính là (Tf.4.60):240=Tf (vòng/phút) .Nhưng cách này bị giới hạn ở chỗ
      Tf phải nhỏ hơn hoặc bằng 255 (8 bit) .

      Comment


      • #4
        Xem bài này là rõ nè
        http://www.dientuvietnam.net/forums/...ng-asm-119043/

        Comment


        • #5
          Số BCD 16 bit mình cũng đã cho hiển thị được trên LED.Cái mà mình đang bí bây giờ là làm sao để nhân chia số thập phân thôi.
          Bạn đọc phần đầu mình đã trình bày rõ.Mình đo xung động cơ bằng ngắt ngoài T0 trong 1s.Nếu xung lên đến 1000/s thì việc hiển thị mình cũng làm được.Nhưng vấn đề là động cơ là 240xung/vòng.MÌnh muốn tính số vòng trên phút thì (487:240).60 =121.75(vòng/phut).Để khỏi tính toán phức tạp thì mình chỉ đo xung động cơ 125 ms thôi.Lúc đó phép tính sẽ là (487.60)4.60)Lúc này LED sẽ hiện dao động giá trị là 121 hoặc 122.Mặc dù là T0 đo xung trong 125ms nhưng theo tính toán đó là số vòng/phút.Nhưng cách này vẫn chưa được chính xác lắm vì vậy mình vẫn muốn tìm hiểu thêm về cách tính toán số thập phân luôn.

          Comment

          Về tác giả

          Collapse

          minhchien8 Tìm hiểu thêm về minhchien8

          Bài viết mới nhất

          Collapse

          Đang tải...
          X