Forum: Mikrocontroller und Digitale Elektronik Arduino UNO an 4fach Relais


von Wolf G. (kerzerl)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,
ich bin nun seit 5 Tagen, in Vollzeit, am Grübeln und ausprobieren wie 
ich meine Schaltung in den Griff bekomme. Da ich mich erst seit dieser 
Zeit mit dem Arduino und seiner Programmierung beschäftige habe ich 
schnell meine Grenzen aufgezeigt bekommen. Viele von euch werden das 
Programm in kürzester Zeit geschrieben haben und ich sitze bis Silvester 
noch da. Also bitte ich euch mir zu helfen.
Folgendes Programm möchte ich verwenden:
•  Steuerung bestromt= keine Aktion;
•  Über Tastendruck = Relais 1 für 10 min einschalten; LOW; LED leuchtet 
10min. mit bis Ende;
•  Nach 30 sek. Umpolung = Relais2 + 3 gleichzeitig einschalten; LOW
•  Nach 30 sek. Umpolung = Relais2 + 3 gleichzeitig ausschalten; HIGH
•  Das Ganze 10x, bis die 10 min abgelaufen sind;
•  Ende
Sieht so einfach aus aber ich beiße mir die Zahne aus.
Ein Bild als Anhang ist dabei. Die Wechselschaltung, auf der 
Hochstromseite, über die drei Relais, habe ich im Griff, es geht mir nur 
um das Ansteuern der Relais mit einem Taster.
Sketch will ich erst gar nicht posten weil dieser nur bis zum ersten 
Schalten des Relais1 funktioniert. Ich danke euch schon jetzt für euren 
Einsatz.

von W.A. (Gast)


Lesenswert?

Wolfgang K. schrieb:
> Folgendes Programm möchte ich verwenden:
> ...
Mache einfach einen Zustandsautomaten draus, d.h. jeder Schaltzustand 
bekommt z.B. eine Nummer und (in deinem Fall) eine bestimmte Laufzeit, 
nach der du dein System in den nächsten Zustand wechselst und die neue 
Laufzeit startest.
Eine absolute Zeit erfährst du beim Arduino z.B. über die Funktion 
millis().
https://www.arduino.cc/en/Reference/Millis

Zu Anfang eines Zustandes berechnest du die Endzeit aus 
millis()+Laufzeit. In Loop vergleichst du zu Anfang diese Endzeit immer 
mit der aktuellen Zeit millis() und gehst, sobald millis() größer wird 
in den nächsten Zustand mit neuer Endzeit. Damit läufst du zyklisch 
deine Zustände durch. Die Laufzeiten kannst du z.B. in einem const-Array 
festlegen.

von Hubert G. (hubertg)


Lesenswert?

Schau dir das Beispiel BlinkWithoutDelay an. Damit kannst du dir die 
verschachtelten Zeiten aufbauen.

von Wolf G. (kerzerl)


Lesenswert?

Danke, Ihr seid ja schnell.
Das ist ein guter Tipp, aber besser für mich währe der Sketch.
Ich weiß ich bin hier nicht im Wünscheerfüllertred aber ich denke das 
ich das so nicht hin bekomme. Wie gesagt habe ich schon einiges probiert 
aber bei mir hackts am zu vielen Ecken. Ich weiß nicht in welcher 
abfolge ich das Programm im LOOP schreiben muss, damit erst das eine und 
dann die beiden anderen Relais schalten sollen. Wo muss welche Klammer 
hin usw.
Bitte helft mir dabei, vielleicht gibt es den schon im Netz, ich finde 
ihn aber nicht.

von Wolf G. (kerzerl)


Lesenswert?

Ich will es ja lernen. Hier mein erster Sketch der funktionierte, 
allerdings ohne das zweite und das dritte Relais:

int taster=7;       //Das Wort „taster" steht jetzt für den Wert 7.
int tasterstatus=0; //Das Wort „tasterstatus" steht jetzt zunächst für 
den Wert 0. Später wird unter dieser Variable gespeichert, ob der Taster 
gedrückt ist oder nicht.

int relais1=1;

//int relais2=2;
//int relais3=3;


void setup()              //Hier beginnt das Setup.
{
pinMode(taster, OUTPUT);   //Der Pin mit der LED (Pin7) ist jetzt ein 
Eingang INPUT
pinMode(relais1, INPUT); //Der Pin mit dem Relay1 (Pin1) ist jetzt ein 
Eingang OUTPUT

}
void loop()  // Die Endlosschleife
{
tasterstatus=digitalRead(taster);
if (tasterstatus == HIGH)    // HIGH
{
digitalWrite(relais1, LOW);  // dann soll das Relais schalten, LOW
delay (10000);                // und zwar für für X Sekunden
digitalWrite(relais1, HIGH); // danach soll das Relais nicht schalten, 
HIGH
//delay (500);
}
}



Dann habe ich versucht das zweite Relais anzusteuern das mir nicht 
gelingt:

int taster=7;       //Das Wort „taster" steht jetzt für den Wert 7.
int tasterstatus=0; //Das Wort „tasterstatus" steht jetzt zunächst für 
den Wert 0. Später wird unter dieser Variable gespeichert, ob der Taster 
gedrückt ist oder nicht.

int relais1=1;

int relais2=2;



void setup()              //Hier beginnt das Setup.
{
pinMode(taster, INPUT);   //Der Pin mit der LED (Pin 7) ist jetzt ein 
Eingang INPUT
pinMode(relais1, OUTPUT); //Der Pin mit dem Relay1 (Pin 1) ist jetzt ein 
Eingang OUTPUT
pinMode(relais2, OUTPUT);
}

