INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Elektronische Sicherung
14.02.2016, 21:03 (Dieser Beitrag wurde zuletzt bearbeitet: 14.02.2016 21:17 von Chef_2.)
Beitrag #1
Elektronische Sicherung
Hallo Forengemeinde,

tüftle nun schon eine ganze weile an der Programmierung von meinem Tiny85 herum... aber da ich nun mal noch Anfänger bin, habe ich da so meine Probleme...

Ich möchte gerne 2 Analoge Werte vergleichen lassen und sobald der eine Wert unter 0,4V sinkt, soll ein Digitaler Ausgang zumachen.

Hier mal mein nicht funktionierendes Programm:

Zitat:// Strombegrenzung über ATTiny85

int S1 = 2; //Schalter 1

int LDR1 = 1; //Spannungsüberwachung am Eingang
int LDR2 = 0; //Spannungsüberwachung am Ausgang

// Setup routine for digital port configuration

void setup()
{ // Port as output
pinMode(S1, OUTPUT); //Ausgang für Ansteuerung T1
{digitalWrite (S1, HIGH);
delay(500);}
}


// Main programm

void loop()
{

LDR1 = analogRead(1); //Spannungsüberwachung am Eingang
LDR2 = analogRead(2); //Spannungsüberwachung am Ausgang

if (LDR2 < LDR1-20)
{digitalWrite (S1, LOW);}
delay(5000);
if (LDR2 > LDR1)
{digitalWrite (S1, HIGH);}
delay(200);
}

[Bild: dce239-1455481444.jpg]

Hoffe, mir kann da jemand einen Tip geben, wo ich hier meinen fehler habe...

Danke schonmal
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.02.2016, 08:11 (Dieser Beitrag wurde zuletzt bearbeitet: 15.02.2016 08:13 von Binatone.)
Beitrag #2
RE: Elektronische Sicherung
Tja, ich würde als erstes das Delay(5000) auf delay(500) setzen und mir per
Serial.print(LDR1);
Serial.print("##");
Serial.println(LDR2);
die Analogwerte anzeigen lassen, um zu sehen, ob und was denn gemessen wird.
So kann man erstmal die Fehlerquelle eingrenzen.


Achsooo
Der Loop läuft nur alle 5200 ms durch.
Weil die jeweiligen delays liegen außerhalb der IF Klammern

Binatone
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.02.2016, 08:13
Beitrag #3
RE: Elektronische Sicherung
Hallo Chef_2,

(14.02.2016 21:03)Chef_2 schrieb:  Ich möchte gerne 2 Analoge Werte vergleichen lassen und sobald der eine Wert unter 0,4V sinkt, soll ein Digitaler Ausgang zumachen.

Wenn ich richtig verstanden habe, möchtest du den Schalter auf LOW setzen, wenn LDR2 um mindestens 0.4V kleiner ist als LDR1. Der Schalter soll erst wieder auf HIGH gehen, wenn LDR2 grösser als LDR1 wird.

Zitat: {digitalWrite (S1, HIGH);
delay(500);}
Diese geschweiften Klammern kannst du weglassen.


void loop()
{
LDR1 = analogRead(1); //Spannungsüberwachung am Eingang
LDR2 = analogRead(2); //Spannungsüberwachung am Ausgang

// Hier vergleichst du die beiden LDR - Werte, das ist korrekt
if (LDR2 < LDR1-20)
{digitalWrite (S1, LOW);}

// 5 Sekunden Pause, das ist etwas viel. In dieser Zeit erfolgt
// keine Messung und keine Reaktion des Programms.
delay(5000); // delay weglassen!

// Falls LDR2 grösser als LDR1 wird, wird der Schalter wieder eingeschaltet.
// Das ist korrekt, falls LDR2 wirklich grösser werden kann als LDR1
if (LDR2 > LDR1)
{digitalWrite (S1, HIGH);}

// Diese kleine Pause schadet nichts
delay(200);
}

Falls du mit delay(5000) sicherstellen wolltest, dass die Auschaltdauer mindestens 5 Sekunden beträgt, müsstest du hier einen anderen Weg einschlagen. delay() ist bei grösseren Werten grundsätzlich heikel und sollte möglichst vermieden werden.

