Forum: Mikrocontroller und Digitale Elektronik Hilfe bei Mikrocontroller/Blockschaltbild


von Florian O. (iseh)


Angehängte Dateien:

Lesenswert?

Hallo,

ich soll in einer Projektarbeit den praktischen Umgang mit 
Mikrocontrollern erlernen. Meine Aufgabe ist es, die Temperatur und den 
Luftdruck zu messen und zusammen mit einem Zeitstempel am PC ausgeben.

Ich bin absoluter Laie was das Thema Mikrocontroller angeht und muss das 
Thema mit gewisser Ahnungslosigkeit angehen. Die erste Abgabe beinhaltet 
unter anderem ein Blockschaltbild. Den Wald vor lauter Bäumen vor Augen, 
habe ich mal ein Blockschaltbild entworfen und würde mich über 
aufklärende/korrigierende Hilfe eurerseits freuen !

Zur Erklärung:
Wir haben mehrere Mikrocontroller zur Auswahl, ich habe mich (fast 
willkürlich) für den PIC32-Pinguino entschieden. Laut Aufgabenstellung 
muss ich ein LC-Display und eine Matrixtastatur integrieren. Der 
erforderliche Zeitstempel erfolgt über einen DCF77-Empfänger. Die 
Ausgabe an den PC ist mit diesem Board über USB möglich.

Was ich mir zusammen gedacht habe:

- als LCD kommt das Olimex-eigene MOD-LCD1x9 per UEXT an das Board
- die 3x4 Matrixtastatur (7Pins) kommen an den digitalen I/O-Port CON4
- der DCF77-Empfänger an den I/O-Port CON5
- die Messsignale werden durch eine Verstärkerschaltung aufbereitet und 
durch einen A/D-Wandler digitalisiert
- die Abfrage der digitalisierten Messwerte erfolgt über den I2C-Bus 
(laut Datenblatt sind dafür die Pins 5 und 6 am analogen I/O-Port CON2 
zuständig)
(hier hab ich ein ganz großes Fragezeichen, da digitale Signale am 
analogen Eingang??)

von Frank M. (frank_m35)


Lesenswert?

Der PIC32 hat schon Analoge Eingänge (wie du selbst festgestellt hast), 
d.h. du kannst die Sensoren direkt (nach einer Pegelwandlung oder 
Aufbereitung) an einen Analogen Eingang des uC hängen, da brauchst du 
keinen externen Analog Digital Umsetzer.

Die Analoge Funktion des Pins kannst du jederzeit ein oder ausschalten. 
Viele Pins haben mehrere Funktionen. So liegen eben auf dem Pin sowohl 
ein Analoger Eingang, als auch das I2C Modul. Was du am Ende verwendest 
musst du in deinem Programm festlegen, d.h. den Analogen Port 
ausschalten und das I2C Modul einschalten.

Hast du dir die Sensoren ausgewählt oder kannst du da auch andere 
nehmen?

Das DCF77 Modul wird dir vermutlich am meisten Kopfzerbrechen bereiten, 
da es speziellere Funktionen des uC erfordert. Es ist nicht schwer, aber 
ja, für einen Neuling vermutlich das komplizierteste.

Auch die Sensoren könnte man direkt mit einem I2C Interface kaufen, sind 
dann halt andere typen :-) Dann erspart man sich den Analogen teil.

PS: Hast du dir die Aufgabe selbst gestellt? Es ist ein großes Projekt. 
Jemand der neu im Umgang mit uC ist, ist es zu schwer. Also ich hoffe du 
übernimmst dich nicht. Schon alleine der USB Port, da er direkt am uC 
verbunden ist, ist eine kleine Herausforderung, bis man die 
Vorgehensweise und die Microchip Bibliothek dazu verstanden hat.Ich 
hoffe du kannst gut C programmieren, falls das nämlich auch noch fehlt, 
dann wird's schwer.

von Nandfänger (Gast)


Lesenswert?

Hallo Florian,

Florian Otte schrieb:
> ich soll in einer Projektarbeit den praktischen Umgang mit
> Mikrocontrollern erlernen. Meine Aufgabe ist es, die Temperatur und den
> Luftdruck zu messen und zusammen mit einem Zeitstempel am PC ausgeben.
> Ich bin absoluter Laie was das Thema Mikrocontroller angeht und muss das
> Thema mit gewisser Ahnungslosigkeit angehen.

