Forum: Mikrocontroller und Digitale Elektronik energie logger brauche eure hilfe


von vitja H. (vitja3000)


Lesenswert?

hallo leute ich bin neu hier und habe noch nicht so viel erfahrung in 
schaltungen und software

ich mache zur zeit ein praktikum und habe bereits eine platine mit 6 
leds hergestellt und programmiert mit c bzw. codevision.
das ist das erste mal das ich etwa programmiert habe ... allerdings muss 
ich zugeben dass ich das nicht komplett gemacht habe sondern ein projekt 
von voher abgeändert bzw. an meins umgeschrieben habe.
man hat im praktikum einfach zu wenig zeit um alles zu lernen deshalb 
habe ich nicht komplett von anfang an selber ein programm geschrieben.

jtzt habe ich ein projekt bekommen was ich so schnell wie möglich 
erledigen sollte weil ich nur noch knapp 5 wochen praktikum habe.

ich habe eine spannung von 230 mV welcher den motor betreibt. die frage 
ist nun wann der motor immer eingeschaltet ist. ansatz ist das ich immer 
eine strommessung dürchführe mit einen shunt ( sollte 0,23 ohm sein)... 
dann eine real time clock benutze um sagen zu können wann der motor 
eingeschaltet wurde und ich muss diese daten aufzeichnen oder auf eine 
sdkarte übertragen.

ich habe irgendwie keine ahnung wie ich da dran gehen soll.
sowohl hardware als auch software mässig. kann mir da einer helfen.

ich mache nur 3 monaten praktikum weil ab da mein studium beginnt.

deshalb habe ich nicht die zeit mir komplett programmierer und hardware 
entwickler eigenschaften oder fähigkeiten anzueignen.

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

> ich habe eine spannung von 230 mV welcher den motor betreibt

hm, das muß aber ein ziemlich kleiner Motor sein, der mit 230 milli-Volt 
betrieben wird.

> ansatz ist das ich immer
> eine strommessung dürchführe mit einen shunt ( sollte 0,23 ohm sein)

hast du den Wert selbst erfunden oder ist das eine Vorgabe?

> dann eine real time clock benutze um sagen zu können wann der motor
> eingeschaltet wurde

Also willst du ein Funkmodul anschließen (dcf77) ?

> deshalb habe ich nicht die zeit mir komplett programmierer und hardware
> entwickler eigenschaften oder fähigkeiten anzueignen.

Du mußt auch nicht Heimwerker-Pofi werden, um eine Tapete an die Wand zu 
kleben - aber du solltest schon wissen wo (Wand, Tapete) und auf welcher 
Seite der Kleister dran kommt.

> ich habe irgendwie keine ahnung wie ich da dran gehen soll.
> sowohl hardware als auch software mässig. kann mir da einer helfen.

--> Mach dir mal Gedanken darüber, was du hast, und was du brauchsst. 
Dazu brauchst du keine "komplett Programmierer und Hardware Entwickler" 
Kenntnisse zu haben, sondern einfach nur die Fähigkeit, mal genauer über 
dein Problem nachzudenken und es zu strukturieren.

von Karl H. (kbuchegg)


Lesenswert?

vitja Hermann schrieb:

> ich zugeben dass ich das nicht komplett gemacht habe sondern ein projekt
> von voher abgeändert bzw. an meins umgeschrieben habe.
> man hat im praktikum einfach zu wenig zeit um alles zu lernen deshalb
> habe ich nicht komplett von anfang an selber ein programm geschrieben.

Das man sich gerade am Anfang andere Programme ansieht, ist so nicht 
weiter schlimm. Wichtig ist nur, dass du im Detail und vollständig 
verstehst, was du da geschrieben hast. Wenn du das nur einfach irgendwie 
zum Laufen gebracht hast und nicht verstehst warum und wieso, dann hast 
du den falschen Weg gewählt.
Zur Überprüfung solltest du den Verusch machen:
Dein LED-Beispiel noch einmal programmieren, aber diesmal von Anfang an 
und ohne fremde Hilfe. Wenn du in deiner Vorlage spicken musst, dann tu 
das, allerdings: damit ist dann die Aufgabe nicht richtig gelöst und du 
musst noch einen Versuch starten.

> man hat im praktikum einfach zu wenig zeit um alles zu lernen

