Thông báo

Collapse
No announcement yet.

[Đố vui] Thiết kế tiết kiệm chân (nâng cao)

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

  • [Đố vui] Thiết kế tiết kiệm chân (nâng cao)

    Bài toán thiết kế MCU tiết kiệm chân đã được đặt ra nhiều năm trước, và ai cũng đã biết cách giải quyết làm sao để điều khiển nhiều LED với số chân giới hạn.

    Hôm nay, F lại đặt ra một bài toán nữa, là một bài toán mở rộng hơn một tí, hy vọng sẽ có nhiều cao thủ tham gia.

    Bài toán là: "Làm thế nào để dùng 6 chân I/O điều khiển 20 LED (loại LED thường 2 chân) và 5 nút bấm, một cách độc lập".

    Xin mời các cao thủ tham gia!

    Chú thích: Có rất nhiều lần F đến gặp khách hàng, và nói với khách hàng rằng R&P có thể hỗ trợ cho giải pháp điều khiển này, thế nhưng rất nhiều khách hàng không tin là có thể làm được điều này!? Và vì thế, hôm nay đem lên đây đố vui và sẽ cùng các bạn chia sẻ các kinh nghiệm thiết kế.

    Một phần thưởng nhỏ, sẽ dành cho bạn nào có câu trả lời đúng và sớm nhất.

    Các bạn lưu ý, giải pháp này cần có cả giải pháp phần mềm và giải pháp phần cứng, và nếu giải pháp phần mềm không tốt, có thể có những trường hợp bị LED sáng mờ khi bấm nút. R&P đã hỗ trợ giải pháp này cho một doanh nghiệp tại HCM.

    Bài toán này thường gặp ở đâu?
    Bài toán này thường gặp ở các sản phẩm gia dụng thông thường, điều khiển đóng ngắt và hiển thị bằng LED đơn, hoặc các sản phẩm đồ chơi trẻ em giá rẻ.

    Cùng chờ đợi đáp án của các bạn thành viên nhé

    Chúc vui.
    Falleaf
    Công ty TNHH Thương mại và Giao nhận R&P
    58/57 Nguyễn Minh Hoàng - Phường 12 - Quận Tân Bình - TP.HCM
    mail@falleaf.net - VP: (04) 36408561 - (08) 38119870

  • #2
    không biết có cần quan tấm tới vấn đề kinh tế không nhỉ. Nếu ko thì chỉ cần 2 chân thôi ko cần tới 6 chân vẫn làm được yêu cầu trên và con nhiều hơn như vậy nữa. dung ic io expander mcp23016.
    kit phát triển các loại:
    Đã có LPC2103 kit, AT91SAM7S kit và J_Link V.7.

    Comment


    • #3
      Í, cái này mình biết rùi, gọi là charlieplexer dùng 5 chân điều khiển 20 led phải không, cái này mình có post bên AVR rồi? Cái hay hơn ở đây là lợi dụng chu kỳ quét led để quét thêm 5 phím, cách hay!!
      Attached Files
      Đẹp từng kilomét

      Comment


      • #4
        Nguyên văn bởi akc Xem bài viết
        không biết có cần quan tấm tới vấn đề kinh tế không nhỉ. Nếu ko thì chỉ cần 2 chân thôi ko cần tới 6 chân vẫn làm được yêu cầu trên và con nhiều hơn như vậy nữa. dung ic io expander mcp23016.
        Như các bạn biết, giải pháp này dùng để giảm giá thành sản phẩm, nếu không quan tâm vấn đề kinh tế thì người ta đã dùng nhiều I/O hơn rồi.

        Chú ý rằng những con PIC như PIC16F54 chẳng hạn, là những còn vi điều khiển rất rẻ tiền, bộ nhớ nhỏ, có 12 I/O. Vấn đề là làm sao để điều khiển được nhiều tín hiệu LED và nhiều nút bấm hơn để phù hợp với các sản phẩm rẻ tiền.

        Chúc vui.
        Falleaf
        Công ty TNHH Thương mại và Giao nhận R&P
        58/57 Nguyễn Minh Hoàng - Phường 12 - Quận Tân Bình - TP.HCM
        mail@falleaf.net - VP: (04) 36408561 - (08) 38119870

        Comment


        • #5
          Nguyên văn bởi Kilodeth Xem bài viết
          Í, cái này mình biết rùi, gọi là charlieplexer dùng 5 chân điều khiển 20 led phải không, cái này mình có post bên AVR rồi? Cái hay hơn ở đây là lợi dụng chu kỳ quét led để quét thêm 5 phím, cách hay!!
          Vậy bạn có thể trình bày ý tưởng giải thuật để quét phím này không? Làm thế nào để xác định phím được bấm hoặc không được bấm?

          Lưu ý rằng, thời gian đáp ứng của nó phải đủ để nhận ra phím được bấm, và phải xử lý cả vấn đề nhiễu trên phím bấm luôn. Đồng thời phải không được phép làm cho phím bấm khi bấm gây ảnh hưởng tới các LED.

          Vấn đề giải thuật phần mềm ở đây là vấn đề mấu chốt.

          Chúc vui.
          Falleaf
          Công ty TNHH Thương mại và Giao nhận R&P
          58/57 Nguyễn Minh Hoàng - Phường 12 - Quận Tân Bình - TP.HCM
          mail@falleaf.net - VP: (04) 36408561 - (08) 38119870

          Comment


          • #6
            Anh F, em có được tham gia không, về cái giải thuật phần mềm cho thiết kế mà bạn Kilodeth pót lên đó?

            Phần mềm:
            - Cần tạo một mảng chứa các giá trị điều khiển ON/OFF của 20 Led.
            - Sử dụng một vòng lặp for 5 lần để quét. Trong quá trình này sẽ điều khiển Led sáng hay tắt và quét phím luôn.

            Mới nghĩ ra được như vậy. Bạn nào có cách hay thì đưa ra cùng thảo luận.
            Ethernet-RS232, PIC Webserver, RFID Reader
            CallerID, Cảnh báo BTS, ...
            0988006696
            linhnc308@gmail.com
            http://linhnc308.blogspot.com

            Comment


            • #7
              Nguyên văn bởi linhnc308 Xem bài viết
              Anh F, em có được tham gia không, về cái giải thuật phần mềm cho thiết kế mà bạn Kilodeth pót lên đó?

              Phần mềm:
              - Cần tạo một mảng chứa các giá trị điều khiển ON/OFF của 20 Led.
              - Sử dụng một vòng lặp for 5 lần để quét. Trong quá trình này sẽ điều khiển Led sáng hay tắt và quét phím luôn.

              Mới nghĩ ra được như vậy. Bạn nào có cách hay thì đưa ra cùng thảo luận.
              Được chứ!

              Để đơn giản bài toán, ta có thể giảm xuống là sử dụng 4 chân để điều khiển 6 LED và 3 nút bấm, thực ra bài toán cũng tương tự nhau thôi.

              Mấy vấn đề cần chú ý đó là:
              - Không được để LED sáng quá mờ (tất nhiên số lượng 20 LED hiện giờ là chạy ổn).
              - Khi bấm nút không được ảnh hưởng tới các LED.

              Chúc vui.
              Falleaf
              Công ty TNHH Thương mại và Giao nhận R&P
              58/57 Nguyễn Minh Hoàng - Phường 12 - Quận Tân Bình - TP.HCM
              mail@falleaf.net - VP: (04) 36408561 - (08) 38119870

              Comment


              • #8
                Theo nguyên tắc hiển thị cách này thì một lúc chỉ có 1 led sáng, 3 chân hiển thị sẽ tuần tự lên mức cao, ứng với mỗi mức cao led nào sáng thì chân cathode xuống mức thấp, led nào tắt thì trở kháng cao.

                Các chân ra cũng nối với phím bấm, chập chung đầu kia ba phím bấm cho vào một chân input, nối đất bằng điện trở 10k. Khi nào ngõ vào mức cao thì kiểm tra xem chân nào đang tích cực mức cao suy ra phím tương ứng được nhấn. Nếu dùng luôn điện trở pullup nội thì đảo ngược cách quét, giải thuật vậy mình nghĩ là không ảnh hưởng độ sáng led và có thể viết thêm chương trình để chống rung phím
                Đẹp từng kilomét

                Comment


                • #9
                  Quên một điều nữa, đó là không được phép sử dụng điện trở nội kéo lên. Bởi giải pháp này là giải pháp dành cho chip rẻ tiền như kiểu PIC16F54, không có điện trở nội kéo lên. Nếu dùng các dòng chip có điện trở nội kéo lên và điều khiển được thì giá thành sẽ cao lên.

                  Chúc vui.
                  Falleaf
                  Công ty TNHH Thương mại và Giao nhận R&P
                  58/57 Nguyễn Minh Hoàng - Phường 12 - Quận Tân Bình - TP.HCM
                  mail@falleaf.net - VP: (04) 36408561 - (08) 38119870

                  Comment


                  • #10
                    Bạn nào từng có bộ Kit PICKit1 của Microchip thì sẽ có được quyển Tip & Trick. Trong quyển đó có nói rất rõ về các thiết kế tiết kiệm chân vi điều khiển để kết hợp điều khiển Led và bàn phím.
                    Ethernet-RS232, PIC Webserver, RFID Reader
                    CallerID, Cảnh báo BTS, ...
                    0988006696
                    linhnc308@gmail.com
                    http://linhnc308.blogspot.com

                    Comment


                    • #11
                      Hí hoáy một hồi cũng ra đc 1 cái mạch. Ngó lại, ủa, giông giống của kilodeth! Nguyên tắc sắp xếp mạch là theo mảng gồm 5 hàng và 5 cột, mỗi led đc mắc từ cột này qua hàng kia, riêng tại những hàng và cột trùng số thứ tự thì không mắc, để bớt dòng thì có thể dùng thêm 5 trở cho các hàng hoặc cột. Như vậy ta sẽ có số led là (5x5)-5=20. 5 hàng được đấu qua 5 nút nhấn để về chân còn lại (chân chung). Tổng quát nếu có n chân tín hiệu (n>2) thì mắc đc (n-1) nút nhấn và (n-1)*(n-2) led. Tuy nhiên nếu mở rộng quá nhiều led thì độ sáng sẽ giảm (do quét nhiều led thì t giảm xuống). Ngoài ra có thể dùng thêm các R kéo lên/xuống ở các chân tín hiệu.
                      Về giải thuật, trong 5 chân tín hiệu, ta sẽ tích cực từng chân một, những chân còn lại thì xuất dữ liệu của led tương ứng (theo hàng, cột), cùng lúc đọc tín hiệu phím nhấn từ chân chung để biết có phím nhấn tương ứng không. Vì dòng ra vào của mỗi chân chỉ giới hạn mức 20mA nên có thể không làm cho nhiều led sáng rõ (chẳng hạn khi cả 4 led của hàng đó đều sáng) so với khi chỉ có 1 hay 2 led, nên thay vì chỉ quét 5 lần/vòng ta có thể chia nhỏ ra 10 lần/vòng,...
                      !e

                      Comment


                      • #12
                        Cái này dễ ợt anh F à, nếu 5 chân có thể điều khiển tối đa 20 led độc lập, 6 chân thì có thể điều khiển 30 led độc lập, 7 chân thì có thể đk đc 42 led ...
                        còn vấn đề nút bấm thì sau khi làm sáng led, cho phần mềm quét phím rồi lại đk led, led sáng mờ hay không là dựa vào cách mắc điện trở, thời gian quét phím rất ngắn và sau một vài chục us mới quét một lần,(do bận quá em chưa viết phần mềm cho nó đc, nhưng mà cũng ko khó anh ạ) led được điều khiển từng con riêng biệt chứ không phải quét hay gì cả (anh thử nhìn vào sơ đồ em mới post lên xem sao nhé)
                        sơ đồ mạng chỗ em ko thể post file lên, để chiều em post lên nhận quà của anh

                        Bổ sung chút, em có thể điều khiển tối đa 20 led và 6 nút bấm chỉ với 5 chân VDK
                        Last edited by thientaisodo; 16-05-2009, 12:44.

                        Comment


                        • #13
                          Đây rồi !



                          Phải "chơi đểu" mới đưa được ảnh lên đây, hì. có 2 cách mắc bàn phím như trong hình. cách nối ở dưới được nhiều thêm 1 nút bấm. Phải không anh F ?

                          Comment


                          • #14
                            Nguyên văn bởi Kilodeth Xem bài viết
                            Í, cái này mình biết rùi, gọi là charlieplexer dùng 5 chân điều khiển 20 led phải không, cái này mình có post bên AVR rồi? Cái hay hơn ở đây là lợi dụng chu kỳ quét led để quét thêm 5 phím, cách hay!!
                            Với cách mắc này cần thêm một con điện trở kéo lên hoặc kéo xuống nữa, vì nếu như không bấm gì cả, nút sẽ bị trôi nổi điện áp.

                            Chúc vui.
                            Falleaf
                            Công ty TNHH Thương mại và Giao nhận R&P
                            58/57 Nguyễn Minh Hoàng - Phường 12 - Quận Tân Bình - TP.HCM
                            mail@falleaf.net - VP: (04) 36408561 - (08) 38119870

                            Comment


                            • #15
                              Xem ra bài này dễ xơi quá.

                              Bây giờ lại đố tiếp, nếu ta thêm vào 1 nút bấm nữa thì làm sao?

                              Như vậy mở rộng ra tiếp là 6 chân điều khiển 6 nút bấm và 20 LED. Hoặc 5 chân điều khiển 5 nút bấm và 12 LED.

                              Qua bài này, bây giờ chắc các bạn đã biết cách làm thế nào để thiết kế tiết kiệm chân một cách hiệu quả nhất rồi chứ?

                              Với giải pháp này, các bạn có thể sử dụng các dòng PIC10F với 6 chân, và 4I/O, nó cho phép các bạn điều khiển lên tới 6 LED và 4 nút bấm . Câu chuyện bắt đầu hay rồi đấy.

                              Chúc vui.
                              Falleaf
                              Công ty TNHH Thương mại và Giao nhận R&P
                              58/57 Nguyễn Minh Hoàng - Phường 12 - Quận Tân Bình - TP.HCM
                              mail@falleaf.net - VP: (04) 36408561 - (08) 38119870

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X