Da hast Du Dir ein beinahe unlösbares Los gezogen. Klar, die Messung von 
Werten aus 2 Sensoren, eine Tastur, ein LCD, etc ist an sich nicht 
schwer, aber als Totalanfänger sollte man eventuell kleiner beginnen. 
Also erstmal ein paar LEDs an den Pins schalten, wenn das funktioniert 
einen ADC dran, wenn das funktioniert, das Display, etc.
Alles auf einmal wird wahrscheinlich nix :-(

Wer stellt solche Aufgaben?

> Die erste Abgabe beinhaltet unter anderem ein Blockschaltbild.
> den Wald vor lauter Bäumen vor Augen,
> habe ich mal ein Blockschaltbild entworfen und würde mich über
> aufklärende/korrigierende Hilfe eurerseits freuen !

Mir gefällts, ist schön gezeichnet und intuitiv verständlich.

> Zur Erklärung: Wir haben mehrere Mikrocontroller zur Auswahl, ich habe
> mich (fast willkürlich) für den PIC32-Pinguino entschieden.

Kenne ich nicht näher, aber der wird das bestimmt können. Kann jeder 
x-beliebige Controller eigentlich.

> Laut Aufgabenstellung muss ich ein LC-Display und eine Matrixtastatur
> integrieren. Der erforderliche Zeitstempel erfolgt über einen DCF77-
> Empfänger. Die Ausgabe an den PC ist mit diesem Board über USB möglich.

Wie gesagt, ich wundere mich schon, wie irgendwelche Befehlshaber Ihren
Untergebenen Aufgaben stellen können, die ohne ein entsprechendes 
Grundlagenwissen einfach nicht zu bewältigen sind.

Alleine eine einfache Anbindung eines ADC an den Controller plus
Balkenanzeige mit Leuchtdioden, das ginge ja noch.
Aber Dazu noch LCD, Tastatur, DCF, PC-Anbindung über USB, etc...
Wann soll das Zeugs überhaupt fertig sein?

Welche Vorbildung hast Du überhaupt im Elektronikbereich?
Die Verstärkerschaltung für den PT100 z.B. baut sich ja ebenfalls nicht 
von alleine.

> Was ich mir zusammen gedacht habe:
> - als LCD kommt das Olimex-eigene MOD-LCD1x9 per UEXT an das Board

Wenn Du schon den I2C hast, könnte man eventuell ein LCD mit 
I2C-Anbindung nehmen. Aber egal, das LCD alleine macht "Das Kraut auch 
nicht mehr fett".

> - die Abfrage der digitalisierten Messwerte erfolgt über den I2C-Bus
> (laut Datenblatt sind dafür die Pins 5 und 6 am analogen I/O-Port CON2
> zuständig) (hier hab ich ein ganz großes Fragezeichen, da digitale
> Signale am analogen Eingang??)

Wie gesagt, ich kenne den POC32 nicht genauer (und habe jetzt ehrlich 
gesagt auch keine Lust, das Datenblatt von dem Teil zu überfliegen),
aber wahrscheinlich ist die Funktion des Ports oder der Pins 
umschaltbar.

In der Regel gibt's da im Controller eine Speicherstelle oder ein 
Register,
in das man einen bestimmten Wert reinschreiben muß, um die 
Funktionalität des Ports oder der Pins zu konfigurieren.
Beispielsweise sowas: Wenn an Speicherstelle 0x0FE2 Hausnummer AA 
reingeschrieben wird, dann verhalten sich die Pins als analoge Eingänge,
und wenn Du BB reinschreibst, dann sind es digitale Ausgänge.

Wie gesagt, ich will Dich ja nicht entmutigen, aber als Anfängerprojekt 
ist die Sache meiner persönlichen Meinung nach dann doch eine Nummer 
zu groß.

Zumindest, wenn's in absehbarer Zeit fertig sein soll. Das würde ich dem 
Auftraggeber auch direkt so sagen.

Trotzdem viel Erfolg, N.

von Wusel D. (stefanfrings_de)


Lesenswert?

Wäre das nicht ein typischer Anwendungsfall für Arduino?
Man sagt doch, dass da für alles Mögliche schon fertige Libs angeboten 
werden. Die klöppelt man zusammen und ist dann auch schon fertig.
Wozu sich mit Hardware und USB Protokollen auseinander setzen, wenn 
Arduino einem die ganze Arbeit abnimmt?

(Das war ironisch)

von Nandfänger (Gast)


Lesenswert?

Stefan Frings schrieb:
> Wäre das nicht ein typischer Anwendungsfall für Arduino?
> Man sagt doch, dass da für alles Mögliche schon fertige Libs angeboten
> werden. Die klöppelt man zusammen und ist dann auch schon fertig.

Ich hab' grade mal nachgesehen, das Pinguino ist eh genau sowas, da 
gibt's auch Module und entsprechende Libs, etc.
Und das angeführte LCD ist ja ein I2C-Modul dafür, sogar mit passendem 
Steckverbinder für den Pinguino.

Wahrscheinlich gibt's dafür auch ein passendens USB-Modul, 
Tastatur-Modul, vielleicht sogar ein DCF77-Modul. Dann bräuchte Florian 
nur noch das Sensormodul "basteln" und dazu entsprechende Software 
schreiben.

Ich rudere daher mit meinem ersten Entsetzen wieder etwas zurück.

Glücklich bin ich aber trotzdem nicht, N.

von Wusel D. (stefanfrings_de)


Lesenswert?

Ach, jetzt hab' ich mich beinahe selbst verschaukelt. Die Zielplattform 
ist ja sogar an Arduino angelehnt! Na denn, viel Spass beim klöppeln!

von Florian O. (iseh)


Lesenswert?

Frank M. schrieb:
> Hast du dir die Sensoren ausgewählt oder kannst du da auch andere
> nehmen?

Der Sensor für die Luftdruckmessung ist mir vorgegeben. Genauso wie das 
DCF77-Empfängermodul, Tastatur und LCD.
Als Temperatursensor ist mir der PT100 einfach sofort in den Sinn 
gekommen. Und da ich von digitaler Elektronik zu wenig Ahnung hab, 
wollte ich gerne benötigte Verstärkerschaltungen dabei haben, das kann 
ich etwas besser.

Ist das Blödsinn ? Sollte ich direkt I2C-fähige Sensoren nehmen ? Oder 
ganz einfach die 2 Sensoren an die Analogen Eingänge ? Wie ist das dann 
mit eventuellen Erweiterungen ?

Nandfänger schrieb:
> Alles auf einmal wird wahrscheinlich nix :-(
>
> Wer stellt solche Aufgaben?
>
> Welche Vorbildung hast Du überhaupt im Elektronikbereich?
>
> Wenn Du schon den I2C hast, könnte man eventuell ein LCD mit
I2C-Anbindung nehmen.

Ich studiere im 4.Semester Elektrotechnik. Für das Projekt hab ich knapp 
1 Jahr (2 Semester) Zeit, habe also etwas Zeit mich da reinzulesen.
Die Wahl des LCD kam ganz pragmatisch aus dem Ansatz "für die vorhandene 
Buchse (UEXT) such ich was mit passendem Stecker" und habe mich schon 
etwas gefreut, dass man dort tatsächlich das geforderte LCD-Display 
anschließen kann. (laut Aufgabenstellung wird eigentlich ein anderes 
Empfohlen, aber das hat einen 14-poligen Stecker, der nicht auf's Board 
passt)

von Eumel (Gast)


Lesenswert?

Florian Otte schrieb:
> Ich studiere im 4.Semester Elektrotechnik. Für das Projekt hab ich knapp
> 1 Jahr (2 Semester) Zeit, habe also etwas Zeit mich da reinzulesen.
> Die Wahl des LCD kam ganz pragmatisch aus dem Ansatz "für die vorhandene
> Buchse (UEXT) such ich was mit passendem Stecker" und habe mich schon
> etwas gefreut, dass man dort tatsächlich das geforderte LCD-Display
> anschließen kann. (laut Aufgabenstellung wird eigentlich ein anderes
> Empfohlen, aber das hat einen 14-poligen Stecker, der nicht auf's Board
> passt)

Wenn du die Zeit hast wirst du das schaffen :)

von Spess53 (Gast)


Lesenswert?

Hi

Was willst du an dem MPX4100 eigentlich verstärken? Die Ausgangsspannung 
geht doch schon von knapp über Null Volt bis fast 5V.

MfG Spess

von Frank M. (frank_m35)


Lesenswert?

Der PT100 ist ein Kaltleiter, d.h. du musst eine Widerstandsmessung 
durchführen und benötigst irgendeine Art von Schaltung davor, sei's auch 
nur ein simpler Spannungsteiler. Der Analogeingang braucht auf jedenfall 
eine Spannung.
http://www.sprut.de/electronic/temeratur/temp.htm#ptc

Alternativ kannst du eben auch einen digitalen verwenden.
http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en020949
Kommt auf deinen Einsatzzweck an. Falls der Sensor nur auf der Platine 
sitzen muss und nicht irgendwo extern angebracht werden soll, so ist ein 
digitaler einfacher. Musst du den Sensor aber später irgendwo extern 
anbringen, bspw. in einen Backofen führen, dann ist ein digitaler mit 4 
benötigten Leitungen (SDA, SCL, VSS, VDD) schlechter.

An den I2C Bus kannst du jederzeit Problemlos weitere Sensoren/ICs 
hängen.

Ebenso hat der PIC32 einige Analoge Eingänge, d.h. da ist noch eine 
Menge Spielraum für mehr analoge Peripherie.

Auf jeden Fall würde ich die Teile aber direkt an die Analogen Eingänge 
hängen, wozu hat der PIC32 sonst die AD-Converter?
Die Filter kannst du dann auch softwareseitig lösen, da bist du 
flexibler.

Mit was programmierst du?
Das wird dann deine Bachelorarbeit?
Nur das ganze hat doch eher weniger mit Elektrotechnik zu tun, zumindest 
wirst du 99% der Zeit am Programmieren sein, die Hardware hast du ja 
schon fix und fertig verfügbar.

Noch was zum nativen USB Anschluss:
Der ist aufwendig.
Auf jeden Fall musst du eine fertige Bibliothek verwenden, denn den USB 
Stack selber zu implementieren wäre totaler Schwachsinn und 
Zeitverschwendung.
Jedoch musst du beachten, dass er anders funktioniert als eine RS232 
Schnittstelle. Während du bei RS232 einfach Daten in den Ausgangsbuffer 
legst und diese dann vom PIC gesendet werden, oder Daten auf einmal im 
Eingangsbuffer ankommen die du dann nur noch abrufen musst, so 
funktioniert das mit USB nicht mehr.
http://www.sprut.de/electronic/interfaces/usb/usb.htm
Er erfordert eine bestimmte Programmierweise, da der USB Bus nicht zu 
vergleichen mit RS232 ist.
Du musst regelmäßig eine Routine durchlaufen, die ständig mit dem PC 
kommuniziert. Diese Routine regelt dann auch das Senden und Empfangen.
Ebenso kann ein USB Port in verschiedenste Art und Weisen konfiguriert 
werden. D.h. als HID, Massenspeicher oder , mit einem speziellen 
Treiber, als virtuelle serielle Schnittstelle.
Worauf ich hinaus will:
Ich würde das an deiner Stelle am Schluss machen, jedoch wirst du 
vermutlich dein Programm danach nochmal umschreiben müssen.
Vorerst würde ich dir ein fertiges RS232-USB Kabel von FTDI empfehlen, 
wodurch du die RS232 Schnittstelle des uC verwenden kannst und dir das 
Leben einfacher machen kannst. Damit lässt es sich auch leichter 
debuggen als über den USB-Port, da du nicht jedes mal das USB Gerät 
anmelden musst, beim Resetten fliegt dann der virtuelle COM-Port wieder 
raus, ... etc.
Erst danach, wenn das wichtigere (Sensoren, etc.) funktioniert und du 
noch Zeit hast, kannst du versuchen den USB Port selbst nativ im uC zu 
implementieren.

von Florian O. (iseh)


Lesenswert?

Frank M. schrieb:
> Mit was programmierst du?
> Das wird dann deine Bachelorarbeit?

Programmiert wird mit der Olimexeigenen Pinguino IDE unter Windows in C.
Meine Bachelorarbeit ist das nicht. Ich studiere noch den Dipl.-Ing., 
die Projektarbeit gehört einfach zum Studienplan dazu.

Spess53 schrieb:
> Was willst du an dem MPX4100 eigentlich verstärken? Die Ausgangsspannung
> geht doch schon von knapp über Null Volt bis fast 5V.

Ehrlich gesagt, ich weiß es nicht. Ich dächte, das muss so. Der zu 
messende Luftdruck wird nicht allzu stark schwanken, so dass man sich 
auf der Ausgangskennlinie im hinteren Bereich, zwischen 4-5V bewegt. Ist 
ein delta U von 1V noch fein genug auszuwerten ?

Frank M. schrieb:
> Noch was zum nativen USB Anschluss:
> [...]

Ich danke dir wirklich sehr für deine Hilfe, aber ich verstehe davon nur 
Bahnhof. Ich werde dann darauf zurückkommen, wenn es so weit ist und 
mich erstmal, wie du sagst, auf die Sensoren usw. konzentrieren.

Frank M. schrieb:
> Kommt auf deinen Einsatzzweck an. Falls der Sensor nur auf der Platine
> sitzen muss und nicht irgendwo extern angebracht werden soll, so ist ein
> digitaler einfacher.

Das ganze soll am Ende eine (sehr) einfache Wetterstation sein. Der 
Sensor kann, denke ich, irgendwo an einem "temperaturneutralen" Ort auf 
oder in der Nähe der Platine sitzen.
Beim digitalen Sensor käme ich aber vielleicht an die Grenze der 
verfügbaren I/Os ?!
Der PIC32-Pinguino hat nur 2 digitale I/Os mit jeweils 8 Pins. An einem 
davon kommt die Matrixtastatur. Und an den anderen der DCF77-Empfänger 
zusammen mit dem digitalen Temperaturmesser ?!

von Frank M. (frank_m35)


Lesenswert?

Florian Otte schrieb:
> Programmiert wird mit der Olimexeigenen Pinguino IDE unter Windows in C.
Ok, sagt mir nichts :-) Fand auf die schnelle auch nichts.
Microchip stellt eine eigene IDE her, die vermutlich um vielfaches 
ausgereifter und umfangreicher ist: MPLABX
Zudem gibt es dazu Bücher und da es verbreitet ist, auch Hilfe.
Wenn du in C programmierst wirst du letztendlich auch die ganzen Sample 
Codes und Libraries von Microchip verwenden werden, denn ohne sie geht 
es nicht und ich bezweifle, dass Olimex die Ressourcen hat, das für 
Microchip, Atmel, ARM, ... anzubieten.
Soll heißen: Ich würde einfach gleich MPLAB verwenden.

