Pages: 1 ... 10 11 [12] 13 14   Go Down
Author Topic: Steuerung von Ventilen und Kamera für TaT-Aufnahmen  (Read 9605 times)
0 Members and 1 Guest are viewing this topic.
Germany
Offline Offline
Faraday Member
**
Karma: 49
Posts: 2756
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
mit  if (... == millis()) geht es nicht, da das zu kurz für das Programm ist

kann auch zu lang sein.
Sollte ganz egal sein, ob loop weniger als eine Millisekunde braucht oder mehr.

Quote
Das ich da nicht selber drauf gekommen bin...  smiley-red
Alle anderen (ausser uns beiden)  sind da von allein draufgekommen  smiley-mr-green

Quote
Hat das einen Grund, dass du die Boolschen Variablen am Anfang alle auf false gesetzt hast und im Programmablauf dann auf true
oder könte man das auch andersrumski machen?
Geht auch andersrum, kostet aber beim Start 62 ns mehr, da bei Reset alle Variablen erstmal auf 0 gesetzt werden.

Viel wichtiger ist eigentlich, dass ein Variablename auch das bedeutet was er sagt.
Code:
if ( ! ende ) {
  // mach was bis das Ende erreicht ist
   if (xyz) ende = true;
}
Logged

Offline Offline
Edison Member
*
Karma: 31
Posts: 1050
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hat das einen Grund, dass du die Boolschen Variablen am Anfang alle auf false gesetzt hast und im Programmablauf dann auf true
oder könte man das auch andersrumski machen?

So wie Michael geschrieben hat:
Boolsche Variablen sollten im Namen so gewählt werden, dass er die Bedeutung widerspiegelt.
In dem Falle: DoneAction1 bedeutet: die Aktion 1 ist erledigt.
Und am besten so initialisieren, dass bei ersten Programmaufruf alles so ist, dass das PRogramm reibungslos durchläuft.

Wenn DoneAction1 = true intialisiert würde, dann würde beim ersten Tastendruck nix passieren.
Wenn RunAction = true initialisiert werden würde, dann würde beim programmstart gleich die komplette Sequenz mal durchlaufen und alle Aktionen einmal ausgeführt.

Es gibt also keine Regel "alles false", es muß für jede Variable einzeln überlegt werden: "welchen Wert soll sie beim Start haben."

Logged

Grüße
Gunther

Offline Offline
Full Member
***
Karma: 0
Posts: 175
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok, habe nun dein Programm mit dem Serial Monitor verfolgt - alles super durchgelaufen. Dafür gibt's nochmal ein Karma für dich  smiley-lol (ok, sth77 und michael_x haben auch eins verdient  smiley-mr-green)

Werde mich nun daran machen, diesen Sketch für "meine Bedürfnisse" (also die Ein-/Ausschaltzeiten der Ventile und Kamera(s)) umzuschreiben.

Drückt mir die Daumen...  smiley-grin
« Last Edit: May 03, 2013, 10:19:44 am by obiwan » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 37
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Na, dann drücke ich auch mal die Daumen ...

viel Spaß mit den Tropfen smiley


* IMGP9865.jpg (31.56 KB, 480x442 - viewed 15 times.)
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 175
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich habe jetzt testweise mal 2-3 Widerstände auf eine Platine gelötet...

Also wenn ich die "Beinchen" weit genug auseinander durch die Löcher stecke (min. 2 freie Löcher zwischen den Beinchen) kann ich das "gut" festlöten.
Nun sind die "Beinchen" vom Optokoppler aber sehr klein (also nicht so lang wie bei den Widerständen) und liegen direkt nebeneinander (also keine 2 Löcher Abstand).
Wie ich das festlöten soll ohne die Beinchen miteinander zu verbinden weis ich wirklich noch nicht  smiley-red

Hat da jemand einen Tipp für mich?

Und wie stark sollte die Litze sein? Aktuell habe ich Ø 1,00 mm² - das finde ich schon sehr dick.
Was empfehlt ihr für eine Litze mit der ich auch die 12V Ventile mit verkabeln kann (zu klein darf der Ø ja auch nicht sein)?
Logged

Germany
Offline Offline
Edison Member
*
Karma: 44
Posts: 2261
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Also wenn du das Rastermaß von 2,54mm nicht löten kannst, solltest du vielleicht weniger Kaffee trinken. smiley-wink Wahrscheinlicher ist jedoch, dass deine Lötspitze bzw. der ganze Lötkolben zu groß ist. Womit lötest du denn?

Platinenrückseiten sehen bei mir in etwa so aus:



* Platine.jpg (242.07 KB, 800x600 - viewed 36 times.)
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Offline Offline
Edison Member
*
Karma: 31
Posts: 1050
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Und wie stark sollte die Litze sein? Aktuell habe ich Ø 1,00 mm² - das finde ich schon sehr dick.
Was empfehlt ihr für eine Litze mit der ich auch die 12V Ventile mit verkabeln kann (zu klein darf der Ø ja auch nicht sein)?