void loop()
{
tasterstatus=digitalRead(taster);
if (tasterstatus == HIGH)               //Taster drücken,HIGH
{
digitalWrite(relais1, LOW);             //danach soll das Relais X 
schalten, LOW
delay (3000);                           //und zwar für für X Sekunden
digitalWrite(relais2, HIGH);            //danach soll das Relais X nicht 
schalten
delay (1000);                          //und zwar für für X Sekunden
digitalWrite(relais2, LOW);            //dann soll das Relais nicht 
schalten
delay (1000);                          //und zwar für für X Sekunden
digitalWrite(relais1, HIGH);            //dann soll das Relais nicht 
schalten HIGH
}

Über den Taster wird das Programm gestartet. Funktioniert auch, das 
erste Relais schaltet. Über den PIN 7 Input wird dem Relais gesagt das 
es schalten soll. Wie wird dem zweiten Relais gesagt, "schalte nach dem 
Programmstart nach 30 sek. für 30 sek.", dabei soll aber das Relais1 
weiter geschaltet bleiben für X min.

von Hubert G. (hubertg)


Angehängte Dateien:

Lesenswert?

Probier es mal damit. Ist nicht schön, aber du kannst damit 
weitermachen. Die Zeiten musst du noch ändern, jetzt sind es nur 3sec.
Die Relaispin sind geändert und die Taste schaltet nach GND.

: Bearbeitet durch User
von Wolf G. (kerzerl)


Lesenswert?

Super erst mal Danke.
Das Relais 1 und 2 Schalten, soviel habe ich schon gesehen. Hab es 
sofort ausprobiert.
Was ich noch nicht verstehe ist das mit den Taster wie und wo soll ich 
den jetzt anschließen (hardwaremäßig)
Danke und nochmal Danke für deine Hilfe.
Werde mich bestimmt noch mal melden

von W.A. (Gast)


Lesenswert?

Wolfgang K. schrieb:
> Wo muss welche Klammer hin usw. ...

Das wirst du lernen müssen. Der Kompiler wird viel syntaktisch korrekten 
Mist annehmen, der aber etwas anderes tut, als du möchtest.

Hubert G. schrieb:
> Probier es mal damit.
> ...

Das bringt die Sache keinen vernünftigen Schritt weiter. Die Betonung 
liegt auf "vernünftig", weil mit den delay()-Aufrufen der Prozessor 
blockiert wird und damit jegliche andere Programmfunktionen verhindert 
bzw. mindestens unnötig kompliziert werden, IMHO eine Lernsackgasse oder 
besser ein schlechtest Beispiel, gerade gut genug, um daraus zu lernen, 
wie man es nicht machen soll.

von Wolf G. (kerzerl)


Lesenswert?

Und wie macht man es besser?
Kritik ist gut und man kann daraus lernen, wenn man dazu aber nichts 
schreibt kann keiner davon Profitieren oder was meinst du?

W.A. schrieb:
> Wolfgang K. schrieb:
>> Wo muss welche Klammer hin usw. ...
>
> Das wirst du lernen müssen. Der Kompiler wird viel syntaktisch korrekten
> Mist annehmen, der aber etwas anderes tut, als du möchtest.
>
> Hubert G. schrieb:
>> Probier es mal damit.
>> ...
>
> Das bringt die Sache keinen vernünftigen Schritt weiter. Die Betonung
> liegt auf "vernünftig", weil mit den delay()-Aufrufen der Prozessor
> blockiert wird und damit jegliche andere Programmfunktionen verhindert
> bzw. mindestens unnötig kompliziert werden, IMHO eine Lernsackgasse oder
> besser ein schlechtest Beispiel, gerade gut genug, um daraus zu lernen,
> wie man es nicht machen soll.

Kritik ist gut und man kann daraus lernen, wenn man dazu aber nichts 
schreibt kann keiner davon profitieren oder was meinst du?

von Hubert G. (hubertg)


Lesenswert?

Wolfgang K. schrieb:
> Was ich noch nicht verstehe ist das mit den Taster wie und wo soll ich
> den jetzt anschließen (hardwaremäßig)

Der Taster muss nach GND schalten.
Daher steht auch pinMode(taster, INPUT_PULLUP); Damit wird der interne 
PullUp Widerstand aktiviert der den Eingang auf HIGH hält. Mit 
Tastendruck geht der Eingang auf LOW.
Daher auch die Abfrage if (tasterstatus == LOW)

von Hubert G. (hubertg)


Angehängte Dateien:

Lesenswert?

Jetzt das noch mal ohne delay und komprimieren könnte man es 
wahrscheinlich auch noch.

von Wolf G. (kerzerl)


Angehängte Dateien:

Lesenswert?

Super erst mal vielen Dank.
Verstehe ich es richtig!
Der Taster bekommt am Eingang den Draht auf dem Breadboard gesteckt, der 
zu PIN 8 führt und der Ausgang des Tasters, bekommt den Draht auf dem 
Breadboard gesteckt, der zum GND auf der Seite der PWM's führt?

Das Bild zeigt meine Alte Schaltung (Hardware)!
Ich kann also mit deiner Schaltung die auf dem Bild gezeigten 
Widerstände weg lassen, so verstehe ich das?

Die Diode habe ich nur zur Kontrolle gesteckt, ob der Taster gedrückt 
wurde. Diese leuchtet nur so lange wie ich den Taster unten halte. Währe 
aber super wenn der während des Programmlaufs immer leuchten würde! Ist 
aber nicht so wichtig.

von Wolf G. (kerzerl)


Angehängte Dateien:

Lesenswert?

Hubert G. schrieb:
> Jetzt das noch mal ohne delay und komprimieren könnte man es
> wahrscheinlich auch noch.

Habe noch ein Bild vom Arduino mit deiner Pin- Belegung.
7 geht zum Taster eingang und GND zum Taster Ausgang auf dem Breadboard.
Habe ich es richtig gemacht?

von Hubert G. (hubertg)


Angehängte Dateien:

Lesenswert?

Wolfgang K. schrieb:
> Der Taster bekommt am Eingang den Draht auf dem Breadboard gesteckt, der
> zu PIN 8 führt und der Ausgang des Tasters, bekommt den Draht auf dem
> Breadboard gesteckt, der zum GND auf der Seite der PWM's führt?

Der Taster geht auf Pin7, sonst ist es richtig.

Wolfgang K. schrieb:
> Diese leuchtet nur so lange wie ich den Taster unten halte. Wäre
> aber super wenn der während des Programmlaufs immer leuchten würde!

Ich habe dir eine Led auf Pin 8 programmiert.

von W.A. (Gast)


Lesenswert?

Wolfgang K. schrieb:
> oder was meinst du?

Das hier:
W.A. schrieb:
> Mache einfach einen Zustandsautomaten draus

von Wolf G. (kerzerl)


Lesenswert?

Hubert G. schrieb:
> Wolfgang K. schrieb:
>> Der Taster bekommt am Eingang den Draht auf dem Breadboard gesteckt, der
>> zu PIN 8 führt und der Ausgang des Tasters, bekommt den Draht auf dem
>> Breadboard gesteckt, der zum GND auf der Seite der PWM's führt?
>
> Der Taster geht auf Pin7, sonst ist es richtig.
>
> Wolfgang K. schrieb:
>> Diese leuchtet nur so lange wie ich den Taster unten halte. Wäre
>> aber super wenn der während des Programmlaufs immer leuchten würde!
>
> Ich habe dir eine Led auf Pin 8 programmiert.

Ja da hab ich mich vertippt, PIN 7 logisch.

Habe das Programm in die Arduino Windows Software gespielt und mit dem 
Haken, oben links im Programm überprüfen lassen. Dabei kam folgende 
Meldung zur letzten Zeile im Sketch:
"
Arduino: 1.6.12 (Windows 10), Board: "Arduino/Genuino Uno"
error: expected '}' at end of input
     digitalWrite(led,LOW); 
// Led leuchtet wärend Programmablauf
 ^
65: error: expected '}' at end of input
exit status 1
expected '}' at end of input
Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.
"
Was soll ich ändern?

von W.A. (Gast)


Lesenswert?

Das Grundbeispiel mit der Zeitsteuerung hatte Hubert schon genannt

Hubert G. schrieb:
> Schau dir das Beispiel BlinkWithoutDelay an.

Statt der Steuerung über den Zustand der LED mit
1
    if (ledState == LOW) {
2
      ledState = HIGH;
3
    } else {
4
      ledState = LOW;
baust du für deine Anwendung ein Gerüst mit
1
   switch (zustands_nr) {
2
3
      case 0:;
4
5
      case 1:
6
        digitalWrite(relais1, LOW);
7
        zustands_nr = zustands_nr+1;
8
        interval = 10000L;
9
        break;
10
11
      case 2:
12
        digitalWrite(relais1, HIGH);
13
        digitalWrite(relais2, LOW);
14
        zustands_nr = zustands_nr+1;
15
        break;
16
17
      case 3:
18
        digitalWrite(relais2, HIGH);
19
        zustands_nr = zustands_nr+1;
20
        interval = 20000L;
21
        break;
22
23
      default:
24
        zustands_nr=0;         // bricht ab, wenn Zustand nicht aufgeführt
25
      }
26
      if (zustands_nr > maxzustand)
27
         zustands_nr=0;
28
   ...   
29
}

Beim Erkennen des Tastendrucks schaltest du zustands_nr auf 1 und dann 
läuft das Ding los. Den Tastenzustand könnte man natürlich bei case 0 
mit reinbauen. Mit interval kannst du die Dauer des nächsten Zustandes 
bestimmen, sonst bleibt die Dauer für den nächsten Zustand unverändert.

Als Variablen/Konstanten deklarierst du zu Anfang noch
1
   const int maxzustand =3; 
2
   long interval = 10000L;

Das Ding realisiert nicht den von dir geforderten Ablauf, sondern gibt 
eher eine Idee, wie das ohne delay() funktionieren kann. Für deine 10 
Durchläufe brauchst du noch einen weitern Zähler und erst wenn der bei 
10 angekommen ist, würdest du die Sequenz mit zustands_nr=0 abschließen.

Bem: Alles ungetestet und als Denkanstoss

von Wolf G. (kerzerl)


Lesenswert?

Ich hab meinen Fehler gefunden. Habe dein Programm nur zum Teil 
eingespielt. Danke vergiss das was ich zuvor geschrieben habe. Sorry

Habe den Sketch laufen lassen, aber es tut sich leider nix. Außer das 
die gelbe LED am Arduino blinkt und die grüne LED einmal an und aus 
geht.
 Die Relays schalten zu keiner Zeit. Hätte ich noch was eingeben müssen, 
in den Sketch?

von Hubert G. (hubertg)


Lesenswert?

Wolfgang K. schrieb:
> Habe den Sketch laufen lassen, aber es tut sich leider nix. Außer das
> die gelbe LED am Arduino blinkt und die grüne LED einmal an und aus
> geht.

Da hast du was falschen eingespielt. In meinem Programm blinkt die gelbe 
Led am Arduino nicht.
Die grüne Led ist die Spannungsanzeige, die darf nie ausgehen.

von Wolf G. (kerzerl)


Lesenswert?

Hubert G. schrieb:
> Wolfgang K. schrieb:
>> Habe den Sketch laufen lassen, aber es tut sich leider nix. Außer das
>> die gelbe LED am Arduino blinkt und die grüne LED einmal an und aus
>> geht.
>
> Da hast du was falschen eingespielt. In meinem Programm blinkt die gelbe
> Led am Arduino nicht.
> Die grüne Led ist die Spannungsanzeige, die darf nie ausgehen.

Habe mich falsch ausgedrückt. Wenn ich das Programm das ich 1 zu 1 
eingespielt habe, laufen lassen will und den Taster kurz drücke, dann 
habe ich das Verhalten mit den LED's am Arduino. Die Relais schalten 
über haupt nicht um am Relais-Bord geht auch keine rote LED an.

von Hubert G. (hubertg)


Lesenswert?

ICh habe eine 8fach Relaiskarte am UNO hängen, da klappert alles 
einwandfrei.
Zeig doch mal wie du das ganze zusammengeschaltet hast.

von Wolf G. (kerzerl)


Lesenswert?

Hubert G. schrieb:
> ICh habe eine 8fach Relaiskarte am UNO hängen, da klappert alles
> einwandfrei.
> Zeig doch mal wie du das ganze zusammengeschaltet hast.

Ich werde mir Übermorgen, in neuer Frische, das ganze noch einmal 
ansehen.  Morgen bin ich nicht da. Wenn ich keinen Fehler finde dann 
werde ich dir alles per Bild oder Video zukommen lassen.
Vielen Dank noch mal für deine Hilfe, heute den ganzen Tag.

von Wolf G. (kerzerl)


Lesenswert?

So jetzt habe ich alles noch mal durchgetestet. Das oder besser die 
Relays schalten nicht mehr. Habe zum Testen ein Netzteil an die 
Steuerung der Relays gehängt +3,3V auf VCC und GND auf GND. Zum Schalten 
des Relais bin ich mit einer Leitung nochmal auf + des Netzteils. Die 
Relays schalten über haupt nicht keinen Mux.

Der Arduino habe ich mit dem Blinklicht Sketch laufen lassen. Das 
funktioniert. Eine andere Möglichkeit kenne ich nicht.

von Dietrich L. (dietrichl)


Lesenswert?

Wolfgang K. schrieb:
> Das oder besser die Relays schalten nicht mehr.

Welches Relais-Board hast Du denn?

von Hubert G. (hubertg)


Lesenswert?

Wolfgang K. schrieb:
> Habe zum Testen ein Netzteil an die
> Steuerung der Relays gehängt +3,3V auf VCC und GND auf GND.

Die Relais brauchen 5V damit sie sicher schalten.
Wenn du ein eigenes Netzteil für die Relais verwenden willst, dann musst 
du diese auf JD-VCC und GND legen. Die Brücke JD-VCC - VCC entfernen.
Vom Arduino brauchst du nur VCC und die jeweiligen Ausgänge.

Zum testen ohne Relais kannst du Led mit Vorwiderstände von den Ausgänge 
nach VCC schalten.

von Einer K. (Gast)


Lesenswert?

Dietrich L. schrieb:
> Welches Relais-Board hast Du denn?

Ich rate:

Die meisten Relaisboards, und dieses sieht auch so aus, haben 
Optokoppler Eingänge.
Mit gemeinsamen Anoden Anschluss.
Die Verbindung vom Arduino erfolgt also:
5V, an die gemeinsame Anode
Die Arduino Pins an die Kathodenseite der Optos.
Eine Ground Verbindung zum Arduino ist nicht nötig.
Vorwiderstände sind schon auf dem Board.

Das Relaisboad benötigt 5V und GND, für die Spulen und ihre Treiber.

Die Relais schalten, wenn Arduino Pin Low.
Also invers.

ohne Gewähr

von Kackreiz (Gast)


Lesenswert?

Wolfgang K. schrieb:
> Habe noch ein Bild vom Arduino mit deiner Pin- Belegung.
Bitte noch mehr bekloppte Bilder! Diese Kinderkasperbreadboards habe ich 
bei den Kollegen in der Entwicklung noch nie gesehen. Schon mal etwas 
von "Schaltplan" gehört?

Wolfgang K. schrieb:
> So jetzt habe ich alles noch mal durchgetestet. Das oder besser die
> Relays schalten nicht mehr.
Relais schreibt man mit i !

Dieser Thread ist ein Beispiel für eine total wirre Vorgehensweise, 
systematisches Arbeiten ist heutzutage nicht mehr möglich?

Zuerst einmal wird die Funktion der Relaiskarte ermittelt, da gibt es 
sicherlich einen Schaltplan zu. Solange die am Labornetzteil nicht 
klappert, sind jegliche weiteren Aktivitäten sinnlos.

Dann kommt ein simples Programm "setze Port 1 high - Pause - Port 2 high 
- Pause ... Port wieder low ..." Wenn schon das nicht funktioniert, muss 
man keine komplexeren Programme hier reinstellen.

Sobald die Relais klappern, wird ein Taster abgefragt, der eines davon 
schaltet.

Und so weiter: Problem mit System in möglichst kleine Brocken zerlegen, 
jeden für sich funktionsfähig machen und erst dann das Ganze 
zusammenfügen.

Es wird genau das Klischeebild der Arduinos erfüllt: Irgendwas 
zusammenstecken, irgendwelche Sketche zusammenkopieren und dann im 
Internet heulen, dass es nicht spielt.

von Peter D. (peda)


Lesenswert?

Wolfgang K. schrieb:
> Das oder besser die
> Relays schalten nicht mehr.

Dann poste mal nen Link auf den Schaltplan der Relaisplatine.

Wolfgang K. schrieb:
> Habe zum Testen ein Netzteil an die
> Steuerung der Relays gehängt +3,3V

Sicher daß das 3,3V Relais sind?

von Hubert G. (hubertg)


Angehängte Dateien:

Lesenswert?

Hier ist ein Schaltplan der 4fach Relaisplatine.

von Dietrich L. (dietrichl)


Lesenswert?

Hubert G. schrieb:
> Hier ist ein Schaltplan der 4fach Relaisplatine.

Jetzt fehlt nur noch die Angabe, welcher Relais-Typ (Spulenspannung) 
verwendet ist. Das Bild
https://www.mikrocontroller.net/attachment/310432/DSC_0415.JPG
von "Wolf Gang" ist leider nicht scharf genug.
Wie es schon erwähnt wurde sind es vermutlich 5V-Relais, und da kann 
3,3V abzüglich der Spannungsabfalls am Transistor zu wenig sein.

von Roland F. (rhf)


Lesenswert?

Hallo

> Dieser Thread ist ein Beispiel für eine total wirre Vorgehensweise,
> systematisches Arbeiten ist heutzutage nicht mehr möglich?

:-)

