Forum: Mikrocontroller und Digitale Elektronik Servo mit Messgerät steuern


von William R. (willriker)


Lesenswert?

Guten Tag liebe Community,

ich bin neu hier und habe natürlich direkt eine Frage.

In der Vergangenheit habe ich einen Arduino UNOR3 mit einem einfachen
Servomotor angesteuert, im Grund erstmal keine so große Sache.

Die Steuerung erfolgte zu Testzwecken über eine vorher definierte 
Zeitspanne.

Die Frage, die ich nun habe ist, wie kann ich mittels eines Messgerätes,
Temperatur, Luftfeuchtigkeit z. B. die Steuerung durchführen, so, dass 
der
Servo seinen "Befehl" über permanent gemessene Werte erhält.

Vielen Dank!

von CC (Gast)


Lesenswert?

Lass dem Arduino die Messwerte zukommen (Sensor, Schnittstelle vom DMM, 
...) und ihn dann dementsprechend den Servo ansteuern.

von Karl M. (Gast)


Lesenswert?

Hi,

ich verstehe nicht, was mit dieser "die Steuerung" gemeint ist.

I.A. legt man auf mathematischer Basis Regeln fest, die dann etwas 
bewirken.

Also gehe in Dich und formuliere Deine Anforderungen ganz genau, so dass 
jeder Leser dein Ziel auch verstehen kann.

von Teo D. (teoderix)


Lesenswert?

Karl M. schrieb:
> Also gehe in Dich und formuliere Deine Anforderungen ganz genau, so dass
> jeder Leser dein Ziel auch verstehen kann.

Was ist da nicht zu verstehen?
Er will ein paar Sensoren anschließen und kennt den Unterschied der 
Begriffen nicht, oder er hat von Sensoren noch nie was gehört und will 
wirklich ein DMM anschließen.

von Karl M. (Gast)


Lesenswert?

Teo D. schrieb:
> Was ist da nicht zu verstehen?

Bitte erkläre dann im Detail, was er mit "die Steuerung" mein.

von Teo D. (teoderix)


Lesenswert?

Karl M. schrieb:
> Bitte erkläre dann im Detail, was er mit "die Steuerung" mein.

Du Zäumst das Pferd von hinten auf!

von Wolfgang (Gast)


Lesenswert?

William R. schrieb:
> In der Vergangenheit habe ich einen Arduino UNOR3 mit einem einfachen
> Servomotor angesteuert, im Grund erstmal keine so große Sache.

Kannst du das mal etwas erklären?
Normalerweise wird der Servomotor angesteuert und nicht der Arduino.
Meinst du einen Modellbauservo? Auch der hat nur einen Eingang, aber 
keinen Ausgang.

von William R. (willriker)


Lesenswert?

Hallo,

eines vorweg, ja, natrülich habe ich den Servo angesteuert
und nicht den Arduino, "kleiner Syntax dreher"

vielen Dank aber für die Resonanz,
aus dem Kontext ergibt sich die Steuerung des Servomotors.

Der Servotmotor wird ja angesteuert und dies erfolgt mittels Befehl.
Mir war nicht klar, dass ich das diffrenzieren musste.

Wie dem auch sei,

Wir haben also einen Arduino,

mit - Servo
und - z. B. einem Luftfeuchtesensor, der die Luftfeuchtigkeit ermittelt,
und nein, wir brauchen jetzt auch keine Differenzierung nach relativer 
Luftffeuchtigkeit, etc. denn das ist nur ein Beispiel.

Die ganz einfache Frage ist,
wie vermittel ich zwischen den beiden mit dem Arduino verbundenen
"Komponenten" Servo und z. B. Luftfeuchtemesser,
damit hier, z. B. bei bestimmten Werten eine bestimmte Aktion ausgeführt 
wird, - ja natürlich mit Befehlen, schon klar


Z. B.
If - Luffeuchtesensor Wert ist 30%
Then - move 30 degree in welche Richtung auch immer

oder so ähnlich,

Die Frage ist, wie muss so eine Programmierung, solch eine Routine 
aussehen und kann ich diese quasi zusammenkopieren oder ist das 
wesentlich schwieriger

: Bearbeitet durch User
von Joe F. (easylife)


Lesenswert?

William R. schrieb:
> In der Vergangenheit habe ich einen Arduino UNOR3 mit einem einfachen
> Servomotor angesteuert, im Grund erstmal keine so große Sache.
>

Wohl eher umgekehrt, du hast den Servomotor mit dem Arduino 
angesteuert... oder?

> Die Steuerung erfolgte zu Testzwecken über eine vorher definierte
> Zeitspanne.

Was hat die Zeitspanne hier für einen Einfluss?

> Die Frage, die ich nun habe ist, wie kann ich mittels eines Messgerätes,
> Temperatur, Luftfeuchtigkeit z. B. die Steuerung durchführen, so, dass
> der
> Servo seinen "Befehl" über permanent gemessene Werte erhält.

Du programmierst eine Endlosschleife, in der du die aktuellen 
Sensorwerte einliest und im Anschluss basierend auf den neuen Werten den 
Servo entsprechend nachsteuert.
Wenn sich der Sensorwert erwartungsgemäß nur alle paar Sekunden ändert, 
kann sich dein Programm nach jedem "Werte-Einlesen" und 
"Servo-Nachsteuern" erstmal eine Sekunde lang schlafen legen, Musik 
hören oder andere Dinge verrichten.

: Bearbeitet durch User
von Thomas S. (selli69)


Lesenswert?

Grüße auf deinem Weg zum Ziel das "P", das "I" und das "D" recht 
herzlich von mir.

