Wie kann ich einen Analog-Digital-Wandler (ADC) anschließen?


22

Ich suche nach Optionen für ADC auf dem Rasbperry Pi. Ich frage mich, was bisher möglich ist. Natürlich ist einfach und billig gut.


Wofür brauchst du es?
Jivings

@Jivings, ich denke an ein paar Projekte, die mit relativ niedrigen Abtastraten auskommen können.
John La Rooy

Antworten:


15

Adafruit hat ein nützliches Tutorial zur Verwendung des MCP3008 (3,75 USD) - 8-Kanal-10-Bit-ADC mit SPI-Schnittstelle, um die Lautstärke einer MP3-Datei zu steuern. Es sollte Ihnen jedoch einen guten Ausgangspunkt für jedes analoge oder digitale Projekt bieten.


1
Sowohl Arduino als auch PICAXE sind hier die falschen Lösungen.
Alex Chamberlain

Ich bin nicht einverstanden, dass der Arduino hier die falsche Lösung ist. Das Arduino verwendet USB, während das MCP3008 SPI verwendet. Der Arduino ist fertig montiert und sofort einsatzbereit, während der MCP3008 einige Zubehörteile und Arbeiten benötigt, um loszulegen. Der MCP3008 ist billiger, aber wenn Sie all das einbauen, was Sie brauchen (GPIO-Breakout, Montage des Steckbretts ...), ist die Kostenlücke nicht so groß, wie es scheint. Alles in allem, wenn Sie experimentieren und sich schnell umdrehen möchten, ist der Arduino die überlegene Option, aber wenn Sie nach einer dauerhaften Installation suchen, würde ich zustimmen, dass der MCP3008 am besten funktioniert.
Dan B

8

ADS1115

Die ADS1113, ADS1114 und ADS1115 sind Präzisions-Analog-Digital-Wandler (ADCs) mit 16 Bit Auflösung, die in einem ultrakleinen, bleifreien QFN-10-Paket oder einem MSOP-10-Paket angeboten werden. Die ADS1113 / 4/5 sind auf Präzision, Leistung und einfache Implementierung ausgelegt. Der ADS1113 / 4/5 verfügt über eine integrierte Referenz und einen Oszillator. Die Datenübertragung erfolgt über eine I²C-kompatible serielle Schnittstelle. Es können vier I²C-Slave-Adressen ausgewählt werden. Der ADS1113 / 4/5 wird mit einer einzigen Stromversorgung von 2,0 V bis 5,5 V betrieben.

Zuerst müssen Sie sicherstellen, dass die I²C-Module geladen sind . Schließen Sie anschließend den ADS1115 wie unten gezeigt an. Abhängig davon, an welchen Pin ADDR angeschlossen ist, sind 4 verschiedene Adressen möglich. Dies bedeutet, dass Sie insgesamt 16 Kanäle an einen einzelnen I²C-Bus anschließen können.

GND = 0x48, VDD = 0x49, SDA = 0x4A, SCL = 0X4B

Bildbeschreibung hier eingeben

So sehen Sie das Ergebnis der letzten Konvertierung

# i2cget -y 0 0x49 0 w
0x0000

Der Standardwert 0x0000 wird hier zurückgegeben, da noch keine Konvertierungen durchgeführt wurden. Schauen wir uns nun das Konfigurationsregister an

# i2cget -y 0 0x49 1 w
0x8385

Das LSB steht an erster Stelle, dies ist also äquivalent zu 0b1000010110000011

Ich möchte eine Single-Ended-Konvertierung für AIN0 durchführen, daher muss ich Bits [14:12] wie folgt schreiben 0b100. dh0b1100010110000011

# i2cset -y 0 0x49 1 0xC385 w
# i2cget -y 0 0x49 0 w
0xa30b

Das LSB steht an erster Stelle, dies entspricht also einer Dezimalzahl von 2979


1
Ist es nicht etwas schwieriger, mit diesen Pakettypen zu arbeiten, weil die Pins so groß oder so groß sind? Vor allem für Menschen wie mich mit Arthritis (was meine manuelle Geschicklichkeit einschränkt.
Steve Robillard

@SteveRobillard, ja, es ist schwieriger, mit ihnen zu arbeiten, aber auf jeden Fall einfacher, als es den Anschein hat. Für MSOP sind Vergrößerung, Flussmittel, Docht und eine gute Lötstation hilfreich. Sie können eine ganze Reihe von Schritten unternehmen, um eine Ecke der MSOP mit etwas Lötzinn zu heften, bis Sie mit der Positionierung zufrieden sind. Die geringe Größe hilft, das Rauschen in der Schaltung zu reduzieren, so dass es einen Versuch wert ist, Sie werden überrascht sein.
John La Rooy

1

Solange Ihre gewünschte Verwendung keine extrem hohen Bitraten oder Auflösungen erfordert, können Sie wahrscheinlich nur ein Arduino verwenden. Arduinos sind nett, weil sie eine riesige Community für Support haben, sie gibt es schon eine Weile und Kommunikation über USB, kein GPIO!

Hier ist ein Link zu Simon Monks Blog-Post mit Anweisungen, wie er von einem Raspberry Pi mit Python mit dem Arduino kommuniziert.

Auch für den Fall, dass Sie noch nie von einem Arduino gehört haben (vielleicht haben Sie unter einem Felsen gelebt), finden Sie hier einen Link zu dessen Einführungsseite und ein Beispiel für analoge Eingänge für Anfänger .


0

Ähnlich wie bei der Verwendung eines Arduino, aber wie wäre es mit einem PICAXE-Gerät, das an den RPi-UART angeschlossen ist? Dies wäre kleiner und viel billiger. Für mich scheint Arduino übertrieben, abhängig von Ihren tatsächlichen Bedürfnissen.


0

In einem Monat oder zwei, (da die Lieferung in Afrika) Ich werde eine I2C PCF8591 Board bekommen , die wiringpi Unterstützung hat WiringPi Website und die Board Anwendungen 3,3V ( in der Regel) bekam ich die Waveshare - Version auf Amazon Amazon Link Von dem, was mir‘ Ich habe gelesen, der PCF8591 ist ziemlich nett, aber bis ich das Board tatsächlich vor mir habe, kann ich nicht sagen, ob es gut ist oder nicht


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.