Schnittstelle zwischen MCP3302 ADC und Arduino Micro SPI-Hilfe

Ich bin sehr neu im Hardware-Design und mache eine optische Erkennungsschaltung mit einer Fotodiode. Ich muss lediglich eine Schnittstelle mit der Fotodiode herstellen und die Ausgangsspannungswerte in der Arduino IDE speichern

Hardware-Setup:

  • Fotodiode (BPW21R) verbunden in Transimpedanzanordnung mit 100K-Rückkopplungswiderstand und OPA350-Operationsverstärker
  • Das Ausgangssignal des Transimpedanzverstärkers wird an CH0 des ADC (MCP3302) angeschlossen.
  • Operationsverstärker und ADC werden mit +5 V über den Arduino Micro Power Pin versorgt

ADC <-> Arduino Micro Verbindungen:

  • VDD und VRef <-> +5V Power Pin
  • CS/SHDN <-> RX_LED/SS
  • DIN <-> MOSI
  • DOUT <-> MISO
  • CLK <-> SCK

MCP3302 ADC Arduino Micro-MCU

Meine zwei Fragen lauten:

  • Sind meine Verbindungen zwischen ADC und Arduino Micro korrekt, um über das SPI-Protokoll zu kommunizieren?

  • Wie kann ich in Arduino IDE den Code so bearbeiten, dass das Arduino Micro Daten vom ADC per SPI-Protokoll empfängt und im seriellen Monitor anzeigt?

    #include <SPI.h>

    ungültige Einrichtung () {

    pinMode(SS, OUTPUT);
    pinMode(MISO, OUTPUT);  
    
    digitalWrite(SS,HIGH);
    Serial.begin(115200);
    

    }

    Leere Schleife () {Byte c;
    digitalWrite (SS, NIEDRIG);

    Serial.println(analogRead(MISO));
    
    digitalWrite(SS, HIGH);
    delay(100);
    

    }

Warum verwenden Sie einen externen ADC mit dem Arduino? Haben Sie die Header-Datei für SPI.h gelesen, um zu sehen, welche Funktionen verfügbar sind und welche Pins verwendet werden sollten? Arbeitet Ihr Arduino mit 5 V oder 3,3 V?
Der externe ADC bietet eine höhere Auflösung für meine Bedürfnisse, und der Arduino arbeitet mit +5 V. Ich kann die ICSP-Header auf dem Micro für SPI verwenden, wie in SPI.h beschrieben, aber wie kann ich den aktuellen Code anpassen, den ich zum Empfangen von Daten haben muss?

Antworten (1)

So funktioniert ein SPI-ADC NICHT.

Ihr Ansatz besteht darin, die digitale und die analoge Welt auf die seltsamste Art und Weise zu vermischen.

Der externe ADC speichert die Datenbytes in einem Register, nachdem die Daten abgetastet wurden. Werte müssen mit den entsprechenden Befehlen über eine Bibliothek oder einen benutzerdefinierten Satz von Anweisungen unter Verwendung des SPI-Kommunikationsprotokolls abgefragt werden

Die Art und Weise, wie Sie versuchen, den Wert aus dem ADC zu lesen, indem Sie einen analogen Wert im MISO-Pin erwarten, ist einfach falsch und macht keinen Sinn.

Lesen Sie das Handbuch des Geräts und finden Sie heraus, welche Befehle Sie an das Gerät senden müssen, um die digitalisierten Werte anzufordern.

Machen Sie sich außerdem ein gutes Bild davon, wie das SPI-Protokoll funktioniert. Das wird sehr hilfreich sein.

Diese Bibliothek könnte hilfreich sein: https://github.com/bakercp/MCP3XXX

Ich wiederhole, wie viele weise Männer zu sagen pflegten: RTFM!