Der Hobbyelektroniker wagt sich an die Arduinoprogrammierung auf Video und auf seiner Webseite
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.02.2016, 08:46
Beitrag #4
RE: Elektronische Sicherung
Hi,
da es hier um einen Tiny85 geht solltest du dir dieses Projekt von ardu_arne mal ansehen da der Serielle Monitor der IDE auf dem Tiny nicht direkt verfügbar ist.
lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.02.2016, 19:37
Beitrag #5
RE: Elektronische Sicherung
abgesehen von den schon angesprochenen Problemen halte ich es für unwahrscheinlich das die Ausgangsspannung größer wird als die Eingangsspannung
Code:
...
if (LDR2 > LDR1)
...
vielleicht könntest du ja auch einen Tipp geben was genau nicht funktioniert.

Gruß Bob

Elektronische Torwand
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.02.2016, 19:41
Beitrag #6
RE: Elektronische Sicherung
Hallo Chef_2,

ich bin mir nicht ganz Sicher, aber es kann auch sein, dass die Berechnung in der if-Abfrage nicht so funktioniert wie gedacht. Setze doch bitte mal die Berechnung in Klammern:

Code:
if (LDR2 < (LDR1-20))

Gruß
Torsten
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.02.2016, 00:37
Beitrag #7
RE: Elektronische Sicherung
Hallo,

super, wie ihr euch hier einbringt Smile Also nach langem Probieren, bin ich drauf gekommen, dass AIN0 und AIN1 wohl nicht mit Analogen Eingängen zu tun hat... habe dann Pin 2 und Pin 3 genommen...

Das mit den 5000 war tatzächlich eine Zeit, bis zum erneutem Wiedereinschaltversuch... hab ich aber nun weg gelassen... wenn aus, dann aus ----> Reset

Habe jetzt eine Elektronische Sicherung, die auch bei "Überspannung" reagiert:

if (LDR2 >= 690)
{digitalWrite (S1, LOW);}

Wenn ich morgen mal mehr Zeit habe, Poste ich mal das komplette Projekt
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.02.2016, 16:28
Beitrag #8
RE: Elektronische Sicherung
So Mahlzeit... hier nun mal das Programm und die Schaltung dazu (funktioniert)

Zitat:// Strombegrenzung über ATTiny85

int S1 = 2; //Sicherung aktiv
int S2 = 1; //Schaltung aktiv
int S3 = 0; //Überspannungsschutz LED

int LDR1 = 2; //Spannungsüberwachung am Eingang
int LDR2 = 3; //Spannungsüberwachung am Ausgang

// Setup routine for digital port configuration

void setup()
{ // Port as output
pinMode(S1, OUTPUT); //Ausgang für Ansteuerung T1
pinMode(S2, OUTPUT); //Schaltung aktiv
pinMode(S3, OUTPUT); //Überspannungsschutz aktiv
{digitalWrite (S2, HIGH);}
delay(500);
{digitalWrite (S2, LOW);}
delay(500);
{digitalWrite (S2, HIGH);}
delay(500);
{digitalWrite (S1, HIGH);}
}


// Main programm

void loop()
{
LDR1 = analogRead(2); //Spannungsüberwachung am Eingang
LDR2 = analogRead(3); //Spannungsüberwachung am Ausgang

if (LDR2 < LDR1-100)
{digitalWrite (S1, LOW);}

if (LDR2 >= 690)
{digitalWrite (S1, LOW);
digitalWrite (S3, HIGH);}

}

Schaltplan:

[Bild: 853a89-1455637513.jpg]

Was ich am Programm selber noch nicht verstanden haben:

Wieso ist S1 und LDR1 jedesmal 2; ?

Einmal ist S1 der Pin 7 und zum anderen ist es Pin 2 am Tiny85

S1 schaltet den BC817 und LDR1 ist ein Analoger Eingang zur Überwachung am Ausgang
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Interrupt und Sicherung der Prozessorregister MKc 5 224 31.08.2016 11:17
Letzter Beitrag: MKc

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste