Forum: Mikrocontroller und Digitale Elektronik Welchen I2C Bus-Controller für C++


von Thomas (Gast)


Lesenswert?

Hallo,

mein Ziel ist es über einen I2C Controller die Temperatur (z.B. mit 
einem Sensor PT1000) und den Luftdruck (absoluter Luftdruck) genau zu 
messen, und die Daten dann über die Programmiersprache C++ auszulesen 
und weiter zu verarbeiten.

Da ich bisher noch keine Erfahrungen in der I2C "Welt" gemacht habe bei 
der Recherche im Internet bzw. bei diversen Elektronik-Anbietern zich 
verschiedene Controller gefunden habe, bräuchte ich Rat mit welchem I2C 
Controller das am unkompliziertesten/ einfachsten z.B. in C++ (Visual 
Studio Express 2010/ 2013) zu realisieren wäre.

Grüße
Thomas

von Thomas F. (igel)


Lesenswert?

Wo willst du die Sensordaten weiter verarbeiten?
Duc schreibst VS Express, willst du die Daten an einen PC senden?

Wenn ja, an welche Schnittstelle hast du hierbei gedacht?

I2C-Sensoren in einen Controller einlesen kann eigentlich jeder 
Controller.
Beschreibe das Drumherum mal genauer.

von Thomas (Gast)


Lesenswert?

Hallo,

die Daten sollen über die USB Schnittstelle vom Controller an die USB 
Schnittstelle an einem PC ausgelesen werden. (Sorry für die fehlende 
Info)

Sprich: Von einem PC mit einem Programm das ich in C++ programmiere dann 
ausgelesen/ abgefragt werden.

Gruß
Thomas

von Jan S. (jevermeister)


Lesenswert?

Dann ist es letztendlich egal welchen Controller du verwendest sofern er 
USB und eine I2C-Schnittstelle hat. Dein Rechner sieht ohnehin nur das 
USB-Device. Ob du da jetzt per Java, C++ oder Perl drauf zugreifst macht 
keinen Unterschied für den Controller an sich.

: Bearbeitet durch User
von GB (Gast)


Lesenswert?


von Thomas (Gast)


Lesenswert?

Hallo und Danke für Eure Antworten,

würde das also dann z.B. mit dem Packet

http://www.conrad.de/ce/de/product/502001/IC-Temperatur-Modul-mit-Analogausgang-0-5-V-Hygrosens-TEMOD-I2C-R1-32-96-C/?ref=bundles&rt=bundles&rb=1 
funtionieren, bzw. können an den Arduino UNO mehrere Sensoren 
gleichzeitig angeschlossen werden, (z.B. noch ein Modul für den 
Luftdruck) bzw. kann ich auf diesen dann direkt mit einer
Programmiersprache zugreifen ?

Thomas

von Jan S. (jevermeister)


Lesenswert?

Naja. Du du schreibst über den Controller etwas per USB raus und auf dem 
PC kommt per USB was an. Dafür musst du dir dann noch ein Protokoll 
ausdenken.

Stell dir vor du willst von einer Wetterstation in der Arktis die 
aktuellen Daten haben, die sie dir per Post zuschicken.

Du kannst dich nicht eben mal direkt an deren Geräte setzen. Außerdem 
hast hast du für wirklich viele Daten nur ein A5 Blatt zur Verfügung, da 
größere Briefe zu teuer sind. Du musst dir also irgendeine Kodierung 
ausdenken.

von San L. (zwillingsfreunde)


Lesenswert?

Jan S. schrieb:
> Außerdem
> hast hast du für wirklich viele Daten nur ein A5 Blatt zur Verfügung, da
> größere Briefe zu teuer sind. Du musst dir also irgendeine Kodierung
> ausdenken.

