Temperaturmessung in USB [geschlossen]

Ich versuche, ein paar Temperaturen in meinen Computer zu bekommen. In meinem kleinen Labor habe ich ungefähr 50 Thermistoren, die ein bisschen wie dieser NTC-Thermistor aussehen . Ich möchte jetzt die Temperatur von allen gleichzeitig bekommen und ihre Temperatur in eine Datei auf meinem Computer schreiben (Linux, Win, Mac spielt keine Rolle). Welche Möglichkeiten hätte ich? Mit welchen Kosten muss ich rechnen? Gibt es Boards mit USB-Adapter?

Wir sind Elektrotechniker , also können wir über die Details des Aufbaus (und höchstwahrscheinlich der Programmierung) eines solchen Systems sprechen. Wir raten vom Kauf eines solchen Systems ab.
@WoutervanOoijen, Der Aufbau eines Testsystems aus zugekauften Komponenten ist keine ungewöhnliche Aufgabe für einen Elektroingenieur. Wir empfehlen keine bestimmten Produkte, aber wir können Sie beraten, welche Arten von Teilen gekauft werden müssen und wie Sie sie auswählen.
Wenn Sie ein Budget von über 2000 US-Dollar haben, suchen Sie nach einem Scanning-Multimeter oder Datenerfassungssystem. Keysight, Keithley und andere stellen solche Instrumente genau für diese Aufgabe her.
Ich würde gerne bestimmte Teilenummern im Chat empfehlen

Antworten (2)

Ich denke, dieses Problem ist sehr einfach zu lösen.

Sie haben zwei Möglichkeiten zur Auswahl:

  • UART zu USB Konverter
  • Echter USB mit HID- oder CDC-Klasse

Das Einzige, was Sie tun müssen, ist, einige Daten vom Temperatursensor zu senden (ich denke, mit ADC-Konverter). Sie können FTDI UART <-> USB-Konverter verwenden - und Daten als normale UART-Signale senden.

Viele uCs verfügen über einen integrierten USB-Stack - einige von PIC - auch 8-Bit (z. B. PIC16F1459), AVRs (Atmega8U2) oder 32-Bit-STM (wie STM32F405). USB ist komplizierter als UART, aber Sie können erstaunliche Dinge damit machen. Außerdem funktioniert die CDC USB-Klasse als UART-Emulator ohne zusätzliche Chips.

Aber für diese Art von Betrieb - verwenden Sie den UART-zu-USB-Konverter, wenn Sie es schnell machen möchten.

Außerdem - mit Arduino können Sie es in etwa 15 Minuten erledigen - es hat einen dedizierten virtuellen seriellen Port.

Aber die Kommunikation ist hier einfach. Dabei gibt es ein weiteres Problem. PCB für diese Schaltung wird groß sein. Warum? Sie müssen einen Weg finden, alle 50 ADC-Kanäle zu messen. Nur Mikrocontroller mit vielen GPIOs kommen ohne zusätzlichen Multiplexer-IC aus. Eine andere Sache, die Sie tun müssen, ist, einige Rauschunterdrückungsschaltkreise zu erstellen, da diese Kanalmenge sie erzeugen kann - und außerdem - Sie müssen verhindern, dass Temperaturmesskanäle vom Mikrocontroller Rauschen erhalten. Um die Linearität und Stabilität zu erhöhen, müssen Sie Erregerschaltungen überbrücken - was Platz beansprucht. Wenn Sie eine Leiterplatte mit 3 Sensoren erstellen möchten, ist dies sehr einfach. Aber 50 Sensoren... Das muss man sich mal vorstellen.

Was ist, wenn Sie eine kleine Anzahl von ADC-Kanälen haben? Verwenden Sie analoge Multiplexer - aber dann benötigen Sie mehr GPIO für die Multiplexer-Logik und mehr Platz für neue integrierte Schaltkreise auf Ihrer Leiterplatte. Denken Sie daran, dass analoge Multiplexer nicht ideal sind, sodass ein Kanal einen anderen beeinflussen kann (Sie haben diese Art von Informationen im Datenblatt).

Wenn Sie 50 Kanäle in Ihrem Mikrocontroller verwenden, denken Sie an die richtige Verzögerung zwischen der Konvertierung auf verschiedenen Kanälen - denn wenn Sie den Kanal sofort ändern, hat der interne ADC-Kondensator eine gewisse Spannung, und dies wird den Messwert verfälschen.

Dieses Problem klingt einfach, aber es ist nicht so einfach, wie wir denken.

Versuchen Sie zuerst, einen Temperaturmesser mit 4 Kanälen zu machen.

Ich denke nicht, dass das Sammeln und Protokollieren von 50 analogen Signalen besonders einfach zu lösen ist.
Sie können es sehr schnell tun - zum Beispiel. Wenn Sie einen ADC haben, der etwa 5 us für die Abtastung, 5 us für die Konvertierung und 5 us für die Verzögerung zwischen den Kanälen benötigt, haben Sie etwa 750 us für alle Messungen. Außerdem hat uC zum Beispiel 4 ADC-Kanäle. Sie müssen ungefähr 50 Proben erhalten. Es ist sehr einfach, einige analoge Multiplexer zu verwenden, zum Beispiel 4-Bit. Sie haben 4 * 16 Kanäle, wenn Sie sie verwenden (2 ^ 4 = 16). Das einzige Problem ist, dass Sie den Platz für Komponenten auf der Leiterplatte erhöhen müssen.
Ja, jetzt haben Sie viele analoge Multiplexer und müssen sie steuern. Sie müssen Erregerkreise für die Thermistoren haben und dabei darauf achten, wie diese mit den Analogschaltern interagieren (möglicherweise benötigen Sie 50 Erregerkreise)! Sie müssen wahrscheinlich eine Platine bauen und herausfinden, wie Sie die fünfzig Thermistoren verkabeln. Ich denke, ein talentierter Student, der früh in einem EE-Lehrplan ist, könnte es wahrscheinlich in zwei oder drei Wochen schaffen. Ihre Antwort adressiert nur einen Aspekt des Lösungsansatzes. Wenn Sie die ganze Antwort darlegen, werde ich das DV entfernen.
Hallo @SławomirKozok ! Danke für deine ausführliche und gut beschreibende Antwort! Ok, ich kann Ihrem Vorschlag folgen, es zuerst mit 4 Kanälen zu versuchen. Wäre ein Versuch mit dem Arduino UNO R3 ein guter Anfang? Brauche ich noch einen UART-zu-USB-Konverter oder könnte ich sie direkt anschließen? Ich glaube, unter Linux würde ich zum Beispiel auf die vom NTC-Thermistor gelesenen Daten zugreifen, indem ich auf /dev/ttyX zugreife, richtig?
Arduino UNO wird für den Anfang gut sein. Arduino hat einen eingebauten USB <-> UART-Konverter. Sie müssen nur Arduino kaufen. Ich erinnere mich nicht an den Namen des von Arduino unter Linux emulierten UART, aber ja, es wird irgendwo unter /dev/ sein.

Am einfachsten ist es, sich einige DAQ (Data Acquisition) Boards von einem Unternehmen wie National Instruments zu kaufen. Bauen Sie für jedes DAQ eine Signalkonditionierungsplatine, um die Thermistoren in einen Spannungsausgang umzuwandeln. Die Schaltung für diese Platinen wäre sehr einfach – im Grunde eine Spannungsreferenz für die gesamte Platine sowie ein einzelner Widerstand und Kondensator für jeden Thermistor.

ABER. Dies hat zwei Nachteile. Erstens ist Geschwindigkeit. Sie müssten jeden Temperaturkanal nacheinander und nicht alle auf einmal abtasten. Dies ist wahrscheinlich kein wirkliches Problem - Thermistoren haben normalerweise Zeitkonstanten im Sekundenbereich, sodass Sie durch sequentielles Abtasten wahrscheinlich nicht viel Genauigkeit verlieren. Das zweite ist vielleicht ein größeres Problem – die Kosten. Sie können 32 Kanäle mit 12 Bit pro Kanal für ~ 1500 US-Dollar pro Platine erhalten, und Sie benötigen 2 Platinen für 50 Kanäle. Wenn Sie eBay riskieren möchten, können Sie möglicherweise niedrigere Preise für gebrauchte Boards erzielen.

Alternativ können Sie sich ein oder mehrere digitale IO-USB-Boards besorgen und Ihre eigenen zusammenstellen. Ein 32-Bit-DIO-Board sollte Sie etwa 100 US-Dollar kosten, und 32 Bit sollten mehr als genug sein, um 50 Kanäle zu erfassen. Suchen Sie auf Digikey und Sie können 8-Bit-ADCs mit parallelem Ausgang für weniger als 2 US-Dollar, 12 Bit für weniger als 10 US-Dollar erhalten (und je nach betrachtetem Temperaturbereich und gewünschter Temperaturauflösung können 12 Bit gut sein). notwendig - Thermistoren sind sehr nichtlinear). Sie müssten Leiterplatten für Ihre Signalkonditionierung und ADCs herstellen und können Ihre eigenen Kompromisse zwischen der Anzahl der ADCs und dem Multiplexen eingehen. Möglicherweise müssen Sie auch digitales Multiplexen lernen, um auszuwählen, welchen ADC Sie lesen möchten (wenn Sie mehr als einen verwenden), aber das müssen Sie sowieso lernen.

Hallo @WhatRoughBeast! Danke für deine tolle Antwort! In Bezug auf Ihren Vorschlag zu DAQ habe ich ein wenig recherchiert und 2 Geräte gefunden. Sind sie einen Blick wert? USB-basiertes 24-Kanal-Digital-E/A-Modul und EINGANGS-/AUSGABEGERÄT, USB, 2.0 TRAGBAR DIGITAL, 24 ZEILEN, 12 MB . Brauche ich noch einen ADC für jeden NTC-Thermistor?
Beides wird funktionieren, aber seien Sie sich bewusst, dass Sie (möglicherweise) ein Hochgeschwindigkeitsbusgerät wünschen. Die Frage, wie viele ADCs Sie benötigen, hängt von Ihren Anforderungen ab. Wenn Sie unbedingt simultane Messungen haben müssen, dann sollten Sie einen ADC pro Sensor verwenden. Suchen Sie andernfalls nach "analoger Multiplexer". Diese ermöglichen es einem einzelnen ADC, mehrere (oder viele) Sensorausgaben zu erfassen. Für die erste Konfiguration benötigen Sie eine Möglichkeit, die von den 24 Bits gesteuert wird, um auszuwählen, welchen ADC Sie lesen, und durch die ADCs zu gehen. Andernfalls wählen Sie den Kanal aus, um zu den ADC (s) zu gehen, und lesen ihn oder sie dann ...
Im Allgemeinen ist der Analog-Multiplexer-Ansatz billiger als der Mehrfach-ADC-Ansatz. Es ist alles eine Frage dessen, was Ihnen am wichtigsten ist: Kompromisse zwischen konkurrierenden Anforderungen zu finden, ist das Herzstück des Engineerings