> ...Problem mit System in möglichst kleine Brocken zerlegen, jeden
> für sich funktionsfähig machen und erst dann das Ganze zusammenfügen.

Ist offensichtlich zu kompliziert.

> Es wird genau das Klischeebild der Arduinos erfüllt: Irgendwas
> zusammenstecken, irgendwelche Sketche zusammenkopieren und dann im
> Internet heulen, dass es nicht spielt.

Leider ist es genau so.

rhf

von Hubert G. (hubertg)


Lesenswert?

Die Kritik mag ja zum Teil berechtigt sein.
Allerdings verstehe ich nicht, dass, wenn man nicht helfen will, 
trotzdem etwas in keiner Weise hilfreiches schreibt.
Ich ignoriere Beiträge zu denen ich nichts hilfreiches Beitragen will.

von jeder (Gast)


Lesenswert?

Jeder sollte an seine eigenen Bastleranfänge denken,
damit ist jede Frage berechtigt und o,k,

von Joachim B. (jar)


Lesenswert?

Hubert G. schrieb:
> Hier ist ein Schaltplan der 4fach Relaisplatine.

ist doch wie auch auf dem Ursprungsbild vom TO eindeutig zu erkennen 5V 
Technik!

Die Signal LED ca 2V die Opto LED ca 1,2V + RV gibt definitiv einen 
größeren benötigten Spannungsabfall als 3,3V, also ist dieser Zweig nur 
mit 5V aus dem Port inaktiv und GND low zu besteuern.

Wolf G. schrieb:
> So jetzt habe ich alles noch mal durchgetestet. Das oder besser die
> Relays schalten nicht mehr. Habe zum Testen ein Netzteil an die
> Steuerung der Relays gehängt +3,3V auf VCC und GND auf GND. Zum Schalten
> des Relais bin ich mit einer Leitung nochmal auf + des Netzteils. Die
> Relays schalten über haupt nicht keinen Mux.

mit 3,3V für high ist dort nix zu machen.

Systematisch testen würde heissen man versorgt die Relaisplatine aus 
einer +5V Quelle und zieht in entweder auf +5V oder auf GND das Relais 
und die Signal LED zeigt dann den entsprechenden Zustand.
Das kann man mit einer 3,3V Versorgung gegentesten ganz ohne µC

Wer dann noch ein mA Meter in die Testleitung nach +VCC oder nach GND 
hängt kann sogar den Strom dieser Relaisplatine am In testen,  das muss 
der Port auch liefern können.

Der µC kann natürlich an seinen Ports mit 3,3V und 5V ebenfalls 
unabhängig getestet werden ob 3,3V/5V oder 0V bei dieser Last stabil 
steht.