Solange das keine Temperaturmessung für alle paar Mikrosekunden werden 
soll, bzw. die Anwendung an sich nicht Zeitkritisch ist, ist es doch 
egal wie gross sein Protokoll ist. Will dem TO nicht zu nahe treten, 
aber denke extrem viel Erfahrung in Sachen uC hat er kaum. Da verwirrst 
du ihn wohl eher mit einer Aussage zur Protokollgrösse.

Thomas schrieb:
> bzw. kann ich auf diesen dann direkt mit einer
> Programmiersprache zugreifen ?

worauf zugreiffen? Auf den Arduino? Jain. Du kannst in dem Sinne nicht 
auf den Zugreiffen, du kannst lediglich ein Programm auf deinem Computer 
schreiben welches per USB Daten sendet. Danach kannst du ein weiteres 
Programm für den Ardcuino schreiben welches die Daten Empfängt, 
auswartet und irgendwas zurücksendet. Wie du das ganze Programmierst ist 
dann dir überlassen.

von Thomas F. (igel)


Lesenswert?

Thomas schrieb:
> kann ich auf diesen dann direkt mit einer
> Programmiersprache zugreifen ?

Wie du das auf dem PC machst ist dir überlassen.

Allerdings musst du den Arduino natürlich vorher auch programmieren, 
damit er mit deinem PC-Programm über ein Protokoll, das du festlegst, 
kommuniziert. Also zwei mal programmieren.

von Thomas (Gast)


Lesenswert?

Hallo Namenskollege (Thomas),

O.K. danke für Logik, war mir bisher nicht bekannt. Ich war bisher der 
Meinung das ich "einfach" über eine Funktion / Methode einen Wert der 
Hardware abfragen kann und diesen dann entsprechend decodieren kann um 
einen "reellen" Wert zu erhalten.

Wenn ich Dich richtig deute, bitte um Berichtigung ?!

Schreibe ich ein Programm / Methode für den Controller der mit der 
angeschlossenen Hardware (Sensoren) kommuniziert. (Programm wird dann 
auf den Arduino geflashed ?)


Vom PC aus spreche ich dann diese Methode /Programm auf dem Controller 
an,
um de Daten auf den PC zu übertragen ?

Thomas

von nicht"Gast" (Gast)


Lesenswert?

Hallo,

ich fürchte, du bist total durcheinander. :)

ein paar Eckpunkte vorneweg:
-I2C ist erst mal nur ein Bus. Damit kann man Daten übertragen. Benutzt 
wird er um Daten auf einer Platine von IC zu IC zu übertragen.
- Ein normaler PC hat keinen I2C Anschluss, kann also von Haus aus nicht 
damit umgehen.
- Ein PT100 hat keinen I2C Anschluss.
- Ein Druckluftsensor auch nicht zwangsweise.



Was du machen willst ist ein paar Sensordaten an einen PC Senden.

Dazu brauchst du:
- Deine Sonsoren und  Informationen, wie sie Ihre Daten preis geben.
- Einen Sammler, der die Daten über die passenden Schnittstellen 
einsammelt. Das kann zum Beispiel ein Arduino sein oder aber auch ein 
RaspPi oder auch ein Beagleboard oder auch was selbst gebautes.
- Dieser Sammler schicht dann deine Daten über z.Bsp RS232 an den 
Rechner, von wo aus du sie einliest und anzeigst.

Programmieren musst du dabei den Sammler und natürlich deinen PC. Das 
kannst du in vielen Fällen in C++ tun. Sinnvoll ist das allerdings nicht 
immer. Das sind auch zwei von einander unabhängige Programme. Dein PC 
Programm überträgt die Funktionen nicht an den Sammler, sondern nur 
reine Daten.


PS: Sammler ist kein Fachbegriff, sondern nur eine Umschreibeung.


Grüße,

von ?!? (Gast)


Lesenswert?

nicht"Gast" schrieb:
> Hallo,
>
> ich fürchte, du bist total durcheinander. :)
>
Nee, er hat das schon richtig beschrieben.
Lies seinen Beitrag nochmal.

