Forum: Mikrocontroller und Digitale Elektronik Zweipunktregler mit uC programmieren: Anfänger


von Dominik (Gast)


Lesenswert?

Sehr geehrte uC-Programmierer :D
Habe gerade eine Regelung für mein Aquarium entworfen.
Dafür messe ich diverse analoge Werte und habe zum anpassen der Werte 
einen Zweipunktregler gebaut. Spreche ca. 8 Relais dafür an :)
Da mir die SPS auf ~1000 € gekommen ist und das absolut 
unverhältnismässig teuer ist, wollte ich gerne diese Regelung mit einem 
Mikrocontroller nachbauen.

Da meine Kenntnisse dahingehend allerdings gleich 0 sind, da ich das 
damals in der Schule gelernte leider wieder vergessen habe, wollte ich 
euch fragen wie ich das am besten angehe...also welcher da passen würde, 
was ich brauche usw. Habt ihr da Tipps für mich? Wäre mega dankbar.

Lg Dominik und noch einen schönen Tag :)

von Karl H. (kbuchegg)


Lesenswert?

> Dafür messe ich diverse analoge Werte und habe zum anpassen
> der Werte einen Zweipunktregler gebaut.

... der wahrscheinlich ein Ventil schaltet, durch welche 'Gegenmittel' 
zugeführt werden. Richtig?

D.h. du hast das Problem, das du zumischt und dann eine zeitlang warten 
musst, bis die Durchmischung im Aquarium soweit fortgeschritten ist, 
dass du wieder einen realistischen Messwert hast.

von Dominik (Gast)


Lesenswert?

Ganz genau so ist es :))
Aber als Problem hätte ich das jetzt nicht bezeichnet.  Funktioniert mit 
der SPS eigentlich ganz gut :)
Nur in Sachen Mikrocontroller hab ich da keine Erfahrung nur mit SPS, 
wäre aber für meine Zwecke viel besser, da günstiger :)
Lg Dominik

von Karl H. (kbuchegg)


Lesenswert?

Dominik schrieb:
> Ganz genau so ist es :))
> Aber als Problem hätte ich das jetzt nicht bezeichnet.

Na ja.
Problem nicht gerade.

Ich würds so machen.
Aus der Abweichung errechne ich eine Korrekturmenge (die zb 
experimentell bestimmt wurde) und die so bemessen ist, dass ich nicht 
übers Ziel hinausschiesse. Man kannt ja seine Pappenheimer und weiß 
ungefähr, wieviel zur pH Korrektur bei welcher Abweichung zuzusetzen 
ist.

Und das mach ich halt alle paar Minuten wieder mal.
Messwert aufnehmen - Korrekturmenge ermitteln - zusetzen

Bei der Temperatur ist das sowieso eher unkritisch. Temperatur zu 
niedrig - Heizung ein, Temperatur zu hoch - Heizung aus. Bei den 
Zeitkonstanten im Aquarium ist das alles ziemlich unkritisch.

> Nur in Sachen Mikrocontroller hab ich da keine Erfahrung

So wild ist das auch wieder nicht. Ich würd da erst mal etwas C lernen 
und dann ist das ein Standardaufsatz: Timer erzeugt einen Basistakt, in 
der ISR wird die Zeit runtergeteilt, Jobflag gesetzt dass es wieder an 
der Zeit ist einen Korrekturzyklus einzulegen, der dann auch 
durchgeführt wird.

von Karl H. (kbuchegg)


Lesenswert?

Ansonsten
Etwas generelles Wissen, wie man so mit AVR arbeitet
 *** AVR-Tutorial ***

Erste Schritte in C am besten auf dem PC mit einem guten Buch
( zb Kernighan&Ritchie Programmieren in C )

und danach den µC-spezifischen C Teil drüberstreuen.
 *** AVR-GCC-Tutorial ***

von Adam (Gast)


Lesenswert?

Hallo,

und schon habt ihr wieder einen Anfänger verscheucht! Gratuliere!

Adam

von Klaus Dieter (Gast)


Lesenswert?

Adam schrieb:
> und schon habt ihr wieder einen Anfänger verscheucht! Gratuliere!

Wieso verscheucht? Willst du uns aufklären?

von UR-Schmitt (Gast)


Lesenswert?

Adam schrieb:
> Hallo,
>
> und schon habt ihr wieder einen Anfänger verscheucht! Gratuliere!
>
> Adam

Warum hast du es nicht besser gemacht?
Im Gegensatz zu Karl Heinz Buchegger findet man dich hier ja mindestens 
20 mal pro Tag jemandem helfen, während Karl Heinz eigentlich nur 
Anfänger verscheucht...