Mit Verlaub, aber das ist allergrößter Unsinn. Du stehst hier noch am 
Anfang. Jetzt sind die Dinge noch einfach. Wann dann, wenn nicht jetzt, 
willst du denn diese Grundlagen lernen?

Zumal die Ansteuerung von ein paar LED nun wirklich keine Raketentechnik 
ist. Da geht es in erster Linie nicht um LED, sonder darum, dass du 
gezielt einzelne Ausgänge auf 0 oder 1 schalten kannst. Wenn du jetzt 
noch ein paar Stunden investierst und mit diesem Beispiel spielst, wie 
zb einfach mal testweise einen Zähler der langsam hochzählt auf die LED 
ausgeben und sich ansehen welche LED leuchten und welche nicht und das 
dann in Zusammenhang mit dem Zählerstand bringen; oder zb ein kleines 
Lauflicht zb basierend darauf was du beim Zählerexperiment gelernt hast; 
wenn du also diese Zeit investierst und diese Dinge nach ein paar 
Stunden ohne Hilfe hinkriegst, dann hast du tatsächlich etwas gelernt 
und man kann sagen: Ok, zumindest diese Grundlagen dürften jetzt erstmal 
soweit verinnerlicht sein, dass man weitermachen kann.


Völlig falsch ist es aber ein vorhandenes Programm herzunehmen, einen 
Zahlenwert durch einen anderen zu ersetzen, das laufen zu lassen, zu 
sehen dass eine LED brennt oder auch nicht, und dann loszuposaunen man 
würde das alles jetzt beherrschen. Denn in Wirklichkeit beherrscht du 
nichts davon.

Programmieren lernen funktioniert auf mehreren Ebenen. Eine davon ist 
das rein handwerklich Hinschreiben des Textes. Das impliziert auch, dass 
man keine ; vergisst, das impliziert die Schreibweisen, 
Codeorganisation, Codeformatierung, Erkennen und deuten der ersten 
Fehlermeldungen, etc. Wenn du das aber nie tust, dann lernst du das auch 
nicht. Hier gilt: Übung macht den Meister.


> jtzt habe ich ein projekt bekommen was ich so schnell wie möglich
> erledigen sollte weil ich nur noch knapp 5 wochen praktikum habe.

Dann musst du dich dahinterklemmen.

>
> ich habe eine spannung von 230 mV welcher den motor betreibt. die frage
> ist nun wann der motor immer eingeschaltet ist. ansatz ist das ich immer
> eine strommessung dürchführe mit einen shunt ( sollte 0,23 ohm sein)...
> dann eine real time clock benutze um sagen zu können wann der motor
> eingeschaltet wurde und ich muss diese daten aufzeichnen oder auf eine
> sdkarte übertragen.

Zwischen dem was du in der Einleitung als AUfgabenstellung beschrieben 
hast und dem hier liegen Welten! Da sind noch viele Zwischenschritte, 
die auf dich warten. Nach dem Beherrschen von Ausgaben auf einen Pin 
kommt als nächster Schritt die Behandlung von Eingaben zb über einen 
Taster: Taster gedrückt -> LED leuchtet; Taster nicht gedrückt -> LED 
leuchtet nicht. Dann das ganze mal umgekehrt.

Nach Tastern kommt vielleicht ein LCD drann. Es ist immer gut, wenn man 
irgendwo eine Ausgabefläche hat, auf der man sich Zahlenwerte ausgeben 
lassen kann. Daher kann man nicht früh genug damit anfangen.

Hat man ein LCD, dann nimmt man zb den ADC in Betrieb. Aber nicht mit 
einem Motor, sondern mit einem Poti. Das Poti wird als Spannungsteiler 
geschaltet und auf dem LCD soll zunächst der ADC Wert und dann die 
zugehörige Spannung aufscheinen. Das kann man leicht kontrollieren: 
Voltmeter an den ADC Eingang und Wert ablesen. Der sollte mit dem Wert 
am LCD übereinstimmen. Poti verdrehen und nachsehen, ob das immer noch 
stimmt. Anstatt des Potis kann man dann probehalber mal den Shunt des 
Motors anhängen und sich ausrechnen welche Spannung da am Shunt abfallen 
müsste. Da muss man dann auch mal nachrechnen wie groß denn dieser 
Spannungsabfall sein wird (Ohmsches Gesetz) und ob man das überhaupt so 
messen kann. Wenn nicht muss man sich eine Alternative suchen, wie zb 
eine Reflexlichtschranke die eine Markierung auf der Abtriebswelle 
überwacht und solange Puls liefert, wie sich der Motor dreht. Da kommt 
einem jetzt wieder die Erfahrung zugute, die man zuvor mit den Tastern 
gewonnen hat.