> ein paar Eckpunkte vorneweg:
> -I2C ist erst mal nur ein Bus. Damit kann man Daten übertragen. Benutzt
> wird er um Daten auf einer Platine von IC zu IC zu übertragen.
> - Ein normaler PC hat keinen I2C Anschluss, kann also von Haus aus nicht
> damit umgehen.
Dafür möchte er ja den Arduino nehmen, um den Sensor auszulesen und dann 
mit dem PC zu kommunizieren. Daß erdiesen Programm in den Arduino 
flashen muß, hat er auch schon richtig erkannt.
> - Ein PT100 hat keinen I2C Anschluss.
> - Ein Druckluftsensor auch nicht zwangsweise.
Aber das von ihm vorgeschlagene Modul hat I²C (Temperatur und 
Luftfeuchte).
http://www.conrad.de/ce/de/product/502001/IC-Temperatur-Modul-mit-Analogausgang-0-5-V-Hygrosens-TEMOD-I2C-R1-32-96-C/?ref=bundles&rt=bundles&rb=1
Von einem PT100 war keine Rede.

Also bis jetzt sehe ich keine Anzeichen, daß Thomas "total 
durcheinander" ist, wie du schreibst.

@Thomas: Also wie gesagt, bis hier erstmal alles ok. Du mußt also ein 
Programm für den Arduino schreiben, was dir das gewünschte I²C-Modul 
ausliest und dann diese Daten in geeigneter Form zum PC überträgt. Ob es 
jetzt USB oder RS232 ist, spielt zwar keine Rolle, aber RS232 ist für's 
erste einfacher zu handhaben. Zusätzlich brauchst du ein Programm auf 
dem PC, was die Daten vom Arduino entgegennimmt (zum Beispiel über die 
RS232). Und wenn du als Anfänger sowas noch nicht gemacht hast, lernst 
du dabei gleich noch einiges dazu. :-)

von Thomas (Gast)


Lesenswert?

nicht"Gast" schrieb:
> Hallo,
..
> ich fürchte, du bist total durcheinander. :)
...
>
> Grüße,

Ich würde es eher so umschreiben das mir die Fachbegriffe fehlen, und 
ich "nur" die Logik noch nicht verstanden habe.. (hört sich nicht ganz 
so schlimm an :P )

Ihr schreibt immer das ich ein Programm für den Controller schreiben 
muss.... O.K. aber wird dieses Programm auf den Controller geflashed 
und pollt dann immer auf die Daten auf  USB Schnittstelle (wenn ich es 
so programmiere) oder muss das Programm für den Controller bei jedem 
Start "quasi" neu an den Controller gesendet werden, bzw. vom PC aus 
mitlaufen ?

Danke
Thomas

von Thomas (Gast)


Lesenswert?

?!? schrieb:
> nicht"Gast" schrieb:
>> Hallo,
>>
>> ich fürchte, du bist total durcheinander. :)
>>
> Nee, er hat das schon richtig beschrieben.
> Lies seinen Beitrag nochmal.

O.K. nun hat sich dein Beitrag mit meinem letzten Überschnitten.. danke 
nochmal.. :-)

Thomas

von ?!? (Gast)


Lesenswert?

Thomas schrieb:
> Ihr schreibt immer das ich ein Programm für den Controller schreiben
> muss.... O.K. aber wird dieses Programm auf den Controller geflashed
> und pollt dann immer auf die Daten auf  USB Schnittstelle (wenn ich es
> so programmiere) oder muss das Programm für den Controller bei jedem
> Start "quasi" neu an den Controller gesendet werden, bzw. vom PC aus
> mitlaufen ?

