Pagina 1 di 1

Problema a pilotare un MCP4251 con Arduino Due

MessaggioInviato: 30 apr 2025, 18:29
da alien75
Salve ho collegato un MCP4251 ad un ARDUINODUE in questo modo:
Connettore ICSP:

    - MISO collegato a pin 13 MCP4251
    - SCK collegato a pin 2 MCP4251
    - MOSI collegato a pin 3 MCP4251
    - +5V collegato a pin 14 MCP4251
    - GND collegato a pin 4 MCP4251

L'integrato usaot è precisamnete un MCP4251-104E/P quindi da 100Kohms.
Ho collegato quindi il morsetto positivo dell'ohmetro al pin 7 ed il morsetto meno al pin 6 dell MCP4251.
Ho scritto il seguente programmino di prova:
Codice: Seleziona tutto
#include "Arduino.h"
#include "MCP4251.h"
#include <SPI.h>


//pin CS per MCP4251
#define cs1 9
#define pot0ResistanceRmax 100000 // These resistance values may vary
#define pot0ResistanceRmin 0
#define pot1ResistanceRmax 100000
#define pot1ResistanceRmin 0
//creazione funzioni per gestione potenziometri 100K
MCP4251 f0(cs1, pot0ResistanceRmax, pot0ResistanceRmin, pot1ResistanceRmax, pot1ResistanceRmin);

uint16_t wiper0;
uint16_t wiper1;



//ampiezza oscillatore 1
void amp1a(long amp)
{
  //wiper1 f0
  wiper1 = f0.DigitalPotResistanceToPosition(1, amp);
  f0.DigitalPotSetWiperPosition(1, wiper1);
}



void setup() {
  // put your setup code here, to run once:
  //ampiezza oscillatore 1

  //f0.DigitalPotTerminalBConnect(0);
  f0.DigitalPotTerminalAConnect(0);
  f0.DigitalPotWiperConnect(0);
  //creazione funzioni per gestione potenziometri 100K
  MCP4251 f0(cs1, pot0ResistanceRmax, pot0ResistanceRmin, pot1ResistanceRmax, pot1ResistanceRmin);
}

void loop() {
  // put your main code here, to run repeatedly:
  amp1a(100000);
}


L'ho compilaot e trasferito nell'arduino e dovrei vedere 100Kohms nel tester ma ne vedo solo 22.8k,
perché?
Aiutatemi per favore.
MCP sembra non "rispondere".

Re: Problema a pilotare un MCP4251 con ARDUINODUE

MessaggioInviato: 30 apr 2025, 20:26
da GioArca67
Per prima cosa scarica un esempio fra i file della libreria che usi e vedi se funziona....

Re: Problema a pilotare un MCP4251 con ARDUINODUE

MessaggioInviato: 30 apr 2025, 20:37
da boiler
Chip select?
Timing?

Re: Problema a pilotare un MCP4251 con ARDUINODUE

MessaggioInviato: 30 apr 2025, 22:58
da luxinterior
Ho visto che ci sono un pin e un bit di shutdown
Prova a scrivere e a rileggere un registro o a leggere il registro di stato che ha un pattern noto per alcuni bit così ti togli il dubbio sui collegamenti e la comunicazione
Fai una verifica preliminare dello stato delle linee di comunicazione a riposo verifica che i livelli di tensione siano quelli che ti aspetti
Se hai un oscilloscopio controlla che ci sia effettivamente una comunicazione sulla seriale e come dice boiler che siamo rispettati tutti i tempi

Re: Problema a pilotare un MCP4251 con ARDUINODUE

MessaggioInviato: 1 mag 2025, 0:27
da alien75
boiler ha scritto:Chip select?
Timing?


Chip select: #define cs1 = 9

Ho scaricato dagli esempi questo codice e non funziona nemmeno cambiando i valori di pos:
Codice: Seleziona tutto
#include "Arduino.h"
#include <MCP4251.h>

#define chipSelectPin 9
#define pot0ResistanceRmax 98600 // These resistance values may vary
#define pot0ResistanceRmin 113.5
#define pot1ResistanceRmax 98600
#define pot2ResistanceRmin 130

MCP4251 digitalPot(chipSelectPin, pot0ResistanceRmax, pot0ResistanceRmin, pot1ResistanceRmax, pot2ResistanceRmin);

bool potNum = 1;
uint16_t pos;

void setup()
{
    Serial.begin(9600);
    digitalPot.begin();
}

void loop()
{
    pos = 25;
    digitalPot.DigitalPotSetWiperPosition(potNum, pos);

    while(1)
    {
    }
}

Re: Problema a pilotare un MCP4251 con ARDUINODUE

MessaggioInviato: 1 mag 2025, 0:55
da alien75
boiler ha scritto:Chip select?
Timing?


Allego foto dei timing:
    - MISO traccia rosa
    - CK traccia gialla
    - MOSI traccia azzurra

Re: Problema a pilotare un MCP4251 con Arduino Due

MessaggioInviato: 1 mag 2025, 18:09
da boiler
La qualità dell'immagine che hai allegato è rappresentativa per il livello di tutta l'interazione.
Buona fortuna.

Re: Problema a pilotare un MCP4251 con Arduino Due

MessaggioInviato: 2 mag 2025, 0:56
da alien75
Ecco, ho salvato le tracce dell'oscilloscopio:
Vanno bene ora?

Re: Problema a pilotare un MCP4251 con Arduino Due

MessaggioInviato: 2 mag 2025, 10:00
da boiler
Clock e linea dati communtano contemporaneamente --> non è un segnale SPI.

Clock: ~600 mV di ampiezza ?%
MOSI: ~20 mV di ampiezza con un common-mode negativo ?% ?%
MISO: ampiezza insignificante con ALMENO 40 V di common-mode ?% ?% ?%

Sarebbe stato utile vedere anche il chip select, ma viste le premesse, forse è meglio così.

Sono cose che avresti dovuto vedere tu, prima di postare lo screenshot.
Il progetto è evidentemente ampiamente al di fuori della tua portata, comincia con qualcosa di piú semplice.

Boiler