Idea principal: He diseñado un amplificador de transimpedancia para la aplicación de conversión de corriente a voltaje. Para aumentar el rango dinámico de la corriente de entrada que se puede medir, he integrado el potenciómetro digital como resistencia de realimentación y control del valor de resistencia en el microcontrolador Arduino. Problema: el voltaje de salida de transimpedancia se está comparando con otra señal de voltaje y luego la salida de TIA se está nivelando para estar dentro del mismo rango de la otra señal de voltaje al variar los valores del potenciómetro. Pero, el valor de salida sigue aumentando y hasta que alcanza un cierto valor y luego vuelve a empezar desde cero como un bucle. Cómo detener y estabilizar el valor de salida una vez que alcanza un cierto punto. He adjuntado el esquema & código abajo:
#include <LiquidCrystal.h>
#include <SPI.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 9, 5, 4, 3, 2);
int CS1= 10;
int pot= 1;
void setup() {
// setup the dig. pot.
pinMode (CS1, OUTPUT);
SPI.begin();
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
}
void loop() {
int sensorValue = analogRead(A0);
int sensorValue2= analogRead(A1);
// Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
float voltage = (sensorValue-sensorValue2) * (5.0 / 1023.0);
lcd.begin(16, 2);
lcd.print(voltage);
float voltage2 = analogRead(A2)* (5.0 / 1023.0);
while(voltage >= voltage2 - 0.05){
pot++;
digitalPotWriteRed(pot);
}
}
void digitalPotWriteRed(int value){
SPI.beginTransaction(SPISettings(14000000, MSBFIRST, SPI_MODE0));
digitalWrite(CS1, LOW);
SPI.transfer(B00010001);
SPI.transfer(value);
digitalWrite(CS1, HIGH);
SPI.endTransaction();}