Und so führt eines zum anderen, bis man letzten Endes in der Lage ist, 
das komplette Projekt zu stemmen.

> deshalb habe ich nicht die zeit mir komplett programmierer und hardware
> entwickler eigenschaften oder fähigkeiten anzueignen.

Die Zeit wirst du dir nehmen müssen. Da hilft alles nichts.

von vitja H. (vitja3000)


Lesenswert?

A.oh stimmt das waren eher 230 V nicht mV ... konnte die schrift 
schlecht lesen von ihm.

B. man berechnet den shunt mit dem ohmschen gesetzt ... habe da falsche 
werte benutzt und muss noch hinzufügen das der motor ab 100 mA 
eingeschaltet wird

C. ja er will sehen können wann das gerät an war weil das schwer 
zugänglich ist


Ja ich sitze hier zwischen entwicklern und wenn ich die so reden höre 
denke ich ach du scheiße sind die schlaue :D deshalb weiß nicht ob ich 
auch so detailliert denken kann wie sie ... wie gesagt studium kommt 
erst noch

von vitja H. (vitja3000)


Lesenswert?

@ Karl

ich habe mich bisschen falsch ausgedrückt. also ich hatte eine art 
vorlage aber das programm voher hat was ganz anderes gemacht ... das war 
nicht einmal für das lauflicht gedacht sondern für ein sensor. ich habe 
mich da eingelesen um zu verstehen wie sowas aussieht.

ich habe selber alle ports initialiesiert ... sowie das programm für das 
lauflicht geschrieben. und ich denke ich weiß wie es funktioniert weil 
das lauflicht macht genau das was ich will und nicht irgendwie was 
komisches.

ich habe auch adc und poty ebenfalls hier. ich
 ich verstehe auch wie es funktioniert aber das problem ist das ich da 
nicht von alleine drauf komme. ich habe noch nie einen analog digital 
wandler programmiert. wo mir das gezeigt wurde dann dachte ich " ach was 
ist ja einfach" aber ich komme nicht von alleine drauf .

die tasten habe ich auch entprellt und dann auch switch-case funktion 
eingeführt bei tastendrück.

also ich verstehe das wie und warum das funktioniert aber halt nicht 
überall und komme da nicht von alleine drauf.

meine platine mit dem led-lauflicht ist schon beinah fertig ... jtzt 
muss ich an zwei projekten arbeiten.

von Schuhplattler Sepp, Oberammergau (Gast)


Lesenswert?

Ich würde zunächst mal die Hauptwörter mit grossen Buchstaben beginnen.
Dann kann man das lesen, ohne Augenkrebs zu kriegen.

von vitja H. (vitja3000)


Lesenswert?

mache ich

von Karl H. (kbuchegg)


Lesenswert?

Alles schön und gut, aber was erwartest du jetzt vom Forum?

Du sagst selber, du hast Kollegen links und rechts neben dir sitzen. Die 
kennen dich, die wissen (hoffentlich) was du kannst und was du nicht 
kannst, die haben die Hardware vor sich, die können Messungen vornehmen, 
die können dir von Angesicht zu Angesicht Erklärungen geben und sehen wo 
der Schuh drückt.

Ich seh jetzt ehrlich gesagt nicht, wie dir hier das Forum helfen 
könnte, besser als die Leute vor Ort bei deinem Projekt zu helfen.

von vitja H. (vitja3000)


Lesenswert?

Stimmt, aber sie sind ja auch selber beschäftigt und haben ihre Arbeit. 
Ich wollte eigentlich nur wissen, wie ich da jetzt ran gehe. Zum 
Beispiel was ich alles für die Hardware brauche. Gut Software mache ich 
dann später mit den Softwareentwicklern. Also ich habe einen Atmega8 
Controller, RTC, Shunts, Sdkartenslot, dann brauche ich noch eine 230V 
Versorgung.
Ich weiß auch nicht wie ich sie logisch verbinden soll.

von Martin S. (Gast)


Lesenswert?

Ich würde dir von einem Stunt zur Messung abraten. Wenn der Motor 
gebremst wird oder anläuft zieht er sicherlich mehr Strom.

