Go Down

Topic: Steuerung von Ventilen und Kamera für TaT-Aufnahmen (Read 68824 times) previous topic - next topic

guntherb


leuchtet die LED auch, wenn du den widerstand am Pin 1 des Optokopplers ziehst?
Ja und ich habe mehrere ausprobiert... *heul*

Die LED muß leuchten, so wie du das alles angeschlossen hast!

Das, was du gesteckt hast, ist anders als das, was ich in den Schaltplan gezeichnete habe.

Mit deiner Schaltung sollte die LED ausgehen, wenn der Optokoppler angesteuert wird. Auch eine nette Variante.
Grüße
Gunther

obiwan

#76
Apr 28, 2013, 04:20 pm Last Edit: Apr 28, 2013, 05:02 pm by obiwan Reason: 1
Wo ist mein Fehler? Ich habe es jetzt nochmal anders "geschaltet". Das müsste genau deiner Schaltung entsprechen. Nun ist die LED aber aus und geht auch nicht an.
Bitte nicht wegen der Farben meckern, habe nur "feste" Steckbrücken und die haben eben diese Farben.

flohzirkus

Was du genau falsch machst, ist anhand der Fotos zwar möglich zu erkennen, aber extrem aufwendig - und wahrscheinlich wird kaum jemand Lust haben sich so viel Arbeit zu machen.

Was du besser machen kannst?
Auf die Gefahr hin, mich zu wiederholen:
- lasse erst einmal den Arduino ganz weg (außer zur Stromversorgung)
- nutze die Schienen in der Steckplatine für GND und +5V zur Übersichtlichkeit
- Bringe eine LED Optokoppler-gesteuert zu leuchten (geht das überhaupt? Wieviel Strom schaltet so ein Optokoppler? Keine Ahnung...)
- Und bringe dann den Arduino und dein Programm ins Spiel, wenn du verstanden hast, was deine Schaltung macht.

PS:
Und falls es da noch Lücken geben sollte: mache dich am Anfang schlau über die Begriffe Spannung, Stromstärke und Widerstand.


guntherb

#78
Apr 28, 2013, 05:13 pm Last Edit: Apr 28, 2013, 05:16 pm by guntherb Reason: 1
ich kann nicht so genau erkennen, was du gesteckt hast.
Aber es sollte so sein:

Erstmal alles raus bis auf den Optokoppler, den 1k Widerstand und die LED und neu stecken.

von 5V auf den 1K Widerstand Pin1
vom 1K Widerstand Pin2  auf LED_A
von LED_K auf Optokoppler Pin4
von Optokoppler Pin3 auf GND

(Du hast, zumindest in deiner ersten Variante, die LED parallel zum Optokoppler geschalten. deshalb ging das nicht)

die Eingangsseite sollte zum ersten Test so aussehen:
von GND auf Optokoppler Pin2
von Optokoppler Pin1 auf Widerstand 100R Pin1


Achtung - Test!
von Widerstand 100R Pin2 auf 5V
  ==> LED leuchtet ?   Gut!
Widerstand 100R Pin2 Verbindung trennen.
  ==> LED aus?   Gut!

jetzt
von Widerstand 100R Pin2 auf Pin2 Arduino.

Jetzt einen Testsketch laufen lassen:
Code: [Select]
// angelehnt an "BLINK" Beispiel

int led = 2;

void setup() {                
 pinMode(led, OUTPUT);    
}

void loop() {
 digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
 delay(1000);               // wait for a second
 digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
 delay(1000);               // wait for a second
}


Led Blinkt?  Gut!

Jetzt den Taster dazu und verdrahten:
von GND auf Taster Pin1
von Taster Pin2 auf Arduino Pin 13

Testsketch:
Code: [Select]
// angelehnt an Beispiel "BUTTON"
const int buttonPin = 13;     // the number of the pushbutton pin
const int ledPin =  2;      // the number of the LED pin

// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status

void setup() {
 pinMode(ledPin, OUTPUT);      
 pinMode(buttonPin, INPUT_PULLUP);    
}