von Klaus Dieter (Gast)


Lesenswert?

Ach ja, was ich eigentlich fragen wollte:
Dominik, wie sollten denn die Logik in der SPS aussehen?

von dolf (Gast)


Lesenswert?

was machst genau mit der sps?
kleine sachen kannst mit der µsps erledigen.
ist so ähnlich wie ne logo.
als controller dient n atmega32 + die firmware 0.88.
programmiert wird mit eagle + der µsps erweiterung v0.88.
programmieren muß man nicht können aber es ist günstig wenn man mit und 
, oder , nicht umgehen kann.
mfg

von Ingo (Gast)


Lesenswert?

Das Problem wird sein, wenn man kein Interesse an uC, will man nur 
schnellstmöglich das Problem lösen und nicht lange rumsaften mit 
Büchern. Dazu kommt die Einarbeitungszeit.

Gegenvorschlag, gegen Bezahlung mache ich ne Platine incl. Programm. 
Lieferzeit ca. 4 Wochen.



Ingo

von dolf (Gast)


Lesenswert?

Ingo schrieb:
> Das Problem wird sein, wenn man kein Interesse an uC, will man nur
> schnellstmöglich das Problem lösen und nicht lange rumsaften mit
> Büchern. Dazu kommt die Einarbeitungszeit.

stimmt !

bin mit analogkram gut ausgelastet.
m-s-r kram mach ich daher mit der logo oder mit der µsps .
hab weder zeit noch lust mich auch noch mit controllern zu beschäftigen.
hab die atmega auch nur für die sps im schrank.

mfg

von Dominik (Gast)


Lesenswert?

Nönö, ihr habt mich doch ned verscheucht :)
Also großen Dank an alle die hier mitmischen...kam grade erst wieder an 
einen PC.
@ Ingo:
Danke für das Angebot, aber ich hab großes Interesse an der Sache und 
hab auch kein Problem mich da zu informieren, mich einzuarbeiten.
Bin da auf was interessantes bei Conrad gestoßen, wäre das ok um mich 
einzuarbeiten, oder verschwendetes Geld, da schon sehr teuer:

http://www.conrad.at/ce/de/product/191026/MYAVR-EINSTEIGERSET-MK2-USB-PLUS/0213028&ref=list

uSPS klingt sehr interessant :D Was kann ich mir da drunter vorstellen?
Mit AND, OR, NOT hab i kein Problem, aber bräuchte da auch noch 
Vergleicher zB <= oder >= um mir die Schalthysterese zu basteln.

Danke für eure Hilfe, echt SPITZE von euch :))

Lg Dominik und GUTE NACHT :)

von Werner (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Und das mach ich halt alle paar Minuten wieder mal.
> Messwert aufnehmen - Korrekturmenge ermitteln - zusetzen

Da würde ich noch mal über die Zeitkonstanten nachdenken. Um in ein 
"paar Minuten" alles halbwegs homogen zu verteilen, müssen die Fische 
schon ganz schön strampeln bzw. von einer kräftigen Pumpe unterstützt 
werden.
Besser ist, sich nach der Zugabe einer Dosis den Zeitverlauf der 
Messwerte aufzuzeichnen. Dann hat man sowohl die Zeitkonstante als auch 
die erforderliche Dosis für eine bestimme Parameteränderung und kann die 
Dosierpumpe entsprechend steuern.

von dolf (Gast)


Lesenswert?

Dominik schrieb:
> uSPS klingt sehr interessant :D Was kann ich mir da drunter vorstellen?
> Mit AND, OR, NOT hab i kein Problem, aber bräuchte da auch noch
> Vergleicher zB <= oder >= um mir die Schalthysterese zu basteln.

moin !!

eingänge analog :5 ( 0 ...5 oder 0 ...10v )
eingänge digital :8
ausgänge digital :7
ausgang pwm :1
4*20 lcd / 44780er controller
batt. gepufferte uhr mit ds1307
ext. 8kb eeprom
i2c anschluß für erweiterungen
isp
rs232
4 systemtasten
erweiterung 8* dig. eingang , 4*dig. ausgang

gib mal ne mailadresse dann kann ich dir ne pdf schicken (handbuch).
da werden alle blöcke u.s.w. beschrieben.

mfg

von Ingo L. (Gast)


Lesenswert?

Wenn schon µC dann richtig, und nicht son µSPS Kram, oder?!

von A. B. (funky)


Lesenswert?

Auch hier kann man dem Threadersteller guten Gewissens zu einem Arduino 
raten

www.arduino.cc
http://arduino.cc/en/Main/Buy

Ab ca. 20€ gehts los

von Dominik (Gast)


Lesenswert?

so eine uSPS klingt ja ganz interessant, aber ist für mich vermutlich 
nicht das richtige...
die Messumformer welche ich im Einsatz habe, liefern mir 4-20mA Signale 
und im großen und ganzen komme ich mit dir Anzahl der IOs nicht ganz 
zurecht. :/

@Ingo:
Muss ich dir recht geben, da dieses Projekt auch nicht weiss Gott welche 
Eile hat, lieber will ich es richtig angehen und am Ende ein Produkt 
haben auf welches ich stolz sein kann :)

@Werner:
Das mit der Zeitkonstante ist nicht das Problem, verwende zum 
Durchmischen eine Luftpumpe auf Ausströmersteine und da geht das ganze 
in unter einer Minute :)

Lg Dominik

von Dominik (Gast)


Lesenswert?

Zum Arduino:
http://www.physicalcomputing.at/shop/article_A-1111000/Einsteiger-Kit-mit-Arduino-Uno-R3.html?shop_param=cid%3D5%26aid%3DA-1111000%26
Wäre das etwas geeignetes? Sieht vernünftig aus und der Preis ist 
absolut ok, für ein Kit :) Kann ich dann quasi schon loslegen mit 
Programmieren ?
:D Lg

von Udo S. (urschmitt)


Lesenswert?

Ehe du anfängst dir Hardware zu kaufen solltest du klären ob und wie 
aufwändig deine Sensoren da dran passen, und ob dir Programmierung mit 
Assembler oder C dein Ding ist.
Das kann man auch erst man mit Simulatorprogrammen bwz C auf dem PC 
ausprobieren.
Viel Spass und viel Erfolg

von A. B. (funky)


Lesenswert?

Ja, mit den Arduinos kannst du so loslegen.
Du brauchst im Endeffekt erstmal nur die Basisplatine. Kann per USB 
programmiert werden, und die IDE gibts auf der Homepage zum downloaden.

Wenn du sonst keinerlei Ausrüstung hast, dann macht so ein Starterkit 
mit Steckbrett usw schon Sinn

von Karl H. (kbuchegg)


Lesenswert?

Dominik schrieb:
> Zum Arduino:
> 
http://www.physicalcomputing.at/shop/article_A-1111000/Einsteiger-Kit-mit-Arduino-Uno-R3.html?shop_param=cid%3D5%26aid%3DA-1111000%26
> Wäre das etwas geeignetes? Sieht vernünftig aus und der Preis ist
> absolut ok, für ein Kit :) Kann ich dann quasi schon loslegen mit
> Programmieren ?

Leg doch erst mal deine Anforderungen fest.

* Welche Sensoren hast du? Welche Anschlüsse (Analog/Digital)
  brauchst du für jeden Sensor?

* Wie siehts mit Tasten aus? Wenn ja, wieviele?

* Brauchst du ein LCD?

* Wie siehts mit einer Uhrzeit aus? Soll der µC zb auch die Licht-
  steuerung in deinem Aquarium übernehmen? Dann wirst du eine Uhr
  brauchen. Da gibts wieder 2 Möglichkeiten: entweder eine Uhr, die
  bei jedem Stromausfall neu gestellt werden muss oder einen IC,
  der (wie beim PC) die Uhrzeit laufend mitführt. Auch ein DCF77-
  Empfänger wäre eine Möglichkeit, wie man an die aktuelle Uhrzeit
  kommen kann.

* Was fällt dir sonst noch ein, was du mit dem µC verbinden willst?

Damit hast du dann dein 'Mengengerüst' für die notwendigen Anschlüsse. 
Und dann kannst du einen Kit suchen, der diese Anzahl an Anschlüssen 
mitbringt.

von Dominik (Gast)


Lesenswert?

Also, ich habe 5 analoge Eingänge 4-20mA und 5 digitale :)
Ausgänge habe ich 15 digitale :)
Tasten brauche icheigentliche keine und ein LCD ist auch nicht zwingend 
erforderlich.
Eine remanente Uhr is auch notwendig wie du schon richtig sagst fürs 
Licht :D
Lg

von Karl H. (kbuchegg)


Lesenswert?

Dominik schrieb:
> Also, ich habe 5 analoge Eingänge 4-20mA und 5 digitale :)
> Ausgänge habe ich 15 digitale :)
> Tasten brauche icheigentliche keine und ein LCD ist auch nicht zwingend
> erforderlich.
> Eine remanente Uhr is auch notwendig wie du schon richtig sagst fürs
> Licht :D

Und wie stellst du die Uhr, bzw. die Lichtzeiten ein? :-)
Und ich wette, die Messwerte werden dich auch interessieren.
(Also brauchst du Tasten und mindestens ein LCD)

Edit: von der Erleichterung, die dir ein LCD bei der Programmentwicklung 
bringt, gar nicht erst zu reden. Das Schlimmste, gerade für jemanden mit 
wenig Erfahrung, ist Programmentwicklung nach der Methode "Stochern im 
Nebel".

von Jahat I. (jaib)


Lesenswert?

Hallo Dominik,

du brauchst also schon mal einen AVR mit mindestens 30 oder mehr freien 
Pins ( 5+5+15+LCD ). Mit dem Mega 8 wie beim myAVR MK2 Board kommst da 
nicht so einfach um die Runden. Aber denkbar ist folgendes Konfiguration 
wenn du bei dem übrsichtlichen M8 bleiben möchtest:

  * m8-Board dort nutzt du die Analogen Kanäle und hängst das LCD dran
  * USB To UART Bridge für Konfiguration
  * TWI Echtzeituhr
  * zwei TWI Portexpander


der Zweipunktregler ist nicht schwierig den baust dann ungefähr so:
1
...
2
// weiter oben im Deklarationsteil
3
#define SENSOR1_MIN 100
4
#define SENSOR1_MAX 200
5
...
6
7
...
8
// Zweipunktreglung
9
if ( sensor1.getValue() < SENSOR1_MIN )
10
   aktor1.on();
11
if ( sensor1.getValue() > SENSOR1_MAX )
12
   aktor1.off();
13
...

Für die Konfiguration baust dir nen kompfotables PC-Programm mit GUI... 
die Konfig-Daten sendest dann per USART an den Kontroller ;-)

Aber mit einem Hat Karl heinz recht ... erst mal lernen lernen nochmals 
lernen :-D

Gruß J.

von Dominik (Gast)


Lesenswert?

@ Karl Heinz:
Da hast du recht, in diesem Sinne macht das LCD selbstverständlich 
Sinn...
ich dachte ich kann wie bei einer SPS online gehen und meine Werte 
beobachten, bzw. so die Uhr einstellen, aber wenn dann gleich ordentlich 
mit Display und Anzeige der Werte :)

@ Jahat:

Danke für diese tolle Zusammenstellung.
Gebe dir und allen anderen natürlich Recht das jetzt mal Lernen angesagt 
ist.

Ich wollte euch nur bitten mir eine Hardwareempfehlung zu geben, was ich 
denn alles brauche, würd gerne Learning by Doing machen, kann mir dann 
darunter besser etwas vorstellen als so ganz ohne irgendetwas :)

Lg Dominik

von Karl H. (kbuchegg)


Lesenswert?

Dominik schrieb:
> @ Karl Heinz:
> Da hast du recht, in diesem Sinne macht das LCD selbstverständlich
> Sinn...
> ich dachte ich kann wie bei einer SPS online gehen und meine Werte
> beobachten, bzw. so die Uhr einstellen, aber wenn dann gleich ordentlich
> mit Display und Anzeige der Werte :)

Kannst du natürlich auch machen.
Aber willst du wirklich jedesmal deinen PC hochfahren, nur weil du die 
Temperatur ablesen willst?

> Ich wollte euch nur bitten mir eine Hardwareempfehlung zu geben, was ich
> denn alles brauche, würd gerne Learning by Doing machen, kann mir dann
> darunter besser etwas vorstellen als so ganz ohne irgendetwas :)

Arduino wurde ja schon genannt. Auch wenn die Meinungen auseinander 
gehen: Ich halte das nicht für schlecht. DIe Arduino IDE muss man ja 
nicht nehmen (bringt aber in dem Fall auch keine Nachteile wenn man es 
tut). Der bestechende Vorteil der Arduinos ist meiner Meinung nach: Der 
ganze Themenkreis "Programmer" bzw. Kontaktaufnahme vom PC zum µC ist 
mit einem Arduino schon erledigt. Und sowas kann sich schon zu einer 
ersten ernsten Hürde ausarten.
Und preislich halten sich die Arduinos auch im Rahmen.

von Dominik (Gast)


Lesenswert?

Hast du natürlich vollkommen recht !! :D
So ein Display is eigentlich dann schon sehr praktisch, ja fast schon 
notwendig in der Praxis :)

Werde in Punkto Arduino nochmal genauer nachforschen was für mich da in 
Frage kommen würde und dann vermutlich wieder mit Fragen auftauchen :DD

Vielen Dank für eure Unterstützung!!

Lg und GUTE NACHT

von Dominik (Gast)


Lesenswert?

So, hat mir wieder keine Ruhe gelassen und ich habe noch etwas gestöbert 
:D
Also ein von der Größe ausreichendes Teil wäre dieses hier oder was 
meint ihr ? :D

http://physicalcomputing.at/shop/article_A-1100100/Arduino-Mega-2560-R3.html?sessid=ZfFZJuRTMZIxPTOoi6uYn8ahYpefHXN1Z4c4n2OP1VgQy0b6AftzdWRjolCX0LP5&shop_param=cid%3D1%26aid%3DA-1100100%26

Display dazu hätte ich mir das hier gedacht:

http://physicalcomputing.at/shop/article_A-1111500/LCD-Display-Kit.html?shop_param=cid%3D18%26aid%3DA-1111500%26

Und ausser einem USB Kabel sollte ich auch schon nichts mehr brauchen um 
das alles zum Laufen zu bringen oder was meint ihr ?
Lg Dominik

von Karl H. (kbuchegg)


Lesenswert?

Dominik schrieb:

Hui. Das ist ja ein ordentlicher Bolide :-) Soviel Flash Speicher 
brauchst du nie und nimmer. (mit 32K wärst du mehr als üppig bedient). 
Aber wenn er die Anschlusszahlen hat, die du brauchst, passt das.
50 Euros schrecken mich da jetzt nicht besonders.

> Und ausser einem USB Kabel sollte ich auch schon nichts mehr brauchen um
> das alles zum Laufen zu bringen oder was meint ihr ?

Stromversorgung.
Aber eine 9V Wandwarze (Steckernetzteil :-)) hat man meistens noch im 
Haushalt von bereits ausrangierten Geräten übrig.

Uhrenmodul (RTC) würde ich mir noch überlegen.

von Dominik (Gast)


Lesenswert?

Hahahaaa, ja die Handwarze war klar :D
Dann nehme ich noch ein RTC mit dazu :)
Mir fällt gerade auf ich brauche im weiteren ja noch 15 5V Relais 
richtig? Wie sind solche Komponenten, Relais, RTC..denn anzuschliessen? 
Lg

von gordon51freeman (Gast)


Lesenswert?

Nur mal so als kleiner Input meinerseits.
Ihr ratet ihm hier zu Displays und RTC (die wahrscheinlich per IIC 
ausgelesen werden müssen) und der Threadersteller hat noch keine Zeile 
programmiert? Wie stellt ihr euch das bitteschön vor?

An den Threadersteller: Ich würde das Etappenweise angehen. Bis du nur 
schon mal den A/D Wandler so wie du willst zum Laufen kriegst und ab 
einem gewissen Messwert dann auch noch was bestimmtes machst wird dich 
schon einen Haufen Zeit kosten, da du, wie du sagst, keine Ahnung hast 
von C resp. µC's.

Das Display ist sicher eine super Erweiterung und der RTC sowieso aber 
gerade eine Uhr ist etwas, wobei ein C Anfänger sehr viel lernen kann! 
Ich würde deshalb auf jeden Fall probieren das mit der Uhr selbst 
hinzukriegen (sobald du das mit dem A/D Wandler geregelt hast).

Und was ich dir auch noch raten könnte: Nichts überstürzen :) C braucht 
Zeit.

Gruss
Gordon

von gordon51freeman (Gast)


Lesenswert?

Ah ja und ein Relais schliesst man über einen FET oder einen anderen 
Transistor einfach an einen Pin des µC's. Und nur so aus Interesse, wie 
gross sind deine Kenntnisse bezüglich Elektrotechnik resp. Elektronik?

Gruss
Gordon

von A. B. (funky)


Lesenswert?

15? Musst du nicht nur ein Ventil schalten?

Für die Sensoren brauchst du keine Relais

von Karl H. (kbuchegg)


Lesenswert?

gordon51freeman schrieb:
> Nur mal so als kleiner Input meinerseits.
> Ihr ratet ihm hier zu Displays und RTC (die wahrscheinlich per IIC
> ausgelesen werden müssen) und der Threadersteller hat noch keine Zeile
> programmiert? Wie stellt ihr euch das bitteschön vor?

Genauso wie bei allen anderen.
Tutorium durcharbeiten, C lernen, die Dinge in Betrieb nehmen.

Das das alles nicht von heute auf morgen geht, ist klar. Das ist auch 
ihm klar.

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.