Forum: Mikrocontroller und Digitale Elektronik SPI / RS232 ---> USB ---> Python, ich verliere den überblick.


von Lost_Viking (Gast)


Lesenswert?

Hallo,
wie schon in einem anderen Thread beschrieben möchte ich eine 
Messvorrichtung aufbauen. Ursprünglich dachte ich, das ganze mit einem 
Raspberry Pi zu lösen, doch dies bietet außer den Schnittstellen nichts 
was ich benutzen müsste. Deswegen bin ich davon wieder abgekommen.

Grundaufbau liegt wie folgt:
ADC-SPI + RS.232 --> x --> USB --> Pc (Python)

Ich möchte also einen Analog Digital Wandler und eine Rs.232 
Schnittstelle über Usb mit einem Pc verbinden.

Folgende Möglichkeiten habe ich soweit angeschaut, und bin etwas 
überfordert welche nun die beste ist:

MCP2200 
(http://www.microchip.com/wwwproducts/devices.aspx?dDocName=en546923)
Die GPIO Pins könnte ich für die SPI Kommunikation nutzen?

FTDI 2232D (http://www.ftdichip.com/Products/ICs/FT2232D.htm)
Dual Ausführung für SPI und Uart konfigurierbar.

Mit einem Mikrokontroller. Charmant wäre das dieser die meiste Arbeit 
"erledigen" könnte bevor der PC einspringen muss. Der Pc würd dann nur 
als Datenkraken/Oberfläche dienen. Problem hierbei, ich hatte bisher nur 
sehr rudimentären kontakt zu MC's.

Mein Hauptproblem ist, dass ich gerne für die Datenweiterverarbeitung 
Python nutzen würde (numpy). Während ich zum MCP2200 keinerlei 
Information zur Einbindung gefunden habe(außer DLL), gibt es für die 
FTDI Chips diverse Python libraries. Alle allerdings ohne Windows 
Support. Wirkliche Dokumentation ist auch sehr dünn.
Mikrokontroller gibt es eine Menge, eine Verbindung könnte ich über 
einen klassischen Serial-to-USB, Controller machen. SPI und Uart haben 
ja die meisten. Manche Atmega32 haben sogar eine USB-Schnittstelle? Hier 
ist wieder die Frage der Python Schnittstelle.

Welche Lösung scheint euch in euren Augen am besten Geeignet und welches 
ist am leichtesten Umsetzbar?
Hat jemand von euch schon Erfahrungen mit einem der System gemacht?

Habt vielen Dank,

lost_viking

von Rainer U. (r-u)


Lesenswert?

Es gibt fertige Module für < 5 Euro, die RS232 (auf TTL-Pegel) nach USB 
umsetzen. Viele sehr günstige uCs haben auch schon ADCs und RS232 an 
Board.

Dein uC-Programm ist im Prinzip winzig:

1) lies ADC
2) gib aus auf Rs232, plus evtl. ein Trennzeichen wie Zeilenvorschub
3) goto 1)

Mit Deinem PC-Programm (oder dem Programm für die Raspberry Pi) liest Du 
dann die Com-Schnittselle, die Dir der USB-Adapter generiert hat.

von Stefan (Gast)


Lesenswert?

> Die GPIO Pins könnte ich für die SPI Kommunikation nutzen?

Ja, aber langsam. Denn dann musst DU den Takt ja per Software erzeugen 
und jeden Bit einzeln einlesen.

Die DLL kannst Du sicher auch irgendwie mit Python aufrufen. Mit Java 
geht das ja auch. Ich kenne mich mit Python nicht aus, habe spontan 
jedoch diesen Beitrag gefunden: 
http://stackoverflow.com/questions/252417/how-can-i-use-a-dll-from-python

von Lost_Viking (Gast)


Lesenswert?

Ja die DLL Wrapper hatte ich schon im Blick, hab allerdings auf dem 
gebit keine Erfahrung. Da sollte ich entsprechend nocheinmal nachbohren.

Das mit dem SPI und dem Bit für bit hatte ich irgenwie sowiso auf dem 
Plan, hatte mich bisher an einem Tutorial für das Pi orientiert, bei die 
verbindung so Aufgebaut wurde.

Mittlerweile bin ich bischen bei den uC hängengeblieben. Mit dem 
Entsprechenden Controller könnte ich eine "Vorauswertung" machen und 
müsste somit nur einzelne Datensets auslesen. Die Regelung für das 
System ließe sich auch integrieren (eine Pumpe wird über einen RS 232 
angesprochen entsprechend eines durchflusses um einen quasi stationären 
Zustand herbeizuführen).Die Vorauswertung wären statistische Verfahren 
um die Daten des ADC aufzubereiten (Mittelwert, Median, ...)
Habe mich mal bei Atmel umgeschaut, und bin bischen recherchiert. Rein 
von den Pins würde sich ein AT32UC3B anbieten (2x UART, SPI). Ist 
vieleicht als Einstieg etwas heftig?
32 bit sind sicher nicht nötig, aber statistische Auswertung von 16 bit 
Daten auf einem 8 bit Controller stößt mir irgenwie Sauer auf.

Mir schwebt momentan eine Lösung mit "Controller" Software (Python, 
RS-232) vor, welche nur die Einstellungen des uC anpasst und die 
vorausgewerten Daten weiterverarbeitet. Habe mir ein bischen Literatur 
besorgt und werde die einmal am Wochende durchgehen.

Über Anregungen bin ich sehr Glücklich.

von troll (Gast)


Lesenswert?

Lost_Viking schrieb:
> 32 bit sind sicher nicht nötig, aber statistische Auswertung von 16 bit
> Daten auf einem 8 bit Controller stößt mir irgenwie Sauer auf.
Man kann auch mit 64-Bit auf einem 8bitter rechnen, die Frage ist halt 
wie viel Zeit hast du. Wenn man C nimmt kein Problem, da kümmert sich 
der COmpiler darum die Daten in 8bit-Happen an die ALU zu verfüttern...

von Mike (Gast)


Lesenswert?

RS232 ist eigentlich veraltet. Heutzutage nimmt man USB. Bei wenig 
Datenaufkommen (<10 kByte/s) eignet sich HID hervoragend.

Vorteile:
- Keine Treiberprobleme bei Windows
- Extrem simple Programmierung mit C++, C#, VB (Python kenn ich nicht)

von Lost_Viking (Gast)


Lesenswert?

Erst einmal Sorry für die Schreibfehler oben, erschreckend.

USB war erste Überlegung, allerdings ist die Reichweite davon absolut 
für die Katz. Mit nem einigermaßen Kabel und ner RS-232 gehen immerhin 
30m mit ertragbarer Geschwindigkeit. Auch gibt es viele Tutorials für 
die Seite des Mikrocontrollers. Python und USB sollte klappen, native 
Packages scheint es zu geben.

Des mit der 8bit und 32bit Problematik. Denke gerade beim 
Vorkonditionieren wären das eine ganze Menge an zusätzlichen 
Rechenoperationen. Das steht und fehlt etwas mit der Abtastrate. Der 
interne Taktgeber des Bausteins macht "nur" 15 Hz, mit extern könnte man 
das noch deutlich erhöhen. Insgesamt sind es 5 Sensoren, die 
angeschlossen werden. Ob das nötig ist lass ich mal dahingestellt. Des 
hängt ein bisschen von der Qualität des Signals ab. Werde mal die 
nötigen Rechenoperationen abschätzen. Mal schauen was da raus kommt.

Lost_Viking

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.