scnr

von William R. (willriker)


Lesenswert?

Thomas S. schrieb:
> Grüße auf deinem Weg zum Ziel das "P", das "I" und das "D" recht
> herzlich von mir.
>
> scnr

Was soll das?

von William R. (willriker)


Lesenswert?

Joe F. schrieb:
> William R. schrieb:
>> In der Vergangenheit habe ich einen Arduino UNOR3 mit einem einfachen
>> Servomotor angesteuert, im Grund erstmal keine so große Sache.
>>
>
> Wohl eher umgekehrt, du hast den Servomotor mit dem Arduino
> angesteuert... oder?

das habe ich bereits richtig gestellt, aber danke

>
>> Die Steuerung erfolgte zu Testzwecken über eine vorher definierte
>> Zeitspanne.
>
> Was hat die Zeitspanne hier für einen Einfluss?

nun, die Zeitspanne gibt vor wie lange es dauert bis eine vorher 
definierte Aktion ausgeführt wird, sie ist also nicht dynamisch,
- was soll die Frage?


>
>> Die Frage, die ich nun habe ist, wie kann ich mittels eines Messgerätes,
>> Temperatur, Luftfeuchtigkeit z. B. die Steuerung durchführen, so, dass
>> der
>> Servo seinen "Befehl" über permanent gemessene Werte erhält.
>
> Du programmierst eine Endlosschleife, in der du die aktuellen
> Sensorwerte einliest und im Anschluss basierend auf den neuen Werten den
> Servo entsprechend nachsteuert.
> Wenn sich der Sensorwert erwartungsgemäß nur alle paar Sekunden ändert,
> kann sich dein Programm nach jedem "Werte-Einlesen" und
> "Servo-Nachsteuern" erstmal eine Sekunde lang schlafen legen, Musik
> hören oder andere Dinge verrichten.

Endlossschleife, aha, wie kann so etwas in Programmiersprache,
im Idealfall an einem Beispiel demonstriert, aussehen?

von Stefan F. (Gast)


Lesenswert?

Ich würde Dir dazu raten, ein Tutorial oder Lehrbuch für die 
Programmiersprache deiner Wahl durch zu arbeiten. Wir können das im 
Rahmen einer Diskussion nicht leisten. Programmieren lernt man nicht 
übers Wochenende.

Bei Dir kommt dazu, dass du außerdem noch etwas über Elektronik lernen 
musst.

Wenn du gar keine Ahnung hast, wie du anfangen kannst, dann lass dich 
hiervon anleiten:

http://stefanfrings.de/mikrocontroller_buch/index.html

Du kannst gerne konkrete Fragen stellen, wenn beim Durcharbeiten des 
Tutorials/Buches Fragen aufkommen.

von Thomas S. (selli69)


Lesenswert?

William R. schrieb:
> Was soll das?

Das soll ein dezenter Hinweis darauf sein, dass da noch einiges an Weg 
vor Dir liegt, wenn Du dein Vorhaben realisieren willst.

Das was Du da bauen willst nennt man in Fachkreisen eine "Regler". Und 
Regelkreise sind eine Wissenschaft für sich, zumindest dann wenn diese 
wie gewünscht funktionieren sollen.

Wenn Du das nach dem Schema "Wenn zu wenig, dann zustellen, wenn zu viel 
dann wegnehmen" aufziehst, dann wird:

- Der zu regelnde Wert Überschwingen,
- Der ganze Regelkreis permanent schwingen,
- Die Wirkung des Reglers entweder zu zaghaft oder zu heftig sein.

Dafür haben sich schlaue Leute sog. PID (Parallel-Integral-Differential) 
Regler einfallen lassen, welche (richtig parametriert) das gewünschte 
Regelverhalten zeigen.

Mal zum anlesen:
https://www.ifr.ing.tu-bs.de/static/files/lehre/vorlesungen/gdr/Skript_GdR.pdf

Dein Glück ist, dass es PID Bibliotheken für den Arduino gibt. Dein Pech 
ist, dass Du dich um diese zu nutzen in die Materie einarbeiten musst.

von William R. (willriker)


Lesenswert?

>
> Wenn Du das nach dem Schema "Wenn zu wenig, dann zustellen, wenn zu viel
> dann wegnehmen" aufziehst, dann wird:
>
> - Der zu regelnde Wert Überschwingen,
> - Der ganze Regelkreis permanent schwingen,
> - Die Wirkung des Reglers entweder zu zaghaft oder zu heftig sein.

ich verstehe, also vom Grundprinzip her,
und wenn ich nun eine, ich nenne es mal, Schaltung benötige,
die nur einmal reagiert,
quasi, wenn ein Wert erreicht ist nur einmal und dannach wieder manuell
resetet wird?

das wäre dann kein ständiges hin und her,
wäre das einfacher?

von Stefan F. (Gast)


Lesenswert?

William R. schrieb:
> das wäre dann kein ständiges hin und her, wäre das einfacher?

Ja, das wäre einfacher. Aber auch das programmiert sich nicht von 
selbst.

von Thomas S. (selli69)


Lesenswert?

William R. schrieb:
> ich verstehe, also vom Grundprinzip her,
> und wenn ich nun eine, ich nenne es mal, Schaltung benötige,
> die nur einmal reagiert,
> quasi, wenn ein Wert erreicht ist nur einmal und dannach wieder manuell
> resetet wird?
>
> das wäre dann kein ständiges hin und her,
> wäre das einfacher?

