Potenziometri Digitali

Sezione dedicata all'Hardware con particolare riferimento all'elettronica digitale, analogica e di potenza. Interfacce, periferiche, bus seriali e paralleli...

Potenziometri Digitali

Postby Leonardo » 22 Mar 2014, 14:54

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 5682 times


Qualcuno ha avuto esperienze positive coi potenziometri digitali?
Il mio blog di elettronica: http://electro-logic.blogspot.it
User avatar
Leonardo
 
Posts: 502
Joined: 29 May 2013, 22:31
Location: Parma

Re: Potenziometri Digitali

Postby Leonardo » 22 Mar 2014, 16:24

Aggiornamento: Come al solito la breadboard fa brutti scherzi e non va molto d'accordo con SPI, probabilmente è un non-problema
Il mio blog di elettronica: http://electro-logic.blogspot.it
User avatar
Leonardo
 
Posts: 502
Joined: 29 May 2013, 22:31
Location: Parma

Re: Potenziometri Digitali

Postby deluca » 22 Mar 2014, 22:38

Ho spesso utilizzato altri digital potentiometer, ad es AD5254 non-volatile, ma interfacciato in I2C.
Nessun prb incontrato.

Alla fine allora hai risolto?
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: Potenziometri Digitali

Postby Leonardo » 30 Mar 2014, 23:00

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
Il mio blog di elettronica: http://electro-logic.blogspot.it
User avatar
Leonardo
 
Posts: 502
Joined: 29 May 2013, 22:31
Location: Parma


Return to Elettronica Analogica, Digitale e di Potenza

Who is online

Users browsing this forum: No registered users and 0 guests

cron