Nein, du brauchst zwei Dinge: Einmal ein Programm für den Arduino, was 
die I²C ausliest und sie dem PC über eine Schnittstelle mitteilt. Und 
zweitens ein Programm auf dem PC, was mit dem Arduino kommuniziert, um 
die Daten entgegenzunehmen.
Und nein, das Programm für den Arduino mußt du nicht jedesmal neu 
flashen.

von Georg G. (df2au)


Lesenswert?

Wenn es denn unbedingt USB sein muss, dann nimm auf der Arduino Seite 
einen RS232<->USB Adapter. Arduino mit RS232 verheiraten ist simpel und 
auf der PC Seite erscheint der Adapter als virtueller RS232 Port und ist 
auch simpel zu behandeln. "Echtes" USB ist da drastisch komplexer (es 
sei denn, du nimmst die Standard Treiber, aber dann kannst du auch 
gleich den fertigen Adapter nehmen).

Als weiteren Vorteil kannst du in Ruhe mit einem Terminal Programm dir 
ansehen, was der Arduino da plappert und du kannst ihn da drüber 
steuern. Du musst dir nur ein möglichst simples Protokoll ausdenken.

: Bearbeitet durch User
von John (Gast)


Lesenswert?

Hat der externe Controller noch weitere Aufgaben, als nur die 
Sonsordaten bereit zu stellen.

Wenn nicht, dann reicht ein einfacher USB zu I2C Adapter:
http://www.exp-tech.de/Shields/USB-to-I2C-Interface-Module.html?gclid=CM7uh8ma8r4CFQHlwgodcrUABA

Damit kann man die Sensoren direkt vom PC abfragen. Mann muss keinen 
zusätzlichen Controller programmieren.
(Und ja, man kann mehrere Sensoren anschließen.)

von ?!? (Gast)


Lesenswert?

John schrieb:
> Hat der externe Controller noch weitere Aufgaben, als nur die
> Sonsordaten bereit zu stellen.
>
> Wenn nicht, dann reicht ein einfacher USB zu I2C Adapter:
> http://www.exp-tech.de/Shields/USB-to-I2C-Interfac...
>
> Damit kann man die Sensoren direkt vom PC abfragen. Mann muss keinen
> zusätzlichen Controller programmieren.
> (Und ja, man kann mehrere Sensoren anschließen.)

Der ist ja direkt bezahlbar! Bis jetzt kannte ich nur Adapter aus dem 
Bereich der professionellen Meßtechnik und da bist du beim Preis 
umgefallen. Aber wenn das so ist, dann wäre das natürlich eine gute 
Lösung. Dann müßte Thomas nur eine Software für den PC schreiben.

von Thomas (Gast)


Lesenswert?

Danke an alle für die Hilfe :-)

Georg,

falls eine Verbindung vom Controller zum PC über ein USB Kabel  einen 
virtuellen Comport erzeugt weiß ich nicht, falls ja dann würde ich 
selbstverständlich dieses Lösung bevorzugen. (Am PC soll zumindest auch 
eine USB Buchse genutzt werden da keine serielle Schnittstelle vorhanden 
ist)

John,

das sieht sehr interessant aus, die Lösung wäre dann PT1000 Sensor an 
das I2C Modul 
http://www.conrad.de/ce/de/product/502001/IC-Temperatur-Modul-mit-Analogausgang-0-5-V-Hygrosens-TEMOD-I2C-R1-32-96-C/?ref=bundles&rt=bundles&rb=1

 , dieses I2C Modul an das USB - I2C Interface ?!

Das von Dir verlinkte Interface hat zwar keinen Vermerk das es dafür 
auch Win7 Treiber gibt, oder eine einleitende Dokumentation aber da 
werde ich mich mal umsehen.

Thomas

von stefanus (Gast)


Lesenswert?

Um eine serielle Schnittstelle an einen USB Port anzuschließen, brauchst 
Du einen USB-UART Chip. Sowas ist in den handelsüblichen USB-zu-seriell 
Adpterkabeln drin. Die sind aber unhandlich, weil sie +/-12V Pegel 
haben. Besorge die lieber einen USB-UART mit 3,3V bzw 5V. Es gibt 
Mikrocontroller-Module, wo so ein Chip drauf ist (z.B. bei chip45.de).