Wie stefanus schon sagte, solltest Du dich erst mal, zumindest 
oberflächlich, in die Grundlagen einlesen. Danach kannst ja mal 
probieren erst einen Steuerkreis und dann einen einfachen Regelkreis 
selbst zu programmieren. Wenn das gemacht hast und dir das Ergebnis 
nicht reicht, dann musst Du dich ein Wenig mit der Regelungstechnik 
beschäftigen.

Sorry, mit einfach zusammenkopieren kommt man halt nicht weit.

von William R. (willriker)


Lesenswert?

ok, Ich besorge mir erstmal die noch erforderlichen Komponenten, und 
melde mich dann wieder, wenn ich verzweifelt bin ;-)

danke erstmal :-)

von Stefan F. (Gast)


Lesenswert?

Du kannst ja mal deine Einkaufliste vorzeigen, dann schaue wir Drüber 
und sagen Dir Bescheid, ob etwas fehlt oder nicht zusammen passt.

von Manfred (Gast)


Lesenswert?

Stefanus F. schrieb:
> Du kannst ja mal deine Einkaufliste vorzeigen, dann schaue wir Drüber

Eine LED und ein Drehpoti sollten für's erste reichen, mal die 
Grundlagen einer Abfrage zu erarbeiten.

Die Fragestellung ist dermaßen unspezifisch, dass ich eine Beratung hier 
im Forum für nicht machbar halte. Wenn Du es gerne machen willst, 
kannst' ihm natürlich den fertigen Code schreiben und zum Download 
anbieten.

von Joe F. (easylife)


Lesenswert?

William R. schrieb:
> Endlossschleife, aha, wie kann so etwas in Programmiersprache,
> im Idealfall an einem Beispiel demonstriert, aussehen?

Um deine Frage zu beantworten, in C sähe das z.B. so aus:
1
for(;;)
2
{
3
  tue_dies_immer_wieder_und_solange_es_strom_gibt();
4
}

oder auch
1
while(1)
2
{
3
  read_sensor();
4
  update_servo();
5
  msleep(1000);
6
}

und ältere Semester programmieren manchmal noch gerne
1
start:
2
read_sensor();
3
update_servo();
4
msleep(1000);
5
goto start;
macht man heute aber nicht mehr. goto = böse.

: Bearbeitet durch User
von Regler (Gast)


Lesenswert?

Thomas S. schrieb:
> Parallel

Proportional

Und ein Großteil an Regelkreisen ist ziemlich gutmütig und mit einem 
Zweipunktregler gut machbar. Siehe z. B. Kühlschrank. Nen PID brauchts 
bei weitem nicht immer. Auf der anderen Seite kann man natürlich auch 
beliebig viel Aufwand treiben und z. B. Zustandsraumregelung mit 
Kalman-Filter implementieren.

von Joe F. (easylife)


Lesenswert?

Arduino Nutzer wiederum sparen sich das, und nutzen einfach die Funktion 
"loop()", die eh schon vom Compiler in eine Endlosschleife übersetzt 
wird:
1
loop()
2
{
3
  read_sensor();
4
  update_servo();
5
  msleep(1000);
6
}

Regler schrieb:
> Und ein Großteil an Regelkreisen ist ziemlich gutmütig und mit einem
> Zweipunktregler gut machbar. Siehe z. B. Kühlschrank. Nen PID brauchts
> bei weitem nicht immer.

Ganz genau. Wenn das System eh so träge ist, dass es nicht überschwingen 
kann, oder der Überschwinger einfach egal ist, hat man es einfacher.
Ausserdem ist ja gar nicht gesagt, dass es hier überhaupt um einen 
Regelkreis geht. Vielleicht soll der Servo ja nur einen Zeiger drehen, 
der die Temperatur anzeigt?

von Wolfgang (Gast)


Lesenswert?

Joe F. schrieb:
> Du programmierst eine Endlosschleife, in der du die aktuellen
> Sensorwerte einliest und im Anschluss basierend auf den neuen Werten den
> Servo entsprechend nachsteuert.

Die Endlosschleife braucht man bei Arduino nicht zu programmieren.
Loop() wird schon in einer Endlosschleife aufgerufen - darum der Name 
"Loop".

von Joe F. (easylife)


Lesenswert?

Etwas OT, aber durchaus interessant, dass es (meistens) so gut 
funktioniert:
Um die Netzfrequenz stabil zu halten werden bei Abweichung vom Soll 
einfach ab Überschreitung einer definierten Grenze "Regelleistungen" 
aktiviert, die kurzfristig entweder Strom liefern oder verbrauchen 
können.
Da keinerlei Vorhersagen getroffen werden können, wie sich der 
Stromverbrauch entwickeln wird, kann auch kein PID, Kalman o.ä. 
Algorithmus zur Hilfe genommen werden.
Das System basiert einfach darauf, in insgesamt 4 Stufen und mit 
zeitlichem Abstand immer stärkere Regelleistungen zu aktivieren.
Gibt natürlich kein komplett "flaches" Ergebnis, funktioniert aber gut 
genug für die Praxis.

von Thomas S. (selli69)


Lesenswert?

Regler schrieb:
> Thomas S. schrieb:
>> Parallel
>
> Proportional

Mea Culpa! Passiert mir immer wieder...

>
> Und ein Großteil an Regelkreisen ist ziemlich gutmütig und mit einem
> Zweipunktregler gut machbar. Siehe z. B. Kühlschrank.

Der schwingt ja auch. Was dem Kühlgut und dem der es verspeist jedoch 
egal ist.

> Nen PID brauchts
> bei weitem nicht immer.