von Kackreiz (Gast)


Lesenswert?

Hubert G. schrieb:
> Die Kritik mag ja zum Teil berechtigt sein.
Jetzt träumen wir mal und hoffen, dass unser "kerzerl" das gelesen und 
verstanden hat. Dann könnte er sich die Lösung stückweise selbst 
erarbeiten?

Joachim B. schrieb:
> Der µC kann natürlich an seinen Ports mit 3,3V und 5V ebenfalls
> unabhängig getestet werden ob 3,3V/5V oder 0V bei dieser Last stabil
> steht.
Die 3,3V verstehe ich sowieso nicht, Standard für den Uno sind 5 Volt!

Am besten dann noch mit einem 12V-Netzteil versorgen, die Relais an den 
5V-Anschluß des Uno und sich anschließend beklagen, dass die 
Spannungsregler auf dem Board nichts taugen und ohne Grund abbrennen.

von Joachim B. (jar)


Lesenswert?

Kackreiz schrieb:
> Die 3,3V verstehe ich sowieso nicht, Standard für den Uno sind 5 Volt!

es gibt Arduino mini auch mit 328p bestückt die werden mit 8MHz bestückt 
und programmiert ausgeliefert extra für den 3,3V Betrieb, z.B. aus einer 
3-3,6 V Quelle.

Man könnte es auch als Vorstufe probieren um die SW auf einen PI zu 
portieren, gcc machts ja möglich, aber ich rate nur.
Es soll auch neuere Arduinos geben die ab Werk für 3,3V sind.

aber der TO rät ja auch nur ohne Plan.

von Kackreiz (Gast)


Angehängte Dateien:

Lesenswert?

Joachim B. schrieb:
> es gibt Arduino mini auch mit 328p bestückt die werden mit 8MHz bestückt
> und programmiert ausgeliefert extra für den 3,3V Betrieb, z.B. aus einer
> 3-3,6 V Quelle.
Ich weiß - aber oben auf dem Bild hat er einen Uno. Der hat sogar einen 
Regler an Bord, um 3,3V zu liefern.

Der Chinesen-ProMini ist übrigens der billigste Weg, einen 328 samt 
Quarz auf die Lochrasterplatte zu bekommen.

> Man könnte es auch als Vorstufe probieren um die SW auf einen PI zu
> portieren, gcc machts ja möglich, aber ich rate nur.
"Man" könnte, aber manche eher nicht.

> Es soll auch neuere Arduinos geben die ab Werk für 3,3V sind.
Die dann aber nicht Uno heißen.

> aber der TO rät ja auch nur ohne Plan.
Stimmt, und ohne erkennbare Systematik.

von Wolf G. (kerzerl)


Angehängte Dateien:

Lesenswert?

Hubert G. schrieb:
> Wolfgang K. schrieb:
>> Habe zum Testen ein Netzteil an die
>> Steuerung der Relays gehängt +3,3V auf VCC und GND auf GND.
>
> Die Relais brauchen 5V damit sie sicher schalten.
> Wenn du ein eigenes Netzteil für die Relais verwenden willst, dann musst
> du diese auf JD-VCC und GND legen. Die Brücke JD-VCC - VCC entfernen.
> Vom Arduino brauchst du nur VCC und die jeweiligen Ausgänge.
>
> Zum testen ohne Relais kannst du Led mit Vorwiderstände von den Ausgänge
> nach VCC schalten.

Es hat jetzt länger gedauert, bis die neuen Teile da waren.
Die Relais waren schon in Gebrauch und schadhaft. Einen neuen UNO habe 
ich auch noch erhalten.
Dein Programm läuft ordentlich durch. Habe den Sketch erweitert (siehe 
Anhang), dass es mir auch das dritte Relais3 parallel zum Relais2 
schaltet.

Jetzt habe ich festgestellt, dass ich die Anfangsbedingung zum 
Sketch-Ablauf falsch gesetzt habe. Ursprünglich war angedacht, dass alle 
30sek. das Relais2 + 3 zu und abschaltet. Wie kann ich dein Programm 
nutzen um das Ein- und Ausschalten mit verschiedenen Zeiten zu 
realisieren? Z.B. 15sek Einschalten und 30sek Ausschalten.

von Dietrich L. (dietrichl)


Lesenswert?

Wolf G. schrieb:
> Habe den Sketch erweitert (siehe Anhang)

Das Einrücken musst Du aber noch lernen. So kann man Dein Programm kaum 
lesen.

von Hubert G. (hubertg)


Angehängte Dateien:

Lesenswert?

Ich habe ein interval1 und interval2 eingefügt. Mit den Zeiten kannst du 
dann Ein- und Ausschalten unterschiedlich einstellen.

von Wolf G. (kerzerl)


Lesenswert?

Super, so einfach wenn man weiß wo man ansetzt.

Jetzt wollte ich noch folgendes dazu Programmieren:
Wenn während des Ablaufes des Programms, also nach dem ersten 
Tastendruck, noch einmal auf den Taster gedrückt wird, das Programm 
abbricht. Ein weiterer Tastendruck startet das Programm von vorne.
Ist das so richtig?

if ((Taststat==LOW)&&(Relstat1==LOW))  // hier erfolgt eine 
Sketchabbruch
{
  Taststat=HIGH;                        // Tastenstatus setzen
  digitalWrite(relais1,HIGH);
  digitalWrite(relais2,HIGH);
  digitalWrite(relais3,HIGH);
  digitalWrite(led,LOW);    //Led aus
}

Den Block setze ich am Ende ein, oder?

von Hubert G. (hubertg)


Lesenswert?

Grundsätzlich stimmt es, allerdings schaltest du sofort wieder ein.
Es gehört so Programmiert das der Abschaltetastendruck erst wirksam wird 
wenn die Taste wieder losgelassen wird.
Ich gehe jetzt aber Fußball schauen, habe ohnehin schon einiges 
versäumt.

von Wolf G. (kerzerl)


Lesenswert?

Würde mir auch morgen reichen. Mach dir einen schönen Abend. Danke

von Hubert G. (hubertg)


Angehängte Dateien:

Lesenswert?

Probier es mal aus. Es ist ein wenig umständlich geworden. Es rächt sich 
wenn man es anfangs zu leicht macht und dann etwas hinzufügen muss.

von Wolf G. (kerzerl)


Lesenswert?

Es funktioniert super, vielen Dank. Ich glaube ein Essen ist fällig.

Werde jetzt versuchen, ein LCD mit Interface 1602 anzusteuern. Hoffe es 
sind noch genügend Pins vorhanden. Dort sollen dann die Temperaturwerte 
angezeigt werden. Die Temperatur wird mit einem Temperatursensor LM35DZ 
gemessen.
Kann das gelingen, oder soll ich es lieber lassen? Also ich meine damit 
ob ich das schaffe und wann!

von Einer K. (Gast)


Lesenswert?

Wolf G. schrieb:
> Also ich meine damit
> ob ich das schaffe und wann!

Naja...
Schwer zu sagen...
Je nach dem wie aufnahmefähig du bist.
Hoffnung besteht.

von Hubert G. (hubertg)


Lesenswert?

Unter Beispiele gibt es LiquidCristal  Display und Analog AnalogIn

Probier es einfach aus, ist nicht schwer.
Hier ein Beispiel für Temperatur
https://learn.adafruit.com/adafruit-arduino-lesson-12-lcd-displays-part-2/arduino-code

von Manfred (Gast)


Angehängte Dateien:

Lesenswert?

Wolf G. schrieb:
> Kann das gelingen, oder soll ich es lieber lassen?
Nach Deiner Vorstellung mit der Relaiskarte hege ich leichte Zweifel. 
Vielleicht hast Du aus diesem Thread aber auch Hinweise mitgenommen, 
etwas systematischer zu arbeiten, dann kann das werden.

Geht aber schon mit dem LM35 los, wenn der Minus-Temperaturen messen 
soll :-(

von Joachim B. (jar)


Lesenswert?

Wolf G. schrieb:
> Die Temperatur wird mit einem Temperatursensor LM35DZ
> gemessen.

warum?

es gibt so schöne DS18B20 und LIBs

von China_Aware (Gast)


Lesenswert?

Hubert G. schrieb:
> Hier ist ein Schaltplan der 4fach Relaisplatine.

Und hier sind meine Erkenntnisse zu Relais-Platinen
dieser Machart:

Beitrag "Unglaublich was die Arduino-Gemeinde da vorgesetzt bekommt"

von Hubert G. (hubertg)


Lesenswert?

Wolf G. schrieb:
> Werde jetzt versuchen, ein LCD mit Interface 1602 anzusteuern.

Wie schaut es aus mit dem LCD, bei mir läuft die Temperaturanzeige schon 
mit zwei Sensoren.

von Wolf G. (kerzerl)


Lesenswert?

Schön das du fragst.
Nein bin noch nicht dazu gekommen.
Habe aber schon mehrere Messungen ohne LCD an der Heizplatte gemacht, 
mit einem Laser- Thermometer und die Werte in Excel eingetragen.

Dabei ist mir aufgefallen, dass das Relais1, doch noch mal zwischen drin 
abschalten muss, damit ich die Heizplatte stromlos bekomme. Das soll 
folgendermaßen ablaufen:
•  Relais1   = 30sek. (LOW also angesteuert)
•  Relais1+2+3  = 20sek. (LOW also angesteuert)
•  Relais1+2+3   = 10sek. (HIGH nicht angesteuert)
•  Dann wiederholen von vorne;

Habe ich aber auch noch nicht umgesetzt, wegen Zeitmangel.

von Wolf G. (kerzerl)


Lesenswert?

Wolf G. schrieb:
> Schön das du fragst.
> Nein bin noch nicht dazu gekommen.
> Habe aber schon mehrere Messungen ohne LCD an der Heizplatte gemacht,
> mit einem Laser- Thermometer und die Werte in Excel eingetragen.
>
> Dabei ist mir aufgefallen, dass das Relais1, doch noch mal zwischen drin
> abschalten muss, damit ich die Heizplatte stromlos bekomme. Das soll
> folgendermaßen ablaufen:
> •  Relais1   = 30sek. (LOW also angesteuert)
> •  Relais1+2+3  = 20sek. (LOW also angesteuert)
> •  Relais1+2+3   = 10sek. (HIGH nicht angesteuert)
> •  Dann wiederholen von vorne;
>
> Habe ich aber auch noch nicht umgesetzt, wegen Zeitmangel.

Hbert, sitze seit mehrerern Std. über deinem Programm und schaffe es 
noch nicht, meine Zusatzaufgabe, siehe oben, zu integrieren. Den 
folgenden Block muss ich einfügen, soweit bin ich schon:

if((currentMillis - previousMillis1 > interval6) 
&&(Relstat1==HIGH)&&(Relstat2==HIGH)&&(Relstat3==HIGH))
    //Zeit zwischen Zeitstempel und aktueller Zeit > als vorgegebene 
Zeit
    {
      previousMillis1 = currentMillis;
      Relstat1 =LOW;              //Relais 1 deaktivieren
      Relstat2 =LOW;              //Relais 2 deaktivieren
      Relstat3 =LOW;              //Relais 3 deaktivieren
      Zaehler++;                  //Durchlaufzähler erhöhen
    }

Habe einen weiteren "interval6" dazu genommen;
Ich weiß noch nicht ob ich das relais1 damit aus bekomme?

von Hubert G. (hubertg)


Angehängte Dateien:

Lesenswert?

Das sollte jetzt so funktionieren. Allerdings ist in dieser Version das 
LCD schon inkludiert, daher haben sich die Anschaltepunkte für Relais, 
Led und Taste verschoben.
Ich hoffe ich habe es richtig verstanden, probier es mal aus.

von Wolf G. (kerzerl)


Lesenswert?

Hubert G. schrieb:
> Das sollte jetzt so funktionieren. Allerdings ist in dieser Version das
> LCD schon inkludiert, daher haben sich die Anschaltepunkte für Relais,
> Led und Taste verschoben.
> Ich hoffe ich habe es richtig verstanden, probier es mal aus.

Du bist meine Rettung dank.
Dacht du schaust Fußball:-)

von Hubert G. (hubertg)


Lesenswert?

Fußball war nicht interessant.
Mit den verschiedenen Zeiten kannst du ja noch spielen.

von Wolf G. (kerzerl)


Angehängte Dateien:

Lesenswert?

Du hast das mit "interval7" geregelt;
Jetzt müsste es so sein das alle 55 sek. ein neuer Durchlauf beginnt und 
dabei gezählt wird bis es 19 mal durchgelaufen ist!

Das LCD muss ich noch anschließen.
Habe mir gerade noch einen 10k Widerstand geholt
"LCD Enable pin" was für ein PIN, von 1-16, am LCD, ist das?
Habe Fotos angehängt

Und wenn du mir noch sagst wo du den Widerstand reingehängt hast?
Danke

von Hubert G. (hubertg)


Lesenswert?

Wolf G. schrieb:
> Du hast das mit "interval7" geregelt;
> Jetzt müsste es so sein das alle 55 sek. ein neuer Durchlauf beginnt und
> dabei gezählt wird bis es 19 mal durchgelaufen ist!

Interval7 ist richtig.
Es läuft nur 10 mal durch, da ein und aus mitgezählt wird und mit 0 
beginnt.

Wolf G. schrieb:
> "LCD Enable pin" was für ein PIN, von 1-16, am LCD, ist das?


Ich sehe gerade du hast ein I2C-LCD. Das funktioniert mit meiner SW 
nicht. Dafür braucht man eine eigene. Kann ich aber nicht probieren da 
ich kein geeignetes LCD habe.

von Wolf G. (kerzerl)


Lesenswert?

Dann muss ich wohl ein anderes Display kaufen.
Welche Typenbez. hat deines?

von Hubert G. (hubertg)


Lesenswert?

Wolf G. schrieb:
> Welche Typenbez. hat deines?

Kann ich dir nicht sagen, ist so ein Noname Typ aus meiner Bastelkiste.
16 Zeichen mit 2 Zeilen. Das du da hast würde schon passen wenn der 
I2C-Teil nicht drauf wäre.

von Wolf G. (kerzerl)


Lesenswert?

Hast evtl. ein Foto?
Schau ob ich ein ähnliches ohne I2C-Teil bekomme;

von Hubert G. (hubertg)


Lesenswert?

Ich weiss nicht wo du kaufst, such mal nach LCD 162C, bei Reichelt.
Meines sieht so aus.
Ist der I2C Zusatz auf deinem LCD gesteckt oder gelötet.

von Wolf G. (kerzerl)


Angehängte Dateien:

Lesenswert?

Mein Elektronik-Verkäufer meint, das ich den I2C auf der Rückseite des 
Displays einfach nicht anschließen soll, dann wird der auch nicht 
geschalten. Ganz sicher ist er sich nicht und wartet auf Feedback von 
mir.

Zu deiner Frage: Der I2C ist aufgelötet.
Zu meiner Frage die ich dir gestellt hatte, bezüglich "LCD Enable pin", 
das müsste der Pin 6 am LCD sein, mit dem Aufdruck "E", meint der 
Verkäufer.

Jetzt werde ich es mal versuchen.

Ach ja zum Widerstand. Habe ein Bild angehängt. Der 10K-Widerstand ist 
das blaue Teil mit dem Pfeil drauf (regelbarer Widerstand). Dieser ist 
zwischen 5+V und V0 am LCD geschaltet. Sehe ich das so richtig?
Danke

von Hubert G. (hubertg)


Lesenswert?

Wolf G. schrieb:
> Ach ja zum Widerstand. Habe ein Bild angehängt. Der 10K-Widerstand ist
> das blaue Teil mit dem Pfeil drauf (regelbarer Widerstand). Dieser ist
> zwischen 5+V und V0 am LCD geschaltet. Sehe ich das so richtig?

Eine Seite geht auf GND, die andere auf +5V und die Mitte auf Vo.

von Wolf G. (kerzerl)


Lesenswert?

Den 10k Widerstand regelbar habe ich nicht, nur einen normalen mit zwei 
Drähten!
Kann ich aber gleich anschließen, oder? +5V auf einen Draht, GND und V0 
auf den anderen Draht?

von Hubert G. (hubertg)


Lesenswert?

Dann nur einen auf GND und Vo.
Es sollte ein Balken in der ersten Zeile sichtbar sein.

: Bearbeitet durch User
von Wolf G. (kerzerl)


Lesenswert?

#include <LiquidCrystal.h>

Muss ich da noch was in meine Software einspielen?
In der Bibliothek ist LiquidCrystal vorhanden!
Ist das das gleiche?

von Hubert G. (hubertg)


Lesenswert?

Wolf G. schrieb:
> #include <LiquidCrystal.h>

Das ist eine Anweisung für den Compiler diese Datei einzubinden.
Wenn die Datei fehlt bekommst du eine Fehlermeldung.

von Wolf G. (kerzerl)


Lesenswert?

Hubert G. schrieb:
> Wolf G. schrieb:
>> #include <LiquidCrystal.h>
>
> Das ist eine Anweisung für den Compiler diese Datei einzubinden.
> Wenn die Datei fehlt bekommst du eine Fehlermeldung.

ok das verstehe ich schon, aber du hast LiquidCrystal.h geschrieben, das 
meinte ich. Es hat mich das .h gestört!

von Hubert G. (hubertg)


