Page 1 of 1

Potenziometri Digitali

PostPosted: 22 Mar 2014, 14:54
by Leonardo
Ciao a tutti,

Stavo valutando il potenziometro digitale da 10K AD8402 (http://www.analog.com/en/digital-to-analog-converters/digital-potentiometers/ad8402/products/product.html) e ho realizzato su breadboard un semplice circuito con Arduino per la verifica rapida dell'integrato.

Leggo la resistenza ottenuta tramite l'ADC ed un partitore di tensione composto dalla resistenza digitale ed una da 3.3K per mantenere la corrente ad livello massimo di 1mA visto che il potenziometro digitale non accetta correnti elevate.

La relazione seppur non lineare è molto semplice, la resistenza si può ottenere tramite la seguente relazione:
R=(3.3K*3.3-3.3K*V)/V

Dove V è la tensione presente tra le due resistenze ed è data in ingresso all'ADC. Seppur non una grandissima soluzione era per verificare in linea di massima il codice di comunicazione e a grandi spanne la linearità del potenziometro.

Il codice utilizzato:

Code: Select all
// AD8402
#include <SPI.h>
#define CSn      9
#define SHDNn    2
#define SDI      12 // MOSI
#define CLK      13
#define RSn      3  // Reset to midscale
void setup() {               
  pinMode(CSn, OUTPUT);
  pinMode(SHDNn, OUTPUT);
  pinMode(SDI, OUTPUT);
  pinMode(CLK, OUTPUT);
  pinMode(RSn, OUTPUT); 
  digitalWrite(RSn, HIGH);
  digitalWrite(SHDNn, HIGH);
  digitalWrite(CSn, HIGH);
  analogReference(EXTERNAL);
  Serial.begin(9600); 
  SPI.setDataMode(SPI_MODE0);
  SPI.begin();
}
byte code = 0;
void loop() { 
  digitalWrite(CSn, LOW); 
  SPI.transfer(0x00);   // A0
  SPI.transfer(code);
  digitalWrite(CSn, HIGH); 
  delay(50);
  double A = analogRead(A0);
  double V = (3.3 * A / 1023);
  double R = (10900.0 - (3300.0 * V)) / V;
  Serial.print(code);
  Serial.print(";");
  Serial.println(R);
  code += 1;
  delay(500);
}


Il problema però è la scarsissima linearità ottenuta, in allegato il grafico della resistenza ottenuta al variare del codice passato al potenziometro digitale, dovrebbe essere lineare ma non ci si avvicina neanche lontanamente.

AD8402.png
AD8402.png (8.69 KiB) Viewed 5708 times


Qualcuno ha avuto esperienze positive coi potenziometri digitali?

Re: Potenziometri Digitali

PostPosted: 22 Mar 2014, 16:24
by Leonardo
Aggiornamento: Come al solito la breadboard fa brutti scherzi e non va molto d'accordo con SPI, probabilmente è un non-problema

Re: Potenziometri Digitali

PostPosted: 22 Mar 2014, 22:38
by deluca
Ho spesso utilizzato altri digital potentiometer, ad es AD5254 non-volatile, ma interfacciato in I2C.
Nessun prb incontrato.

Alla fine allora hai risolto?

Re: Potenziometri Digitali

PostPosted: 30 Mar 2014, 23:00
by Leonardo
Un po' in ritardo ma meglio tardi che mai, dopo aver verificato problemi di falsi contatti su breadboard ho messo nel cassetto l'integrato e buttato via la breadboard.

Successivamente ho finalizzato il PCB con un potenziometro tradizionale per motivi di spazio e routing, il potenziometro digitale sarà per altri progetti in futuro.

Grazie a tutti per l'interessamento
Ciao