Einen Brückengleichrichter in die Leitung schalten, dann Die Ausgänge 
(Plus/Minus) mit 5 Dioden kurzschließen. Jetzt fallen über den Dioden 
immer ca.3 Volt ab wenn der Motor läuft. Die 3V treiben über einen 
Wiederstand die LED eines Optokopplers und dein µC weiss wann der Motor 
läuft. Das µC-Teil ist dann auch schön galvanisch getrennt von den 230V.

von Schuhplattler Sepp, Oberammergau (Gast)


Lesenswert?

So erfährt der µC sogar 100 mal pro Sekunde, dass der Motor läuft.
Statt des empfohlenen "Wiederstandes" rate ich zu einem Widerstand.
Reichelt hat keine "Wiederstände".

von Schuhplattler Sepp, Oberammergau (Gast)


Lesenswert?

Martin S. schrieb:
> Einen Brückengleichrichter in die Leitung schalten, dann Die Ausgänge
> (Plus/Minus) mit 5 Dioden kurzschließen.

Zu den 5 Dioden noch eine Diode antiparallel schalten.
Den Brückengleichrichter kann man dann wieder auslöten.
So spart man 3 Dioden, erhält allerdings nur 50 statt 100 Impulse pro 
Sekunde.

von Martin S. (Gast)


Lesenswert?

Schuhplattler Sepp, Oberammergau schrieb:
> Zu den 5 Dioden noch eine Diode antiparallel schalten.

Ja, diese Diode würde den Optokoppler retten :)
Die Impulse kann man ganz einfach per Interupt zählen, dann braucht man 
noch nichtmal einen Quarz am µC. Das sollte dann hinreichend genau sein 
um die Laufzeit zu messen.

von vitja H. (vitja3000)


Lesenswert?

Danke für eure Hilfe.

Ergibt Sinn also habe ich euch richtig verstanden.
Ich baue in meine schaltung 5 dioden ein und die 6 antiparallel dadurch 
brauche ich den Brückengleichleiter nicht mehr ?

Und wie mache ich das mit der Real Time Clock.
Sie soll mir dann ständig den Zustand anzeigen, wann der Motor an war 
und diese Informationen müssen dann weiter bsp. auf eine Sd-Karte 
übertragen werden.

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

> Also ich habe einen Atmega8 Controller, RTC, Shunts, Sdkartenslot,
> dann brauche ich noch eine 230V Versorgung.
> Ich weiß auch nicht wie ich sie logisch verbinden soll.

logisch:
an den Atmega8 schliesst du die Eingangsbeschaltung zur 
Einschalt-Messung (Dioden, Optokoppler) an, sowie den RTC, und den 
Kartenslot.

phyikalisch:
du guckst dir irgendwelche Ports aus, an denen du das anklemmen willst, 
und definierst dir diese Ports als entsprechende Eingangs- oder 
Ausgangskanäle

Wirst du den noch irgendwelche Displays (behelfsweise einzelne LED) oder 
Taster anschließen zwecks Bedienung, oder geht die Erfassung volllkommen 
bedienungslos?  (spätestens wenn die SD-Karte voll ist wird eh nix mehr 
geloggt, aber das merkst du ja wenn du die Karte ausliest und nix neues 
mehr drauf ist ..)


Wenn du Details benötigst, dann mußt du halt Details hinterfragen, z.B.

"Welche Ports wären gut geeignet für einen SD-Kartenanschluß, und wenn 
ja warum"?

"Wie bekomme ich eine FAT auf der SD-Karte aus dem uC heraus 
angesprochen"?

von vitja H. (vitja3000)


Lesenswert?

Vielen Dank solch eine Hilfe habe ich mir erhofft :).

Habe jetzt ein paar Ansätze Danke nochmal.

Ja wir werden eine LED benutzen zur Kontrolle um zu sehen ob der Motor 
läuft.

Und das zur SD-Karte. Mir wurde grad noch vorgegeben, dass wenn die 
SD-karte voll ist, die Datein dann überschrieben werden soll. Sodass man 
ständig die neusten Ereignisse sieht.

von Schuhplattler Sepp, Oberammergau (Gast)


Lesenswert?

vitja Hermann schrieb:
> Mir wurde grad noch vorgegeben, dass wenn die
> SD-karte voll ist, die Datein dann überschrieben werden soll. Sodass man
> ständig die neusten Ereignisse sieht.

Wenn du zu jeder Sekunde ein Ereignis von z.B. 50 Byte Grösse auf die 
SD-Karte schreibst, wann ist dann eine 2GB-SD-Karte voll?
Rechne das mal aus.