Es gibt aber auch USB-zu-I2C Interface. Wenn Du so einen Chip 
verwendest, entfällt die Programmierung des Mikrocontrollers. Siehe 
http://www.elv.de/Highspeed-USB-Kommunikation-einfach-integriert-%E2%80%93-UARTFIFO-Wandler-Modul/x.aspx/cid_726/detail_35146

Den virtuellen seriellen Port erzeugt der Treiber, der zum USB-UART 
Modul gehört. Bei Linux ist dieser Treiber Bestandteil des Kernels. Bei 
Windows braucht man mindestens eine *.inf Datei. Der Chiphersteller 
(ftdi, silabs, prlific) bietet den Treiber zum Download an.

von Georg G. (df2au)


Lesenswert?

Thomas schrieb:
> Das von Dir verlinkte Interface hat zwar keinen Vermerk das es dafür
> auch Win7 Treiber gibt

Entweder zu unaufmerksam gelesen oder Basiswissen fehlt... sorry.
In der Doku steht unübersehbar drin, dass das Board einen virtuellen COM 
Port erzeugt. Damit kannst du das Standard Interface deines 
Betriebssystems verwenden.

von Thomas F. (igel)


Lesenswert?

Thomas schrieb:
> die Lösung wäre dann PT1000 Sensor an das I2C Modul
> 
http://www.conrad.de/ce/de/product/502001/IC-Temperatur-Modul-mit-Analogausgang-0-5-V-Hygrosens-TEMOD-I2C-R1-32-96-C/?ref=bundles&rt=bundles&rb=1
>
>  , dieses I2C Modul an das USB - I2C Interface ?!

Damit wandelst du den analogen PT1000 erst mal in I2C um, um dann in 
einem zweiten Schritt I2C in USB zu konvertieren. Kann man machen, ist 
aber eher umständlich. Ausserdem kosten die benötigten Module schon 50€ 
für nur einen Messkanal.

Jetzt müsste man wissen, was du später damit vorhast. Soll das ganze im 
industriellen Umfeld eingesetzt werden, könnte man es so machen. 
Ausserdem spart man sich das Programm für den Controller.
Für eine private Bastelei halte ich es für zu teuer und falscher Ansatz.

von Thomas (Gast)


Lesenswert?

Thomas Forster schrieb:
> Damit wandelst du den analogen PT1000 erst mal in I2C um, um dann in
> einem zweiten Schritt I2C in USB zu konvertieren. Kann man machen, ist
> aber eher umständlich. Ausserdem kosten die benötigten Module schon 50€
> für nur einen Messkanal.

Was heißt: Kann man machen, ist aber umständlich ? Wie kann man das 
sonst noch machen außer einen anderen Sensor nehmen der aber u.U. 
"ungenauer" ist ? Bin für alles offen...:-)

Ich habe den PT1000 als Beispiel genommen da dieser (je nach Typ) einen 
Maximalfehler von 0,15° K hat, wenn es ähnlich "genaue" gibt die 
einfacher zu nutzen und günstiger sind, ist das natürlich kein Thema.

Der Temperautursensor  kann auch auf einem breakout board instlliert 
sein, da er "nur" die präzise Umgebungstemperautur messen soll, und 
keine Flüssigkeit oder Oberfläche. (Das gleiche gilt natürlich für den 
Luftdruck)

Ich habe relativ präzise Sensoren für Temperatur und Luftfeuchtigkeit 
auf einem breakout board gefunden, aber die Kombination präzise 
Temperatur und Luftdruck bisher noch nicht.

Gruß
Thomas

von Albert M. (Firma: Bastler aus Mönchengladbach) (albertm) Benutzerseite


Lesenswert?

