Forum: Mikrocontroller und Digitale Elektronik [Projekt] Atmega inklusive Sensoren


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Michael H. (Firma: Keine) (holdon)


Bewertung
0 lesenswert
nicht lesenswert
Liebe Forumsmitglieder und Helfer ;-)

Hallo erstmal von meiner Seite - da dies mein erster Post ist, eventuell 
kurz zu mir. Ich bin der Michael und komme aus Österreich / Grenze zu 
Deutschland. Ich beschäftige mich mit Programmierung unter C/C++ bereits 
seit ca. 8 Jahren. In den mC Technik habe ich vor ca. 6 Jahren meine 
ersten Erfahrungen mit einem Roboter (Hexapod) gemacht. Seitdem habe ich 
eher nebenbei ein wenig mit verschiedenen Geräten experimentiert. Zum 
einen ist das dass Teensy USB Board und zum anderen natürlich das 
Arduino. Mit meiner Matura (für euch Abitur ;-) ) hatte ich auch 3 Jahre 
Elektrontechnik, indenen ich sicherlich die Grundlagen gelernt habe.

Bevor ich mein Projekt poste, möchte ich noch dazu sagen, dass ich mich 
natürlich ein wenig in die Thematik eingelesen habe, und mich mit der 
Materie befasst habe. Ich würde von euch gern Machbarkeitsanalysen / 
Vorschläge und ein paar Antworten auf offene Fragen bekommen, falls dies 
möglich ist :)

Ich bedanke mich jetzt schoneinmal fürs Lesen und eventuell beantworten. 
Danke!

Nun zu meinem Projekt...

Und zwar möchte ich ein Gerät designen, welches in die Hosentasche passt 
-> Scheckkartengrösse wird angestrebt, das folgende Dinge erledigen 
kann:
<> Temperaturwerte bestimmen
<> Luftfeuchtigkeit bestimmen
<> Erkennen ob der Träger gerade läuft  joggt  rennt und die Schritte 
zählen (ungefähr)
<> Bluetoothmodul, um die Daten an das Smartphone / App senden zu können

Zur Stromversorgung:
Da das Gerät ja relativ klein ist und mit einigen Sensoren bestückt ist, 
ist mir auch klar, dass die Stromversorgung nicht ewig hält. Mir reichen 
allerdings ca. 12 Stunden. Danach sollte ein aufladen möglich sein.

Zu den Sensoren:
Ich habe an folgenden Ablauf gedacht: Temperat / Luftfeuchtigkeitssensor 
sollten jede 10 Minute einmal einen Wert messen und diesen in eine 
Variable / Array speichern. Um zu erkennen ob gerade gejoggt / gelaufen 
wird, habe ich an einen Beschleunigungssensor gedacht. Dazu habe ich mir 
folgende Bachelorarbeit durchgelesen: (eventuell interessiert es wen)
https://west.uni-koblenz.de/theses/ba-milker-bewegungserkennung-smartphones
Das Bluetoothmodul muss natürlich ebenfalls nicht dauernd funken. Wird 
ein "Knopf" auf dem Gerät gedrückt, so sollte das Bluetooth (Low Energie 
!!!) mit dem Handy syncen und sich dann wieder in den Ruhezustand 
versetzen.

Zu meinen offenen Fragen:
Welchen Atmega würdet ihr mir für solch ein Projekt empfehlen? Je 
kleiner dimensioniert, desto optimaler für mich. Seht ihr irgendwelche 
kritischen Wegpunkte in diesem Projekt? Mit welchen Problematiken muss 
ich mich genauer auseinandersetzen? Ich vermute dass die Stromversorgung 
interessant / knifflig werden wird. Wie groß muss der RAM des Atmega 
definiert sein? Überschlagsmässig will ich lediglich die ungefähre 
Anzahl der gelaufenen Schritte festhalten - dies würde ja keinen großen 
Speicher benötigen. Die Thero / Hydro werte würden mich allerdings 
ebenfalls interessieren. Jede 10 Minuten würde bedeuten: 120 Werte / 
Stunde --> 1440 Werte auf 12 Stunden. Wenn es Raum nach oben geben 
würde, wäre ich eher froh ;-)

So danke schonmal für eure Einschätzungen  Ideen  Kritiken.

schöne Grüsse

von René B. (reneb)