Natürlich nicht. Doch der TO verwendet ein Servo. Diese sind (so es sich 
um ein Modellbauservo handelt) nicht für ihre Haltbarkeit bekannt. Da 
ist es schon von Vorteil, wenn sich dieser so wenig wie möglich bewegen 
muss. Nem Bimetall wie im Kühlschrank ist das egal.

von Stefan F. (Gast)


Lesenswert?

Manfred schrieb:
> Eine LED und ein Drehpoti sollten für's erste reichen, mal die
> Grundlagen einer Abfrage zu erarbeiten.

Ich würde noch einen Vorwiderstand für die LED dazu kaufen.

Erste Regelkreise kann man sehr gut mit einer Glühlampe und einem 
Heißleiter ausprobieren.

von William R. (willriker)


Lesenswert?

Stefanus F. schrieb:
> Du kannst ja mal deine Einkaufliste vorzeigen, dann schaue wir Drüber
> und sagen Dir Bescheid, ob etwas fehlt oder nicht zusammen passt.

Hallo,
ich dachte an die folgenden Komponenten,

was ich noch habe;

- smraza UNOR3
- einen kleinen blauen Servo (SG90)
- Jumperkabel und LED´s habe ich auch relativ viele.
was ich lediglich bestellen muss ist der BMP280


kann ich denn eigentlich auch einen Adurino Nano verwenden?

von Stefan F. (Gast)


Lesenswert?

William R. schrieb:
> kann ich denn eigentlich auch einen Adurino Nano verwenden?

Na klar!

von William R. (willriker)


Lesenswert?

Na gut, hier mal die aktuelle Bestellung,

- BMP280,
- SG90 Servo (nochmal einen neuen bestellt)
- 0,91 Zoll OLED Display display blau
- Arduino UNO R3
- Arduino Nano (nochmal mitbestellt)


ansonsten habe ich noch etliche Jumper, LED´s etc. hier.

Es geht, sobald die Komponenten da sind, noch um die richtige 
Verkabelung
und natürlich den Sketch.

Ich habe ja schon fragmentarisch das eine oder andere hier gelesen.

Leider bin ich ein kompletter Noob und bräuchte dahingehend sichern noch
mehr hilfe, selbstverständlich werde ich, sobald alles verkabelt und 
programmiert ist, entsprechende Fotos und evtl. auch Videos zur 
Verfügung stellen, damit sich jeder ein Bild davon machen kann, sobald 
alles,
zumindest verkabelt und mit aufgespieltem Code, läuft

Ohne euch würde ich das wohl kaum schaffen,

bis jetzt schon einmal Danke!

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Jetzt habe ich doch einen Einwand, bzw. einen Punkt zum Bedenken.

Diese OLED Displays haben nur eine kurze Lebensdauer von ca. 30.000 
Stunden (4 Jahre). Sie eignen sich daher nicht gut für Dauerbetrieb.

Du könntest es mit sehr niedriger Helligkeit betreiben und nur bei 
Tastendruck oder mit Hilfe eines Bewegungsmelders für ein paar Minuten 
auf Hell umstellen. Das dürfte die Lebensdauer erheblich erhöhen.

Du kannst ein "Wifi Kit 8" Modul kaufen, das ist ein mit Arduino 
programmierbarer ESP8266 mit 32bit Kern, WLAN und diesem Display.

Anleitungen:
http://stefanfrings.de/esp8266/index.html#wifikit8
https://arduino-projekte.info/servo-ansteuern-arduino-esp8266-esp32/

von William R. (willriker)


Lesenswert?

Na ja, das OLED Display ist auch optional,
wobei 30.000 Betriebsstunden doch erheblich sind und
die Kosten sehr gering.
Sobald es defekt ist, kann man es einfach austauschen.

Ich möchte jedoch betonen, es dient am Anfang lediglich der Kontrolle 
der Funktionalität im Feldtest.

Wenn ich also mit dem programmierten Arduino draußen verschiedene Höhen 
aufsuche, möchte ich ablesen können, wie genau der BMP280 arbeitet.

von Stefan F. (Gast)


Lesenswert?

William R. schrieb:
> und die Kosten sehr gering.
> Sobald es defekt ist, kann man es einfach austauschen.

Das dachte ich auch zunächst für keine basteleien. Andererseits ist 
fraglich, ob man diese Displays in 4 Jahren noch kaufen kann.

Ich kann mir zwar einen Vorrat anlegen, aber Geld und Lagerplatz sind 
begrenzt. Außerdem bin ich sehr unsicher, ob diese OLED nicht bereits 
beim herum liegen vergammeln.

Weiß jemand, wie lange man OLED lagern kann?

von Thomas S. (selli69)


Lesenswert?

Stefanus F. schrieb:
> Weiß jemand, wie lange man OLED lagern kann?

Welche Suchbegriffe hast Du bei deiner Google-Suche denn verwendet, dass 
Du keine Antwort auf diese Frage bekommst? Kann ich dir dabei helfen in 
dem ich vllt ein paar passende Suchbegriffe beisteuere?

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Thomas S. schrieb:
> Welche Suchbegriffe hast Du bei deiner Google-Suche denn verwendet

"OLED Lagerzeit"
"OLED Lagerbarkeit"
"OLED Haltbarkeit"

Gefunden habe ich damit nur Infos zur Leuchtdauer, aber die brauche ich 
nicht, da die ja im Datenblatt des Displays stehen. Ich suche Infos 
dazu, ob solche Displays (gerne auch speziell dieses eine) 
wahrscheinlich in 20 Jahren noch funktionieren, wenn man sie nur 
zeitweise leuchten lässt oder dauerhaft aber sehr dunkel.

von Thomas S. (selli69)


Lesenswert?

"Das größte technische Problem stellt die vergleichsweise geringe 
Lebensdauer mancher aus organischen Materialien bestehenden Bauelemente 
dar. Bei (O)LEDs bezeichnet man als Lebensdauer die mittlere 
Betriebszeit, nach der die Leuchtdichte auf die Hälfte abgesunken ist. 
Dabei haben blaue OLEDs die geringste Lebensdauer. Für weiße 
Lichtquellen, wie bei Monitoren, ist für die insgesamt nutzbare 
Lebensdauer daher die blaue Komponente die begrenzende. 2011 wurden für 
weiße Lichtquellen 5000 Stunden (bei 1000 cd/m²)[46] und 12.000 Stunden 
(bei 100 cd/m²)[47] angegeben. Im Vergleich dazu weisen handelsübliche 
weiße LEDs für die Hintergrundbeleuchtung bei LCD-Monitoren eine 
mittlere Betriebszeit in der Größenordnung von 30.000 Stunden auf.[48]

Die Lebensdauer von OLEDs ist temperaturabhängig: Eine gut gekühlte OLED 
(gleich welcher Farbe) mit geringer Anfangsleuchtstärke hat immer eine 
höhere Lebensdauer als eine OLED, die ohne Kühlung von Anfang an mit der 
maximalen Leuchtstärke betrieben wird. Der Grund sind Diffusionsprozesse 
in der OLED, die bei höheren Temperaturen schneller ablaufen. Die 
Lebensdauer bei mittlerer bis geringer Helligkeit wird aus dem Wert bei 
maximaler Helligkeit extrapoliert, da der Test von OLED-Materialien bei 
geringer Leuchtstärke über mehrere Zehn- bis wenige Hunderttausende von 
Stunden nicht praktikabel ist.

Ein weiterer Nachteil der OLED ist die im Vergleich zu Leuchtdioden 
geringere Lichtausbeute im Bereich von 40 lm/W bis 60 lm/W bei 
handelsüblichen OLEDs. Spitzenwerte von ausgesuchten Labormustern bei 
OLEDs erzielen Werte knapp über 100 lm/W.[49] Herkömmliche Leuchtdioden 
für Beleuchtungszwecke erzielen Werte von 200 lm/W, bei speziell 
optimierten LEDs bis knapp über 300 lm/W.[50]

Neben geringerer Lebensdauer und Lichtausbeute reagieren OLEDs auch auf 
bestimmte äußere Stoffe empfindlich. So kann neben Wasser, durch 
Luftfeuchtigkeit allgegenwärtig, auch eindringender Sauerstoff das 
organische Material zerstören. Daher ist es wichtig, das Display 
hermetisch zu kapseln und vor äußeren Einflüssen zu schützen. Die nötige 
starre Kapselung beeinträchtigt die Flexibilität. Durch Korrosion mit 
Sauerstoff ist vor allem die hochreaktive Injektionsschicht aus Calcium 
und Barium gefährdet. Typische Versagenserscheinungen sind kreisrunde, 
wachsende nichtleuchtende Bereiche, sogenannte „Dark Spots“. Ursache ist 
häufig eine Partikelbelastung beim Aufdampfen der Metallschichten. Auch 
die mikroskopischen Kanten der Mehrschichtstruktur werden durch 
Korrosion unterwandert, was zur Abnahme der effektiv leuchtenden 
Pixelfläche bei Bildschirmanwendungen führt." -- Quelle: Wikipedia

Daraus kann der aufmerksame Leser folgern:

Ja, OLED Displays können unabhängig vom eigentlichen Betrieb altern, vor 
allem, wenn sie scheisse gemacht sind. Absolute Zahlen kann man daraus 
jedoch nicht ableiten.

BTW: "OLED shelf life" wäre als Suchbegriff wohl am geeignetsten um das 
Maximum an Treffern zu erzielen.

: Bearbeitet durch User
von J. T. (chaoskind)


Lesenswert?

Thomas S. schrieb:
> Dafür haben sich schlaue Leute sog. PID (Parallel-Integral-Differential)
> Regler

Das P steht für proportional und nicht für parallel...

von Thomas S. (selli69)


Lesenswert?

J. T. schrieb:
> Thomas S. schrieb:
>> Dafür haben sich schlaue Leute sog. PID (Parallel-Integral-Differential)
>> Regler
>
> Das P steht für proportional und nicht für parallel...

Die Asche für diesen fürchterlichen Fehltritt habe ich mir ca. 10 Posts 
weiter oben schon aufs Haupt gestreut und das Büßerhemd trage ich heute 
immer noch.

Dass die Finger vieler Foristen immer so viel schneller sind als die 
Bereitschaft zu erkunden ob ein gemachter Fehler bereits eingestanden 
wurde erstaunt mich immer wieder aufs neue. Interessante Zeiten sind das 
heute...

von J. T. (chaoskind)


Lesenswert?

Thomas S. schrieb:
> Dass die Finger vieler Foristen immer so viel schneller sind als die
> Bereitschaft zu erkunden ob ein gemachter Fehler bereits eingestanden
> wurde erstaunt mich immer wieder aufs neue. Interessante Zeiten sind das
> heute...

Ich hatte noch ein zwei Beiträge weiter gelesen, da wurde nix dazu 
angemerkt. Also meinen Beitrag geschrieben, da man sowas ja nicht 
unkommentiert stehen lassen kann. Ich les doch nicht den ganzen Thread 
nach, um zu sehen, ob es schon richtig gestellt wurde. Sonst hab ich ja 
vergessen, was ich eigentlich sagen wollte, wenn ich am ende angekommen 
bin.

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