Thomas schrieb:
> Wie kann man das
> sonst noch machen außer einen anderen Sensor nehmen der aber u.U.
> "ungenauer" ist ? Bin für alles offen...:-)

Hallo Thomas, nimm lieber einen DHT22 Temperatursensor für das Arduino 
Board:
http://fluuux.de/2012/10/arduino-temperatur-und-luftfeuchtigkeit-mit-dem-dht22-prufen/
http://www.ebay.de/sch/i.html?_trksid=p2047675.m570.l1313.TR3.TRC1.A0.H0.Xdht22&_nkw=dht22&_sacat=0&_from=R40
Dafür findest Du genügend einfache Beispiele in C, Bascom oder LunaAVR. 
Damit der USB-Seriell Converter vom Arduino Board funktioniert, lade Dir 
auf der Arduino Web-Seite http://arduino.cc/en/Main/Software die Arduino 
Software runter und installiere diese. Dadurch wird der Treiber für 
USB/Seriell gleich mit auf Deinem PC installiert und das Board wird beim 
Anschluss mit seiner Port Adresse als Device erkannt. Die 
Arduino-Oberfläche mit ihren Sketchen musst Du ja nicht nutzen.
Die zugewiesene Port Adresse siehst Du unter Windows bei 
Computerverwaltung/GeräteManager/Anschlüsse(Com&LPT). Diese Port 
Adresse(Nummer) verwendest Du dann in Deinem Windows Programm um auf das 
Arduino Board zuzugreifen.
Das Programm auf dem Arduino (C,Bascom,LunaAVR) fragt dann in einer 
Schleife den Sensor ab und schickt das Ergebnis mit einem einfachen 
Befehl an seine Schnittstelle. Die dann am PC ankommenden Daten kannst 
Du nun mit Deinem Windows-Programm (C++,C#,Delphi,VisualBasic ...) 
lesen, indem Du die Schnittstelle mit der Port Adresse/Nummer öffnest 
und die Daten einliest.

Der Vorteil des Arduino Board für Dich ist, dass der Mikroprozessor auf 
dem Board normalerweise einen Bootloader hat (wenn nicht, kannst Du den 
über die Arduino Oberfläche auf den MC aufspielen). Somit brauchst Du 
keinen zusätzlichen Programmer um Die Software aufzuspielen. Das 
passiert dann auch über den USB/Seriell Anschluss, also über das 
angeschlossene USB-Kabel. Achte darauf in Deiner Programmoberfläche 
(Atmel...,Bascom,LunaAVR) die passende Option für das Flashen zu setzen. 
Meist findest Du da bereits einen Eintrag für Arduino.

Einfach überprüfen, welche Daten der Arduino nach erfolgreicher 
Programmierung so schickt, kannst Du mit einem Terminal Programm,z.B. 
mit HTerm:
http://www.der-hammer.info/terminal/
oder auch in der Arduino Programmoberfläche (Serial Monitor).

Und mach Dich mal von Deinen Genauigkeits Anforderungen für den 
Temperatursensor frei. Eine bezahlbare Genauigkeit von 0,1 Grad wirst Du 
so leicht nicht bekommen. Verwechsele hier nicht die Auflösung mit der 
Genauigkeit. Für den Feuchtesensor ist die Situation noch extremer, da 
kannst Du über eine Genauigkeit von 10% bei den gängigen 
Sensoren/Modulen schon froh sein.

Im übrigen programmiere ich meine Hobby Projekte mit Delphi 7 und 
LunaAVR weil mir das am leichtesten von der Hand geht.
Hier ein Luna Beispiel für den Arduino, es sendet fortlaufend ein 
"Hallo" an den PC:

avr.device = atmega328p
avr.clock = 16000000
avr.stack = 100
uart.baud = 115200
uart.Send.enable
do
  print "Hallo";
loop

: Bearbeitet durch User
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Georg G. schrieb:
>> Das von Dir verlinkte Interface hat zwar keinen Vermerk das es dafür
>> auch Win7 Treiber gibt
>
> Entweder zu unaufmerksam gelesen oder Basiswissen fehlt... sorry.

Da liegst Du falsch. Auch für virtuelle serielle Schnittstellen ist 
zwingend ein Devicetreiber erforderlich, der zur jeweiligen 
USB-UART-Bridge passen muss (also von Prolific, SiLabs, FTDI, TI oder 
wem auch immer kommen muss) -- die einzige Ausnahme sind CDC-Geräte, 
aber auch für die ist eine *.inf-Datei erforderlich.

Für USB-zu-I2C empfiehlt sich der FT201X:

http://www.ftdichip.com/Products/ICs/FT201X.html

von Albert M. (Firma: Bastler aus Mönchengladbach) (albertm) Benutzerseite


Lesenswert?

Rufus Τ. Firefly schrieb:
> Auch für virtuelle serielle Schnittstellen ist
> zwingend ein Devicetreiber erforderlich, der zur jeweiligen
> USB-UART-Bridge passen muss (also von Prolific, SiLabs, FTDI, TI oder
> wem auch immer kommen muss)

Daher ist ja für den TO, der noch wenig Ahnung hat, ein Arduino ideal 
geeignet. Da wird beim Installieren der Arduino-Oberfläche automatisch 
der richtige Device-Treiber für das Board installiert. Die 
Arduino-Oberfläche selbst mit ihren Sketches muss er ja anschliessend 
nicht unbedingt nutzen, da gibt es ja genügend Alternativen.

: Bearbeitet durch User
von Andreas H. (ahz)


Lesenswert?

Albert M. schrieb:
> Daher ist ja für den TO, der noch wenig Ahnung hat, ein Arduino ideal
> geeignet. Da wird beim Installieren der Arduino-Oberfläche automatisch
> der richtige Device-Treiber für das Board installiert.

Mir erschliesst sich hier nicht der Vorteil gegenüber dem FT201X, den 
Rufus vorgeschlagen hat. Die Treiber kann man sich ja auch direkt von 
der FTDI Seite runterladen.

Wenn man nicht das FTDI Breakout Board benutzen will, kann man auch ein 
MPSSE Kabel (in Verbindung mit App Note 190) verwenden. Das wäre dann 
ein USB->I2C Kabel.

Arduino will immer noch programmiert werden. Also wieder zwei 
Baustellen.

Andererseits kann man so einen Arduino ja immer mal für irgendwas 
gebrauchen ;-)

/regards
Andreas

von Albert M. (Firma: Bastler aus Mönchengladbach) (albertm) Benutzerseite


Lesenswert?

Andreas H. schrieb:
> Mir erschliesst sich hier nicht der Vorteil gegenüber dem FT201X, den
> Rufus vorgeschlagen hat. Die Treiber kann man sich ja auch direkt von
> der FTDI Seite runterladen.
>
> Arduino will immer noch programmiert werden. Also wieder zwei
> Baustellen.

Dass der TO in der Lage ist einen I2C Temperatursensor mittels FT201X 
USB/Seriell über den PC zu bedienen bezweifele ich bei seinem 
Kenntnisstand.
Daher ist die Kombination DHT22+Feuchte+Luftdruck und Arduino für ihn 
ideal. Da gibt es schon alles soweit vorgekaut. Daher lieber zwei sehr 
einfache Baustellen.

: Bearbeitet durch User
von Andreas H. (ahz)


Lesenswert?

Albert M. schrieb:
> Dass der TO in der Lage ist einen I2C Temperatursensor mittels FT201X
> USB/Seriell über den PC zu bedienen bezweifele ich bei seinem
> Kenntnisstand.

Ich nicht.

Beispielcode für VC2010 (?) ist in der Appnote enthalten.
Und die I2C Befehle für die jeweiligen Bausteine bekommt man aus dem 
jeweiligen Datenblatt.