Florian Otte schrieb:
> Der PIC32-Pinguino hat nur 2 digitale I/Os mit jeweils 8 Pins. An einem
> davon kommt die Matrixtastatur. Und an den anderen der DCF77-Empfänger
> zusammen mit dem digitalen Temperaturmesser ?!
Du zählst falsch und machst einen großen Fehler: Du klammerst dich an 
die Ressourcen von Olimex für dein Board fest.
Das Board ist nur von Olimex hergestellt, es ist eine Zusammenstellung 
von Komponenten anderer Hersteller mit dem Ziel eine schöne 
Entwicklungsplatform zu bieten. Was am Ende aber für dich interessant 
ist: Die Verschaltung des Boards seitens Olimex und vor allem die 
Komponenten von den Herstellern.
Auf dem Board ist ein PIC32MX440F256H von Microchip.
Dessen Datenblatt brauchst du und nur da drin steht was er kann und wie 
er es kann. Es ist das Nachschlagewerk zu diesem uC in dem die Register 
etc. stehen. Speichere es, drucke es vielleicht auch aus.
http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en534168

Zu den Pins:
Der PIC32 hat Ports (RA, RG, RD, ...) mit vielen I/O die alle als 
digitale Ein/Ausgänge konfiguriert werden können.
Insgesamt hat er 51 I/O.
Einige davon haben auch spezielle Funktionen, so haben 16 davon die 
Möglichkeit als Analoge Eingänge konfiguert zu werden. Ein paar dienen 
für USB, I2C, SPI, RS232, ...
Also das was Olimex auf das Board oder im Schaltplan geschrieben hat ist 
nur ein kleiner Teil von dem was der PIC kann, es ist eine Hilfestellung 
aber nur ein Bruchteil der Wahrheit.
CON5 besteht auch 8 Anschlüssen, mit 8 I/O, ebenso hat CON4 8 I/O, Pin 3 
davon ist mit Pin 46 am PIC angeschlossen, RD0, auf dem sich auch ein OC 
Modul befindet (Output Compare) mit dem du bspw. eine Hardware PWM 
realisieren kannst. CON2 hat Olimex als Analog bezeichnet, die Pins sind 
aber I/O Pins, die auch digital geschalten werden können. Du kannst für 
jeden Pin einzeln den ADC ein/aus-schalten.
I2C ist ein Bus. D.h. du brauchst nur 2 Pins am uC, Daten und Clock 
Leitung. An diese zwei Pins kannst nun etliche ICs anschließen, EEPROM, 
Temperatur, Display, Beschleunigungssensor, ...

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.