Bewertung
0 lesenswert
nicht lesenswert
Mach mal nicht alles auf einmal und setz dir sinnvolle Zwischenschritte. 
Z.B ein klobiger Prototyp der die Funktion erfüllt, aber noch nicht die 
Abmessungen oder den angestrebten Stromverbrauch oder gar 
Ladereglerelektronik.
So kannst du z.B erst einmal Erfahrungen im Zusammenspiel der 
Komponenten sammeln und des Auswerte-Algorithmus sammeln. Danach erst 
sollte man die Industrialisierung in Angriff nehmen...

Daher z.B. 3,3v target, überdimensionierter Atmega , BT222 wegen 
einfacher Anbindung (uart, virtual com-port), adxl335 (leicht zu haben) 
und temp/hygro sind idR zusammen auf einem Sensorboard, einfach mal nach 
"Taupunkt bestimmen" suchen und du findest einiges dazu.

Und wenn das mal läuft und Erfahrungen gebracht hat, reden wir weiter...
Und dann will da noch die App für das Smartphone geschrieben werden...

von Markus M. (mmvisual)


Bewertung
0 lesenswert
nicht lesenswert
Welche Luftfeuchtigkeit willst du messen?
Die in der Hosentasche oder die Umgebungsluft?

Wenn jemand verschwitzt ist, so wird man zwangsläufig einen falschen 
Wert messen.

von Michael H. (Firma: Keine) (holdon)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Vielen Dank für die Informationen - da kann ich mal googeln und 
bezüglich der Umsetzung überlegen.

Eine Frage hätte ich noch:
Welche Atmega würdet ihr empfehlen?

Das mit dem Taupunkt war übrigends ein spitzen Hinweis - Danke.

von Frank (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Gibt es schon fertig fast so, wie Du es haben möchtest:

http://www.wut.de/e-971w1-ww-dade-000.php

Die Jogging-Erkennung kann das Smartphone alleine erledigen, das hat 
doch Beschleunigungssensoren.

Frank

von Michael H. (Firma: Keine) (holdon)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Das ist mir klar, dass es soetwas bereits in irgend einer Form gibt. 
Nichts desto trotz würde ich mein Projekt trotzdem gerne selbst 
realisieren :)

Natürlich kann man mit dem Smartphone die Bewegung erkennen, die 
Bachelorarbeit, welche ich oben gepostet hat, hat genau dies zum Thema.

Welchen Atmega würdest du verwenden?
Danke :)

von Frank (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Wie René schon geschrieben hat, würde ich auch ersteinmal mit einem 
überdimensionierten µC anfangen. Damit kannst Du dann ermitteln was Du 
tatsächlich an Resourcen benötigst. Vielleicht reicht für diese Aufgabe 
schlußendlich auch bereits ein ATTiny.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Bewertung
0 lesenswert
nicht lesenswert
Michael Holdon schrieb:
> Welchen Atmega würdest du verwenden?
> Danke :)

Da nich' für. Du solltest dir Gedanken über die Menge der anfallenden 
Daten machen. Da du sammeln willst und das alles erst zu einem späteren 
Zeitpunkt 'loswerden' willst, muss der MC genügend RAM haben, um das 
alles zu speichern, es sei denn, du integrierst gleich eine SD Karte als 
Massenspeicher.

Ich habe einen ähnlichen Datenlogger auf der Basis des Xplained A1 
Evalution Board von Atmel gemacht, da dieses einen 8MB SDRam enthält. 
Der Beschleunigungssensor speichert seine Daten mit Zeitstempel in dem 
RAM. Während der Datenerfassung läuft der XMega mit 2MHz, um Strom zu 
sparen, beim Auslesen und direktem Konsolenbetrieb dann mit 32MHz. 
Gespeist wird das Board von einer Li Zelle, die beim Anstecken der USB 
Verbindung geladen wird. Bluetooth allerdings habe ich bei mir nicht 
dran gehabt.

: Bearbeitet durch User
von Michael H. (Firma: Keine) (holdon)


Bewertung
0 lesenswert
nicht lesenswert
Frank schrieb:
> Wie René schon geschrieben hat, würde ich auch ersteinmal mit einem
> überdimensionierten µC anfangen. Damit kannst Du dann ermitteln was Du
> tatsächlich an Resourcen benötigst.

Tut mir leid - mein Fehler, ich hab das was überlesen!

Matthias Sch. schrieb:
> Ich habe einen ähnlichen Datenlogger auf der Basis des Xplained A1
> Evalution Board von Atmel gemacht, da dieses einen 8MB SDRam enthält.

Das Projekt wäre ja sehr interessant. Falls du da ein wenig Details / 
Informationen hast (falls es überhaupt öffentlich ist), würde mir das 
sicherlich weiterhelfen.
Danke auf jeden Fall mal für die Antwort.

von René B. (reneb)


Bewertung
0 lesenswert
nicht lesenswert
Puh, bevor du mit externem SDRam anfängst, lass es lieber bei einer 
einfachen SD.Card-Implementierung, das ist wirklich simpel, wenn du 
sowieso auf 3,3V arbeitest. Dazu gibt es in Verbindung mit dem Atmega 
sogar reine SW-Lösungen mit freier Pinbelegung.

von Moby (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Um mal einen konkreten Controller zu nennen, ich empfehle da einen 
Xmega32E5. Ist das leistungsfähigste was Du noch selber auf das 
kleinstmögliche TQFP32 Plätzchen selber löten kannst.

von Michael H. (Firma: Keine) (holdon)


Bewertung
0 lesenswert
nicht lesenswert
René B. schrieb:
> Puh, bevor du mit externem SDRam anfängst, lass es lieber bei einer
> einfachen SD.Card-Implementierung, das ist wirklich simpel, wenn du
> sowieso auf 3,3V arbeitest. Dazu gibt es in Verbindung mit dem Atmega
> sogar reine SW-Lösungen mit freier Pinbelegung.

Danke für den Hinweis. Ich habe bereits über eine SD Karte nachgedacht, 
diese Idee jedoch wegen den Gesichtspunkten:
-> Hoher Stromverbrauch
-> Eigener Dateisystem Treiber
verworfen. Wie ich jedoch mit ein wenig googeln herausgefunden habe, 
existieren fixe Libraries dafür.

Moby (Gast) schrieb:
> Um mal einen konkreten Controller zu nennen, ich empfehle da einen
> Xmega32E5. Ist das leistungsfähigste was Du noch selber auf das
> kleinstmögliche TQFP32 Plätzchen selber löten kannst.
Vielen Dank für die Information, ich werde mir mal das Datenblatt 
durchlesen.

von Roland (Gast)


Bewertung
0 lesenswert
nicht lesenswert
schau dir mal von Atmel folgende Seiten an, die Sensorhersteller mit 
denen Atmel zusammenarbeitet haben echt gute Treiber und 
Beispielprogramme für die XPlain Serie zusammengestellt:

http://www.atmel.com/products/microcontrollers/avr/sensors_xplain.aspx

Diese kleinen Boards lassen sich dann z.b. auf das ATxmega256A3BU Xplain 
board draufstecken, im Atmel Studio bekommst du dann fertige Demo 
Programme und Treiber. HIer eine kleine Auflistung (unter Sensor)

http://asf.atmel.com/docs/latest/search.html?board=XMEGA-A3BU%20Xplained

Wenn Du Deinen Prototypen darauf baust, wirst du bestimmt ziemlich 
schnell zu einem recht guten Ergebnis kommen. Danach kannst Du je nach 
Flash/SRAM Verbrauch entweder auf eine (pinkompatible) kleinere Version 
aus der A3U Serie wechseln, oder auf den XmegaE5 der vom Stromverbrauch 
nochmal niedriger liegt und dazu noch sehr schön klein ist. :)

von Frank K. (fchk)


Bewertung
0 lesenswert
nicht lesenswert
Ich habe etwas ähnliches als Logger für mein Raumklima gebaut.

Meine Zutaten:
- MSP430F2274 (bei den MSP430 ist es besonders einfach, stromsparend zu 
programmieren)
- Sensirion SHT11 Sensor für Temperatur/Feuchte
- SPI Flash als Datenspeicher
- MAX3221 Schnittstellentreiber für RS232 (der läßt sich abschalten, 
wenn nicht in Benutzung)
- LP2950 LDO
- EA DOGL Grafikdisplay (rein reflektiv, keine Hintergrundbeleuchtung, 
auch abschaltbar)

Der durchschnittliche Stromverbrauch lag im nA-Bereich, mit einer 
normalen 4.5V Flachbatterie lief das Zeugs monatelang.

Heutzutage würde ich als Speichermedium FRAM nehmen, das braucht beim 
Schreiben noch weniger Energie als EEPROM oder Flash. Nichtflüchtig wie 
EEPROM, aber praktisch wie SRAM benutzbar - auch mit der 
Geschwindigkeit. Es gibt schöne MSP430, die FRAM anstelle von Flash als 
Programm/Datenspeicher haben. Das hätte mir damals gereicht - ich 
brauchte nachher nur 32kB.