J. T. schrieb:
> Ich hatte noch ein zwei Beiträge weiter gelesen, da wurde nix dazu
> angemerkt. Also meinen Beitrag geschrieben, da man sowas ja nicht
> unkommentiert stehen lassen kann. Ich les doch nicht den ganzen Thread
> nach, um zu sehen, ob es schon richtig gestellt wurde. Sonst hab ich ja
> vergessen, was ich eigentlich sagen wollte, wenn ich am ende angekommen
> bin.

Was ja nicht unbedingt so schlecht wäre...

von Irgendwer (Gast)


Lesenswert?

William R. schrieb:
> Wenn ich also mit dem programmierten Arduino draußen verschiedene Höhen
> aufsuche, möchte ich ablesen können, wie genau der BMP280 arbeitet.

Dir ist aber schon klar das das Ding vorrangig ein Barometer ist?
Als Absolutwert-Höhenmesser ist der völlig untauglich. Als Relativwert 
kannst du vorher das Ding auf deine Bezugshöhe bringen und es dort quasi 
"Nullen", danach dann zügig auf deine Messhöhe befördern und ablesen...

von William R. (willriker)


Lesenswert?

Ich glaube das Thema OLED hat sich zu einem eigenen entwickelt und 
sollte
evtl. nicht in diesem Thread vermengt behandelt werden, - Vielen Dank! 
:-)

Zurück zum eigentlichen Thema, wenn ich darum bitten darf,

Die Konstruktion nämlich und die Programmierung #(Sketch)
und evtl. die erforderlichen Bibliotheken die einbezogen werden müssen,
lassen wir mal das Display komplett weg, für den Moment jedenfalls,

von Chr. M. (snowfly)


Lesenswert?

Wenn du in der Arduino-GUI unter Datei/Beispiele/...
ein Beispiel öffnest das deinem Problem nahe kommt
findest du dort Antworten auf deine Fragen.

EDIT:Noch ein Vorschlag, ich würde noch eine
NodeMCU, WemosD1 oder sonst ein esp8266 Board
bestellen. Die sind so schön einfach zum basteln. :)
Bei Display-Anwendungen ist es bei den ATmegas eh schnell vorbei.

: Bearbeitet durch User
von William R. (willriker)


Lesenswert?

Hallo,

ich habe den BMP280 mit dem Uno verbunden,

VCC - 3,5V
GND - GND
SCL - A5
SDA - A4

Ich habe die Bibliothek: Adafruit BMP280 Library 1.0.2 installiert

Wenn ich nun aus dieser Bibliothek den Test hochladen will,
erscheint das Folgende;

Adarfruit_Sensor.h: No such file or directory

Hier der Sketch:

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>

#define BMP_SCK 13
#define BMP_MISO 12
#define BMP_MOSI 11
#define BMP_CS 10

Adafruit_BMP280 bme; // I2C
//Adafruit_BMP280 bme(BMP_CS); // hardware SPI
//Adafruit_BMP280 bme(BMP_CS, BMP_MOSI, BMP_MISO,  BMP_SCK);

void setup() {
  Serial.begin(9600);
  Serial.println(F("BMP280 test"));

  if (!bme.begin()) {
    Serial.println("Could not find a valid BMP280 sensor, check 
wiring!");
    while (1);
  }
}

void loop() {
    Serial.print("Temperature = ");
    Serial.print(bme.readTemperature());
    Serial.println(" *C");

    Serial.print("Pressure = ");
    Serial.print(bme.readPressure());
    Serial.println(" Pa");

    Serial.print("Approx altitude = ");
    Serial.print(bme.readAltitude(1013.25)); // this should be adjusted 
to your local forcase
    Serial.println(" m");

    Serial.println();
    delay(2000);
}



Ich weis jetzt nicht genau was der Sensor h eigentlich ist
und habe diesen aus dem Sketch entfernt,

neue Fehlermeldung

exit Status 1
Fehler beim kompilieren für das Board Arduino/Genuino Uno.

Ähm, was mache ich da falsch,

Ich nehme an, ich benötige noch eine Bibliothek,
die  Adafruit_Sensor library gibt es aber scheinbar nicht für den BMP280
über den Reiter Bibliotheken verwalten.

: Bearbeitet durch User
von Harald W. (wilhelms)


Lesenswert?

Thomas S. schrieb:

> Die Asche für diesen fürchterlichen Fehltritt habe ich mir ca. 10 Posts
> weiter oben schon aufs Haupt gestreut und das Büßerhemd trage ich heute
> immer noch.

Send Pics. :-)

von Harald W. (wilhelms)


Lesenswert?

Irgendwer schrieb:

> Dir ist aber schon klar das das Ding vorrangig ein Barometer ist?
> Als Absolutwert-Höhenmesser ist der völlig untauglich. Als Relativwert
> kannst du vorher das Ding auf deine Bezugshöhe bringen und es dort quasi
> "Nullen", danach dann zügig auf deine Messhöhe befördern und ablesen...

Das gilt aber für alle barometrischen Höhenmesser. Trotzdem werden sie
mangels Alternativen vielfach benutzt, wobei einem diese Einschränkungen
natürlich klar sein sollten.

von Stefan F. (Gast)


Lesenswert?

William R. schrieb:
> Ich nehme an, ich benötige noch eine Bibliothek

Ja, offensichtlich. Nicht alle Bibliotheken sind in dem Menü der IDE 
eingebettet - vor allem nicht diejenigen, die von Fremdherstellern (wie 
Adafruit) kommen.

Wenn du das nächste mal eine Frage zu einer Fehlermeldung hast, dann 
aktiviere unter Datei/Voreinstellungen die "ausführliche Ausgabe" un 
zitiere die ganze Meldung. Dafür unterstützt die IDE die üblichen 
Tastenkombinationen der Zwischenablage (Strg-C und Strg-V).

Hier ist der Link zur benötigen Libraries: 
https://github.com/adafruit/Adafruit_Sensor
Dort findest du weiter unten einen Link für deinen Sensor: 
https://github.com/adafruit/Adafruit_BME280_Library/
Lies die dortige Anleitung!

von William R. (willriker)


Lesenswert?

ok, das hochladen hat funktioniert,
nun erhalte ich im seriellen Monitor die Info;
18:44:12.624 -> Probe BMP280: Sensor missing

was kann das denn bitte bedeuten?

von Stefan F. (Gast)


Lesenswert?

William R. schrieb:
> was kann das denn bitte bedeuten?

Das die Kommunikation mit dem Sensor nicht funktioniert.

Messe den Signalpegel an SDA und SCL, vorzugsweise mit einem 
Oszilloskop.

Schalte LEDs (mit 1kΩ Vorwiderstand) parallel zu den Pull-Up 
Widerständen, um zu sehen, ob sich da überhaupt etwas tut.

Benutze einen Logic Analysator, um die Signale zu überprüfen.

von Joachim B. (jar)


Lesenswert?

William R. schrieb:
> 18:44:12.624 -> Probe BMP280: Sensor missing
> was kann das denn bitte bedeuten?

entweder hast du keinen BMP280 oder den falschen Port oder die falsche 
Beschaltung.

Die Software findet den Sensor jedenfalls nicht!

VCC und oder GND vergessen?

: Bearbeitet durch User
von Joe F. (easylife)


Lesenswert?

a)
SCL und SDA brauchen Pullup-Widerstände nach VCC (typ. 2.2K).

b)
Hast du deinen Sensor korrekt konfiguriert?
Um das I2S Interface zu benutzen, muss "CSB" mit VCC verbunden sein (und 
bleiben).

c)
Der Sensor hat 2 mögliche Addressen.
Die Default-Adresse in der Library ist 0x77.
Um diese auszuwählen, muss der SDO Pin ebenfalls mit VCC verbunden sein.

von Joachim B. (jar)


Lesenswert?

Joe F. schrieb:
> a)
> SCL und SDA brauchen Pullup-Widerstände nach VCC (typ. 2.2K).

wenn er das Adafruit-Modul hat sind die aber wohl schon bestückt.

von William R. (willriker)


Lesenswert?

ok, läuft,
ich lasse die Daten gerade über den Monitor rattern, die vom BMP280 
ermittelt werden,
okay, so weit so kompliziert,
wie kann ich denn jetzt noch den Servo damit, ich sag mal kombinieren, 
wie vorab ursprünglich erklärt,
und bitte so einfach wie möglich erklären, super

: Bearbeitet durch User
von Joe F. (easylife)


Lesenswert?

Joachim B. schrieb:
> wenn er das Adafruit-Modul hat sind die aber wohl schon bestückt.

wenn...
Es gibt inzwischen zu vielen Sensoren diverseste Breakout-Boards.

@TO: guck mal auf dem Board nach, ob I2C Pullups bestückt sind.
Bei Unsicherheit stören 2 extra Pullups nicht, dann sind es halt erstmal 
1.1K, und wenn es dann funktioniert, kann man diese 2 Pullups mal 
probeweise wieder wegnehmen.

Ansonsten könntest du es auch mal mit dem SPI Interface versuchen. Sind 
2 Leitungen mehr, aber weniger potentielle Fehlerquellen (Adresse etc.).

von Joe F. (easylife)


Lesenswert?

William R. schrieb:
> ok, läuft,

Ah OK. Es wäre nett auch mitzuteilen woran es lag.

William R. schrieb:
> wie kann ich denn jetzt noch den Servo damit, ich sag mal kombinieren,
> wie vorab ursprünglich erklärt

Wsa soll der Servo denn genau machen?
Eine Art Zeigerinstrument für einen der Messwerte darstellen?

von William R. (willriker)


Lesenswert?

Joe F. schrieb:
> William R. schrieb:
>> ok, läuft,
>
> Ah OK. Es wäre nett auch mitzuteilen woran es lag.

Ich habe den Rechner neu gestartet, klingt komisch, ist aber so.


>
> William R. schrieb:
>> wie kann ich denn jetzt noch den Servo damit, ich sag mal kombinieren,
>> wie vorab ursprünglich erklärt
>
> Wsa soll der Servo denn genau machen?
> Eine Art Zeigerinstrument für einen der Messwerte darstellen?

Der Servo soll, sobald ein bestimmer Wert unterschritten wird,
angesteuert werden und sich z. B. um 12 Grad Bewegen,

Dannach muss er nichts mehr tun

: Bearbeitet durch User
von Joe F. (easylife)


Lesenswert?

William R. schrieb:
> Dannach muss er nichts mehr tun

Das widerspricht zwar ein wenig dem Konzept von ganz oben, dass der 
Servo auf permanent gemessene Signale reagieren soll, aber gut, sei's 
drum.

William R. schrieb:
> Der Servo soll, sobald ein bestimmer Wert unterschritten wird,
> angesteuert werden und sich z. B. um 12 Grad Bewegen,