Lesenswert?

Wenn du in die Bibliothek LiquidCrystal hineinschaust findest du unter 
src die LiquidCrystal.cpp und LiquidCrystal.h.
Die Angaben was included werden soll müssen immer genau sein.

von Manfred (Gast)


Angehängte Dateien:

Lesenswert?

Wolf G. schrieb:
> Dann muss ich wohl ein anderes Display kaufen.
Quatsch - im Internet bei den Arduinos finden sich etlich Libraries, 
suche nach "<LiquidCrystal_I2C.h>". Damit belegst Du zwei Ports des 
Arduino und brauchst Dich um weitere Hardware nicht zu kümmern. Es 
kann sein, dass noch zwei Widerstände mit ca. 4k7 von den zwei 
Datenleitungen nach Plus dran müssen.

Wolf G. schrieb:
> Mein Elektronik-Verkäufer meint, das ich den I2C auf der Rückseite des
> Displays einfach nicht anschließen soll, dann wird der auch nicht
> geschalten. Ganz sicher ist er sich nicht und wartet auf Feedback von
> mir.
Dem Herren vertraue ich nicht - an Anschlüsse unversorgter ICs hat man 
nichts dran zu klemmen.

Wenn das unbedingt sein muß, löte die I2C-Platine runter.

von Wolf G. (kerzerl)


Angehängte Dateien:

Lesenswert?

So es läuft soweit super.
Kleinigkeiten die mir aufgefallen sind:

 - Am Arduino leuchtet die kleine rote LED mit der Bezeichnung L! Wenn 
diese an geht, geht auch meine rote LED am Bord an (siehe Bild LED1). Da 
haben wir ja nix geändert, außer die PIN-Belegung, aber jetzt blinkt die 
LED am Bord, war vorher immer nur an wenn das Programm lief? Find nix an 
was es liegen könnte!

 -Die Temperaturanzeige funktioniert. Zeigt allerdings den Wert -255° an 
(Raumtemperatur)

Da ich keinen zweiten Temperatursensor habe, habe ich den Programmteil 
mit // ausgeschalten!

Das LCD funktioniert auch ohne das Auslöten des I2C.

von Wolf G. (kerzerl)


Angehängte Dateien:

Lesenswert?

Noch ein Bild vom Display

von Wolf G. (kerzerl)


Lesenswert?

Es lief jetzt. Und jetzt geht nix mehr. Ich gehe jetzt in Bett. Ich 
blick gerade nichts mehr.

von Wolf G. (kerzerl)


Lesenswert?

Neu gestartet und es läuft, aber nicht lange.
Was mach ich nur falsch?

Habe alle PIN Kontakte zwei mal überprüft, alles in Ordnung.

Das Blinken an der Arduino LED geht nicht weg! Das geht im 5 sek. 
Wechsel an /aus. Würde mit dem interval6 Temperaturmessung zusammen 
passen.

Vielleicht liegt es am Netzteil, vielleicht auch nicht, denn wenn ich 
das USB Kabel anschließe und den Taster betätige, dann gibt mein 
Computer ein Geräuschsignal aus, aber das Programm läuft nicht.

Evtl. liegt es an den Widerständen an der Schaltung, denn beim Drücken 
des Tasters ist immer das LCD kurz dunkel geworden.

Bitte um Hilfe

von Wolf G. (kerzerl)


Lesenswert?

Was mir noch aufgefallen ist: Wenn ich den Taster länger drücke wird der 
schwarze Chip, neben dem Netzteileingang schnell heiß.

von Hubert G. (hubertg)


Lesenswert?

Ich schätze mal das die Hintergrundbeleuchtung zuviel Strom braucht, 
sieht sehr hell aus. Wie hast du die angeschlossen? Ist da ein 
Vorwiderstand drinnen.
Der schwarze Chip ist der Spannungsregler. Der schaltet ab wenn er zu 
heiß wird.

von Wolf G. (kerzerl)


Lesenswert?

Kein Vorwidersand.
Netzteil hat 9V.
Habe das gleiche Problem, das ich mit den ersten Relais auch hatte, die 
schalten jetzt nicht mehr. Liegt aber evtl. am Arduino.
Vielleicht ist der kaputt, also das zweite mal kaputt. Habe mir ja alles 
neu besorgt!

von Horst (Gast)


Lesenswert?

Wenn beim drücken des Tasters die Hintergrundbeleuchtung ausgeht und der 
Regler heiß wird, dann deutet das sicher auf einen Kurzschluss hin.

von Hubert G. (hubertg)


Lesenswert?

Wolf G. schrieb:
> -Die Temperaturanzeige funktioniert. Zeigt allerdings den Wert -255° an
> (Raumtemperatur)

Wie hast du den Temperaturfühler angeschlossen?
Kannst du auch mal die Tastenanschaltung genauer zeigen, kommt mir etwas 
eigenartig vor. Nimm mal die Verbindung nach +5V weg und die Led.
Die Led am UNO blinkt tatsächlich im Takt der Temperaturmessung, hab ich 
vergessen wieder herauszunehmen.

Ein Vorwiderstand für die Displaybeleuchtung ist notwendig, sollte im 
Datenblatt stehen, probier mal 100 Ohm.
Wenn du die Relais auch mit 9V betreibst können die auch sterben. Wenn 
es ein einfaches Netzteil ist (Wandwarze) dann haben die meist einige 
Volt mehr. 9V erst bei maximal Belastung.

von Wolf G. (kerzerl)


Angehängte Dateien:

Lesenswert?

Einziger Widerstand ist der von VO (10k)

von Wolf G. (kerzerl)


Angehängte Dateien:

Lesenswert?

Habe die Kabel mit einem handelsüblichen Lötkolben angelötet

von Hubert G. (hubertg)


Lesenswert?

Gib mal auf A0 +5V drauf, dann sollten etwa 180° am Display stehen.
Auch mal die Spannung vom LM35 messen, sollten etwa 2,8V sein.

von Wolf G. (kerzerl)


Angehängte Dateien:

Lesenswert?

Hubert G. schrieb:
> Ein Vorwiderstand für die Displaybeleuchtung ist notwendig, sollte im
> Datenblatt stehen, probier mal 100 Ohm.

So habe ich den Widerstand 100 Ohm geschalten (Bild)
Zwischen VDD PIN2 am LCD (schwarzes Kabel) an Widerstand Ausgang zum +5V 
Arduino.
Programm läuft nur einmal incl. Ansteuerung der Relais. Wenn ich es 
unterbreche mit Tastendruck, läuft es nicht mehr. Mehrmaliges drücken 
des Tasters bewirkt nur noch das das LCD dunkel wird!

von Wolf G. (kerzerl)


Lesenswert?

Wolf G. schrieb:
> Mehrmaliges drücken
> des Tasters bewirkt nur noch das das LCD dunkel wird!

LCD ist jetzt mit Vorwiderstand nur beleuchtet, keine Anzeige!

von Hubert G. (hubertg)


Lesenswert?

Der 100 Ohm Widerstand bringt so nichts, da ist das ganze Display 
betroffen. Zieh mal den kleinen Stecker auf der Subplatine ab.
Du hast in deiner Verdrahtung einen Wurm drinnen, wenn du die Taste 
drückst darf sich an der Helligkeit gar nichts ändern.
Die Led und die Verbindung nach +5V an der Taste schon entfernt?

von Wolf G. (kerzerl)


Lesenswert?

Hubert G. schrieb:
> Wenn du die Relais auch mit 9V betreibst können die auch sterben. Wenn
> es ein einfaches Netzteil ist (Wandwarze) dann haben die meist einige
> Volt mehr. 9V erst bei maximal Belastung.

Verhalten ist bei USB Anschluß ähnlich

von Wolf G. (kerzerl)


Lesenswert?

Hubert G. schrieb:
> Die Led und die Verbindung nach +5V an der Taste schon entfernt?

Nein, habe den Temperatursensor entfernt. Siehe da das Programm lässt 
sich jetzt ein und ausschalten auch die Relais schalten wieder mit.

Den Widerstand 100 Ohm habe ich ebenfalls entfernt.

Danke erst mal ich muss jetzt leider kurz unterbrechen, ich habe einen 
Termin. Bis später. Vielen Dank

von Wolf G. (kerzerl)


Angehängte Dateien:

Lesenswert?

Bild vom Taster und LED

von Wolf G. (kerzerl)


Lesenswert?

Hubert G. schrieb:
> Zieh mal den kleinen Stecker auf der Subplatine ab.

Was meinst du damit? Was ist die Subplatine?

von Wolf G. (kerzerl)


Lesenswert?

Hubert G. schrieb:
> Du hast in deiner Verdrahtung einen Wurm drinnen,

Meinst du damit das LCD oder den Taster?

von Wolf G. (kerzerl)


Lesenswert?

Hubert G. schrieb:
> Du hast in deiner Verdrahtung einen Wurm drinnen

LCD Verkabelung

LCD > Arduino
---------
VSS > GND
VDD > +5V
V0  > 10k ((Poti)) + ((1kOhm Widerstand)) > GND
RS  > Pin 12
R/W > Pin GND
E   > Pin 11
D4  > Pin 5
D5  > Pin 4
D6  > Pin 3
D7  > Pin 2
A   > nicht angeschlossen
K   > (10 Ohm Widerstand > GND */) nicht angeschlossen

((das in Klammern habe ich nicht))

von Hubert G. (hubertg)


Lesenswert?

Wie weit funktioniert es jetzt? Der Temperaturfühler ist ein LM35? Der 
ist offensichtlich defekt.
Was macht die Led am Taster?
Wenn du jetzt die Taste drückst wird der Spannungsregler immer noch 
warm?

von Wolf G. (kerzerl)


Lesenswert?

Hubert G. schrieb:
> Wie weit funktioniert es jetzt?
Habe dein Programm vorerst so umprogrammiert das es ohne LCD und ohne 
Temperatursensor läuft.

> Der Temperaturfühler ist ein LM35?
Ja: LM35DZ ( -0 +150C) To92

> Was macht die Led am Taster?
Bildlink, nach Umprogrammierung, nicht mehr alle 5 sek.
Geht aber beim Betätigen des Tasters sofort aus.

> Wenn du jetzt die Taste drückst wird der Spannungsregler immer noch
> warm?
Ja, sehr warm, aber nur wenn ich den Taster gedrückt halte, für 3sek.

> Zieh mal den kleinen Stecker auf der Subplatine ab.

Was meinst du damit? Was ist die Subplatine?

von Wolf G. (kerzerl)


Lesenswert?

Könnte man dein Programm so Programmieren, das anstatt der zweiten Temp2 
Ausgabe am LCD, die abgelaufene Zeit steht? Vorausgesetzt die 
Verkabelung und die Schaltung funktioniert mit dem neuen LCD!

von Hubert G. (hubertg)


Lesenswert?

Wolf G. schrieb:
>> Wenn du jetzt die Taste drückst wird der Spannungsregler immer noch
>> warm?
> Ja, sehr warm, aber nur wenn ich den Taster gedrückt halte, für 3sek.

Da ist was faul, nimm die Led mal von der Taste weg und auch die 
Verbindung nach +5V.

Wolf G. schrieb:
> Könnte man dein Programm so Programmieren, das anstatt der zweiten Temp2
> Ausgabe am LCD, die abgelaufene Zeit steht? Vorausgesetzt die
> Verkabelung und die Schaltung funktioniert mit dem neuen LCD!

Denke schon, wird aber etwas dauern.

von Hubert G. (hubertg)


Angehängte Dateien:

Lesenswert?

Probier das mal aus.

von Wolf G. (kerzerl)


Angehängte Dateien:

Lesenswert?

Hubert G. schrieb:
> Wolf G. schrieb:
>>> Wenn du jetzt die Taste drückst wird der Spannungsregler immer noch
>>> warm?
>> Ja, sehr warm, aber nur wenn ich den Taster gedrückt halte, für 3sek.
>
> Da ist was faul, nimm die Led mal von der Taste weg und auch die
> Verbindung nach +5V.
>
> Wolf G. schrieb:
>> Könnte man dein Programm so Programmieren, das anstatt der zweiten Temp2
>> Ausgabe am LCD, die abgelaufene Zeit steht? Vorausgesetzt die
>> Verkabelung und die Schaltung funktioniert mit dem neuen LCD!
>
> Denke schon, wird aber etwas dauern.

So jetzt sieht es nur noch so aus
Bild


Wenn ich jetzt, nach dem Entfernen der LED, die Taste drücke, dauert es 
nur noch 1 sek., bis der Finger bez. der Spannungsregler heiß wir.
Das LCD und die LED werden dunkel.

von Wolf G. (kerzerl)


Angehängte Dateien:

Lesenswert?

Noch ein Bild

von Einer K. (Gast)


Lesenswert?

Wolf G. schrieb:
> die Taste drücke, dauert es
> nur noch 1 sek., bis der Finger bez. der Spannungsregler heiß wir.

Höre doch bitte auf, das Ding zu grillen...
Das tut doch beim lesen schon weh...

Dann macht der Taster einen Kurzschluss.
Ändere das!

von Wolf G. (kerzerl)


Lesenswert?

Arduino F. schrieb:
> Wolf G. schrieb:
>> die Taste drücke, dauert es
>> nur noch 1 sek., bis der Finger bez. der Spannungsregler heiß wir.
>
> Dann macht der Taster einen Kurzschluss.
> Ändere das!

Geht es auch präziser?

von Einer K. (Gast)


Lesenswert?

Nein!

Zeige den Schaltplan....

von Wolf G. (kerzerl)


Lesenswert?

Habe keinen. Bin ein Bastler auf dem Holzweg.

von Steckbrettidiot (Gast)


Lesenswert?

Wolf G. schrieb:
> Taster_ohne_LED.JPG

Bei diesem Chaos soll man was erkennen und dir helfen?

von Einer K. (Gast)


Lesenswert?

Dann male einen!
Egal wie...
Bleistift Papier und eine Fotomaschine hast du ja...


z.B. wofür sind die beiden blauen am Taster?
Wohin gehen die?

von Wolf G. (kerzerl)


Angehängte Dateien:

Lesenswert?

Arduino F. schrieb:
> Dann male einen!
> Egal wie...
> Bleistift Papier und eine Fotomaschine hast du ja...
>
>
> z.B. wofür sind die beiden blauen am Taster?
> Wohin gehen die?

Siehe Bild

von Einer K. (Gast)


Lesenswert?

Siehste es jetzt selber?

Eine Seite +5V und andere Seite GND
Drücken führt zum Kurzschluss.

Mach das 5V Dingen da weg!

von Wolf G. (kerzerl)


Lesenswert?

Danke , und wie wäre es richtig?
Ich habe schon alles gesteckt ohne Erfolg.
Ich glaube ich bin blind!

von Einer K. (Gast)


Lesenswert?

Eine Seite GND, die andere zu Pin10
Fertig!

von Wolf G. (kerzerl)


Lesenswert?

Jetzt wäre eine Skizze nicht schlecht (dito)

Wie gesagt ich habe schon alle Möglichkeiten gesteckt und das LCD usw. 
dunkelt ab sobald ich den Taster betätige.

von Wolf G. (kerzerl)


Angehängte Dateien:

Lesenswert?

Neue Schaltskizze

von Einer K. (Gast)


Lesenswert?

Arduino F. schrieb:
> Mach das 5V Dingen da weg!
Was verstehst du daran nicht?
Warum tust du das nicht?

von Wolf G. (kerzerl)


Lesenswert?

Arduino F. schrieb:
> Arduino F. schrieb:
>> Mach das 5V Dingen da weg!
> Was verstehst du daran nicht?
> Warum tust du das nicht?

Danke jetzt geht es.
Mit einer Skizze, so wie du es gefordert hast, weil du es nicht 
verstanden hast, wäre es nicht zu gegenfragen gekommen.
Das habe ich in den letzten 5 min. gelernt.
Was hast du gelernt???

von Einer K. (Gast)


Lesenswert?

Wolf G. schrieb:
> Was hast du gelernt???

Ich habe gelernt, dass es Leute gibt, die ungern Schaltpläne malen.
Dass man solange alle Steckmöglichkeiten permutiert, bis der Regler 
qualmt.

Und damit wohl das falsche gelernt.

von Hubert G. (hubertg)


Lesenswert?

Das die Verbindung vom Taster nach +5V entfernt gehört habe ich dir 
schon zu Mittag geschrieben.
Hast du das neue Programm getestet?

von Wolf G. (kerzerl)


Lesenswert?

Hubert G. schrieb:
> Probier das mal aus.

Habe es eingespielt. Was mir aufgefallen ist:
-Die LED an PIN 9 leuchtet nur kurz auf wenn ich den Taster drücke.
 Ein Dauer leuchten ist nicht mehr vorhanden. PIN13 hast du ja 
blockiert!

-Die LED "L" am Arduine leuchtet jetzt dauerhaft;

-Das LCD wird dunkler, wenn alle drei Relais anschalten; Ist aber nicht 
so dramatisch.

-Das Programm ist ein Mal durchgelaufen. Beim zweiten starten geht nur 
das Relais1 an, und bleibt es auch. Die anderen Relais schalten nicht zu 
oder ab.
Nach 540 sek geht es sogar ins minus mit den Sekunden. Das Programm muss 
manuell abgebrochen werden.

