Forum: Mikrocontroller und Digitale Elektronik USB µC daten auswertung


von Peter (Gast)


Lesenswert?

Hallo,

Ich will einen Wegsensor nach seinem Verschleiß ausmessen, so habe ich 
mir das vorgestellt.

Sensor   ->  TP-Filter  ->  A/D Wandler ->  µC USB Controller -> 
Auswertung am PC

Ich Will die daten die ich von dem Sensor bekomme über USB auf dem PC 
haben, um sie dann z.B. in Matlab auswerten zu können. Ich kenne mich 
leier mit µC leider nicht gut aus, könnte mir da einer Helfen, welchen 
µC ich da am besten benutzen könnte?

Lg

Peter

von Ballermann (Gast)


Lesenswert?

Entweder über den USART und dann einen USB <-> USART-Wandler (z.B. FT232 
od. CP2102) dran, oder direkt einen uC nehmen der mit USB zurecht kommt.

Beides mal hat man dann einen VCP und kann die Daten bequem auslesen.
Über Matlab oder ein Terminalprogramm gar kein Problem.

Schau mal hier etwas im Forum rum, das hat so ziemlich jede 2. 
uC-Schaltung hier.

Grüße

von Stefan (Gast)


Lesenswert?

Peter schrieb:
> Ich kenne mich
> leier mit µC leider nicht gut aus, könnte mir da einer Helfen, welchen
> µC ich da am besten benutzen könnte?

Prinzipiell gibt es zwei Möglichkeiten: entweder einen kleinen 
Mikrocontroller (z.B. AVR oder PIC) mit UART verwenden und über einen 
Seriell-nach-UART-Chip an den USB vom PC hängen; oder du nimmst einen 
Mikrocontroller mit integriertem USB - hier wäre ein kleiner Controller 
im DIL-Gehäuse der PIC18F14K50 (Beispielschaltung: 
www.fundf.net/usbnub/).

von Martin M. (capiman)


Lesenswert?

Vielleicht hilft Dir ein fertiges Gerät in der Art:

http://www.conrad.de/ce/de/product/123079/PICOLOG-1012-LOGGER/SHOP_AREA_17210&promotionareaSearchDetail=005

http://www.elv.de/Datenlogger-4-Kanal-PCS10/x.aspx/cid_74/detail_10/detail2_29441/flv_/bereich_/marke_

(gibt es bestimmt noch mehr, auch von anderen Firmen...
dies waren nur die ersten Geräte, die ich gerade gefunden habe)

Oder vielleicht sogar ein Voltmeter mit USB / PC - Anschluss ?

Welchen Spannungsbereich und welche Abtastrate stellst du dir vor ?

von Peter (Gast)


Lesenswert?

SO jetzt nochmal für den dummen Peter ^^.

Müsste ich den µC selber Programmieren? Oder gibt es da von Hersteller 
Seite schon was fertiges?

Kannst du mir erklären was VCP heißt?

Lg

Peter

von Ralf S. (spacedog) Benutzerseite


Lesenswert?

Ich benütze für solche Aufgaben in der Regel so was in dieser Art hier:

http://sine.ni.com/nips/cds/view/p/lang/de/nid/201986

von Ballermann (Gast)


Lesenswert?

Peter schrieb:
> Müsste ich den µC selber Programmieren?

Wenn Du einen nackten Controller kaufst oder ein Demo/Evalboard, dann 
ja.
Es gibt aber entweder beim Hersteller oder in gewissen Foren (wie hier) 
auch oft Beispielcode. Den müsstest Du dann evtl. auf Dein genaues 
Problem anpassen. Also z.B. Samplerate, Anzahl bzw. Auswahl der ADCs, 
Datenformat über USART/USB usw....

Peter schrieb:
> Oder gibt es da von Hersteller Seite schon was fertiges?

Vom Hersteller mit Sicherheit nicht, aber wie gesagt es gibt fertige 
Hardware die Du dann halt noch Flashen musst.

Peter schrieb:
> Kannst du mir erklären was VCP heißt?

Virtual-COM-Port.
Die meisten PCs haben ja heute keinen COM-Port mehr, deshalb der "Umweg" 
über USB.
Wenn Dein PC noch einen COM-Port hat, dann müsstest Du nur den 
USART-Pegel auf die RS-232 Pegel umsetzen lassen (z.B. über einen 
MAX232).

Macht aber heut zu Tage wohl keinen Sinn mehr!?

Grüße

von Peter (Gast)


Lesenswert?

Ich würde sowas lieber selber "basteln", weil dadruch der lern effekt 
einfach größer ist.

Ich habe mir gerade was über UART durch gelesen, wird das als 
schnittstelle für RS232 genutzt, oder auch für USB?. Das ist mir nicht 
ganz klar geworden.

