Pascal Library für den 32 Bit ADS1262 auf dem Raspberry Pi

Zur Vorstellung von Komponenten und Units für Lazarus

Pascal Library für den 32 Bit ADS1262 auf dem Raspberry Pi

Beitragvon ATILIUS_REGULUS » 12. Mär 2019, 18:50 Pascal Library für den 32 Bit ADS1262 auf dem Raspberry Pi

Ein Quantensprung in bezug auf die Empfindlichkeit war der Schritt vom 16 Bit Resolution ADS1115 zum Ultra-High 32 Bit resolution ADS1262, welcher die Empfindlichkeit für mein Raspberry Pi Seismometer-Projekt (http://www.seismometer.info) um einen Faktor von mehr als 10.000 erhöhte.
Der Quellcode zur Programmierung des 32-Bit-Analog-Digital-Wandlers ADS1262 von Texas Instruments auf dem Raspberry Pi ist wieder Open Source und kann hier eingesehen werden: https://github.com/ATILIUS-REGULUS/ads1 ... al_library.
Insgesamt ist der ADS1262 deutlich schwerer anzubinden und zu programmieren, als der 16 Bit ADS1115. Es hat mich viele schlaflose Nächte gekostet, bis der ADS1262 erstmals fehlerfrei lief.
Ein Punkt sollte noch erwähnt werden: Der ADS1262 ist so empfindlich, daß man weit in den Bereich des termischen Rauschens gerät mit einer Empfindlichkeit unter 1 nV. Dies bedeutet, daß man sich Gedanken machen muß über den Leiterbahnverlauf, die Spannungsversorgung und weitere Punkte, wenn man das maximale aus den ADC heraushohlen möchte. Trotzdem ist davon auszugehen, daß einige Bit an das Rauschen verloren gehen, bei mir sind es etwa 10 Bit bei losem Aufbau auf einem Breadboard. Sobald ich etwas Zeit finde, werde ich hierzu auf http://www.seismometer.info noch etwas ausführlicher eingehen.

Beste Grüße,
ATILIUS_REGULUS
ATILIUS_REGULUS
 
Beiträge: 57
Registriert: 20. Feb 2013, 10:06
OS, Lazarus, FPC: KUBUNTU 14.04 (fpc 3.3.1) / Raspbian (fpc 3.3.1) | 
CPU-Target: x86, x64, ARM
Nach oben

Beitragvon Linkat » 12. Mär 2019, 22:29 Re: Pascal Library für den 32 Bit ADS1262 auf dem Raspberry

Hallo ATILIUS_REGULUS,
habe zwar momentan keine Anwendung für die Analog Digital Wandler, aber trotz dem vielen Dank für die Open-Source-Bibliotheken. Es werden sich sicher einige Anwender finden. Das Projekt eignet sich mit Sicherheit auch gut für einen interessanter Vortrag für das nächste Lazarus-Treffen in Wittenberg. Denk einmal darüber nach.
Aber ich habe mir deine Seite (seismometer.info) angesehen und finde dort sehr viele detaillierte Beschreibungen.

Sehr gut. Vielen Dank.

Gruß, linkat
Zuletzt geändert von Linkat am 13. Mär 2019, 16:03, insgesamt 1-mal geändert.
Linkat
Lazarusforum e. V.
 
Beiträge: 402
Registriert: 10. Sep 2006, 22:24
Wohnort: nr Stuttgart
OS, Lazarus, FPC: Linux Mint 19 64 bit; Lazarus 2.0.2 FPC 3.0.4; Raspbian | 
CPU-Target: AMD 64Bit, ARM 32Bit
Nach oben

Beitragvon six1 » 13. Mär 2019, 09:01 Re: Pascal Library für den 32 Bit ADS1262 auf dem Raspberry

Hi,
interessantes Projekt mit vielen Informationen.

Kleine Anmerkung meinerseits:
Ich persönlich würde die Messdatenerfassung jedoch von der Verarbeitungseinheit trennen.
Ein kleiner ATMega, welcher über SPI den Sensor ausliest und die Daten z.B. per serieller an den RASPI überträgt.
Ich denke, hierdurch ist ein weitaus größerer Störabstand erreichbar.

Gruß, Michael
six1
 
Beiträge: 70
Registriert: 1. Jul 2010, 18:01

Beitragvon ATILIUS_REGULUS » 13. Mär 2019, 10:34 Re: Pascal Library für den 32 Bit ADS1262 auf dem Raspberry

Hallo linkat!

Das Lazarus-Treffen 2019 in der Lutherstadt Wittenberg im September habe ich vorgemerkt und würde gerne kommen, wenn alles paßt.


Beste Grüße,

Jürgen
ATILIUS_REGULUS
 
Beiträge: 57
Registriert: 20. Feb 2013, 10:06
OS, Lazarus, FPC: KUBUNTU 14.04 (fpc 3.3.1) / Raspbian (fpc 3.3.1) | 
CPU-Target: x86, x64, ARM
Nach oben

Beitragvon ATILIUS_REGULUS » 13. Mär 2019, 10:36 Re: Pascal Library für den 32 Bit ADS1262 auf dem Raspberry

Hallo Michael!

Der größte Störeinfluß ist wahrscheinlich die Stromversorgung, aufgrund der modernen Schaltnetzteile und deren Spannungsspitzen.
Habe hier mit dem Oszilloskop in vielen Stunden verschiedene Ansätze durchprobiert, insbesondere auch eine Batterieversorgung; insgesamt wurde es etwas besser (1-2 Bit), aber nicht wirklich befriedigend.

Ob die Daten von einem ATMega oder direkt vom Raspberry gelesen werden, wird vermutlich keinen großen Unterschied machen, dann wäre es schon sinnvoller, den ganzen Digitalteil galvanisch zu entkoppeln, zum Beispiel mit einem 6-Kanal-Logik-Isolator LTM2887 oder anderen entsprechenden Bauteilen.

Außerdem ist über eine Leiterplatte gegenüber meinem Breadbord (Photos folgen in den nächsten Tagen auf http://www.seismometer.info) nachzudenken, da die Leitungen dann kürzer und geschirmter sind, und es gibt weiteres Verbesserungspotential an anderen Stellen. Aber das Anfertigen einer Platine stellt doch schon einen großen Aufwand dar.
Wie ich schon erwähnte, werde (oder "muß" besser) ich auf diese Punkte auch noch die nächste Zeit auf der Seismometerseite eingehen.
Der Hauptpunkt ist, daß die meisten Änderung einen deutlichen Zeit-, Geld- und Arbeitsaufwand bedeuten, und man damit abwägen muß, ob man sich damit aufhält, da andere Dinge dann zurückgestellt werden müssen.

In der nächsten Zeit werde ich noch einige Verbesserungen an der Library vornehmen (AC-Autokalibrierung, Interruptabfragen...), und dann entscheiden, wie weit ich noch in den elektrischen Meßteil investieren werden, da ich eigentlich den Schwerpunkt auf die Messdatenverarbeitung des Seismometers legen wollte.

Noch ein letzter Punkt: Das Rauschen habe ich ermittelt, indem ich die beiden Analogeingänge kurzgeschlossen habe: AIN0 = AINCOM, damit liegen beide auf dem Potential: (AVDD + AVSS) / 2. Eigentlich müßte bei der Messung also immer 0 herauskommen (da gegenüber AINCOM gemessen wird), aber es kommt ein Rauschen von etwa 10 Bit Stärke heraus. Das hat mich schon sehr verwundert, denn mehr als kurzschließen kann ich die Eingänge nicht (also vielleicht noch ein dickeres oder kürzeres Kabel...).

Beste Grüße,

Jürgen
ATILIUS_REGULUS
 
Beiträge: 57
Registriert: 20. Feb 2013, 10:06
OS, Lazarus, FPC: KUBUNTU 14.04 (fpc 3.3.1) / Raspbian (fpc 3.3.1) | 
CPU-Target: x86, x64, ARM
Nach oben

Beitragvon six1 » 13. Mär 2019, 11:03 Re: Pascal Library für den 32 Bit ADS1262 auf dem Raspberry

Hallo Jürgen,
verstehe ich, dass dieses Projekt keinen Selbstzweck darstellt. :)

Dein Versuchsaufbau ist denkbar ungeeignet mit dem Steckbrett. Die Abblockkondensatoren werden kaum Wirkung zeigen über die ganzen Leitungen und Fremdkapazitäten über das Steckbrett.
Ich habe mal kurz in das Datenblatt geschaut. ( http://www.ti.com/lit/ds/symlink/ads1262.pdf )
Unter 12.2 wird für ein Layout ein inner Plane für GND vorgeschlagen... ich denke, wenn man da auch nur annäherungsweise an die Specs herankommen möchte, wird man das nach Herstellerangabe ausführen müssen.

Auf jeden Fall ein interessantes Projekt mit vielen Entfaltungsmöglichkeiten :D

Gruß, Michael
six1
 
Beiträge: 70
Registriert: 1. Jul 2010, 18:01

Beitragvon ATILIUS_REGULUS » 13. Mär 2019, 11:45 Re: Pascal Library für den 32 Bit ADS1262 auf dem Raspberry

Hallo Michael!

Warte ab, bis Du erst die Photos vom Steckbrett siehst, es sieht wahrscheinlich noch schlimmer aus, als vermutet... :oops: ;-) :roll:

Das Problem mit der Leitungen, Kapazitäten und Induktivitäten ist mir natürlich klar und ich denke ernsthaft über eine (einfache) Platine nach.
Die Spezifikationen der Herstellers muß ich nicht erreichen, es reicht, wenn ich ausreichend empfindlich für das Geophon SM-24 bin. Außerdem handelt es sich bei dem SM-24 auch nicht um ein militärisches Bauteil mit ausgezeichneter Abschirmung und weiteren professionellen Eigenschaften...

Es hat für meine Verhältnisse sehr lange gedauert, den ADS1262 überhaupt ans laufen zu bekommen und ich war manchmal kurz davor, aufzugeben, aber am Ende hat sich die Hartnäckigkeit und Geduld doch ausgezahlt :D . Insgesamt ist der ADS1262 ein Spitzenbauteil für relativ wenig Geld und ich hoffe, daß andere Pascal-Programmierer, welche einen präzisen ADC suchen, mit der Library schnell zum Ziel gelangen, daher habe ich alles recht einfach und übersichtlich belassen.

Beste Grüße,

Jürgen
ATILIUS_REGULUS
 
Beiträge: 57
Registriert: 20. Feb 2013, 10:06
OS, Lazarus, FPC: KUBUNTU 14.04 (fpc 3.3.1) / Raspbian (fpc 3.3.1) | 
CPU-Target: x86, x64, ARM
Nach oben

Beitragvon Timm Thaler » 13. Mär 2019, 11:46 Re: Pascal Library für den 32 Bit ADS1262 auf dem Raspberry

Linkat hat geschrieben:das nächste Lazarus-Treffen in Wittenberge


ATILIUS_REGULUS hat geschrieben:Das Lazarus-Treffen 2019 in der Lutherstadt Wittenberg


Es sind zwar nur 140km, aber für eine von beiden müsstet ihr euch schon entscheiden, wenn ihr euch treffen wollt.

https://www.luftlinie.org/Lutherstadt-Wittenberg/Wittenberge

ATILIUS_REGULUS hat geschrieben:Das hat mich schon sehr verwundert


Das wundert mich gar nicht: https://de.wikipedia.org/wiki/Delta-Sigma-Modulation

Für 32 bit braucht der 32 Schritte der Approximierung des Messwertes. Während dieser Zeit beeinflussen sämtliche Schwankungen der Versorgung, thermisches Rauschen, induziertes Netzbrummen, Schrotrauschen, wie das nächste Bit gesampelt wird.

Für fliegende Aufbauten, Breadbord sind 12 Bit machbar.
Für einfache Leiterplatten, einseitig, ordentlich designet 16 Bit.
Mit 2 lagigen Leiterplatten, sauberster Trennung von Analog- und Digitalteil, analoger Stromversorgung 20-22 Bit.

Um einigermaßen an die 32 Bit ranzukommen würde ich mich strengstens an die Designempfehlungen des Hersteller halten, Datenblatt Seite 125.

Man kann versuchen, dass auf einer 1,5-seitigen Leiterplatte zu machen, wenn man selber ätzen will. 1,5-seitige Leiterplatten mache ich so, dass ich eine 2-seitige Platine so route, dass alle Signale auf top liegen und auf bottom nur GND. Dann wird nur top belichtet und geätzt, während auf bottom noch die Schutzfolie drauf ist, dann wird die Folie abgezogen und die Vias nach GND durchgebohrt. Die Kontaktierung nach GND erfolgt mit kurzen Drahtstücken in den Vias. Das ist ein guter Kompromiss zwischen einseitigen Platinen und dem Sackgang zweiseitig zu ätzen.

Andererseits macht Dir der Chinese 5 Platinen zweiseitig mit Stopplack für 25 Eur...

Was ich auf jeden Fall machen würde:
1. Den ADC vom Raspi trennen. Entweder über digitale Isolatoren, ich hab gute Erfahrungen mit der ADUM-Reihe (ADUM1201, ADUM1401) gemacht, oder durch einen AVR / Arduino der die Messungen macht. Der Raspi hat wirklich ein derart versautes GND-Potential...
2. Mehrstufige Versorgungsspannung, vor allem wenn aus Schaltnetzteil. Also 12V Netzteil, dann auf 9V runter mit einem Linearregler, dann auf 5V runter mit zwei Linearreglern für jeweils AVDD und DVDD. Dabei was rauscharmes suchen, nicht den ersten besten 78L05. Und mehrstufig filtern. Dabei nicht viel hilft viel (1000µ Elko bringt nur weiteres Rauschen), sondern sinnvoll gestuft: 10n, 100n, 10µ Kerko.
3. Thermisch stabilisieren, also möglichst keine Wärmequellen (Spannungsregler) mit auf die Platine.
4. Abschirmen. Auch wenn der ADC eine 50Hz-Unterdrückung hat, erstens unterdrückt die nur und eliminiert nicht komplett, zweitens gibts von Schaltnetzteilen bis Wlan soviele Störquellen. Konservendosenblech (Weissblech, nicht Alu) geht. Auch unter der Platine. Und natürlich den Sensor geschirmt anbinden und die Schirmung ordentlich auf GND legen.

Du kannst gern Deine Platinenentwürfe hier reinstellen und wir "optimieren" dann dran rum.

Oder Du holst Dir für 250 Eur bei Farnell das PDK.
Timm Thaler
 
Beiträge: 897
Registriert: 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded | 
CPU-Target: Raspberry Pi 3
Nach oben

Beitragvon ATILIUS_REGULUS » 13. Mär 2019, 12:08 Re: Pascal Library für den 32 Bit ADS1262 auf dem Raspberry

Hallo Timm Thaler!

Diese - und einige zusätzliche - Überlegungen sind mir durchaus bekannt, aber das ist genau das, was ich vermeiden möchte: mich in technischen Einzelheiten in einer Unterkategorie des Gesamtprojektes zu verlieren, aber wegen der 5 beidseitigen Platinen mit Stoplack für 25 Euro komme ich gerne nochmal auf Dich zurück... :lol:

Beste Grüße,

Jürgen
ATILIUS_REGULUS
 
Beiträge: 57
Registriert: 20. Feb 2013, 10:06
OS, Lazarus, FPC: KUBUNTU 14.04 (fpc 3.3.1) / Raspbian (fpc 3.3.1) | 
CPU-Target: x86, x64, ARM
Nach oben

Beitragvon Timm Thaler » 13. Mär 2019, 12:28 Re: Pascal Library für den 32 Bit ADS1262 auf dem Raspberry

ATILIUS_REGULUS hat geschrieben: mich in technischen Einzelheiten in einer Unterkategorie des Gesamtprojektes zu verlieren


Dann kauf das fertige PDK. Du wirst nicht umhinkönnen, Dich mit diesen Problemen zu befassen, wenn Du an dieser entscheidenen Stelle weiterkommen willst.
Timm Thaler
 
Beiträge: 897
Registriert: 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded | 
CPU-Target: Raspberry Pi 3
Nach oben

Beitragvon Linkat » 13. Mär 2019, 16:07 Re: Pascal Library für den 32 Bit ADS1262 auf dem Raspberry

@Timm Thaler: Als Süddeutscher war mir Wittenberge <> Wittenberg nicht bewusst. Ich habe es aber oben geändert.
Linkat
Lazarusforum e. V.
 
Beiträge: 402
Registriert: 10. Sep 2006, 22:24
Wohnort: nr Stuttgart
OS, Lazarus, FPC: Linux Mint 19 64 bit; Lazarus 2.0.2 FPC 3.0.4; Raspbian | 
CPU-Target: AMD 64Bit, ARM 32Bit
Nach oben

• Themenende •

Zurück zu Units/Komponenten



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron
porpoises-institution
accuracy-worried