đếm Xung Encoder Và Xác định Chiều Quay - Dien Tu Viet Nam

  • Đăng ký hoặc đăng nhập
    • Logging in... Ghi Nhớ? Ðăng Nhập Forgot password or user name? hoặc Đăng ký
    • Log in with Facebook
  • Nếu đây là lần đầu tiên đến với Điện Tử Việt Nam, bạn có thể đọc phần Hỏi đáp bằng cách nhấn vào liên kết. Có thể bạn cần đăng kí trước khi có thể gửi bài . Để bắt đầu xem bài viết, chọn diễn đàn bạn muốn thăm dưới đây.
Thông báo Collapse No announcement yet. đếm xung encoder và xác định chiều quay Collapse X Collapse
  • Bài viết
  • Hoạt động gần đây
  • Tìm kiếm
  • Trang of 2
  • Lọc
  • Giờ All Time hôm nay Last Week Last Month
  • Show All Discussions only Photos only Videos only Links only Polls only Events only
Filtered by: Clear All new posts Trước 1 2 template Next
  • thanhnguyen0 thanhnguyen0 Thành viên tích cực
    • Tham gia: May 2008
    • Bài viết: 102
    • Share
    • Tweet
    #1

    đếm xung encoder và xác định chiều quay

    14-12-2009, 10:39 các bạn trả lời giúp mình một câu hỏi này nhé: nội dung : mình làm bài tập đọc encoder, gửi chiều quay và số xung đọc được của chiều quay đó lên cho máy tính (mình dùng encoder tuơng đối)(mình có kèm theo code viết trong c)- trên máy tính khi mình thử với nút nhấn thì nó nhận ổn định lắm, nhưng khi đưa encoder thât nối với VDK thì nó nhảy loạn xạ, trong chuơng trình viết cho VDK mình dùng ngắt ngoài 1 nối với 1 chân tạo xung encoder, khi nào có ngắt ngoài thì mình kiểm tra tiếp xung còn lại, nếu xung còn lại đang ở mức 1 thì xác định nó dang quay thuận - nếu đang ở mức 0 thì là quay nghịch, code mình viết như vậy đấy, mà sao khi mình thử với encoder quay bằng tay(chỉ quay theo một chiều duy nhất) thế mà có lúc nó nó gửi lên cho máy tính đang quay thuận có lúc gửi cho máy tính là quay nghịch- còn đếm xung cũng vậy, đếm lung tung. huhu ai đã làm về encoder rồi vui lòng giúp em với em cảm ơn code: #include<reg51.h> #include<math.h> sbit xung_a=P3^3; // thu xung a cua encoder-ngat ngoai 1 -PIN 13 sbit xung_b=P1^7; //thu xung b cua encoder bit thu; void isr_external1(void) interrupt 2 { //delayms(14); thu=xung_b; if(thu==1) gui_serial('k'); //gui kt quay nguoc chieu kim dong ho else gui_serial('c'); //quay cung chieu dong ho led=~led; } void main(void) { TMOD=0x20; TH1=-3; TR1=1; SM1=1; REN=1; EA=1; EX1=1; IT1=1; xung_a=1; xung_b=1; TI=0; while(1); } void gui_serial(unsigned char tam) { TI=0; SBUF=tam; while(TI==0); } Tags: None
  • Mr_se7en Mr_se7en Thành viên tích cực
    • Tham gia: Mar 2009
    • Bài viết: 192
    • Share
    • Tweet
    #2 14-12-2009, 20:22 Nguyên văn bởi thanhnguyen0 Xem bài viết các bạn trả lời giúp mình một câu hỏi này nhé: nội dung : mình làm bài tập đọc encoder, gửi chiều quay và số xung đọc được của chiều quay đó lên cho máy tính (mình dùng encoder tuơng đối)(mình có kèm theo code viết trong c)- trên máy tính khi mình thử với nút nhấn thì nó nhận ổn định lắm, nhưng khi đưa encoder thât nối với VDK thì nó nhảy loạn xạ, trong chuơng trình viết cho VDK mình dùng ngắt ngoài 1 nối với 1 chân tạo xung encoder, khi nào có ngắt ngoài thì mình kiểm tra tiếp xung còn lại, nếu xung còn lại đang ở mức 1 thì xác định nó dang quay thuận - nếu đang ở mức 0 thì là quay nghịch, code mình viết như vậy đấy, mà sao khi mình thử với encoder quay bằng tay(chỉ quay theo một chiều duy nhất) thế mà có lúc nó nó gửi lên cho máy tính đang quay thuận có lúc gửi cho máy tính là quay nghịch- còn đếm xung cũng vậy, đếm lung tung. huhu ai đã làm về encoder rồi vui lòng giúp em với em cảm ơn code: #include<reg51.h> #include<math.h> sbit xung_a=P3^3; // thu xung a cua encoder-ngat ngoai 1 -PIN 13 sbit xung_b=P1^7; //thu xung b cua encoder bit thu; void isr_external1(void) interrupt 2 { //delayms(14); thu=xung_b; if(thu==1) gui_serial('k'); //gui kt quay nguoc chieu kim dong ho else gui_serial('c'); //quay cung chieu dong ho led=~led; } void main(void) { TMOD=0x20; TH1=-3; TR1=1; SM1=1; REN=1; EA=1; EX1=1; IT1=1; xung_a=1; xung_b=1; TI=0; while(1); } void gui_serial(unsigned char tam) { TI=0; SBUF=tam; while(TI==0); } Mình đang làm đồ án về cái đề tài giống bạn. Mình sử dụng 89xxx, encoder 100 xung, xung A và B mình đưa vào 2 chân T0 và T1 Mình chưa viết được chương trình giao tiếp máy tính nữa. Có gì bạn giúp đỡ mình với nhé ,cung thảo luận và chia sẻ. Bạn gửi đề tài vào email nay nhé: [email protected] PS: Cùng trao đổi nhé

    Comment

    Gửi bài viết Huỷ bỏ
  • designer designer Thành viên tích cực
    • Tham gia: May 2008
    • Bài viết: 268
    • Share
    • Tweet
    #3 14-12-2009, 20:57 Sao bạn không đềm số xung và hiển thị số xung đếm được lên PC, còn chiều quay thì nên dùng led để hiển thị trước đã vì khi bạn dùng tay quay có thể lúc bạn buông tay ra để quay lần tiếp theo thì động cơ bị "giật lùi" nên VDK sẽ đọc là chiều ngược lại. Bạn cấp nguồn cho động cơ quay liên tục thử xem chiều đọc được có bị lộn nữa không! Mình viết bằng ASM nên nên không biết nói code của bạn thế nào.

    Comment

    Gửi bài viết Huỷ bỏ
  • thanhnguyen0 thanhnguyen0 Thành viên tích cực
    • Tham gia: May 2008
    • Bài viết: 102
    • Share
    • Tweet
    #4 14-12-2009, 23:29 Nguyên văn bởi designer Xem bài viết Sao bạn không đềm số xung và hiển thị số xung đếm được lên PC, còn chiều quay thì nên dùng led để hiển thị trước đã vì khi bạn dùng tay quay có thể lúc bạn buông tay ra để quay lần tiếp theo thì động cơ bị "giật lùi" nên VDK sẽ đọc là chiều ngược lại. Bạn cấp nguồn cho động cơ quay liên tục thử xem chiều đọc được có bị lộn nữa không! Mình viết bằng ASM nên nên không biết nói code của bạn thế nào. như bạn nói có thể đúng là động cơ khi quay bằng tay có thể bị giật lùi. nên nó nhảy tùm lum, mình cho encoder gửi xung liên tục lên PC, có nghĩa là mỗi khi có ngắt ngoài là gửi lên máy tính liền, cách này chỉ áp dụng với động cơ quay với tốc độ chậm, còn khi mình tăng tốc động cơ lên nhanh hơn thì trên PC nó "đơ" luôn. kg biết mọi người có ý kiến hay cách nào khác để đọc giá trị của encoder chính xác hơn kg thì giúp mình với !!! cảm ơn nhiều

    Comment

    Gửi bài viết Huỷ bỏ
  • thanhnguyen0 thanhnguyen0 Thành viên tích cực
    • Tham gia: May 2008
    • Bài viết: 102
    • Share
    • Tweet
    #5 14-12-2009, 23:30 Nguyên văn bởi Mr_se7en Xem bài viết Mình đang làm đồ án về cái đề tài giống bạn. Mình sử dụng 89xxx, encoder 100 xung, xung A và B mình đưa vào 2 chân T0 và T1 Mình chưa viết được chương trình giao tiếp máy tính nữa. Có gì bạn giúp đỡ mình với nhé ,cung thảo luận và chia sẻ. Bạn gửi đề tài vào email nay nhé: [email protected] PS: Cùng trao đổi nhé chào bạn, có gì mình cùng trao đổi nha!! à mà mình làm là kg phải đề tài đâu bạn ạ, chỉ là bài tập thôi bạn.

    Comment

    Gửi bài viết Huỷ bỏ
  • Mr_se7en Mr_se7en Thành viên tích cực
    • Tham gia: Mar 2009
    • Bài viết: 192
    • Share
    • Tweet
    #6 14-12-2009, 23:45 Nguyên văn bởi thanhnguyen0 Xem bài viết chào bạn, có gì mình cùng trao đổi nha!! à mà mình làm là kg phải đề tài đâu bạn ạ, chỉ là bài tập thôi bạn. Ok! bạn gửi vào email mình đi rồi có địa chỉ mình gửi lại cho bạn sơ đồ và mô phỏng . Nhớ gửi cả giao tiếp nữa nhé (full) để mình cùng nghiên cứu

    Comment

    Gửi bài viết Huỷ bỏ
  • Mr_se7en Mr_se7en Thành viên tích cực
    • Tham gia: Mar 2009
    • Bài viết: 192
    • Share
    • Tweet
    #7 14-12-2009, 23:49 Nguyên văn bởi thanhnguyen0 Xem bài viết như bạn nói có thể đúng là động cơ khi quay bằng tay có thể bị giật lùi. nên nó nhảy tùm lum, mình cho encoder gửi xung liên tục lên PC, có nghĩa là mỗi khi có ngắt ngoài là gửi lên máy tính liền, cách này chỉ áp dụng với động cơ quay với tốc độ chậm, còn khi mình tăng tốc động cơ lên nhanh hơn thì trên PC nó "đơ" luôn. kg biết mọi người có ý kiến hay cách nào khác để đọc giá trị của encoder chính xác hơn kg thì giúp mình với !!! cảm ơn nhiều Đúng là khi encoder quay bằng tay có thể bị giật lùi vì trục encoder ko tròn mà có cạnh. mình vừa chế 1 cái bánh xe và 1 cái động cơ cho encoder quay. Dùng biến áp thay đổi được điện áp để điều khiển động cơ

    Comment

    Gửi bài viết Huỷ bỏ
  • designer designer Thành viên tích cực
    • Tham gia: May 2008
    • Bài viết: 268
    • Share
    • Tweet
    #8 15-12-2009, 00:07 Nguyên văn bởi thanhnguyen0 Xem bài viết như bạn nói có thể đúng là động cơ khi quay bằng tay có thể bị giật lùi. nên nó nhảy tùm lum, mình cho encoder gửi xung liên tục lên PC, có nghĩa là mỗi khi có ngắt ngoài là gửi lên máy tính liền, cách này chỉ áp dụng với động cơ quay với tốc độ chậm, còn khi mình tăng tốc động cơ lên nhanh hơn thì trên PC nó "đơ" luôn. kg biết mọi người có ý kiến hay cách nào khác để đọc giá trị của encoder chính xác hơn kg thì giúp mình với !!! cảm ơn nhiều Bạn đang hỏi vì sao chương trình của bạn xác định chiều quay không đúng nên mình nói chung như vậy, còn về PC bị "đơ" còn phụ thuộc vào tốc độ truyền nhận dữ liệu, bạn truyền lên PC lúc nào nữa (nếu mỗi ần co ngắt ngoài là truyền lên PC 1 lần thì không "đơ" mới lạ). Bạn có thể định thời gian truyền lên PC 100ms/lần xem, nhắc lại chiều quay bạn nên dùng 2 con led hiển thị trên phần cứng trước đã rồi hãy nghĩ tới việc truyền nó lên PC, khi hiển thị led sẽ không có chuyện PC bi "đơ" vì bạn có làm gì dính đến PC nữa đâu. Có gì sai mọi người chỉ giúp mình nha.

    Comment

    Gửi bài viết Huỷ bỏ
  • duonghoang duonghoang Thành viên tích cực
    • Tham gia: Nov 2006
    • Bài viết: 599
    • Share
    • Tweet
    #9 15-12-2009, 04:14 jump: If encoder1=0 and encoder2 =0 then Goto next else Goto jump end if next: if encoder 1=1 then goto next1 else goto next end if next1: if encoder2 =1 then Print " Quay phải" else Print " Quay trái" end if Nếu encoder quay nhanh tí thì thời gian thực hiện đoạn code trên cũng ko ảnh hưởng lớn đến chương trình ^^ Have fun 0988467839

    Comment

    Gửi bài viết Huỷ bỏ
  • thanhnguyen0 thanhnguyen0 Thành viên tích cực
    • Tham gia: May 2008
    • Bài viết: 102
    • Share
    • Tweet
    #10 15-12-2009, 06:59 cảm ơn các bạn designer và duonghoang và Mr_se7en đã nhiệt tình góp ý. còn cách của bạn designer và duonghoang để mình thử lại rồi thông báo kết quả cho sau nhé . chân thành cảm ơn.

    Comment

    Gửi bài viết Huỷ bỏ
  • Mr_se7en Mr_se7en Thành viên tích cực
    • Tham gia: Mar 2009
    • Bài viết: 192
    • Share
    • Tweet
    #11 15-12-2009, 08:19 Nguyên văn bởi thanhnguyen0 Xem bài viết cảm ơn các bạn designer và duonghoang và Mr_se7en đã nhiệt tình góp ý. còn cách của bạn designer và duonghoang để mình thử lại rồi thông báo kết quả cho sau nhé . chân thành cảm ơn. Sao chưa gửi mail vậy?

    Comment

    Gửi bài viết Huỷ bỏ
  • thanhnguyen0 thanhnguyen0 Thành viên tích cực
    • Tham gia: May 2008
    • Bài viết: 102
    • Share
    • Tweet
    #12 15-12-2009, 10:51 Nguyên văn bởi Mr_se7en Xem bài viết Sao chưa gửi mail vậy? đợi tui viết cái code, mốt nộp bài tập mà cái encoder chưa đọc ổn định nữa, bực mình ghê, bây giờ đang đang chạy đua với thời gian đây, chờ tui rảnh rảnh tí tui gửi cho nha.!

    Comment

    Gửi bài viết Huỷ bỏ
  • Mr_se7en Mr_se7en Thành viên tích cực
    • Tham gia: Mar 2009
    • Bài viết: 192
    • Share
    • Tweet
    #13 16-12-2009, 11:08 Nguyên văn bởi thanhnguyen0 Xem bài viết đợi tui viết cái code, mốt nộp bài tập mà cái encoder chưa đọc ổn định nữa, bực mình ghê, bây giờ đang đang chạy đua với thời gian đây, chờ tui rảnh rảnh tí tui gửi cho nha.! Ok, thanks bạn nhiều

    Comment

    Gửi bài viết Huỷ bỏ
  • Mr_se7en Mr_se7en Thành viên tích cực
    • Tham gia: Mar 2009
    • Bài viết: 192
    • Share
    • Tweet
    #14 27-12-2009, 09:29 Bạn đã làm xong chưa? sao chưa thấy gửi wa cho mình vậy???????????

    Comment

    Gửi bài viết Huỷ bỏ
  • tri_cuong46 tri_cuong46 Thành viên chính thức
    • Tham gia: Jun 2007
    • Bài viết: 86
    • Share
    • Tweet
    #15 29-12-2009, 08:53 Mình làm cái này rồi, lúc đó cũng hiển thị quay giật lùi khi động cơ sắp dừng lại. Tuy nhiên sau khi tối ưu thời gian xử lý ngắt cho mỗi lần ngắt thì hết, đảm bảo sai số encode gần như là không. Mình viết chương trình ở đây bằng ASM bạn có thể tham khảo. Chương trình viết bằng C mình mất rồi, bạn có thể chuyển qua C được. Còn nếu không chạy được nữa thì có lẽ nên kiểm tra lại encoder đi bạn ạ. http://dientuvietnam.net/forums/showthread.php?t=31853 Ở đây có cả hiển thị giao điện bằng máy tính viết bằng VB, bạn chỉ cần viết chương trình vxl tương thích với chương Vb là có thể điều khiển được động cơ luôn. Còn chương trình C để mình tìm lại đã. Nếu cần mình sẽ gởi bạn chương trình VB hoàn chỉnh. Thân chào! Last edited by tri_cuong46; 29-12-2009, 08:59. Cường - Giải Pháp IOT Việt https://iotvn.vn

    Comment

    Gửi bài viết Huỷ bỏ