Das mal so als Idee. Es gibt noch ein Leben jenseits von AVR.

fchk

PS:
http://www.ti.com/lsds/ti/microcontroller/16-bit_msp430/fram/overview.page?paramCriteria=no

Ich sehe gerade, dass bei 16kB Schluss ist. Schade, aber auch so sind 
die Dinger interessant.

: Bearbeitet durch User
von Falk B. (falk)


Bewertung
0 lesenswert
nicht lesenswert
@ Frank K. (fchk)

>Das mal so als Idee. Es gibt noch ein Leben jenseits von AVR.

Aber es ist sinnlos! ;-)

von Tim  . (cpldcpu)


Bewertung
0 lesenswert
nicht lesenswert
Für solche Anwendungen sieht dieser Sensor ziemlich interessant aus:

https://www.bosch-sensortec.com/en/homepage/products_3/environmental_sensors_1/bme280/bme280_1

Allgemein zum Thema: Ich würde so ein Projekt nicht mehr mit einem AVR 
umsetzen. Viele der Sensoren benötigt 32Bit Arithmetik zur Auswertung, 
für welche ein AVR schlicht und einfach nicht geeignet ist. Mein letzter 
Versuch, einen Drucksensor anzusteuern, endete mit 4kb Code alleine für 
die Kompensationsbereichnungn. Dieses hätte ein 32 Bit-Controller mit 
1kb hin bekommen.

Bei den Inertialsensoren sieht es ähnlich aus.

von Frank (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Tim    schrieb:
> Mein letzter
> Versuch, einen Drucksensor anzusteuern, endete mit 4kb Code alleine für
> die Kompensationsbereichnungn. Dieses hätte ein 32 Bit-Controller mit
> 1kb hin bekommen.

Möglicherweise kann das Projekt vom TE auch nur die Rohdaten speichern 
und die ganze Rechnerei findet hinterher in der App auf dem Smartphoine 
statt.

Frank

von Frank (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Frank K. schrieb:
> Der durchschnittliche Stromverbrauch lag im nA-Bereich, mit einer
> normalen 4.5V Flachbatterie lief das Zeugs monatelang.

Da würde ich aber eher eine jahrelange Laufzeit erwarten ... vermutlich 
wäre die Batterie aber eher durch Selbstentladung verstorben :-)

von Michael H. (Firma: Keine) (holdon)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Nun noch eine Antwort auf die offenen Punkte :)

Danke erstmal für den Bosch-Sensor Link, klingt recht verlockend. Über 
den Preis muss ich noch Informationen beschaffen.

Frank hat mit seiner Aussage Recht. Die Daten werden lediglich (wo auch 
immer RAM / SD Karte) gespeichert. Die Auswertungen erfolgen dann auf 
der APP.

Ich denke dass ist so mit AVR schon zu realisieren. Bitte gerne um 
Korrektur, wenn ich hier falsch liegen sollte :)

von JTP (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

erst vor Kurzem habe ich ein ähnliches Projekt umgesetzt. Bei mir werden 
Analogwerte gemessen umgerechnet und an ein Smartphone gesendet. Das 
(Android) Handy sammelt die Daten wertet sie aus und sendet die 
Informationen dann weiter.
Als uC habe ich einen Mega8L genommen, der lag noch in der Schublade. 
Das BT-Modul ist ein BT222 - also prinzipiell die 
Kindergartenausstattung und besser bestimmt möglich. Das Zusammenlöten 
bis zum ersten Versenden von Daten hat nicht lange gedauert. Da war ich 
nach einem Wochenende (bin kein Profi) gut aufgestellt. Schwieriger hat 
sich das Programmieren der App gestaltet und diesen Punkt habe ich wohl 
am meisten unterschätzt.

Falls Du auch auf Android-Basis mit Java programmierst kann ich Dir nur 
das frei verfügbare Bluetooth Chat Projekt von Android Developers zum 
"dran lang hangeln" empfehlen.

Bei der uC-Programmierung und mit uart wirst Du bei Deinen 
Vorkenntnissen wohl weniger Probleme haben. Da bietet das Tutorial hier 
auf der Seite aber auch alles was man benötigt.

Auf jeden Fall kann ich meinen Vorrednern nur zustimmen und auf 
Teiletappen setzen - auf keinen Fall an 27 Baustellen gleichzeitig zu 
arbeiten und immer step by step kleine Aufgaben meistern. Überforderung 
motiviert ja meistens nicht zum Weitermachen.


Sonniger Gruß
JP

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.