von Wolf G. (kerzerl)


Lesenswert?

Hubert G. schrieb:
> Das die Verbindung vom Taster nach +5V entfernt gehört habe ich dir
> schon zu Mittag geschrieben.
Ja das hast du. Ich habe es nicht kapiert.
> Hast du das neue Programm getestet?
Habe gerade geschrieben

von Manfred (Gast)


Lesenswert?

Wolf G. schrieb:
> -Das LCD wird dunkler, wenn alle drei Relais anschalten; Ist aber nicht
> so dramatisch.
Dann ist Deine Stromversorgung überlastet oder Du hast weitere 
Schaltungsfehler.

von Hubert G. (hubertg)


Angehängte Dateien:

Lesenswert?

Wolf G. schrieb:
> -Die LED an PIN 9 leuchtet nur kurz auf wenn ich den Taster drücke.
>  Ein Dauer leuchten ist nicht mehr vorhanden. PIN13 hast du ja
> blockiert!

Wie hast du die Led angeschaltet? Von Pin9 zum Widerstand, Led und dann 
GND?

Diese Version müsste jetzt funktionieren.

von Dieter F. (Gast)


Lesenswert?

Hubert G. schrieb:
> Diese Version müsste jetzt funktionieren

Wenn ich Dein Kollege wäre und Deine Programme warten müsste würde ich 
mir Teer und Federn besorgen :-)
Deine Kommentare kannst Du auch ganz weglassen - dann verwirren diese 
wenigstens nicht :-)

von Wolf G. (kerzerl)


Lesenswert?

Hubert G. schrieb:
> Wolf G. schrieb:
>> -Die LED an PIN 9 leuchtet nur kurz auf wenn ich den Taster drücke.
>>  Ein Dauer leuchten ist nicht mehr vorhanden. PIN13 hast du ja
>> blockiert!
>
> Wie hast du die Led angeschaltet? Von Pin9 zum Widerstand, Led und dann
> GND?
>
> Diese Version müsste jetzt funktionieren.

Habe es so wie du geschrieben hast umgesetzt. Jetzt geht es.
Programm muss ich später testen!
Vielen Dank

von Wolf G. (kerzerl)


Angehängte Dateien:

Lesenswert?

Hubert G. schrieb:
> Diese Version müsste jetzt funktionieren.

Geht gut, sehr gut.
Was noch auffällt ist, dass das Display immer noch dunkler wird, wenn 
alle 3 Relais auf LOW gehen.
Werde den 10K Poti einbauen und schauen ob es besser wird, wie im Bild 
gezeigt.
Sketch bleibt gleich oder?

Kann man das mit dem Zähler evtl. so machen das z.B. alle 15 sek. als 
ein Durchlauf zählt?
Beispiel:
5 sek. Relais1 ein
5 sek. Relais2+3 ein
5 sek. Relais1+2+3 aus (ist Wartezeit)

Dann soll folgende Rechnung aufgehen: 3x5 sek =15sek.; 10x15 sek. 
(Durchlaufzeit) =150sek.
Aktuell ist es so, dass wenn ich 10 eingebe sind es 80 sek.

von Wolf G. (kerzerl)


Lesenswert?

Helligkeitsschwankung am LCD mit Poti viel geringer!

von Hubert G. (hubertg)


Angehängte Dateien:

Lesenswert?

Wolf G. schrieb:
> Kann man das mit dem Zähler evtl. so machen das z.B. alle 15 sek. als
> ein Durchlauf zählt?
> Beispiel:
> 5 sek. Relais1 ein
> 5 sek. Relais2+3 ein
> 5 sek. Relais1+2+3 aus (ist Wartezeit)

Ich weiß nicht ob ich das richtig verstanden habe.
Die Änderung ist folgend:
Jetzt musst du nur die Zeiten in INTERVAL1 bis 3 ändern und die Anzahl 
der Durchläufe angeben, dann wird die Ablaufzeit automatisch berechnet.

von Wolf G. (kerzerl)


Lesenswert?

Hubert G. schrieb:
> Ich weiß nicht ob ich das richtig verstanden habe.

Einwandfrei, super. Ich danke Dir.

von Wolf G. (kerzerl)


Lesenswert?

Hallo Hubert,

habe noch eine Frage an dich:
Kann man den Sketch so gestalten, dass man in einem Sketch die Wahl hat 
zwischen zwei Programmen zu wählen? Also wenn man auf Taster 1 drückt 
startet das Programm1 und wenn man auf Taster 2 drückt startet das 
Programm2! Der Unterschied der Programme wäre dann nur die 
Zeiteinstellung z.B. Programm1 läuft insgesamt 5 min. und Programm2 10 
min.
Danke

von Joachim B. (jar)


Lesenswert?

dann packe deine 2 Programme in je eine Funktion, oder Unterprogramm und 
rufe je nach Taste diese auf.

nach dem Setup Init steht dein Programm auf Menü -> Hauptprogramm -> 
Programmwahl, dort je nach Taste wird auf PRG1 oder PRG2 verwiesen.

Wenn die beiden sich nur in der Zeit unterscheiden gibst du diese halt 
im Hauptmenü vor bevor du das einzige Programm aufrufst.

: Bearbeitet durch User
von Hubert G. (hubertg)


Lesenswert?

Wie Joachim schon geschrieben hat, an sich kein Problem. Es wird 
allerdings genügen mit Tastendruck die Zeiten auszuwählen.

von Wolf G. (kerzerl)


Lesenswert?

Hubert G. schrieb:
> Es wird
> allerdings genügen mit Tastendruck die Zeiten auszuwählen.

Das hört sich nicht schlecht an. Da brauche ich dann nur einen Taster 
wenn ich das richtig verstehe?

von Hubert G. (hubertg)


Lesenswert?

Es sollte mit einer Taste gehen, wird aber etwas aufwändiger.
Mit zwei Tasten geht es einfach.

von Wolf G. (kerzerl)


Lesenswert?

Zwei Tasten kämen in Frage

von Joachim B. (jar)


Lesenswert?

mit 3 Tasten kannst du zurück ins Menü und hast +- Tasten.

mit 2 Tasten wirds schwer wenn du nicht Doppeltastendruck auswerten 
willst.

Ich empfehle da lieber Drehencoder mit Drucktaste und LCD Menüführung

von Hubert G. (hubertg)


Lesenswert?

Wolf G. schrieb:
> Zwei Tasten kämen in Frage

Hast du schon ein Endziel, oder solle sich das noch weiter entwickeln.
Wenn das mit zwei Tasten das Endziel ist, dann kann man das quick und 
dirty machen. Sollte sich das noch weiter entwickeln, dann muss man das 
Modular aufbauen, sonst macht man jeden Schritt immer wieder neu. Es 
würde aber in jedem Fall meine vorhandene Zeit zu sehr beanspruchen.

von Wolf G. (kerzerl)


Lesenswert?

Ja das währe vorerst das Endziel.

Sollte sich dennoch was ändern, dann würde ich dich gerne auf einem 
anderen Weg anschreiben, vorausgesetzt deiner Einwilligung.

Unter, sketch.hubert@anpa.de könntest du mich anschreiben. Den Alias 
habe ich dafür angelegt.

von Hubert G. (hubertg)


Angehängte Dateien:

Lesenswert?

Jetzt mit zwei Tasten. Die zweite Taste kommt auf 13.
Probiers mal aus.
Wenn du auf das hubertg in meinem Beitrag klickst, kannst du mir eine 
private Nachricht schreiben.

von Manfred (Gast)


Lesenswert?

Joachim B. schrieb:
> Ich empfehle da lieber Drehencoder mit Drucktaste und LCD Menüführung
Bei dem hier geballt präsentierten Fachwissen eine ganz tolle Idee. 
Drehencoder hat mich diverse Stunden beschäftigt, die Masse der im 
Internet gefundenen Lösungen geht nicht anständig, sobald man mehr zu 
tun hat als nur den Drehencoder abzufragen. Egal, ich konnte es lösen, 
habe den im Interrupt.

Wolf G. schrieb:
> Ja das währe vorerst das Endziel.
Rechtschreibung "wäre"?

> Sollte sich dennoch was ändern, dann würde ich dich gerne auf einem
> anderen Weg anschreiben, vorausgesetzt deiner Einwilligung.
> Unter, sketch.hubert@anpa.de könntest du mich anschreiben.
Ich bewundere Hubert, mit welcher Geduld er Dich bislang versorgt hat. 
Hast Du nicht genug Hinweise bekommen, endlich einmal selbst zu 
arbeiten?

Zu Deinen zwei Tasten: In der "loop()" fragst Du ab, welche Taste 
gedrückt ist und dann geht es ab zu "void Taste_1()" bzw. "void 
Taste_2()", wo Dein Code steht.

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.