Trước 1 2 template Next Về tác giả Collapse thanhnguyen0 Tìm hiểu thêm về thanhnguyen0 Bài viết mới nhất Collapse
  • Ck33spkt Trả lời cho Xin hỏi cách đấu dây cục lọc điện bởi Ck33spkt Theo ảnh bạn gửi thì phía bên trái là đầu vào, phía bên phải là đầu ra. Mỗi bên trái, phải có 5 con ốc để bắt dây điện. Tính từ trên xuống dưới, thì ốc số 1, số 2 chung nhau. Ốc số 3, số 4 chung nhau, riêng ốc số 5 có một mình...
    • Channel: Nguồn!
    28-02-2026, 22:05
  • vi van pham Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây! bởi vi van pham Suno nó chỉ cho Creat 10 lần 1 ngày, nếu đã hết 10 lần thì qua ngày hôm sau mới creat được. Sáng nay tôi đã cho ca sĩ Suno hát được rồi, nhưng ca sĩ hát sửa giai điệu nhiều quá. Suno chơi khí cụ bản nhạc thì ok, nhưng hát thì tự sửa trường...
    • Channel: Tâm tình dân kỹ thuật
    28-02-2026, 08:56
  • dinhthuong92 Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây! bởi dinhthuong92 Bác click vào dấu 3 chấm bên phải bản nhạc upload cho nó đổ menu. Bác tìm và click vào "Cover" thì nửa màn hình bên trái hiện tên bản nhạc đã up, bác gõ lyrics vào phần lyrics, xong rồi nhấn nut "Creat" ở dưới là được....
    • Channel: Tâm tình dân kỹ thuật
    27-02-2026, 18:40
  • sidien Trả lời cho Xin hỏi cách đấu dây cục lọc điện bởi sidien
    • Channel: Nguồn!
    27-02-2026, 17:01
  • sidien Xin hỏi cách đấu dây cục lọc điện bởi sidien Tôi là thành viên mới chưa biết đăng bài đúng cách, có gì sai xin các bạn quản trị bỏ qua. Tôi có một cục lọc điện Nhật bãi mà không biết cách đấu dây. Xin hỏi anh em diễn đàn chỉ dùm tôi cách đấu dây đúng. Xin cảm ơn nhiều 1 Photo
    • Channel: Nguồn!
    27-02-2026, 17:01
  • vi van pham Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây! bởi vi van pham Sheet nhạc của tôi chơi guitar file mang tên. gpx. Up lên Suno không chịu phải đổi sang file .midi. Suno vẫn không chịu đòi chuyển sang file mp3. Chuyển sang file mp3 Uno đã đọc và chơi được bản nhạc còn ca sĩ Suno hát thì tôi không biết làm....
    • Channel: Tâm tình dân kỹ thuật
    27-02-2026, 10:20
  • vi van pham Trả lời cho Hàn chì thiếc lên nhôm. bởi vi van pham Nhà thùng bị phu nhân ta nhồi sọ, "uống riệu với lão ấy, ổng thăng thiên bay về trời lúc nào không biết." Nhà thùng sợ quá, bỏ ta cô đơn đành độc ẩm. Mà phu nhân ta lo cho sức khỏe của ta mà. Thế thì ta đành làm thợ tình...
    • Channel: Tâm tình dân kỹ thuật
    26-02-2026, 23:29
  • mèomướp Trả lời cho Kỳ lạ mạch nguồn xung 290v Dc bởi mèomướp Dạ khi muốn sáng cả thì nó nháy tốc độ cao để mắt chú hông nhận ra chớp tắt ạ. Màn hình hiển thị thường gặp đều phải quét kiểu tần số cao lừa mắt ấy ạ... ( trừ loại màn hình máy đọc sách là ko lừa mắt)
    • Channel: Điện tử dành cho người mới bắt đầu
    26-02-2026, 20:53
  • trung30000 Trả lời cho Kỳ lạ mạch nguồn xung 290v Dc bởi trung30000 Bác mèo mướp giải thích ở chế độ nháy như vậy em đã hiểu, nhưng sau khi nháy xong chuyển qua chế độ sáng cả bốn đèn , vậy ở chế độ sáng 4 đèn cùng lúc này giải thích như thế nào vậy bác!...
    • Channel: Điện tử dành cho người mới bắt đầu
    26-02-2026, 20:03
  • mèomướp Trả lời cho Kỳ lạ mạch nguồn xung 290v Dc bởi mèomướp Dạ chú đa vít đang bận mừng tuổi ạ. Led của chú chớp được là do nó mắc ngược chiều nhau, điện ra chiều của con nào thì con ấy sáng ạ...
    • Channel: Điện tử dành cho người mới bắt đầu
    26-02-2026, 12:11
Xem toàn bộ Copyright © 2000-2026 Dientuvietnam.net. Founded by BinhAnh. Developed by R&P. All rights reserved. Forum software powered by vBulletin® Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Múi giờ GMT+7. Trang này được tạo vào lúc 06:54. Đang tải... Ðồng ý Không OK OK Huỷ bỏ X

Từ khóa » đếm Xung Encoder Bằng Arduino