von Martin S. (Gast)


Lesenswert?

Schuhplattler Sepp, Oberammergau schrieb:
> Rechne das mal aus.

Und die Zusatzfrage lautet:
Und wann geht die SD-Karte kaputt (unter diesen Bedingungen)?

von vitja H. (vitja3000)


Lesenswert?

das sollten laut meiner Rechnung 111930,46471 Stunden sein, das macht 
497,10269 Tage :D ... falls ich kein Denkfehler hatte grad

von Schuhplattler Sepp, Oberammergau (Gast)


Lesenswert?

Wenn du alle 10 Sekunden so eine Zeile auf die SD-Karte schreibst:
1 20110829 140259
X YYYYMMDD hhmmss
dann ist eine 2GB-Karte nach 42.9 Jahren voll.
Sag deinem Chef, dass du als Rentner wiederkommen wirst, um die SD-Karte 
zu wechseln.

von Martin S. (Gast)


Lesenswert?

Leider falsch :(

Was/Wie hast du denn gerechnet?

von Karl H. (kbuchegg)


Lesenswert?

Schaut realistisch aus.

490 Tage sind grosszügig über den Daumen gepeilt 1 Jahr :-)

Jetzt hast du aber keine 50 Bytes pro Messung. Und du musst auch nicht 
jede Sekunde aufzeichnen, sondern nur dann, wenn sich der Messwert 
ändert. Der Motor wird ja nicht im Sekundentakt ein/ausgeschaltet 
werden.

Anstatt 50 Bytes nehemen wir mal 10 Bytes an. Schwupps sind die 2 GB 
erst in 10 Jahren voll. Und wenn wir jetzt davon ausgehen, dass der 
Motor in diesen 10 Jahren nur alle 2 Sekunden ein/aus geschaltet wird, 
dann sinds schon 20 Jahre. Wie realistisch ein regelmässiges ein/aus 
alle 2 Sekunden ist, musst du entscheiden. Aber wenn das kein 
Dauerscheibenwischer ist, würde ich das für unrealistisch halten.

D.h. Das Thema - "ist die Karte voll, muss überschrieben werden" - das 
kannst du getrost abhaken. Den Fall werden frühestens deine Enkelkinder 
erleben.

von vitja H. (vitja3000)


Lesenswert?

ok verstehe. Danke nochmal für eure tollen Tipps. Denke dieses Forum 
wird mich in meinem Studium begleiten ^^

von vitja H. (vitja3000)


Lesenswert?

achja und was mache ich mit dem Motor der eingeschaltet wird wenn I >100 
mA ist ?

von Schuhplattler Sepp, Oberammergau (Gast)


Lesenswert?

Dere Motorstrom ist nur durch den maximalen Diodenstrom (z.B. 5A) 
begrenzt.

von Karl H. (kbuchegg)


Lesenswert?

vitja Hermann schrieb:
> achja und was mache ich mit dem Motor der eingeschaltet wird wenn I >100
> mA ist ?

Nichts besonderes?

eingeschaltet ist eingeschaltet. Und so wie ich das verstanden habe, ist 
nur das interessant.

Man könnte natürlich den Stromverbrauch mit auf die SD-Karte schreiben, 
alle paar Sekunden. Wenn der im Laufe der Zeit höher wird, könnte das 
ein Hinweis darauf sein, dass etwas im Gange ist und zb ein paar Lager 
wieder mal geschmiert werden müssten. Aber auch sowas ist langfristig zu 
sehen. Alle 10 oder 20 Sekunden aufzeichnen langt da dicke.


Dein Job ist es ja nicht den Motor bzw. das von ihm angetriebene auf 
Fehlfunktion oder Wartung hin zu überwachen (obwohl man das sicher auch 
mit einer 'Fehler'-Led machen könnte), sondern festzustellen wann er 
läuft.

Mach dein Projekt nicht auch noch künstlich interessant. So wie ich das 
sehe, hast du genug zu tun.

von Schuhplattler Sepp, Oberammergau (Gast)


Angehängte Dateien:

Lesenswert?

Hier ist der Schaltplan der Motorankopplung, damit es keine 
Missverständnisse gibt.

von vitja H. (vitja3000)


Lesenswert?

Danke für die Skizze so ähnlich hatte ich das auch aber mit ein paar 
Fehlern nur

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.