Du hast gerade doch schon das Programm ganz gut formuliert und musst es 
jetzt eigentlich nur noch in eine Programmiersprache "übersetzen", so 
etwa in der Art:
1
// servo in neutralstellung bringen
2
move_servo(0);
3
4
// warten bis sensor-wert das untere limit unterschreitet
5
do {
6
  value = read_sensor();
7
} while (value > lower_limit);
8
9
// servo um 12 grad bewegen
10
move_servo(12);
11
12
// nix mehr tun (endlosschleife)
13
while (1)
14
;

Und jetzt musst du noch die Funktionen read_sensor() und move_servo() 
schreiben und bist fertig.

von William R. (willriker)


Lesenswert?

Klingt einfach, aber ich kann das nicht. :-(

von Thomas S. (selli69)


Lesenswert?

William R. schrieb:
> Klingt einfach, aber ich kann das nicht. :-(

Sei wenigstens so ehrlich und sag dazu, dass du gar keinen Bock hast 
dich mit der Materie zu beschäftigen und es dir viel lieber ist, wenn 
dir jemand den Arsch hinterher trägt. Ein derartiges Desinteresse und 
eine Verweigerungshaltung es zumindest einmal selbst zu probieren und 
Dokumentationen zu lesen ist mir selten untergekommen.

: Bearbeitet durch User
von Joachim B. (jar)


Lesenswert?

William R. schrieb:
> Klingt einfach, aber ich kann das nicht. :-(

dann wirst du auch irgendwann verhungern wenn dich niemand bekocht oder 
für dich einkauft!

William R. schrieb:
> In der Vergangenheit habe ich einen Arduino UNOR3 mit einem einfachen
> Servomotor angesteuert

wie hattest du das geschafft?

: Bearbeitet durch User
von Thomas S. (selli69)


Lesenswert?

Joachim B. schrieb:
> wie hattest du das geschafft?

Er hat sich vmtl. ein youtube-Video angesehen wie man per copy/paste 
irgend einen schimmligen Demo-Code in die IDE kopiert. Das alles ohne 
irgendetwas verstehen zu müssen.

von William R. (willriker)


Lesenswert?

Thomas S. schrieb:
> Joachim B. schrieb:
>> wie hattest du das geschafft?
>
> Er hat sich vmtl. ein youtube-Video angesehen wie man per copy/paste
> irgend einen schimmligen Demo-Code in die IDE kopiert. Das alles ohne
> irgendetwas verstehen zu müssen.


Wie freundlich hier doch alle sind,
und ja, natürlich war es ein "schimmeliger" Code,
nur weil nicht jeder C++ beherrscht kann man ja mal
von oben herab reagieren, wirklich, Sozialkompetenz sollte der ein
oder andere hier noch lernen @Thomas S

: Bearbeitet durch User
von Thomas S. (selli69)


Lesenswert?

Für mich ist Sozialkompetenz vor allem gerade heraus zu sagen, was ich 
mir denke. Ob das dem anderen nun passt oder nicht ist mir herzlich 
egal. Und von oben herab war da gar nichts, was du nicht mit deiner Art 
mit einem Fachforum umzugehen nicht selbst provoziert hättest. Es hätte 
auch die Möglichkeit gegeben, die von Dir erwartete Freundlichkeit zu 
genießen, wenn Du so ehrlich gewesen wärst und geschrieben hättest:

"Ich will mit einem Arduino Luftdruck messen und abhängig davon einen 
Servo ansteuern. Ich habe überhaupt keine Ahnung von der Materie und 
weil ich das jetzt nur ein mal brauche will ich mich auch gar nicht groß 
einarbeiten. Kann mir das jemand günstig machen, denn ich hab wenig Geld 
und eine fertige Lösung für mein Problem gibt es auch nicht."

Damit kann man zurecht kommen.

Die andere Möglichkeit wäre, dass Du aktiv versucht hättest selbst zu 
Lösung zu kommen und an den Punkten, wo du selbst nicht weiter kommst 
deine bis dahin selbst erarbeiteten Teile postest und dann fragst.

Aber nein. Es wird sich dumm gestellt und "Das kann ich nicht!" geposted 
in der Hoffnung, dass sich hier jemand mit Helferkomplex und dem 
entsprechenden Fachwissen tummelt, der dir dabei hilft nichts zu lernen.

Welche Art von "Freundlichkeit" willst Du da erwarten? Oder verträgst Du 
nur die Wahrheit nicht?

von Manfred (Gast)


Lesenswert?

William R. schrieb:
> Sozialkompetenz sollte der ein oder andere hier noch lernen

Gut, dass Du ein Selbstgespräch veröffentlichst!

Wenn hier jemand schrieb "dass du gar keinen Bock hast
dich mit der Materie zu beschäftigen ..."

oder

"ein youtube-Video angesehen wie man per copy/paste irgend einen 
schimmligen Demo-Code in die IDE kopiert."

entspricht das genau dem Niveau Deiner Fragestellung.

(Beitrag "Re: Servo mit Messgerät steuern")

Es gibt im Internet tausende Beispiele und zumindest einige Dutzend 
Deutschsprachige Schulskripte, mit denen man sich Grundlagen des 
Arduinos erarbeiten kann. Wenn Du dazu nicht bereit bist, mache im Forum 
"Markt" eine Anfrage auf, wer das für Dich schreibt.

Erstelle ein ordentliches Anforderungsprofil und sei Dir klar, dass der 
Softwerker eine vierstellige Rechnung schickt.

Ich kennen keine Mikroprozessorumgebung, die vergleichbar einfach 
Arduino zu handhaben ist. Wenn Du nicht gewillt bist, Dir Grundlagen 
selbst zu erarbeiten, suche Dir ein anderes Betätigungsfeld.

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.