Forum: Mikrocontroller und Digitale Elektronik Solarprojekt mit Steuerung


von Markus V. (Gast)


Lesenswert?

Hallo liebe Leute!

Da sich unsere Schulzeit in der Technikerschule (Fachrichtung 
E-Technik/Mikrocontrollertechnik) langsam dem Ende neigt und sich unsere 
Gruppe für ein Mikrocontrollerprojekt entschieden hat, haben wir 
folgende Fragen an euch, bei denen wir euere Hilfe brauchen.

Unsere Schule macht ein Umweltprojekt mit einem Solarprototyp, bei dem 
die Sonnenenergie gewisse Wärmespeicher temperaturabhängig auffüllt und 
entleert. Genaueres muss zu dem Patent nicht gesagt werden...man stellt 
sich einfach eine Regentonne vor, die temperaturabhängig mit dem 
Wasservolumen X gefüllt wird und über einen Auslass bei einer bestimmten 
Temperatur Y wieder abgelassen wird. Zusätzlich richtet ein 
überdimensionaler Spiegel die Sonnenstrahlen 
uhrzeitabhängig/-temperaturabhängig auf die Tonne.

Somit ergibt sich folgende Sensorik:
- 5x Temperatursensoren (Innentemperatur, Außentemperatur, 
Wassertemperatur:  Vorlauf, Rücklauf; 1 Reserve)
- 2x Drehgeber für die Positionsbestimmung eines Spiegels, der die 
Sonneneinstrahlung lenkt
- 1x Hallsensor zur Wasserstandsüberwachung

..und folgende Aktuatoren:
- 2x Wasserpumpen 230 V AC
- 2x Magnetventil
- 1x Schrittmotor
- 1x DC-Getriebemotor


Das Ganze soll dann über ein PC-System + Controller-Unit gesteuert 
werden.

Unsere Gruppe hat bereits begonnen, eine Schaltung auf Basis eines AVR 
(ATmega16) mit diverser Peripherie (Relais, Transistoren etc) 
aufzubauen.
Die Sensoren und die Aktuatoren können bereits mit dem Mikrocontroller 
angesprochen und ausgewertet werden und die gewonnenen Daten der 
Sensoren über die RS232 an den PC geschickt werden (Terminalprogramm).
Dabei kommt ein kleines Protokoll zum Einsatz, welches folgendermaßen 
aufgebaut ist:
Da es sich um genau 8 Sensoren handelt, schickt der AVR jede Sekunde 
einen String aus 8 Bytes. Jedes Byte bildet den entsprechenden Sensor 
ab, welches den jeweiligen Wert des Sensors enthält.

Beispiel:

S.1   S.2   S.3   S.4  ... S.8
0x48  0x12  0x7f  0x3A ... 0x01

Da wir dafür bisher nur ein Terminalprogramm nutzen um die empfangenen 
Daten zu betrachten und die Daten aber in eine MySQL-Datenbank 
geschrieben werden sollen, ergibt sich für uns die erste Frage:

Welche Programmiersprache eignet sich am besten dafür, um auf eine 
Schnittstelle (hier RS232) zuzugreifen UND diese Daten ausgewertet in 
eine Datenbank zu schreiben?
Heißt: Datenbankanbindung UND Schnittstellenzugriff.

Ob Windows oder Linux, das ist uns relativ egal, da wir mit beidem 
umgehen können.

Die nächste architektonische Grundsatzfrage ergibt sich außerdem:

Da sich die komplette Regelung völlig autark verhalten soll, benötigen 
wir einen Automatismus, der anhand der gesendeten Daten die Aktuatoren 
steuert.

Da es sich aus unserer Sicht nicht um zeitkritische Daten handelt, 
hatten wir vor, den Computer als Master zu nutzen und die 
Controller-Unit -an der die Sensoren/Aktuatoren angeschlossen sind- als 
Slave.
Daraus ergäbe sich folgende strikte Trennung:

Controller-Unit ist zuständig für die AD-Wandlung und dem Schicken der 
Ist-Werte per RS232.
PC ist zuständig für das Empfangen der Daten über RS232, dem Auswerten 
und dementsprechenden Steuern der Motoren/Magnetventile (= Senden von 
Daten zurückan die Controller-Unit).

Dies bedeutet, dass der PC im Sekundenraster die empfangenen Daten 
auswertet und aufgrund derer Änderung der Controller-Unit ebenso einen 
String ähnlich des obigen Protokollaufbaus schickt, der diesen auswertet 
und die entsprechenden Pumpen etc. steuert.