void loop(){
 // read the state of the pushbutton value:
 buttonState = digitalRead(buttonPin);

 // check if the pushbutton is pressed.
 // if it is, the buttonState is HIGH:
 if (buttonState == HIGH) {    
   // turn LED on:    
   digitalWrite(ledPin, HIGH);  
 }
 else {
   // turn LED off:
   digitalWrite(ledPin, LOW);
 }
 delay(100);
}


jetzt sollte, immer wenn du den Taster gedrückt hältst, die LED leuchten.
Wenn das passiert, dann weißt du, dass deine SCHALTUNG funktioniert, und du kannst den Sketch weiterentwickeln.

Und, jedesmal, wenn du neue HW-Komponenten dazusteckst: Erst prüfen, ob der neue Teil funktioniert.
So, wie oben: mit ganz primitiven sketchen
Grüße
Gunther

obiwan

Sorry, aber da komme ich nicht mehr mit:


von 5V auf den 1K Widerstand Pin1
vom 1K Widerstand Pin2  auf LED_A
von LED_K auf Optokoppler Pin4
von Optokoppler Pin3 auf GND


und dann


von GND auf Optokoppler Pin2
von Optokoppler Pin1 auf Widerstand 100R Pin1


Wie soll ich erste von Optokoppler Pin3 auf GND gehen und dann von GND auf Optokoppler Pin2?
Und erst soll ich von  5V auf den 1K Widerstand Pin1 gehen und dann von Optokoppler Pin1 auf Widerstand 100R Pin1?

????

Wie soll ich das bitte verstehen? *heul*

flohzirkus

Vielleicht so, wie es da steht?

Der Optokoppler hat tatsächlich zwei Pins auf GND.
Selbst der Widerstand hat zwei Anschlüsse.

guntherb

Brauchst du es noch ausführlicher?????

Sorry, aber da komme ich nicht mehr mit:


Eine Drahtbrücke mit dem einen Ende in die  5V des Arduino stecken, mit dem anderen Ende  auf den 1K Widerstand Pin1
Eine Drahtbrücke mit dem einen Ende neben den anderen Pin vom 1K Widerstand stecken, mit den anderen Ende  auf LED_A
usw...
von LED_K auf Optokoppler Pin4
von Optokoppler Pin3 auf GND


und dann


von GND auf Optokoppler Pin2
von Optokoppler Pin1 auf Widerstand 100R Pin1


Wie soll ich erste von Optokoppler Pin3 auf GND gehen und dann von GND auf Optokoppler Pin2?
Und erst soll ich von  5V auf den 1K Widerstand Pin1 gehen und dann von Optokoppler Pin1 auf Widerstand 100R Pin1?

????

Wie soll ich das bitte verstehen? *heul*


ich habe es dir noch als Schaltplan und als Breadboard angehängt.

aber, verzeih mit die offenen Worte, mir scheint, du hast dir da für den Anfang ein etwas grosses PRojekt ausgesucht.
Du solltest erstmal ein paar Basics lernen.
Grüße
Gunther

obiwan

Danke für die Schaltpläne!

du hast dir da für den Anfang ein etwas grosses PRojekt ausgesucht.


Mag sein, aber ich habe ja ein konkretes Projekt und nur wegen diesem bin ich die ganze Sache ja auch angegangen.
Mein Ziel ist es ja nicht mit dem Arduino 100te von verschiedenen Projekten, etc. zu realisieren sondern eben nur dieses eine.
Klar hätte ich mir für 300-600 Euro eine fertige "Tropfenmaschine" kaufen können - das war mir dann doch aber zu einfach.
Das dieses Projekt sich soooo kompliziert (für mich als absoluter E-Laie) gestaltet konnte ich ja nicht ahnen.

Ich werd mir mal den 680-Seiten-Schmöker von Erik Bartmann reinziehen... Eigentlich ist das ganze Projekt etwas für kalte Wintertage - die sind nun aber (hoffentlich) vorbei. Da muss ich sehen wie ich zeitlich dazu komme.

Die Teile zum Zusammenbauen habe ich alle - mir fehlt nur noch der genaue Umsetzungsplan. Ich bin nur froh, dass ich das alles nicht schon wie in meinem Schaltplan beschrieben auf eine Platine gelötet habe sondern das ganze erst noch einmel durchteste - da währ ich schön Überrascht worden ...  :smiley-red:

obiwan

#83
Apr 29, 2013, 09:56 am Last Edit: Apr 29, 2013, 10:27 am by obiwan Reason: 1
So, jetzt habe ich das ganze nochmal "für mich leserlich" dargestellt um per Knopfdruck über den Arduino die Cam auszulösen.
Ich hoffe das das jetzt so richtig ist? Auch der Sketch?

Code: [Select]
const int CAM = 8;
const int BUTTON = 13;

int VAR = 0;

void setup()
  {
  pinMode(CAM, OUTPUT);
  pinMode(BUTTON, INPUT;
  }

void loop()
{
  VAR = digitalRead(BUTTON);

  if (VAR == HIGH)
     {
     digitalWrite(CAM, HIGH);
     }
  else
     {
     digitalWrite(CAM, LOW);
     }
}

JKbastler

Hallo,
Sketch passt so nicht, digitalread() einsetzen.
Schaltplan ist auch fehlerhaft. Wo soll High an Pin13 herkommen. Versuch es mit Pulldown- oder Pullupwiderständen.

MaFu

Im Schaltplan hat der Button keinen PullUp, Du solltest also den Internen PullUp aktivieren.
Code: [Select]
pinMode(BUTTON, INPUT_PULLUP);

Beim Auslesen des Buttons hast Du digitalWrite() anstelle digitalRead() geschrieben.

Im allgemeinen schreibt man Variablen klein bzw. in CamelCase Schreibweise (button, myButton), Großschrift wird nur für Konstanten verwendet (z.B. #define BUTTON 13).
_______
Manfred

obiwan

digitalread() einsetzen

Habe ich angepasst.

Wo soll High an Pin13 herkommen.

Durch den an 13 angeschlossenen Taster. Wenn ich den drücke soll der "Impus" die Kamera auslösen.

MaFu


digitalread() einsetzen

Habe ich angepasst.

Wo soll High an Pin13 herkommen.

Durch den an 13 angeschlossenen Taster. Wenn ich den drücke soll der "Impus" die Kamera auslösen.

Wie gesagt fehlt der PullUp an Pin 13. So hast Du einen flatternden Eingang, die Kamera wird wie wild ständig auslösen ohne dass Du den Button drückst.
_______
Manfred

sth77

Wie Mafu schon sagte, der Eingangspin muss immer ein definiertes Potenzial HIGH/LOW haben. Das erreicht man entweder über externe Pullup- bzw. Pulldown-Widerstände oder über die internen Pullups. In deiner Variante hast du ein Low am Eingang, wenn du den Taster drückst - drückst du den Taster jedoch nicht, liegt der Eingang frei.
Das einfachste wäre es, die Schaltung nicht zu verändern und pinMode(BUTTON, INPUT_PULLUP); im Sketch zu verwenden.
Mein verwaister Arduino-Blog: http://www.sth77.de/ - letzter Eintrag: Diamex-ISP in der irgendwann mal aktuellen Arduino-IDE 1.6.4

obiwan

Ok, dann müste es aber gehen, wenn ich If... else vertausche:

Code: [Select]
const int CAM = 8;
const int BUTTON = 13;

int VAR = 0;

void setup()
   {
   pinMode(CAM, OUTPUT);
   pinMode(BUTTON, INPUT);
   }

void loop()
{
   VAR = digitalRead(BUTTON);

   if (VAR == HIGH)
      {
      digitalWrite(CAM, LOW);
      }
   else
      {
      digitalWrite(CAM, HIGH);
      }
}


Oder ich verwende INPUT_PULLUP:

Code: [Select]
const int CAM = 8;
const int BUTTON = 13;

int VAR = 0;

void setup()
   {
   pinMode(CAM, OUTPUT);
   pinMode(BUTTON, INPUT_PULLUP);
   }

void loop()
{
   VAR = digitalRead(BUTTON);

   if (VAR == HIGH)
      {
      digitalWrite(CAM, HIGH);
      }
   else
      {
      digitalWrite(CAM, LOW);
      }
}


Würden so beide Varianten funktionieren?

Go Up