Einen AVR µC könnte ich nutzen oder? Haben die auch die möglichkeit auf 
USB zu gehen? mit eingebautem UART?

sry falls ich so blöde fragen stelle, kenne mich mit µC nicht so gut aus

Lg

von --- (Gast)


Lesenswert?

Die Frage wurde schon beantwortet:

Ballermann schrieb:
> Entweder über den USART und dann einen USB <-> USART-Wandler (z.B. FT232
> od. CP2102) dran, oder direkt einen uC nehmen der mit USB zurecht kommt.

bei den kleine AVRs z.b. ATmega16U4

Wichtiger wäre die Frage, welche Genauigkeit und Geschwindigkeit dein 
Messaufbau haben muss.

Es gibt auch Oszis mit USB Schnittstellen oder professionelle 
Datenkarten.
Einfache Datenerfassungskarten zum spielen gibt es z.B. von H-Tronik

von Ballermann (Gast)


Lesenswert?

Peter schrieb:
> Ich würde sowas lieber selber "basteln", weil dadruch der lern effekt
> einfach größer ist.

Kein Problem.
Ich würde als Einstieg ein fertiges kleines Board nehmen.
Steckbrett geht zwar auch, ist aber wahrscheinlich auch nicht billiger 
und gerade für den Anfang ist es besser man hat eine funktionierende 
Hardware und kann sich nur auf die eigenen Softwarefehler konzentrieren.

Flashen geht entweder über ein selbst gebasteltes ISP-Kabel oder manche 
haben auch sowas schon bereits auf dem Board (2. würde ich empfehlen).
Bootloader geht theoretisch auch.

Peter schrieb:
> Ich habe mir gerade was über UART durch gelesen, wird das als
> schnittstelle für RS232 genutzt, oder auch für USB?. Das ist mir nicht
> ganz klar geworden.

Ne, nur RS232. Deshalb braucht man ja auch einen Baustein alla FT232 
oder CP2102 der noch den ganzen USB-Stack außen um die eigentlichen 
Nutzdaten rumbastelt.
Gerade als Einsteiger würde ich Dir empfehlen, mach es über den USART 
und dann einfach einen oben genannten Baustein dran.
Direkt in Sachen USB einzusteigen ist vielleicht nicht so dienlich!?

Peter schrieb:
> sry falls ich so blöde fragen stelle, kenne mich mit µC nicht so gut aus

Kein Problem, so habe ich auch mal angefangen.
Nur wirst Du Dir das meiste selbst aneignen müssen.


Bist Du Student oder kennst Du einen Studenten?
Dann könntest Du Dir z.B. das STK500 besorgen:
http://student.embedded-projects.net/index.php?module=artikel&action=artikel&id=373

Wenn Du unbedingt gleich alles auf dem Steckbrett aufbauen willst, dann 
besorg Dir wenigstens gleich nen richtigen ISP Programmer alla AVR-ISP 
MK2 oder gleich nen AVR-DRAGON, dann kannst Du sogar etwas Debuggen.
Denke mal ein JTAG-ICE-MKII willst Du Dir für den Anfang nicht gönnen.

Grüße

von Peter (Gast)


Lesenswert?

Ich bin Student.

Mir geht es Primär um die Hardware, ich will eher die Selbstständig 
konzepieren, und sekundär geht es mir um die Software. Aber so wie ich 
das raus lese ist das keine gute idee oder?

Ich denke Softwaremäßig dürfte das doch nicht so umfangreich werden 
oder? Wie Ballermann ja schon schrieb, gibt es viele Beispielcodes, die 
ich dann auf meine Anwendung anpassen könnte.

von Ballermann (Gast)


Lesenswert?

Peter schrieb:
> Mir geht es Primär um die Hardware, ich will eher die Selbstständig
> konzepieren, und sekundär geht es mir um die Software. Aber so wie ich
> das raus lese ist das keine gute idee oder?

Doch, klar geht das auch.
Nur würde ich es heute nicht mehr so machen.
Ich finde halt, gerade beim fliegenden Aufbau auf einem Steckbrett geht 
schneller mal ein Draht raus oder man macht anderstwo nen Kurzschluss 
und man sucht sich dann ewig den Wolf weil sein Programm nicht mehr 
funktioniert.

Wenn Du trotzdem so einsteigen willst, geht das relativ kostengünstig.
Kauf Dir ein ATMEGA (z.B. ATMEGA644) im DIP Gehäuse, dann noch ein Quarz 
dazu (z.B. 14,7456 MHz), 2 x 12-22pF Kondensator (für den Quarz), ein 
paar 100nF Kondensatoren (wegen evlt. Störungen auf der 
Betriebsspannung), 10k Widerstand für den Reset, evtl. noch ein kleiner 
Elko und ein kleines Steckernetzteil (z.B. 5V geregelt) und natürlich 
noch den FT232 für die USART<-->USB Umsetzung.

Zusammen kommst Du da auf ca. 15-25 Euro.

Dann noch den Selbstbau-Programmer oder besser ein AVR-ISP-MKII.

Peter schrieb:
> Ich denke Softwaremäßig dürfte das doch nicht so umfangreich werden
> oder?
USART gibt es schon fertig. Der AT644 ist glaub ich weitgehend gleich 
zum alt bekannten ATMEGA16/32/128.
ADC auch.
Timer auch.
Also musst Du nur noch diese Komponenten zusammenfügen.
(Ich gehe hier mal von Programmiersprache C aus).
Anonsten wäre noch BASCOM oder ASSEMBLER möglich.
Da kenne ich mich aber nicht aus, gibt es aber bestimmt auch Beispiele 
dazu.

Grüße

von Peter (Gast)


Lesenswert?

Danke vielmals, ich versuche mal die Schaltung aufzubauen, und werde 
mich dann mit ergebnossen melden

von Guido Körber (Gast)


Lesenswert?

Was soll der zusätzliche Microcontroller und die seriell-Bastelei?

Einfach wäre es doch einen A/D Wandler mit SPI oder I2C Interface zu 
nehmen und einen vernünftigen Schnittstellenbaustein für die USB 
Anbindung. Dann entfällt die Programmierung auf der Hardware.

z.B. IO-Warrior:
http://www.codemercs.com/index.php?id=64&L=0

Gibts auch handlich verpackt:
http://www.codemercs.com/index.php?id=256&L=0

von Ballermann (Gast)


Lesenswert?

Guido Körber schrieb:
> Was soll der zusätzliche Microcontroller und die seriell-Bastelei?
>...
> z.B. IO-Warrior:

Durchsatz typ. 750 Bytes/sec ist nicht gerade so der reiser, oder!?

Bei der angegebenen FCPU von 14,7456MHz schafft der AT644 immerhin 
1,8432Mbps. Bei 20MHz dann sogar 2,5Mbps.

Der ADC könnte theoretisch mit bis zu 15kSPS betrieben werden (bei 
vollen 10Bit Auflösung).

Grüße

von Peter (Gast)


Lesenswert?

Ich hätte nochmal eine frage, was wäre denn ein guter einstieg in die µC 
Programmierung?

Kann mir da jemand ein Buch empfehlen?

Lg

von Ballermann (Gast)


Lesenswert?

Peter schrieb:
> Ich hätte nochmal eine frage, was wäre denn ein guter einstieg in die µC
> Programmierung?

Das was Du hier machen willst ist eigentlich schon gut geeignet.
Du musst es nur in die einzelnen Aufgaben zerlegen.
Später wirst Du das auch so machen. Alles auf einmal machen zu wollen 
geht meist schief und wird schnell frustrierend. Weiterer Vorteil: Wenn 
Du dir richtige Librarys erstellst kannst Du die später immer wieder 
benutzen (annähernd gleicher uC vorrausgesetzt).

Also:
1
1. Timer verwenden und evtl. eine LED im Timertakt schalten.
2
2. USART in Betrieb nehmen und ein "Hello World" übertragen an den PC.
3
3. ADC Wert auslesen und über USART übertragen.
4
4. Interrupt einstellen für Timer, USART und ADC.
5
5. Das ganze in ein Projekt zusammenfügen.

Im Prinizip kannst Du dafür das unten aufgezählte Tutorial hernehmen und 
anhand dessen diese Punkte realisieren.


Peter schrieb:
> Kann mir da jemand ein Buch empfehlen?

Kannst Du schon eine Programmiersprache?
Also C/C++, Basic oder Assembler?

Wenn Du in Richtung C einsteigen möchtest, dann ist das Tutorial hier 
auf der Seite nicht schlecht. Schau Dir mal die 2 Links an:
http://www.mikrocontroller.net/articles/AVR-Tutorial
bzw.
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

Und da es immer übersehen wird, ja das Tutorial gibt es auch als PDF:
http://www.mikrocontroller.net/wikifiles/1/1b/AVR-GCC-Tutorial.pdf
(nicht immer auf aktuellstem Stand).

Wenn Du wirklich noch keine Ahnung von Programmierung hast, dann kannst 
Du auch zuerst mal in eine Programmiersprache auf dem PC einsteigen 
(Dann entfällt der Kauf der Hardware und man kann direkt loslegen).

Für C gibt es auch noch ein kostenloses Buch bei Galileo:
http://openbook.galileocomputing.de/c_von_a_bis_z/

