ich bin neu in der Arduinowelt. Aufgrund eines Technikerprojektes bin ich von einer S7-SPS auf den Arduino umgesprungen und bewege mich in eine komplett neue Umgebung.
Ich erstelle eine automatisierte Poolanlage die eine automatische pH- und Redoxregelung beinhaltet.
Da ich vorher noch nie mit einem Arduino zutun hatte, habe ich erstmal genug zum Einlesen.
Möglicherweise bietet hier jemand seine Hilfe an, in dem er/sie mir die seiner/ihrer Meinung nach besten Videos oder Beiträge im Forum verlinkt.
Ich habe mich für den Arduino Mega 2560 Rev3 entschieden, da dieser mir genügend analoge In- und Outputs bietet. Gibt es weitere Argumente für den Mega 2560?
So viel wie ich weiß, ist es so, dass der Arduino nicht wirklich über Analogsignale verfügt, sondern über PWM aus digitalen Signalen, analoge generiert. Verbessert mich gerne, wenn ich falsch liegen sollte
Was hast Du denn für Sensoren und Aktoren im Blick (bitte mit Link)?
Die bisherigen Infos sind weitgehend nichtssagend.
Der Arduino generiert aus PWM keine analogen Signale, sondern nur PWM. Wofür brauchst Du analoge Ausgangssignale?
Das bedeutet, dass der Arduino nur über analoge Eingänge verfügt, jedoch die über die PWM Kontakte analoge Werte ausgeben kann? Oder habe ich da was falsch verstanden? Bitte um Gnade
Wofür Du analoge Ausgangssignale brauchen willst, hast Du immer noch nicht erklärt.
Beide Sensoren haben einen Beispielcode für Arduino. Hast Du sie damit schon probiert?
Da ich erst vor 2 Tagen auf den Arduino umgesprungen bin, habe ich die Komponenten noch nicht bestellt.
Geplant ist, die Werte auszulesen und sie anschließend mit flüssigem pH Minus/Plus und Chlor nach zu regeln. Daher benötige ich selbstverständlich analoge Signale.
Sicher?
Wenn die Suppen, die Du dazugeben willst in flüssiger Form vorliegen, werden sie doch - meine Vermutung - über eine Pumpe ins Becken gefördert. Die kann man kurz oder länger einschalten: Mit einem digitalen Signal.
Kann natürlich auch sein, dass ich gründlich danebenliege.
Da Du schon Sensioren ausgesucht hast... Hast Du mal geschaut, wie der ExampleCode dazu aussieht?
zumindest für den PH-Wert ist der recht simpel und zeigt, wie es geht.
Bei den Sensoren ist der TAB Dokumente - Da gibt es den Beispielcode. (@wno158 war schneller )
Und wenn Du wirklich ganz neu und vollkommen unwissend bist, kannst Du Dir hier ein pdf runterladen, einmal durchlesen und dann weisst, was drin steht - der Rest kommt dann schon.
Und dann kannst auch unter DATEI - BEISPIELE - einfach mal durchklicken, was es alles gibt....
Nur reinschauen und wissen, das es was gibt.
Analoge Eingangssignale sind kein Problem für den Mega. Da hast du 16 Eingänge. Nur keine analogen Ausgänge. Das heißt du bekommst aus dem Arduino Mega an keinem Ausgang geregelte 0-5 Volt raus. Die PWM Ausgänge geben nur gepulste 5 Volt mit verschiedenen Pulslängen raus. Wenn man saubere Analoge Ausgänge braucht, ist das aber kein Problem. Dafür gibt es kleine Zusatzplatinen, für kleines Geld, die dann auf 4 Kanälen saubere geregelte Analoge Spannungen rausgeben 0-5 Volt, oder auch 0-10 Volt, vom Arduino Mega gesteuert über den I2C - Bus. Da benutze ich die hier im Link gerne.
Wenn sich die Sensoren an den Mega2560 anschließen lassen, benötigst Du noch eine Anzeige und Eingabeelemente. Dafür solltest Du die Pins für in Hardware gegossene Schnittstellen wie I²C, SPI und UART (RXn, TXn) freihalten.
Sollwerte können beispielsweise per Spannung am Potentiometer oder Drehencoder eingegeben werden.
Da wünsche ich Dir eine weiche Landung, denn das ist schon etwas anders. Manchmal wird Dir die SPS gedanklich im Wege stehen.
Tipp: In Beispielen wird häufig delay() verwendet. Du solltest ganz schnell lernen, Zeiten mit millis() zu messen, um ein blockadearmes Programm zu erhalten, also quasi parallele Aktivitäten in Zeitscheiben. Lasse zur Kontrolle eine LED als Herzschlag blinken.
Tipp: Wenn Du eine Schleife brauchst, versuche es mit loop(), denn das ist eine Schleife.
Tipp: Programmabläufe packt man am besten in Schrittketten (= finite state machine = endlicher Automat). Für mich war das der AHA-Effekt beim Arduino.
Tipp: Lerne allgemeingültige Beispiele aus C++-Anleitungen für Dich zu übernehmen. Ein paar wenige Möglichkeiten sind für den Mega2560 nicht verfügbar, das Allermeiste aber schon. Dein Kompiler "berät" Dich.
Tipp: Fange klein an und steigere Dich langsam. Ich lerne gerne von fremden Programmen, klaue voller Dankbarkeit aber hemmungslos, ändere solange, bis es für mich paßt und spiele, bis ich glaube, den Ablauf verstanden zu haben. Dann ist es "mein" Programm
Ich habe mit blinkenden LEDs angefangen, mich in die Programmierung des Arduinos einzugewöhnen. Daher ein Beispiel mit einer Herzschlag-LED und einer unregelmäßig blinkenden LED, wobei die unterschiedlichen Zeiten mit einer Schrittkette eingestellt werden1):
Zumindest, wenn man in "AWL" denkt, ist man ganz dicht an den Konzepten, die man auch in Arduino C++ denken kann.
Der alternative Weg:
z.B. viele Dinge meiner CombieLib beruhen auf der Datenfluss Sichtweise. Diese ist konzeptionell ähnlich mit den "Koppelplänen" in der SPS Programmierung
Die SPS Denke fordert dort eigentlich einen "Funktionsbaustein Schrittkette" welcher sich allerdings sehr gut in C++ nachbilden lässt.