Hallo,
ich stehe momentan etwas auf dem Schlauch:
Habe an einem Atmega162 ein R2R Netzwerk, wie in
http://www.mikrocontroller.net/articles/DA-Wandler
beschrieben. Ich verwende 10K Metallschichtwiderstände 1% und das
Oszibild ist sogar ohne Tiefpaß sehr ordentlich.
VCC für den Atmega sind 3,3V.
Ich möchte nun das R2R Ausgangssignal für einen TDA7052 spannungsmäßig
anpassen, da der nur bis zu 100mV verträgt.
In obigem Artikel steht:
>>Die Ausgangsspannung ist vom Lastwiderstand RL abhaengig .......
Ich habe das java Applet von Thorsten Brischalle genommen
http://aaabbb.de/JDAC/DAC_R2R_network_calculation.html
Und mit einem RL von 1K käme ich eigentlich bis 50mV, was recht optimal
wäre. Am Oszi, mit dem ich das Signal hinter RL abgreife sehe ich aber:
Max: 1.53V
Min: -1.88V
PEAK to PEAK 3.38 V
Habe alle Beiträge zum R2R Thema sowie DAC Artikel gelesen, bekomme aber
keine befriedigende Lösung.
Ich würde mich freuen, wenn mir jemand einen Tipp geben könnte
Gruß
Thomas
>Habe an einem Atmega162 ein R2R Netzwerk, wie in>>http://www.mikrocontroller.net/articles/DA-Wandler>>beschrieben.
Hhm, ist da nicht ein R zuviel?
>Und mit einem RL von 1K käme ich eigentlich bis 50mV, was recht optimal>wäre.
Was gibst du denn in den Java-Rechner ein? Ich erhalte etwas völlig
anderes.
>Max: 1.53V>Min: -1.88V>PEAK to PEAK 3.38 V
Wieso bekommst du etwas Negatives??
>Ich würde mich freuen, wenn mir jemand einen Tipp geben könnte
Zeig uns mal deine genaue Schaltung. So wird das nichts!
Vielen Dank für die Antwort.
Habe mal die Schaltung zusammengestellt.
Und die Berechnung übers Applet von Thorsten Brischalle auch.
In der Originalschaltung sind noch weitere Komponenten enthalten, wie
LEDs und ein Empfänger-IC (RMCM01 von POLAR)der beim Übersteuerten
TDA5072 nichts mehr emfängt. Er gibt das Steuersignal für das DDS
Signal.
Ist übrigends mein erstes Projekt, bin also Anfänger und tue ich mit den
Grundlagen der E-Technik noch etwas schwer.
Gruß
Thomas
Ohmsches Gesetz:
Dein DAC hat einen Innenwiderstand von 5k und liefert 3,3V.
Um nun 100mV zu erreichen schaltet man einen Widerstand von:
5k / (3,3 - 0,1) * 0,1 = 156R nach GND und nicht nach VCC.
Mit dem Widerstand gegen VCC holst Du Dir nämlich prima alle Störungen
auf VCC rein, das kann sogar ne Rückkopplung geben.
Die 6k in Reihe sind überflüssig.
Peter
@peda
vielen Dank! Werde es so machen.
>Die 6k in Reihe sind überflüssig.
Was meintest Du damit? Ich seh keine 6K in Reihe. Oder meintest Du
nochmal den R auf VCC?
Gruß
Thomas
@peda
Vielen Dank.
Da hatte ich beim Schaltplan Mist gebaut, im Aufbau ist das letzte Paar
10K nicht enthalten.
Ich würde gerne Deine Rechnung verstehen:
Nach welcher Formel kommst Du auf den DAC Innenwiederstand von 5k ?
Ohmsches Gesetz, R=U/I kannte ich. aber
5K / (3,3-0,1)*0,1 = 156,25 kann ich rechnen, aber nicht direkt
nachvollziehen, wo ist denn in der Rechnung "I" ?
Gruß
Thomas
Hallo,
habe jetzt das R2R Netzwerk geändert und wollte an K1 erstmal das Signal
abgreifen. Da kommt aber etwas recht zappeliges raus, was nicht mehr
viel Ähnlichkeit mit dem ursprünglichen Sinussignal hat. Muss ich
itdiesem instabilen Signal leben, oder habe ich wieder irgendwo Bockmist
gebaut?
Gruß
Thomas
@Elena
Habe nochmal 2 Bildchen angehängt. Zustande kommt Bild "150 Ohm-02"
indem ich das Signal wie aus dsem letzten Schaltplan ersichtlich an Pin
X1 gegen GND abgenommen habe.
Wenn ich den Pfad mit dem C5 (0,1µF an GND) verbinde, ist das Bild noch
gruseliger!
Wenn ich den 150 Ohm rausnehme und nur das DAC am Ende des letzten 10K
Paar messe, gegen GND, dann erhalte ich ein sauberes Sinussignal s. Bild
"R2R pur", hier dann allerdings nach Deinem posting im DC Bereich.
Bin nun ziemlich ratlos, was ich da machen soll. Das Geräusch, was der
TDA7052 mit dem "150 Ohm auf GND" Signal am Eingang macht, ist
traurig;-((
Gruß
Thomas
Es könnte entweder an deinem Aufbau liegen (schlecht verlegte
Masseverbindungen) oder an deiner Messmethode (Ist das ein
Soundkartenoszilloskop?), sprich: Du musst die "Masseklemme" vom
Oszilloskop nicht einfach irgendwo anschließen, sondern direkt am 150R
Widerstand.
Hast du den TDA7052 oder TDA7052A?
>Bin nun ziemlich ratlos, was ich da machen soll. Das Geräusch, was der>TDA7052 mit dem "150 Ohm auf GND" Signal am Eingang macht, ist>traurig;-((
Hhm, du mußt irgendetwas falsch gemacht haben. Die Schaltung müßte
funktionieren. Schau dir noch mal deine Masseführung an. Kannst du uns
ein Layout zeigen?
C3 ist übrigens im Schaltplan verpolt!
>Es könnte entweder an deinem Aufbau liegen (schlecht verlegte>Masseverbindungen)...
Sieht das nicht aus wie eine überlagerte HF-Schwingung? Schwingt das
Teil? Hast du den Cap direkt über den TDA7052-Pins?
Hab ich auch schon überlegt. Die monolithischen Verstärker ICs schwingen
ja schon mal gerne, so wie ich das hier öfter mal lese. Allerdings nur,
wenn man die Design-Feinheiten nicht beachtet (Sternförmige Masse am
Chip, Abblockung und sowas).
Die Störungen könnten dann über Masse, VCC oder anders eingekoppelt
sein.
@simon
ich habe ein velleman oszilloskop, ist kein soundkartenoszi.
Die Sache mit der Masse habe ich definitiv nicht gewußt!. Habe halt
gedacht, Masse ist überall da wo GND dran ist ;-((
So ist das, wenn man unbeschwert von Ausbildung und Grundlagenkenntnisse
an die Sache rangeht........
@elena
habe den TDA7052 verwendet. Massemurks ist da mit Sicherheit drin, da
ich das Ganze erstmal auf einem Steckbrett aufgebaut habe.
Das R2R habe ich auf eine gesonderte Lochrasterplatine gelötet, um sie
sowohl beim Steckbrett, als auch am STK500 einsetzen zu können. Somit
kommen sehr lange Massewege zustande.
C5 ist doch bipolar, wie kann man den verpolen?
den Kerko mit0,1µF und den Elko mit 220µF (richtigrum)habe ich direkt an
den TDA7052 gesteckt, mit ungekürzten Anschlußdrähten.......
>Allerdings nur,>wenn man die Design-Feinheiten nicht beachtet (Sternförmige Masse am>Chip, Abblockung und sowas).
Könnte Ihr mir einen Tipp oder ein Link geben, wo ich diese Feinheiten
lernen kann?
Gruß
Thomas
Gruß
>C5 ist doch bipolar, wie kann man den verpolen?
Ich habe C3 gemeint, nicht C5.
>Könnte Ihr mir einen Tipp oder ein Link geben, wo ich diese Feinheiten>lernen kann?
Das ist garnicht so schwer: Ein guter Massebezugspunkt für die digitale
Sektion, also µC und R2R-Leiter, ist der Massepin des µC. Der
Masseanschluß des untersten 10k Widerstands der R2R-Leiter und der
Masseanschluß des 150R Widerstands wird mit diesem Punkt verbunden. Auch
der Entkoppelkondensator des µC wird mit diesem Pin verbunden. (Äh, hast
du da überhaupt einen Entkoppelkondensator über dem µC??)
Dort entsteht damit ein sternförmiger, lokaler Massepunkt. Alle Bauteile
der R2R-Leiter müssen mit kürzesten Verbindungen mit den µC-Ausgängen
bzw. dem Massepunkt verbunden sein, weil diese Bauteile von schnellen
Schaltflanken durchströmt werden und enorme Störungen machen können.
Das gleiche beim TDA7052: Auch dort erzeugst du einen sternförmigen,
lokalen Massepunkt, und zwar ebenfalls am Massepin des Chips. Dorthin
verbindest du den Masseanschluß des Entkoppelkondensators und alle
anderen Masseverbindungen dieses Chips.
Jetzt verbindest du diese beiden sternförmigen, lokalen Massepunkte über
eine kurze Leitung miteinander.
Bei den jeweiligen Entkoppelkondensatoren des µC und des TDA7052
verbindest du den positiven Anschluß jeweils direkt mit dem "+" Pin des
Chips. Jeder Chip hat also einen eigenen Entkoppelkondensator, der
direkt und mit kürzesten Verbindungen über seinen
Versorgungsspannungspins hängt!
@Elena
Super! Vielen, vielen Dank für die ausführliche Anleitung!!!
Werde heute mal das Ganze neu aufbauen und die von Dir beschriebenen
Masseverbindungen so realisiseren!
Gruß
Thomas
@Elena
ach so: Entkopplungskondensatoren hatte ich dran, jeweils 0.1µF von VCC
zu GND bei beiden IC´s. Aber die Pfade zu den R2R Widerständen waren
wohl definitiv zu lang.....
ja auf dem Schaltplan war der C3 falsch rum, in der Schaltung aber
nicht..
Gruß
thomas
Hallo,
ich habe jetzt die ganze Sache auf einer Lochrasterplatine neu
aufgebaut.
R2R direkt an die Atmega162 Pins, Masse sternförmig an Massebezugspunkt
von Atmega162 sowie das Selbe beim TDA7052.
Jetzt sehe ich, dass das Signal ohne Impedanzanpassung mit dem 150 Ohm
Widerstand OK ist (Bild R2R-Masse-neu01)
Sobald aber der 150 Ohm Widerstand an die Masse (Massebezugspunkt µC)
gesetzt wird und ich das Signal dann messe, sieht es wie in Bild
(TDA-150-Ohm-04) aus. Jetzt kanns doch kein Masseproblem mehr sein ,
oder?
Ich habe übrigens noch drei LED s mit verbaut. Über jeweils einen
Vorwiderstand von 22 Ohm an µC Masse von PA0 , PA1, PA2. Diese LED s
zeigen die jeweiligen Betriebszustände an. Die können die Störungen doch
nicht verursachen, oder?
Hinter dem DC Auskopplungskondensator (0,22µF) kommt kein Signal an. Der
TDA 7052 schweigt.
Über den ICP1 (PE0) gebe ich mit einem Signalgenerator das
Eingangssignal ein.
Was kann denn jetzt noch falsch sein??
Gruß
Thomas
>Sobald aber der 150 Ohm Widerstand an die Masse (Massebezugspunkt µC)>gesetzt wird und ich das Signal dann messe, sieht es wie in Bild>(TDA-150-Ohm-04) aus. Jetzt kanns doch kein Masseproblem mehr sein ,>oder?
Hast du bei dieser Messung den Massepin vom Oszi ebenfalls am
sternförmigen Massepunkt des µC angeschlossen?
>Ich habe übrigens noch drei LED s mit verbaut. Über jeweils einen>Vorwiderstand von 22 Ohm an µC Masse von PA0 , PA1, PA2. Diese LED s>zeigen die jeweiligen Betriebszustände an. Die können die Störungen doch>nicht verursachen, oder?
Doch, daher können zusätzliche Störungen kommen, zumal ja recht kräftige
Ströme durch die LEDs fließen. Wenn du ein Problem mit einer Schaltung
hast, solltest du es nicht noch durch Hinzunahme von weiteren kritischen
Schaltungsteilen verkomplizieren, sondern erst einmal die Hauptstörung
beseitigen, sonst verlierts du völlig den Überblick. Also wirf die LEDs
erst mal wieder heraus.
Mir fällt jetzt dreierlei zu deinem Problem ein:
1. Oszis, die an den PC angesschlossen werden, haben oft Probleme bei
kleinen Meßbereichen störungsarm zu arbeiten. Es könnte also sein, daß
ein Teil der Störungen über die Schnittstelle zum PC eingekoppelt
werden. Ich habe ein PCS500 von Vellemann, da ist das sogar ganz extrem
der Fall. Der 5mV-Meßbereich ist kaum zu gebrauchen.
2. Ein R2R-DAC mit einem µC aufzubauen stößt an gewisse Grenzen, weil
dieses Teil dafür nicht konzipiert ist. Auf der Masseleitung des µC,
also dem Draht zwischen Chip-Kristall und Lötpin gibt es eine Menge
Störungen, die sich dem Nutzsignal überlagern. Das ist besonders bei
einem DIL40-Gehäuse lästig, weil diese Verbindung dann besonders lang
ist. Möglicherweise ist deine Schaltung deshalb ausgereizt. Eine
Alternative wäre die Verwendung eines echten DACs.
3. Vielleicht ist es sinnvoller den 150R Widerstand dort ganz abzuhängen
und stattdessen einen echten Spannungsteiler zum TDA7052 hin
einzusetzen.
@elena
Habe noch zwei Bildchen von der Lochrasterplatine angehängt
>Hast du bei dieser Messung den Massepin vom Oszi ebenfalls am>sternförmigen Massepunkt des µC angeschlossen?
Ja, habe ich.
Die LEDS waren im vorherigen Aufbau schon vorhanden. Hatte aber erst
heute dran gedacht, dass diese auch eine Störungsursache sein könnte und
sie deshalb im Schaltplan ergänzt. Aber die wegzunehmen ist kein
Problem, werde ich mal machen. Wären da Low Power LEDs, die statt 20mA
nur 5mA verbrauchen nicht sinnvoller?
zu 1 Das mit dem Oszi ist natürlich denkbar, dann kann ich das Signal
halt nicht messen...;-((
zu 2 Aber warum ist das 3,3V Sinussignal so sauber und ungestört? Weil
es aufgrund der höheren Energie weniger störanfällig ist? Oder schiebe
ich einen großen Teil des Signales über den 150 Ohm Widerstand über
Masse wieder in den µC?
zu 3 Wie hast Du Dir das vorgestellt? Was verstehst Du unter einem
echten Spannungsteiler? Würde ich gerne probieren....
Danke für Deine Antwort!
Gruß
Thomas
>Habe noch zwei Bildchen von der Lochrasterplatine angehängt
Die Verbindung von digitaler und analoger Masse ist vieeeel zu lang!
Warum machst du da keine direkte Verbindung hin? Warum der Umweg zum
Stecker??
>Wären da Low Power LEDs, die statt 20mA nur 5mA verbrauchen nicht>sinnvoller?
Ja, natürlich.
>zu 1 Das mit dem Oszi ist natürlich denkbar, dann kann ich das Signal>halt nicht messen...;-((
Ja klar, aber beim Abhängen des Oszis könnte der Ton sauberer werden und
dein Problem eventuell verschwinden.
>zu 2 Aber warum ist das 3,3V Sinussignal so sauber und ungestört? Weil>es aufgrund der höheren Energie weniger störanfällig ist? Oder schiebe>ich einen großen Teil des Signales über den 150 Ohm Widerstand über>Masse wieder in den µC?
Mach dir klar, daß du niemals die Potentiale direkt am Chip mißt,
sondern immer nur an den Gehäuse-Pins. Für den Masseanschluß des µC
bedeutet das, daß häßliche digitale Massestörströme über die Verbindung
zwischen Masse vom Chip und Massepin vom Gehäuse fließen und dort eine
Störspannung abfallen lassen. Diese Störspannung addiert sich jetzt zu
deinem Nutzsignal. Ist diese Störspannung beispielsweise 10mVss, dann
bedeutet das bei einem 3,3Vss Sinus einen Anteil von erträglichen 0,3%
aber bei einem 100mVss Sinus einen Anteil von unerträglichen 10%!
>zu 3 Wie hast Du Dir das vorgestellt? Was verstehst Du unter einem>echten Spannungsteiler? Würde ich gerne probieren....
Statt des 150R Widerstands schaltest du einen Spannungsteiler von 10k
und 470R nach Masse. Der TDA7052 erhält dann das Signal das am 470R
Widerstand abfällt. Den Masseanschluß des 470R Widerstands verbindest du
jetzt mit der analogen Masse (Massepin vom 220µF Elko). Durch Verändern
des 470R Widerstands kannst du die Signalhöhe so anpassen, daß der
TDA7052 nicht übersteuert.
Jetzt kannst du dem 470R Widerstand zusätzlich noch einen kleinen Cap
parallelschalten, um hochfrequente Störungen wegzufiltern. Vielleicht
reicht das ja schon.
@Elena
So wie Du das erklärt hast, habe ich jetzt einiges verstanden. Werde das
so umsetzten und berichten !
Vielen Dank für Deine Geduld und Hilfe!
Gruß
Thomas
@Elena
Habe das so umgesetzt.
Nun ist vor dem Dc EntkopplungsCap (0,22µF) das Signal ordentlich,
hinter dem Cap aber nix.
Der TDA bringt auch nur das Piepsen der LEDs. (habe schon low current
leds bestellt, ohne LED sehe ich halt nicht, was der µC macht)
Ist der DC Entkopplungskondensator wirklich sooo wichtig? Wenn ich den
überbrücke, kommt ein Signal, verzerrt zwar, aber immerhin.
Werde jetzt den 470R durch ein Poti ersetzen um mit dem Eingangssignal
spielen zu können........
Gruß
Thomas
>Nun ist vor dem Dc EntkopplungsCap (0,22µF) das Signal ordentlich,
DAs sieht ja schon mal sehr gut aus!
>Werde jetzt den 470R durch ein Poti ersetzen um mit dem Eingangssignal>spielen zu können........
Ich habe jetzt mal ins Datenblatt des TDA7052 geschaut. Da der TDA7052
eine Verstärkung von 100 hat, sollte das Eingangssignal kräftig
verkleinert werden. Mit der von mir empfohlenen Schaltung ist die
Eingangsspannung rund 100mVss, was für den TDA7052 entschieden zu viel
ist.
>Ist der DC Entkopplungskondensator wirklich sooo wichtig? Wenn ich den>überbrücke, kommt ein Signal, verzerrt zwar, aber immerhin.
Im Datenblatt steht dazu nichts. Ich denke das Hauptproblem ist erst mal
die Übersteuerung.
So. Nun gehts.
Allerdings werde ich noch etwas mit Kondensatoren rumprobieren, da das
Eingangssignal nun zwar recht schön und regelbar ist, das Ausgangssignal
allerdings nicht so schön, s. Bild. Hier ist der lineare 50K Potie
vielleicht zu 15 % aufgedreht.
Einen sauberen Sinus bekommt man nur ganz am Anfang. Das ist allerdings
dann für meine Zwecke zu schwach, da mein 8 Ohm Aktor nur leise brummt,
aber sonst nix macht. Beim Aufdrehen dito.
Ich habe in verschiedenen Beispielschaltungen im Netz viele gesehen mit
Poti, wenig mit DC Abblockkondensatoren. Hier ein Beispiel:
http://www.electronics123.com/s.nl/it.A/id.405/.f
Hier wird ein 2,2 µF Elko und ein 10K Poti eingesetzt......
Werde mal schauen, was ich da noch erreiche.
Gruß
Thomas
eine höhere Speisespannung wollte ich vermeiden, da einen weitere
Komponente, ein Funkempfangsteil, nur mit 3 Volt betrieben werden kann.
Das Ganze soll später in ein Batterie betriebenes Gerät integriert
werden, möglichst ohne Kühlschlitze und mit langer Betriebsdauer ( LiIo
Akku). Ein Festspannungsregler, der von beispielsweise 6V auf drei Volt
runterregelt "frißt" ja auch wieder Strom, möchte ich nur, wenns gar
nicht anders geht...
D-class amps sind in Dil Gehäusen kaum zu finden, ist aber einen Option
für die mobile Variante.
Ja, ich passe auf, den Elko richtig einzusetzen;-))
Gruß
Thomas
Es läuft.
man kann den Poti nur auf ca 10 % aufdrehen, dass gerade was zu hören
ist. Reicht jetzt erstmal. Bei vollaufgedrehtem Poti siehts dann grausig
aus, fängt schon bei ca 30% an.
Die Low current LEDs brachten keine Verbesserung, man muss nun halt das
Licht anmachen um zu sehen, ob sie leuchten ;-(, Werde die anderen
wieder dranmachen.
Vielen Dank für die Hilfe!
Gruß
Thomas
>man kann den Poti nur auf ca 10 % aufdrehen, dass gerade was zu hören>ist.
Du kannst den 470R Widerstand ja zusätzlich noch kräftig verkleinern.
>Bei vollaufgedrehtem Poti siehts dann grausig aus, fängt schon bei ca>30% an.
Ja, weil der TDA7052 eben 100fach verstärkt. Für 3,3V Ausgangsspannung
dürfen am Eingang grob über den Daumen nur 30mV anstehen. Tausche den
470R Widerstand durch einen 150R Widerstand aus, dann sollte es funzen.
@Elena
So, ich habe den 470R als Trimmer genommen und 10K davorgehängt, jetzt
ist das Signal auf dem Oszi zumindest sauber. Wenn ich aber einen
lautsprecher dranhänge höre ich zwar die Grundfrequenz von 65 Hz, aber
es pfeift und piepst darüber ganz erbärmlich.
Frage:
Nachdem ich ja nun gelernt habe wie krass eine µC stört, müsste ich den
TDA7052 räumlich vom µC entfernen? Ob ich jetzt C5 dran habe oder nicht
macht überhaupt keinen Unterschied.......würde ein Tiefpassfilter
irgendwas ändern,
sollte man den µC in einen Käfig sperren?...Würde eine EMV Messung hier
nicht grausiges zeigen???
Mit dem Funkempfangsmodul, einem RMCM01 von Polar, was zusätzlich auf
der Platine war und ein Pulssignal in ICP gespeist hat, bzw sollte habe
ich es so gemacht: mit einem geschirmten Kabel auf eine eigene Platine
und ca 15 cm weit weg installiert.
Solange es auf der Platine war, hat es sich sozusagen immer recht
chaotisch durch zB Schaltströme der LEDs erregen lassen und das dann ans
ICP geführt, sodass das Ganze sich selbst erregt hat.
Gruß
Thomas
DIL40-Gehäuse und Lochrasterkartenaufbau sind natürlich keine guten
Voraussetzungen für einen EMV-gerechten Aufbau. Hier würde eine
mehrlagige Platine mit einer durchgehenden Massefläche und ein µC im
TQFP-SMD-Gehäuse erhebliche Vorteile bringen.
Die meisten Störungen rühren aber von deiner DAC-Taktrate her. Mit
welcher Frequenz aktualisierst du die R2R-Leiter? Wenn diese Frequenz im
hörbaren Bereich liegt, hörst du natürlich genau dort ein scharfes
Pfeifen.
Was du brauchst, ist ein Restaurationsfilter hinter dem DAC, der aus dem
stufigen Signal einen sauberen Sinus macht. Dazu brauchst du ein
Tiefpaßfilter, das die Grundfrequenz des Sinus unverändert läßt, aber
den DAC-Takt mit erheblicher Dämpfung herausfiltert. Je weiter
Nutzsignalfrequenz und DAC-Taktfrequenz auseinanderliegen, um so
einfacher kann dieses Filter aussehen. Deswegen arbeitet man oft mit
Oversampling.
Danke für Deine Antwort,
der derzeitige Aufbau mit Lochraster und Dil Gehäuse ist nur der
Prototyp, parallel arbeite ich an einer SMD Bestückungshilfe um dann im
Reflowverfahren
auch SMD Gehäuse einsetzen zu können.
Die Frequenz ist leider sehr niedrig, also definitiv im Hörbereich, läßt
sich aber wegen der Anforderungen der Zielfunktion nicht ändern.
hatte bei vorhergehenden Aufbauten mit Stk500 schon Tiefpässe 2, 3
Ordnung eingesetzt. Weil das Signal in diesem Aufbau aber schon gleich
so "schön" aussah, habe ich hier keine drin. Hol das aber jetzt
nach.....
Im Moment gehts mir in der Hauptsache darum, das Ding zum Laufen zu
bringen um die grundsätzliche Funktion überprüfen zu können......
Gruß
Thomas