Maxo75 schrieb:
> Wie würdet Ihr das Problem angehen ?
Wie immer: In einzelnen Schritten.
Zuerst mal bring ich das LCD zum laufen. Kann ich dort Texte ausgeben,
ist das schon mal die halbe Miete.
Dann bau ich mir noch ein paar Hilfsfunktionen auf jeden Fall aber eine
Funktion, die einen Zahlenwert ausgeben kann. Denn ich will ja Messwerte
ausgeben.
Erst mal nur die Spannung laufend messen und anzeigen.
Dann nur den Strom laufend messen und anzeigen.
Dann beides laufend messen und anzeigen
Dann einen Timer einführen, der einen Zeittakt ins Programm bringt. Zb 1
Sekunde oder 1 Milisekunde.
Dann die Messungen so ändern, dass sie im Zeittakt gemacht werden
Dann die Ströme in diesem Zeittakt aufsummieren und anzeigen
Eventuell noch Bedienelemente hinzufügen, falls das notwendig ist
Unnötig zu sagen, dass natürlich jeder Schritt ausgiebig getestet wird,
ehe es zum nächsten Schritt weiter geht.
> Wie würde ein Programmablaufplan aussehen ?
1 | Timer-ISR
|
2 |
|
3 | Flag 'Es ist Zeit zu messen' setzen
|
4 |
|
5 | end
|
6 |
|
7 |
|
8 | main()
|
9 |
|
10 | Hardware initialisieren
|
11 |
|
12 | Verbrauch = 0
|
13 |
|
14 | while dauernd
|
15 |
|
16 | if( 'Es ist Zeit zu messen' ist gesetzt )
|
17 |
|
18 | messe Spannung
|
19 | messe Strom
|
20 |
|
21 | Verbrauch = Verbrauch + Strom
|
22 |
|
23 | Spannung am LCD ausgeben
|
24 |
|
25 | Strom am LCD ausgeben
|
26 |
|
27 | Verbauch am LCD ausgeben
|
28 |
|
29 | 'Es ist Zeit zu messen' zurücksetzen
|
30 |
|
31 | end if
|
32 |
|
33 | end while
|
34 |
|
35 | end
|
wahnsinnig schwierig.
Wer schon jemals ein Programm für einen AVR geschrieben hat, dem sollte
diese Struktur (die praktisch immer mehr oder weniger identisch ist)
bekannt vorkommen.
Hinweis: das ist das Ziel. Man attackiert aber nicht gleich dieses Ziel,
sondern bewegt sich in Schritten auf dieses Ziel zu. So wie oben
skizziert. Das ist der schnellste und auch der erfolgversprechendste Weg
um sich nicht irgendwo zu verzetteln. Ausserdem lernt man bei jedem
Schritt eine Menge und kann sich auf das in diesem Schritt zu machende
bzw. zu verändernde konzentrieren. Ein Haus baut man auch nicht, indem
alle Handwerker inklusive Baggerfahrer an einem Tag gemeinsam
auftauchen.
> Welche Zeiten/Timer würdet Ihr wählen ?
Den Timer den ich verfügbar hab.
Die Zeiten, die machbar sind, die meinen Forderungen nach Messauflösung
entsprechen und bei denen ich nicht umständlich rumrechnen muss. Messe
ich jede Millisekunde, dann ist es simpel den Verbrauch in eine
vernünftige Masseinheit zu bringen. Messe ich alle 0.74239
Millisekunden, dann muss ich umrechnen. Ist zwar kein Beinbruch, aber
man ist ja auch faul.
> Hab im Netz nach Projekten gesucht, die man zum Vergleich ran ziehen
> könnte, hab aber nix gefunden.
Och du armer.
Sowas schreibt man doch selbst!
Jeder der seine Hausaufgaben gemacht hat und seine Grundlagen beherrscht
sollte damit absolut keine Probleme haben.
Aber wie immer gilt natürlich: "Ich möchte" ist zu wenig. Wenn du etwas
möchtest, dann musst du es auch lernen.