Du hast die Frage schonmal gestellt, und ich habe sie dir schonmal beantwortet:
Die Lötstation ist ok.

Du brauchst Elektronikzinn, Lötpumpe ist hilfreich, geht aber auch ohne.
Die "Dritte Hand" habe ich nie gewollt, aber das ist persönliche Vorliebe.
Ferner einen Seitenschneider, eine Spitzzange, evtl Pinzette.
Als Lupe für die feineren Arbeiten habe ich mir mal diese Stirnlupe gekauft, damit komme ich (Brillenträger!) ganz gut zurecht.

Litze: Schaltlitze 0,5mm² oder 0,25mm² ein paar Farben.
und: ich würde einfach mal eine Lochrasterplatine hernehmen, auf die dann ungefähr 100 Widerstände drauflöten, wahlweise drahtbrücken aus Silberschaltdraht. Dann hast du zumindest eine gewisse Grundfertigkeit im löten.
Und schau dir mal ein paar Lehrvideos auf Youtube an. Auch Löten will gelernt sein...

Grüße

Gunther

P.S.:
Mann, mann, mann.... wenn ich das alles mal durchrechne hätte ich mir für das Geld ja fast schon einen fertigen Tropfengenerator kaufen können...  smiley-money
Richtig!
Selber bauen ist selten billiger.
Macht aber mehr Spaß!

Schau' dir mal dieses Video an:

Hier ist das recht anschaulich, und vor allem, fachlich richtig!
(bei vielen anderen "Lehrvideos" wird teilweise völliger nonsens gezeigt)
Logged

Grüße
Gunther

Offline Offline
Full Member
***
Karma: 0
Posts: 175
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Platinenrückseiten sehen bei mir in etwa so aus:
Aber da sind doch das rote und das schwarze Kabel auf der Rückseite der Platine eindeutig miteinander verbunden (sieht roter Pfeil im angehängten Bild). Das geht doch so nicht - oder wo ist da mein Denkfehler?


* lötpunkte.jpg (41.15 KB, 291x190 - viewed 25 times.)
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 175
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hier ist das recht anschaulich, und vor allem, fachlich richtig!
Ha! Genau das hatte ich mir im Vorfeld schon angeschaut.
Wie stark soll den nun die Litze sein? Reichen 0,25 oder doch lieber 0,5?
Logged

Germany
Offline Offline
Edison Member
*
Karma: 44
Posts: 2261
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Aber da sind doch das rote und das schwarze Kabel auf der Rückseite der Platine eindeutig miteinander verbunden (sieht roter Pfeil im angehängten Bild).

Hier mal eine Detailansicht von der Bestückungsseite, diese Verbindung ist nur von einer Drahtschlaufe, die bei mir als Kabelzugentlastung dient. Also keine Sorge, da gibt es keinen Kurzschluss. Natürlich darf man diese Stelle nicht so lange erhitzen, bis sich die Drahtschlaufe durch die Isolierung der roten und schwarzen Litze geschmolzen hat. Denn dann gibt es tatsächlich einen Kurzschluss.


* Detail.jpg (73.84 KB, 300x400 - viewed 25 times.)
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Offline Offline
Full Member
***
Karma: 0
Posts: 175
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Natürlich darf man diese Stelle nicht so lange erhitzen, bis sich die Drahtschlaufe durch die Isolierung der roten und schwarzen Litze geschmolzen hat. Denn dann gibt es tatsächlich einen Kurzschluss.
Moment mal... die Drähte (also rot und schwarz) sind doch aber auf der Rückseite der Platine durch die Lötpunkte miteinander verbunden - von daher müsste es doch einen Kurzschluss geben. Oder "leiten" die Lötpunkte nicht sondern dienen nur der "Befestigung" der Teile auf der Platine???
Logged

Germany
Offline Offline
Edison Member
*
Karma: 44
Posts: 2261
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Zwei verbundene Lötpunkte leiten natürlich auch. Das ist zweimal die gleiche Schaltung, kannst anhand der Löcher auch auszählen, wo die rote und schwarze Litze endet, nämlich direkt vor dem Spannungsregler. Die Schlaufe hat keinerlei Verbindung zur Schaltung und ist einfach nur ein befestigter Drahtbügel.

Nochmal zur Verdeutlichung: Die Schlaufe liegt in der ersten durchgehenden Lötreihe (von unten gezählt), die Litzen sind in der 3. Reihe verlötet.
« Last Edit: May 05, 2013, 07:42:45 am by sth77 » Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Offline Offline
Edison Member
*
Karma: 21
Posts: 1407
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@sth77: Wie bekommst Du die Verbindungen zwischen den Lötaugen so sauber hin? Ich habe dabei immer das Problem, das sich beim entfernen des Lötkolbens das noch flüssige Lötzinn auf die Lötaugen zurückzieht und die Verbdingung wieder getrennt ist.
Mario.
Logged