Hier hatten Sie es vor kurzem über C++ Tutorials:
Beitrag "c++ tutorial"

Für Basic/BASCOM gibt es bestimmt auch noch eins, musst Du mal suchen 
oder jemand anderes was dazu schreiben...

Grüße

von Guido Körber (Gast)


Lesenswert?

Ballermann schrieb:
> Bei der angegebenen FCPU von 14,7456MHz schafft der AT644 immerhin
> 1,8432Mbps. Bei 20MHz dann sogar 2,5Mbps.

1,8 Mbps auf dem I2C, cool...

von Martin M. (capiman)


Lesenswert?

> 1,8 Mbps auf dem I2C, cool...

I2C:

"up to 400 kbit/s in the Fast-mode, up to 1 Mbit/s in Fast-mode
Plus, or up to 3.4 Mbit/s in the High-speed mode."

siehe auch (Seite 3 ganz unten)

http://www.nxp.com/documents/user_manual/UM10204.pdf

Ich weiß aber nicht, ob der AT644 dies kann
und ob "Ballermann" hier nicht SPI o.ä. gemeint hat :-)

von Guido Körber (Gast)


Lesenswert?

Martin Maurer schrieb:
> "up to 400 kbit/s in the Fast-mode, up to 1 Mbit/s in Fast-mode
> Plus, or up to 3.4 Mbit/s in the High-speed mode."

Ja, nur fast mode plus ist eher selten und high speed exotisch.

von Ballermann (Gast)


Lesenswert?

Guido Körber schrieb:
> 1,8 Mbps auf dem I2C, cool...

Wie gesagt...funktionieren würde es sogar (entsprechende Hardware 
vorrausgesetzt).

Aber auf das wollte ich garnicht raus.

Es wurde gefragt:

Guido Körber schrieb:
> Was soll der zusätzliche Microcontroller und die seriell-Bastelei?

Darauf habe ich dann die Antwort gegeben:
Beitrag "Re: USB µC daten auswertung"

Ein uC bringt den Vorteil, dass man die 15ksps des ADCs über eine 
serielle Schnittstelle (USART/RS232) mit bis zu 2,5Mbps an den PC 
bringt.
Von I2C war nicht die Rede.
Das ist mit dem vorgeschlagenen IO-Warrior (über I2C) eben nicht 
möglich, da er eben "nur" 750 Bytes/sec übertragen kann.

Grüße

von Guido Körber (Gast)


Lesenswert?

Abgesehen davon, dass der IOW56 über 60kByte/s schafft ist die Frage wie 
hoch die Samplerate sein muss gar nicht spezifiziert worden. Die A/D 
Wandler Chips sind heute im Allgemeinen recht schnell und werden häufig 
nicht ausgenutzt.

Die Aufgabenstellung hörte sich für mich nicht nach einer schnellen 
Datenrate an.

von Ballermann (Gast)


Lesenswert?

Guido Körber schrieb:
> Die Aufgabenstellung hörte sich für mich nicht nach einer schnellen
> Datenrate an.

Ja, da hast Du recht...Verschleiß wird wahrscheinlich nicht eine Sache 
von us sein :-D Aber jetzt wird es für den Verschleiß gebraucht und 
später soll eine Wechselspannung mit gesampelt werden.

Die IOWarrior sind ja auch nicht schlecht.
Hatte mir auch mal überlegt so ein Ding zu kaufen.
Wenn ich aber dann die 33 Euro sehe, geht es halt zumindest mir so, dass 
ich lieber einen ATMEGA16 oder so nehme und das kurz selber mache.
Arbeitszeit ist da auch nicht der Rede wert, die 
ADC+Timer+USART-Routinen hat man normalerweise schon in der Schublade.
Den da ist der AD-Wandler schon für einen Preis von 1-3 Euro inklusive, 
dann noch ein USB-Seriellwandler dazu und fertig ist der Braten.

Wenn wir im absoluten Low-Budget-Bereich sind, dann würde auch ein 
Attiny reichen:
http://www.obdev.at/products/vusb/prjdetail.php?pid=31
Da ist dann die USB-Buchse das teuerste an der ganzen Sache (klar hat 
man dann auch nicht die Übertragungsraten, aber für 3 Euro kommt man 
dann für eine Verschleißüberwachung aus).

Er meinte ja auch weiter oben er möchte es selbst machen:

Peter schrieb:
> Ich würde sowas lieber selber "basteln", weil dadruch der lern effekt
> einfach größer ist.

Letzten Endes liegt es bei Ihm was er machen will...wir haben ihm ja 
jetzt genügend INPUT gegeben.

Grüße
Ballermann

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.