您好!
我的 TMUX1108有问题。
设置:
Arduino 型板上有两个 TMUX1108、它们均共享 A0、A1和 A2引脚、但具有不同的 EN 引脚。
现在、我将使用 AA 电池(1.5v)对 ADC 进行测试。
问题:
问题是、即使我的 AA 输入仅通过一个通道、我也会在所有通道上获得相同的读数。
因此、当使能引脚为低电平时、我会在所有通道上遇到1.5v 信号、即使在另一个 TMUX1108上也是如此。
但是、如果我只读取单个通道、我将在该通道上获得正确的值、在其他通道上获得0.0v。
因此、它与调用所有通道有关。
我很确定我没有正确地调用地址引脚、因此我正在搜索一些 C/C++示例代码。
下面是我当前运行的代码片段、没有成功、但我还包括了一个更易于遵循的屏幕截图。
void setup(){ Serial.begin(9600); pinMode(MUXA0, INPUT_PULLDOWN); pinMode(MUXA1, INPUT_PULLDOWN); pinMode(MUXA2, INPUT_PULLDOWN); pinMode(MUX1_EN, INPUT_PULLDOWN); digitalWrite(MUX1_EN, LOW); } void getMUX_Simple(){ MCP.Configuration(1,16,0,1);// setup my ADC digitalWrite(MUX1_EN, HIGH); // Writing EN pin high to Enable the MUX //Should I enable the MUX before or after writing to the A0, A1, and A2 pins? for (int i = 0; i < 8; i++){//for loop to cycle through the 8 channels delay(200); // just being super safe with this delay switch (i){ case 0: // channel 0 //Writing A0 LOW, A1 LOW, A2 LOW per the truth table for TMUX1108 digitalWrite(MUXA0, LOW); digitalWrite(MUXA1, LOW); digitalWrite(MUXA2, LOW); break; case 1: //channel 1 //Writing A0 HIGH, A1 LOW, A2 LOW per the truth table for TMUX1108 digitalWrite(MUXA0, HIGH); digitalWrite(MUXA1, LOW); digitalWrite(MUXA2, LOW); break; case 2: //channel 2 //Writing A0 LOW, A1 HIGH, A2 LOW per the truth table for TMUX1108 digitalWrite(MUXA0, LOW); digitalWrite(MUXA1, HIGH); digitalWrite(MUXA2, LOW); break; case 3: //channel 3 //Writing A0 HIGH, A1 HIGH, A2 LOW per the truth table for TMUX1108 digitalWrite(MUXA0, HIGH); digitalWrite(MUXA1, HIGH); digitalWrite(MUXA2, LOW); break; case 4: //channel 4 //Writing A0 LOW, A1 LOW, A2 HIGH per the truth table for TMUX1108 digitalWrite(MUXA0, LOW); digitalWrite(MUXA1, LOW); digitalWrite(MUXA2, HIGH); break; case 5: //channel 5 //Writing A0 HIGH, A1 LOW, A2 HIGH per the truth table for TMUX1108 digitalWrite(MUXA0, HIGH); digitalWrite(MUXA1, LOW); digitalWrite(MUXA2, HIGH); break; case 6: //channel 6 //Writing A0 LOW, A1 HIGH, A2 HIGH per the truth table for TMUX1108 digitalWrite(MUXA0, LOW); digitalWrite(MUXA1, HIGH); digitalWrite(MUXA2, HIGH); break; case 7: //channel 7 //Writing A0 HIGH, A1 LOW, A2 LOW per the truth table for TMUX1108 digitalWrite(MUXA0, HIGH); digitalWrite(MUXA1, HIGH); digitalWrite(MUXA2, HIGH); break; } MCP.NewConversion(); //initiate ADC conversion ORP[i] = (MCP.Measure()/1000.00); //take measurement digitalWrite(MUX1_EN, LOW);//disable the MUX } }