> Daher ist die Kombination DHT22+Feuchte+Luftdruck und Arduino für ihn
> ideal. Da gibt es schon alles soweit vorgekaut.

Naja, er wollte doch I2C, oder ?

Thomas schrieb:
> mein Ziel ist es über einen I2C Controller die Temperatur ...

Der DHT22 ist KEIN I2C Device.

@Thomas: Ist denn I2C wirklich notwendig ? Ansonsten wäre Alberts Idee 
ja schon brauchbar.


/regards
Andreas

von Albert M. (Firma: Bastler aus Mönchengladbach) (albertm) Benutzerseite


Lesenswert?

Das der DHT22 ist KEIN I2C Device ist, sollte ja bekannt sein. Aber wie 
ich den TO verstanden habe, will der nur irgendwie Temperatur, Feuchte 
und Luftdruck messen.

von Thomas (Gast)


Lesenswert?

Als ich mich für eine Lösung "umgehört" habe die Temperatur und 
Luftdruck (Luftfeuchtigkeit nicht zwingend notwendig) so präzise wie 
möglich im mobilen Einsatz (Laptop) die Daten irgendwie auszulesen, und 
die Daten in einem eigenen Programm weiter verarbeiten zu können (ohne 
ein fertiges Gerät für mehrere Hundert Euro kaufen zu müssen, und deren 
Software  umständlich umzustricken) wurde mir "gesagt" das I2C da wohl 
die beste Wahl sei so etwas selbst zu realisieren.


Grundsätzlich bin ich für alle Lösungen offen die so "einfach" wie 
möglich realisiert werden können, solange ich Sensoren zu Auswahl habe 
die :

- Temperatur maximal Fehler <= 0.3 °C
- Luftdruck maximal Fehler  <= 1 hPa
- Stromversorgung über USB oder z.B. 9 Volt Block
- Ich die Daten über C++ auslesen und verarbeiten kann.. (Damit habe ich 
zumindest schon einige Projekte realisiert, und müsste nicht zuerst 
nochmal etwas neues lernen )

Es spielt jetzt nicht so die Rolle ob ein Sensor 10 oder 25 Euro kostet.


Thomas

von Thomas F. (igel)


Lesenswert?

Thomas schrieb:
> - Temperatur maximal Fehler <= 0.3 °C
> - Luftdruck maximal Fehler  <= 1 hPa

Zur Sicherheit nochmal nachgefragt:
Auflösung oder Genauigkeit?

Wenn du wirklich die obigen Werte als absolute Genauigkeit brauchst, 
wird es sportlich. Da musst du dann schon kalibrieren und 
Kalibriertechnik in der nötigen Genauigkeit ist teuer.

von Georg G. (df2au)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Da liegst Du falsch. Auch für virtuelle serielle Schnittstellen ist
> zwingend ein Devicetreiber erforderlich

Diesen Treiber bekommt er aber fertig geliefert oder er ist schon 
installiert. Wenn er selbst "USB" als Verbindung machen will und nicht 
auf Standard Devices zurück greift, hat er auch das Vergnügen, einen 
eigenen USB Treiber zu schreiben. Und genau das sollte gesagt werden.

@Thomas:
> - Temperatur maximal Fehler <= 0.3 °C
> - Luftdruck maximal Fehler  <= 1 hPa
Mach mal den Versuch im Zimmer. Lass jemanden in 10m Entfernung eine Tür 
öffnen oder schließen und beobachte den Luftdruck. Es gibt Alarmanlagen, 
die so arbeiten.
Zur Temperatur misst du die Temperatur und machst dann in 1m Entfernung 
eine Schreibtischlampe an. Und dann wunderst du dich.

Die Adresse der PTB hast du? Die wirst du brauchen, wenn du so genau 
werden möchtest.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.