Germany
Offline Offline
Edison Member
*
Karma: 44
Posts: 2261
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Gute Frage. Klappt einfach so. smiley-wink Ich setze jeweils etwas Lötzinn entlang der späteren Leitungsbahn. Diese verbinde ich dann jeweils zu Zweiergruppen und setze wieder an, um zwei Zweiergruppen zu einer Vierergruppe zu verbinden. Dadurch teilt man sich die Bahn ja in mehrere Einzelglieder, die zwischenzeitig auch mal etwas auskühlen können. Die Leiterbahn in einem Rutsch durchzuziehen ist mir auch noch nicht gelungen.
Einfacher ist es übrigens, ein Stück Draht auf der Lötseite in die Bahn einzulegen, dann ziehen sich die Lötstellen nicht auf ihr Pad zurück. So musste ich vorgehen, als ich auf den Prototypenplatinen löten musste, da ist zusätzlich noch Lötstopplack zwischen den Durchkontaktierungen.
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Offline Offline
Full Member
***
Karma: 0
Posts: 175
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo guntherb,

ich habe deinen Code von hier:

Um ein Ventil ein und wieder auszuschalten, brauchst du also 2 Aktionen.

jetzt mal umgesetzt, wobei ich ja bei der Kamera keine Ausschaltzeiten habe. Ich hoffe ich habe das so "richtig" umgesetzt?

Code:
// Sketch zur Steuerung von drei Ventilen und einer Kamera

const int VENTIL1 = 8;   // Pin 8  = Ventil 1
const int VENTIL2 = 9;   // Pin 9  = Ventil 2
const int VENTIL3 = 10;  // Pin 10 = Ventil 3
const int FOCUS = 11;    // Pin 11 = fucus
const int SHUTTER = 12;  // Pin 12 = shutter
const int TRIP = 13;     // Pin 13 = Starttaste

// Steuerungszeiten Veintile

unsigned long ven1_on = 1000;
unsigned long ven1_of = 1050;
unsigned long ven2_on = 1100;
unsigned long ven2_of = 1180;
unsigned long ven3_on = 1150;
unsigned long ven3_of = 1200;

// Steuerungszeiten Kamera

unsigned long focus_on = 1000;
unsigned long shutter_on = 1060;

// Steuerungszeiten sonstige

unsigned long endzeit = 2000;
unsigned long startzeit = 0;
unsigned long timestamp = 0;

// Boolsche Variablen zum starten/anhalten der einzelnen Aktionen

boolean ven1on = false;
boolean ven1of = false;
boolean ven2on = false;
boolean ven2of = false;
boolean ven3on = false;
boolean ven3of = false;
boolean focuson = false;
boolean shutteron = false;
boolean action = false;

void setup()
{
   pinMode(VENTIL1, OUTPUT);
   pinMode(VENTIL2, OUTPUT);
   pinMode(VENTIL3, OUTPUT);
   pinMode(FOCUS, OUTPUT);
   pinMode(SHUTTER, OUTPUT);
   pinMode(TRIP, INPUT_PULLUP);
}

void loop()
{
   if (digitalRead(TRIP) == LOW && !action)
   {
      delay(100);
      action = true;
      startzeit = millis();
   }
   if (action && !ven1on && startzeit + ven1_on < millis())
   {
   timestamp = millis();
   digitalWrite(VENTIL1, HIGH);
   ven1on = true;
   }
   if (action && !ven1of && startzeit + ven1_of < millis())
   {
   timestamp = millis();
   digitalWrite(VENTIL1, LOW);
   ven1of = true;
   }
   if (action && !ven2on && startzeit + ven2_on < millis())
   {
   timestamp = millis();
   digitalWrite(VENTIL2, HIGH);
   ven2on = true;
   }
   if (action && !ven2of && startzeit + ven2_of < millis())
   {
   timestamp = millis();
   digitalWrite(VENTIL2, LOW);
   ven2of = true;
   }
   if (action && !ven3on && startzeit + ven3_on < millis())
   {
   timestamp = millis();
   digitalWrite(VENTIL3, HIGH);
   ven3on = true;
   }
   if (action && !ven3of && startzeit + ven3_of < millis())
   {
   timestamp = millis();
   digitalWrite(VENTIL3, LOW);
   ven3of = true;
   }
   if (action && !focuson && startzeit + focus_on < millis())
   {
   timestamp = millis();
   digitalWrite(FOCUS, HIGH);
   focuson = true;
   }
   if (action && !shutter && startzeit + shutter_on < millis())
   {
   timestamp = millis();
   digitalWrite(SHUTTER, HIGH);
   delay(10);
   digitelWrite(SHUTTER; LOW);
   shutter = true;
   }
   if (action && !shutter && startzeit + endzeit < millis())
   {
   action = false;
   ven1on = false;
   ven1of = false;
   ven2on = false;
   ven2of = false;
   ven3on = false;
   ven3of = false;
   fucuson = false;
   shutteron = false;
   }
}
« Last Edit: May 06, 2013, 09:08:53 am by obiwan » Logged

Pages: 1 ... 10 11 [12] 13 14   Go Up
Jump to: