Thông báo

Collapse
No announcement yet.

ADC nhieu dau vao su dung MUX4 voi nhung thac mac

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

  • ADC nhieu dau vao su dung MUX4 voi nhung thac mac

    Lai mot lan nua nho toi cac bac gup do. Tu khi tham gia dien dan ma chua dong gop dc gi. Chi biet hoi thoi, ngai qua di mat.
    Van de em thac mac o day chinh la su dung ADC nhieu dau vao.
    Cau hinh phan cung cua em gom co:
    - ADCINCVR
    - MUX4
    - PGA
    - Timer16
    - LCD
    mạch có 2 đầu vào tương tự được đưa vào P0.1 và P0.7. EM chi dung mot ADC thoi voi hai dau vao nay.
    Và đây là chương trình test thử của em:

    WORD wADCData1;
    WORD wADCData2;
    float Data;

    void main()
    {
    WORD tram,chuc,donvi,temp;
    LCD_1_Start();
    AMUX4_1_Start();
    PGA_1_SetGain(PGA_1_G1_00);
    PGA_1_Start(PGA_1_HIGHPOWER);
    ADCINCVR_1_Start(ADCINCVR_1_HIGHPOWER);
    ADCINCVR_1_GetSamples(0);
    LCD_1_Position(0,0);
    LCD_1_PrCString("Ready!");
    Timer16_1_WritePeriod(9999);
    Timer16_1_EnableInt();
    M8C_EnableGInt;
    Timer16_1_Start();
    while(1)
    {
    LCD_1_Position(0,0);
    LCD_1_PrHexInt(wADCData1);
    LCD_1_Position(1,0);
    LCD_1_PrHexInt(wADCData2);

    }
    }
    void Timer16_1_ISR(void)
    {
    // lay du lieu tu dau vao thu nhat
    AMUX4_1_InputSelect(AMUX4_1_PORT0_1);
    ADCINCVR_1_ClearFlag();
    //wait for Valid Data
    while(0 == ADCINCVR_1_fIsDataAvailable);
    wADCData1 = ADCINCVR_1_iGetData();
    // lay du lieu tu dau vao thu hai
    AMUX4_1_InputSelect(AMUX4_1_PORT0_7);
    ADCINCVR_1_ClearFlag();
    //wait for Valid Data
    while(0 == ADCINCVR_1_fIsDataAvailable);
    wADCData2 = ADCINCVR_1_iGetData();

    }

    Sau khi biên dịch , nạp và chạy thì em thấy kết quả của hai kênh là hoàn toàn giống nhau. Và chính là giá trị của P0.7.
    Nếu em chỉ thử từng phần, tức là mỗi chương trình em viết chỉ sử dụng cho một chân thì chạy rất ổn.
    Em nghĩ là do MUX, ko biết có đúng không.
    Nhưng theo em hiểu thì trong hàm ngắt Timer nó sẽ hoạt động như sau:
    - Ban đầu MUX chọn P0.1
    - ADC chuyển đổi và lưu vào wADCData1
    - Sau đó MUX lại chọn P0.7
    - và ADC lại chuyển đổi lưu vào wADCData2
    Hai kết quả này được hiển thị ra LCD. Nhưng nếu đúng như vậy thì nó phải khác nhau chứ.
    Bác nào biết xin chỉ giúp.
    Hoặc nếu đã làm project về phần này rồi thì cho em xin luôn.
    Cả ngày hôm nay em làm về phần này mà mãi không xong, ức chế quá, không cả ngủ được.
    Cảm ơn các bác rất nhiều.
    Kel'Thuzads
    Mail:minhnguyen.ac@gmail.com

  • #2
    Giữa 2 lần đọc P0.1 và P0.7 bạn nên để một khoảng thời gian trễ. Có thể cho thời gian ngắt bé một nửa. Dùng một biến đếm ngắt. Lẻ thì đọc P0.1, chẵn thì đọc P0.7. Vậy sẽ an toàn hơn.
    CUNG CẤP PSOC, MẠCH NẠP
    CHUYỂN ĐỔI USB <-> RS485 AutoBaud
    RS232 <-> RS485 MultiBaud
    MẠCH NẠP USBPPI S7-200
    Mobile: 0906076116
    Email:

    Comment


    • #3
      Cảm ơn anh Encoder. để em thử xem sao. nhưng không biết là có được không nữa. Và nếu được thì có thể chấp nhận được không.
      Sở dĩ em nói có chấp nhận được không là như thế này: Em đang tìm hiểu sự ảnh hưởng lẫn nhau của hai thông số độ ẩm và nhiệt độ của một buồng kín nhỏ. Em đang tìm cách điều khiển khí hậu trong buồng đó(hai thông số nhiệt độ và độ ẩm thôi). Em đang tìm hiểu và xác định các hàm truyền đạt của đối tượng. Nếu cho thời gian trễ giữa hai lần đọc cổng thì có được không? (em thì vẫn chưa biết cách tính và viết hàm trễ trong PSOC như thế nào, có giống với 8051 ko? anh có thể giúp em phần này không?), Còn nếu dùng ngắt đọc lần lượt thì có được không, tức là có thể nghiên cứu dược ảnh hưởng của hai thông số này không(em sợ không chính xác). Vì thông thường mình phải lấy số liệu cùng lúc.
      Anh hãy giúp em vấn đề này với vì nó rất quan trọng đối với em.
      Cảm ơn anh rất nhiều.
      Kel'Thuzads
      Mail:minhnguyen.ac@gmail.com

      Comment


      • #4
        Vì từ giờ đến thứ 5 em phải có cách giải quyết cho vấn đề này và kết quả ban đầu của nó. Nếu không là sẽ khó ăn nói với thầy giáo, mong bác giúp đỡ.
        Kel'Thuzads
        Mail:minhnguyen.ac@gmail.com

        Comment


        • #5
          Nếu bạn cần đọc cả nhiệt độ và độ ẩm đồng thời thì bạn nên dùng 2 ADC đọc riêng rẽ, hoặc dùng DualADC thì hay hơn. với DualADC bạn sẽ mất 4 khối số và 2 khối tương tự, độ phân giải có thể lên 13bits không dấu. nếu bạn sử dụng P2_1 làm một đầu vào Analog thì sẽ đỡ tốn một bộ PGA. còn dùng P0.1 và P0.7 thì sẽ phải mất 2 PGA (nhưng không sao bạn vẫn còn dư analog module). Tôi nghĩ đó là phương pháp thích hợp đôi với bài toán của bạn. và bạn cũng không cần thiết phải dùng đến AMUX4 nữa. Bạn nên đọc ADC ở vòng lặp chính, còn ở chương trình ngắt mới xử lý dữ liệu đọc được (hiển thì LCD,....)
          CUNG CẤP PSOC, MẠCH NẠP
          CHUYỂN ĐỔI USB <-> RS485 AutoBaud
          RS232 <-> RS485 MultiBaud
          MẠCH NẠP USBPPI S7-200
          Mobile: 0906076116
          Email:

          Comment


          • #6
            PS: Bạn đang làm đồ án tốt nghiệp à. bạn làm với thầy nào của bộ môn thế?Mình cũng xuất thân là dân DKTD Bach khoa đây.
            CUNG CẤP PSOC, MẠCH NẠP
            CHUYỂN ĐỔI USB <-> RS485 AutoBaud
            RS232 <-> RS485 MultiBaud
            MẠCH NẠP USBPPI S7-200
            Mobile: 0906076116
            Email:

            Comment


            • #7
              vâng, đúng là em đang làm đồ án tốt nghiệp với thầy Hòa.
              (mạng củ chuối quá, không up đc project lên, đành mô tả vậy)
              Bài toán đầy đủ của em như sau:
              - Nhận hai tín hiệu nhiệt độ và độ ẩm từ cảm biến, sau đó sử lý và đưa ra điều khiển đối tượng bên ngoài. Đầu ra điều khiển sử dụng DAC9. Bộ điều khiển sử dụng PI.
              - Hai tín hiệu từ cảm biến này được đưa trực tiếp tới PSoC, không qua bộ chuyển đổi đo j cả.
              - Em phải thiết kế mạch chuyển đổi đo bên trong PSoC.
              - Với một dải đo nhất định thì đầu vào nhiệt độ và độ ẩm không phải từ 0-5V (cụ thể với nhiệt độ 2.932-3.152V , còn với độ ẩm thì từ 2.04-3.9V) . Chính vì thế mà em phải thiết kế thêm 2 đầu vào để chuyển thang đo cho hai kênh này. Tất cả là mất 4 đầu vào tương tự (2-đầu vào từ cảm biến,2-đầu vào từ phần chuyển thang đo)
              - Khối khuếch đại bên trong PSoC em dùng 1 khối INSAMP(loại 2 khối), và 1 PGA.
              - Hai khối MUX4, một khối để chọn đầu vào cảm biến và đưa vào đầu vào ko đảo của INSAMP, một khối để chọn đầu vào chuyển thang đo và đưa vào đầu vào kô đảo INSAMP.
              - Khối PGA lấy từ đầu ra INSAMP và đưa vào ADCINCVR.
              Đó là PA của em. Anh xem giúp em như vậy có vấn đề j xảy ra ko?
              Theo anh thì anh sẽ chọn PA nào cho phù hợp. Vì mới tiếp xúc với PSoC nên em cũng chưa có nhiều kinh nghiệm. Mong anh giúp đỡ.
              Kel'Thuzads
              Mail:minhnguyen.ac@gmail.com

              Comment


              • #8
                Sao up mỗi file ảnh thôi mà sao ko dc nhỉ. Thử lại coi
                Kel'Thuzads
                Mail:minhnguyen.ac@gmail.com

                Comment


                • #9
                  PA của em như vậy. Nếu như anh nói ở trên dùng tới hai khối ADC thì có ý nghĩa gì không, có khả thi không nếu như có mỗi một khối chuyển đổi đo như trên. Còn nếu làm tới hai khối chuyển đổi đo cho hai kênh thì em nghĩ là không đủ chỗ mất. Còn nếu cấu hình động thì em chưa làm bao giờ. Em mới chỉ xem qua trong phần training của nó thôi nhưng co viết bằng ASM, còn dùng C thì em chịu.
                  Kel'Thuzads
                  Mail:minhnguyen.ac@gmail.com

                  Comment


                  • #10
                    Nếu mà đổi PA, tức là sẽ thiết kế mạch chuyển đổi đo ở ngoài, và đưa vào PSoC chỉ có hai đường đã đưa về chuẩn 0-5V thì PA này có khả thi hay không? Nếu như vậy thì PSoC còn có ý nghĩa gì nữa, chẳng khác gì một con VDK bình thường phải không anh!
                    Mong nhận được sự giúp đỡ của anh.
                    Kel'Thuzads
                    Mail:minhnguyen.ac@gmail.com

                    Comment


                    • #11
                      Sao không thấy ai giúp em nữa vậy. Hay là vì làm đồ án mà không giúp em nữa. Em nghĩ đó không phải là lý do chính. Quan trọng vẫn là kiến thức mình thu lượm được.
                      Kel'Thuzads
                      Mail:minhnguyen.ac@gmail.com

                      Comment


                      • #12
                        Cuối cùng thì em đã làm có giải pháp khác rồi. Có lẽ sẽ ổn. Cảm ơn bác encoder đã giúp đỡ.
                        Kel'Thuzads
                        Mail:minhnguyen.ac@gmail.com

                        Comment


                        • #13
                          2 hôm vửa rồi mình phải đi công tác nên không vào 4rum. Thì ra bạn cũng làm với thầy Hòa hả. Năm ngoái mình cũng làm với thầy, và thầy có hướng dẫn mấy nhóm làm về PSoC. Không biết thầy lâu nay thế nào? bạn cho mình gửi lời hỏi thăm đến thầy nhé. cư nói mình tên Lĩnh K46.
                          Chúc bạn làm đồ án thành công.
                          CUNG CẤP PSOC, MẠCH NẠP
                          CHUYỂN ĐỔI USB <-> RS485 AutoBaud
                          RS232 <-> RS485 MultiBaud
                          MẠCH NẠP USBPPI S7-200
                          Mobile: 0906076116
                          Email:

                          Comment


                          • #14
                            Vâng, Em sẽ gửi lời tới thầy. Thầy dạo này cũng bận lắm, đi công tác suốt. Không biết năm trước thầy có hướng dẫn nhiều không? năm nay thầy hướng dẫn nhiều lắm.
                            Kel'Thuzads
                            Mail:minhnguyen.ac@gmail.com

                            Comment

                            Về tác giả

                            Collapse

                            Kel'Thuzads Tìm hiểu thêm về Kel'Thuzads

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

                            Collapse

                            Đang tải...
                            X