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!
Lass dem Arduino die Messwerte zukommen (Sensor, Schnittstelle vom DMM, ...) und ihn dann dementsprechend den Servo ansteuern.
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.
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.
Teo D. schrieb: > Was ist da nicht zu verstehen? Bitte erkläre dann im Detail, was er mit "die Steuerung" mein.
Karl M. schrieb: > Bitte erkläre dann im Detail, was er mit "die Steuerung" mein. Du Zäumst das Pferd von hinten auf!
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.
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
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
Grüße auf deinem Weg zum Ziel das "P", das "I" und das "D" recht herzlich von mir. scnr
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?
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?
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.
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.
> > 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?
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.
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.
ok, Ich besorge mir erstmal die noch erforderlichen Komponenten, und melde mich dann wieder, wenn ich verzweifelt bin ;-) danke erstmal :-)
Du kannst ja mal deine Einkaufliste vorzeigen, dann schaue wir Drüber und sagen Dir Bescheid, ob etwas fehlt oder nicht zusammen passt.
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.
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
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.
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?
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".
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.
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.
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.
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?
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
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/
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.
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?
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
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.
"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
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...
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...
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.
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...
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...
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,
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
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
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. :-)
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.
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!
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?
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.
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
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.
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.
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
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.).
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?
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
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.
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
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
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.
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
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.