Diese zuletztgestellte Frage ist eigentlich die Entscheidende.
Ich war bereits auf Messen von Heizungsbaufirmen und habe mir deren 
Steuerungen angeschaut. Auch dort wird oft mit kleinen Industrie-PCs 
direkt eine AD-Wandelnde Hardware in Echtzeit gesteuert..allerdings 
setzen die dann auf einen gewissen Software-Standard namens "CodEsys", 
welcher angeblich Echtzeit unter Windows (!) garantiert...da wir 
allerdings folgendes CodEsys nicht benutzen, ergibt sich die Frage, ob 
wir dann nicht lieber die komplette Steuerungslogik auf dem Controller 
verpflanzen sollen und den PC lediglich zur Datensicherung der Istwerte 
nutzen?!
Komfortabler wäre die Programmierung für die Steuerlogik auf dem PC 
sicherlich.

Wir würden uns sehr über euere Meinung freuen!

Viele Grüße
markus.

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


Lesenswert?

Markus V. schrieb:
> ergibt sich die Frage, ob
> wir dann nicht lieber die komplette Steuerungslogik auf dem Controller
> verpflanzen sollen und den PC lediglich zur Datensicherung der Istwerte
> nutzen?!

Aus energietechnischer Sicht ist das mit Sicherheit besser, denn ein PC 
frisst ja mehr Energie, als die ganze Mimik erzeugen soll.

Markus V. schrieb:
> Da sich unsere Schulzeit in der Technikerschule (Fachrichtung
> E-Technik/Mikrocontrollertechnik) langsam dem Ende neigt

Aber was habt ihr denn die ganze Zeit gemacht? Ihr könntet z.B. den Mega 
mit einem Net I/O koppeln und per HTTP PUT einem PHP Skript auf dem 
Webserver eure Daten senden, welches sie in eine Datenbank einsortiert. 
Aber braucht ihr die Datenbank wirklich?

Markus V. schrieb:
> Da sich die komplette Regelung völlig autark verhalten soll, benötigen
> wir einen Automatismus, der anhand der gesendeten Daten die Aktuatoren
> steuert.

Autark heisst aber für mich, das ein PC eben nicht nötig wäre. Die 
eigentliche Rechenarbeit bei eurem Projekt macht der Mega mit 'links'.

von Markus V. (Gast)


Lesenswert?

Ja, die Datenbank brauchen wir wirklich, da wir über einen gewissen 
Zeitraum Daten auswerten möchten und nicht nur die Ist-Werte anzeigen 
wollen.

von Electronics'nStuff (Gast)


Lesenswert?

Sehe ich auch als ziemlichen Blödsinn an, wenn ein PC dauernd läuft bei 
einem Solarprojekt dieser Grösse..

Wie wäre es mit Speicherung auf SD Karte z.B.?

von Markus V. (Gast)


Lesenswert?

Also....es handelt sich um einen Mini-PC (mit Atom-Prozessor), der nicht 
mal so viel Strom aufnimmt, wie die Beleuchtung des Briefkasten der 
Schule.

Außerdem handelt es sich hier um ein rein thermisches Nutzen der 
Sonnenenergie, vom Abschweifen des Themas mal abgesehen... ;-)

Speicherung auf einer SD-Karte...warum sollte man sich das Leben schwer 
machen und in bestimmten Zeitspannen die Karte händisch aus dem Board 
friemeln, die Daten auf den PC laden etc.

Lasst mal bitte die Stromkosten vom sowieso energiesparenden PC außer 
Acht. Es handelt sich eine Schule, bei der fast den ganzen Tag die 
Lichter leuchten. Da fällt der Rechner mit 16 W nicht ins Gewicht.

von Weingut P. (weinbauer)


Lesenswert?

Markus V. schrieb:
> Lasst mal bitte die Stromkosten vom sowieso energiesparenden PC außer
> Acht. Es handelt sich eine Schule, bei der fast den ganzen Tag die
> Lichter leuchten. Da fällt der Rechner mit 16 W nicht ins Gewicht.

hmmm ... dann macht das ganze Projekt ja auch keinen Sinn, weil die 
Heizung in der Schule ja eh läuft ;)

Nee, zur Betrachtung eines Projektes für regenerative Energie gehört 
auch der Energieverbrauch der ganzen Anordnung, nicht nur die 
Erwirtschaftung über Methode x.
Davon abgesehen, die Entnahme der SD-KArte ist ja nicht notwendig, Ihr 
habt ja eh ne Datenverbindung, über die lest Ihr dann die Daten aus und 
löscht die dann nach Übertragung wieder.

EIne mögliche weitere Ergänzung wäre, wenn die Anlage ortsveränderlich 
sein soll, eine Funkübertragung der Messwerte.

Der ATMega, den Ihr vor habt einzusetzten macht im Übrigen das bisschen 
Rechnerei locker mal nebenbei, dafür den PC, auch nur 16W verbraten zu 
lassen, wenn der µC das mit 200mW machen kann ist Energieverschwendung, 
zumal der µC ja eh laufen soll für die Schnittstelle.

Was die Heizungsbauer angeht, ich hab noch keinen erlebt, der von 
Elektronik mehr versteht als Baugruppen wechseln und Sicherung ersetzen, 
da wird auch n Haufen Krempel für teuer Geld vertickt, Hauptsache die 
Marge stimmt.

von Weingut P. (weinbauer)


Lesenswert?

PS: nebenbei mal noch die Frage: wieviele Leute arbeiten an dem Projekt 
und wieviel Zeit habt Ihr dafür?

von Ulli B. (ulli-b)


Lesenswert?

Wie lautet jetzt eigentlich die konkrete Frage?
Ist es die Frage, ob es besser ist den AVR die Regelung der Aktoren zu 
übernehemen, dann lautet die Antwort: JA!

Die ganze Anlage sollte auch ohne PC funktionieren.
Wenn ein PC angeschlossen ist, so kann der ja von mir aus auch Daten in 
eine Datenbank schreiben.

Oder ist mein Verdacht richtig, dass die Anlage eigentlich für nichts zu 
nutze ist, als Wasser warm zu machen und es dann weg zu schütten? Es 
also ausschliesslich auf die gewonnenen Daten an kommt. Dann könnte man 
es sich überlegen, es doch den PC machen zu lassen. Zumal es dann auch 
wichtig sein kann die Regelparameter wärend dem Betrieb zu ändern. Auch 
lassen sich etwaige Rechenergebnisse schön am PC anzeigen.
Jetzt habt ihr aber das Problem, mit welcher Programmiersprache das 
Ganze gemacht werden soll.
Viele vom Forum hier würden selbstverständlicg C++ nehmen.
Ich würde Pythen nehmen ....

mfG
Ulli

von Markus V. (Gast)


Lesenswert?

>PS: nebenbei mal noch die Frage: wieviele Leute arbeiten an dem Projekt
>und wieviel Zeit habt Ihr dafür?

Wir haben dafür noch bis August Zeit, wobei das meiste eh zu Hause 
entstanden ist und wir das alles eher als Freizeitbeschäftigung sehen.



>Wie lautet jetzt eigentlich die konkrete Frage?

Die Frage lautet, ob die gesamte Steuerung auf dem AVR alleine gemacht 
werden soll oder ob der PC das Kommando übernimmt und den 
Mikrocontroller bei gegebenem Anlass triggert und ihm mitteilt was er 
tun soll.
Mir graut es eben vor der Programmierung und vorallem der Fehlerfindung 
auf dem Controller...da wäre die PC-Programmierung um einiges 
komfortabler (Debugging, Fehlerprovozierung etc.).

Da wir für die Mikrocontrollerlösung allerdings noch einiges an Arbeit 
haben, ist es vielleicht noch interessant, die Alternative "SPS" zu 
betrachten.
Nur wissen wir leider nicht, welche SPS eine Datenschnittstelle besitzt, 
die Daten zum Loggen an den PC schickt.
Denkt ihr, eine C-Control könnte das übernehmen??

von Weingut P. (weinbauer)


Lesenswert?

C-Control ist keine SPS, ist auch nur n Mikrocontroller, der 
programmiert werden muss, die Peripherie (Motortrieber, Tempertursensor, 
Schaltstufe für Ventile etc.) müsst Ihr dennoch dazudesignen und das ist 
bei weitem das größere Problem als das bisschen Programmierung.

SPS wär mit Kanonen auf Spatzen zu schießen.

Mein Vorschlag wäre, Ihr fangt damit an von außen nach innen Eure 
Anforderungen festzulegen. Z.B. Temperatursensoren, sind schon vorhanden 
oder müssen noch beschafft werden. Welche sollen es werden, digital oder 
analog, Industriestandard PT100 oder n einfacher NTC von der Stange für 
kleines Geld. Dann braucht Ihr für die Sensoren die entsprechende 
Außenbeschaltung, das könne einfach zwei Widerstände für Pullups an 
I2C-Bus sein, wenn z.B. die hier im Forum oft verwendeten LM75 
eingesetzt werden, oder n einfacher Widerstand als SPannugsteiler für 
nen 10KR NTC oder ne Konstantstromquelle für nen PT100.
Dann gehts weiter zu den Ventilen, Betriebsspannung derselben AC oder 
DC, welche Spannung, schon was vorhanden oder muss neu beschafft werden, 
Welche Spannungsquelle ist schon vorhanden, Magnetventil oder 
Motorventil etc. Relais zum Vorschalten der Ventile, Transistorstufe zum 
Schalten der Relais, Funkenlöschung am Relaiskontakt.
Stellmotor, schon vorhanden oder neu zu beschaffen, welche Spannung(en) 
benötigt, Schrittmotor oder normaler Motor, Endlageschalter und 
Schrittmotor oder Gabellichtschranke mit Encoderscheibe Welche 
Gabellichtschranke, benötigte Auflösung im Drehwinkel ... etc. etc.

von Markus V. (Gast)


Lesenswert?

>C-Control ist keine SPS, ist auch nur n Mikrocontroller, der
>programmiert werden muss, die Peripherie (Motortrieber, Tempertursensor,
>Schaltstufe für Ventile etc.) müsst Ihr dennoch dazudesignen und das ist
>bei weitem das größere Problem als das bisschen Programmierung.

Nun gut, dafür muss ich mich aber nicht um die 
Prozessverwaltung/Scheduling o.ä. kümmern so wie bei einem komplett 
"jungfräulichen" AVR, bei dem ich erst sämtliche Intelligenz verpflanzen 
muss.

>SPS wär mit Kanonen auf Spatzen zu schießen.

Warum? Ich denke eher umgekehrt und daher war auch meine Frage gestellt 
worden:
Ermöglicht eine SPS oder C-Control (wo liegt denn da der Unterschied? In 
einer SPS ist auch ein Mikrocontroller verbaut?!) überhaupt diese 
Steuerungsaufgabe?

Gruß

von Markus V. (Gast)


Lesenswert?

Jemand vielleicht noch Ideen?

von Michael (Gast)


Lesenswert?

Also ich kapier das alles immer noch nicht ganz.

Du schreibst ihr hättet den MC schon soweit, die Sensoren korrekt 
einzulesen und die Aktoren korrekt anzusteuern.

Was fehlt denn dann noch groß?
Die Sensoren in einem Programm mit etwas Logik auswerten?
Das ist doch Pipifax - auf einem MC sicher einfacher, schneller und 
besser aufgehoben als auf einem PC.

Die Messwerte könnt ihr ja noch immer seriell an einen PC schicken und 
dieser kann die dann in eine Datenbank packen. Lässt sich unter Linux 
sogar mit einem Bash-Skript realisieren, also auch kein Hexenwerk.
Vorteil: System läuft auch dann, wenn der PC mal aus ist.

Ihr habt euch für die Verwendung eines MC entschieden also nutzt ihn 
auch, so einfach ist das ;-)

von Karl H. (kbuchegg)


Lesenswert?

Markus V. schrieb:

> Mir graut es eben vor der Programmierung und vorallem der Fehlerfindung
> auf dem Controller...


Mir graut viel eher, wenn ich das hier lese

> Da es sich um genau 8 Sensoren handelt, schickt der AVR jede Sekunde
einen String aus 8 Bytes.

Macht die Sache auf dem µC. Ist im Endeffekt einfacher.
Die Ergebnisse könnt ihr zb auf eine SD-Karte schreiben und die 'schöne 
Auswertung' inkl. Diagrammen, die könnt ihr dann auf dem PC machen.


> Komfortabler wäre die Programmierung für die Steuerlogik auf
> dem PC sicherlich.

Die Frage ist doch die: wie aufwändig ist denn eure Steuerlogik 
wirklich. Es bringt nämlich auch nichts, sich vor 40 Zeilen Code in die 
Hose zu machen und sich dafür den Problemkreis "Was kann mir alles 
passieren, wenn ich Daten durch die Gegend schicke und was passiert wenn 
diese Verbindung abreißt" aufzureißen.

von Weingut P. (weinbauer)


Lesenswert?

Markus V. schrieb:
> (wo liegt denn da der Unterschied? In
> einer SPS ist auch ein Mikrocontroller verbaut?!)

lapidar gesagt, das Eine kannst du auf ne Hutschiene pappen, das Andere 
nicht ... warum?
Weil das Eine schon die komplette Außenbeschaltung mit drinnen hat und n 
Gehäuse darum ist ...
programmiert muss beides werden.

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.