Show Posts
Pages: 1 ... 30 31 [32] 33 34 ... 77
466  International / Deutsch / Re: 3D Drucker Druckraum on: January 22, 2014, 09:33:11 am
Endschalter?
467  International / Deutsch / Re: Frage zur Motorsteuerung on: January 22, 2014, 09:30:48 am
Ich würde den Code anders aufteilen.

in jeder Loop zuerst die Taster lesen:
Code:
  if (digitalRead(Taster1) && !Aktion2) { //wenn Taster1 gedrückt wurde und keine Aktion2 läuft,
    Aktion1 = true; // dann  Aktion1 setzen.
  }
  if (digitalRead(Taster2) && !Aktion1) { //wenn Taster2 gedrückt wurde und keine Aktion1 läuft,
    Aktion2 = true; // dann  Aktion2 setzen.
  }

Dann hast du beide Taster abgefragt. Entprellen brauchst du nicht, weil beim ersten erkennen von HIGH wird bereits die Aktion gesetzt, die ausgeführt werden soll.  Und mit der verundung  "&& !Aktionx" erreichst du, dass ein Tastendruck erst wieder ausgewertet wird, wenn die andere Aktion abgelaufen ist.

Und dann führst du deine Aktionen aus:
Code:
  if (Aktion1) {        
    if(millis() - StartMillis < dauer1){         
      ...  // Motor ansteuern
    }else {   
      ...  // Motor abstellen
      Aktion1 = false;  // Wenn Zeit abgelaufen, Aktion1 beenden.
    }
  }

Das gleiche natürlich nochmal mit Aktion2. Ich habe es jetzt stark verkürzt dargestellt, aber das ist besser um erstmal eine Struktur reinzukriegen.

Am besten setzt du dich eh erstmal hin und schreibst dir mit Pseudocode eine Struktur auf.
Eben mit Pseudobefehlen wie "Motoran", "Motoraus", if (Zeitabgelaufen) etc.  Du kannst dich dabei durchaus an dem orientieren was du machen müßtest, wenn du das von hand machen solltest.
(Solche Pseudobefehle wie "Motoran" kann man dann später auch gut in Funktionen umwandeln!)

Es ist aber generell schwierig, vor allem als Anfänger, einen Code "trocken" zu schreiben.
Code schreiben ist das eine.
Herausfinden warum er nicht funktioniert (und er wird nicht auf Anhieb funktionieren!) das Andere.

Zum debuggen (also sehen, was der Controller wirklich macht, bietet es sich an über Serial.print() entsprechende Statusmeldungen auf dem Monitor auszugeben.

Also zum Beispiel, um mein oben angegebenes Beispiel zur Tasterabfrage zu kontrollieren:
Code:
  if (digitalRead(Taster1) && !Aktion2) { //wenn Taster1 gedrückt wurde und keine Aktion2 läuft,
    Aktion1 = true; // dann  Aktion1 setzen.
    Serial.println("  Taster 1 gedrueckt.")
  }
  if (digitalRead(Taster2) && !Aktion1) { //wenn Taster2 gedrückt wurde und keine Aktion1 läuft,
    Aktion2 = true; // dann  Aktion2 setzen.
    Serial.println("  Taster 2 gedrueckt.")
  }
468  International / Deutsch / Re: Frage zur Motorsteuerung on: January 22, 2014, 04:36:03 am
Ein Flag setzen bedeutet einfach sich was in einer Variablen merken.

z.B. so:
Code:
  TasterStatus1 = digitalRead(Taster1); //Auslesen ob Taster1 High ist
  if (TasterStatus1 == HIGH && !Aktion2) { //wenn Taster gedrückt wurde und keine Aktion2 läuft,
    Aktion1 = true; // dann in Aktion1 merken.
  }
 
  if (Aktion1) {         //wenn Taster gedrückt wurde, dann
    long dauer1 = 5000; //Motor1 soll 5sek laufen
    unsigned long currentMillis1 = millis(); //Merke aktuelle Zeitdauer = currentMillis1
    if(currentMillis1 - previousMillis1 < dauer1){  //Wenn Aktuelle Zeitdauer - vergangene Zeitdauer < 5sek dann Motoren laufen lassen
      ...  // Motor ansteuern
    }
    Aktion1 = false;
  }

Die Variablen Aktion1 und Aktion2 mußt du im Kopf als boolean deklarieren.
Ich würde auch andere Variablen z.B. dauer1 etc im Kopf deklarieren, und zwar als
"const unsigned long dauer1 = 5000;"
dann hast du alle Zeiten, die du evtl ändern möchtest an einer Stelle und mußt nicht suchen.
469  International / Deutsch / Re: Suche passendes Shield on: January 22, 2014, 04:19:52 am
Ich möchte VIELE Servos (zunächst 34) mit jeweils zwei Tastern bedienen.

Wenn du wirklich nur einzelne Servos mit jeweils zwei Tastern steuern willst, ohne irgendwelche gemeinsamen Funktionen, dann kannst du das Ganze modular aufteilen: z.B. Zwei Megas, die jeweils 17 Servos und 34Taster betreiben, oder, vielleicht besser einen Pro Mini (gibts für 4€) für jeweils 4-6 Servos inkl Taster (mehr als 4 Servos bei Verwendung der AD-Kanäle für Taster).
Dann hast du einzelne Module und kannst recht einfach erweitern.
470  International / Deutsch / Re: Mehrere Tabs parallel öffnen? on: January 21, 2014, 05:44:36 am
Das hatte ich mal probiert, aber nach einiger Zeit wollten die dann 70$ dafür haben.
471  International / Deutsch / Re: Mehrere Tabs parallel öffnen? on: January 21, 2014, 05:30:53 am
Jetzt möchte ich an der Stelle aber doch mal fragen:

Gibt es denn vernünfitige (kostenfreie) Alternativen zur Arduino-IDE?
Und zwar welche, die plug and play funktionieren, ohne dass ich vorher noch irgenwelche Makefiles oder Skripte schreiben muß.
472  International / Deutsch / Re: Schützansteuerung on: January 20, 2014, 01:08:34 pm
Wie gesagt, ich empfehle dir, die Schaltzeiten des Schütz einfach mal zu messen, das geht ganz schnell. (Siehe Beispielsketch im Anhang).

Dann siehst du, ob und welche Zenerdiode du brauchst.

Und vielleicht solltest du dir für die erste Experimentierphase zum entwickeln des Hochstromteiles einen Uno zulegen?
die sind robuster (und billiger!)
473  International / Deutsch / Re: Auto Tacho Signal on: January 20, 2014, 09:51:37 am
Nachtrag:
1. Das mit der Klemme W war blödsinn, das ist die Drehzahl.
 alles andere stimmt aber, besonders das mit der PWM, die nicht geht.  smiley
2. Da sich die Drehzahlgeber auf Hallsensoren am Rad stützen, früher ein Puls/Umdrehung, später 4-5 sollten die Frequenzen kleiner 200Hz sein. ist also mit Arduino machbar.
474  International / Deutsch / Re: Auto Tacho Signal on: January 20, 2014, 09:40:38 am
Ich denke nicht, dass du ein Sinus-Signal brauchst. Es sollte ein REchteck-Signal reichen.

Und, nochmal: Nein, PWM geht nicht!
Was du brauchst ist eine variable Frequenz.
475  International / Deutsch / Re: Auto Tacho Signal on: January 20, 2014, 09:29:21 am
Mein letztes Fahrzeug ohne CAN hatte eine Welle zum Tacho....

Mal im ernst: suche mal nach "Klemme W" im internet, das ist ein Tachosignal das von vielen Fahrzeugherstellern so verwendet wird (Wurde?) Aber ich kenne die normierung nicht. Auf alle Fälle 12V Pulse und die Frequenz ist proportional zur Geschwindigkeit.

Und es ist nicht mit PWM machbar, weil die Frequenz die Information trägt.
476  International / Deutsch / Re: Gepulste Spannung messen on: January 20, 2014, 09:17:41 am
Das sicherste ist, du isolierst das vollständig durch einen Optokoppler. Dann hast du getrennte Stromkreise.
Das ist beim AD leider nicht möglich.
477  International / Deutsch / Re: Gepulste Spannung messen on: January 20, 2014, 09:16:56 am
Der IGBT war zum Testen nur an 13V mit einer 100 W Halogenlampe (zwischen Plus und Kollektor) angeschlossen.

Auch wenn du keine induktive Last hast, kann beim Abschalten durch die Leitungsinduktivitäten ein Spannungspuls entstehen, der um ein Vielfaches über der Versorungsspannung liegt. ==> Das könnte deinen Due getötet haben.

Aber bei diesen Strömen ist auch die Masseführung nicht zu verachten. Auch hier entstehen gerne Spannungsversätze.
AD-Eingänge zu schützen ist immer sehr schwer, weil Zenerdioden bereits bei Spannungen unterhalb der Zenerspannung nennenswerte Ströme ziehen. Besser ist hier eine Schottky-Diode gegen 3,3V, aber auch  hier müssen die Leckströme beachtet werden, die sonst das Messergebnis beeinflussen.
478  International / Deutsch / Re: Hilfe zu Motortreiber mit MC33926 on: January 20, 2014, 08:51:30 am
ja, und du du kannst auch Pins mit 980Hz haben, was aber die Sache auch nicht besser macht. Das Pfeifen wird nur höher.
Quote
The frequency of the PWM signal on most pins is approximately 490 Hz. On the Uno and similar boards, pins 5 and 6 have a frequency of approximately 980 Hz.

Bei Motoren wirst du ab 10Khz meist nichts mehr hören, weil die Laufgeräusche lauter sind.
Du wirst also nicht umhinkommen, deine PWM-Frequenz zu ändern.
479  International / Deutsch / Re: Pumpensteuerung für NOOB on: January 20, 2014, 08:44:35 am
Wenn du wirklich Flüssigkeiten mischen willst wäre eine Zahnradpumpe vielleicht besser. Die sind in der Menge konstanter als Kreiselpumpen.
480  International / Deutsch / Re: Pumpensteuerung für NOOB on: January 20, 2014, 08:38:22 am
Wenn du wirklich keine Ahnung hast, dann empfiehlt es sich mit fertigen Shields zu arbeiten.

Falls du Pumpen mit PWM steuern willst, also die Fördermenge steuern, brauchst du ein Mosfet-Shield.
Das, das im Video gezeigt wurde, oder http://oceancontrols.com.au/SFA-406.html oder http://www.ebay.de/itm/Arduino-FET-shield-/370593835709. Es gibt bestimmt noch andere.

Wichtig wäre aber, dass du dich bezüglich der Pumpen entscheidest, was du brauchst.
das kann auch die Auswahl des Shield beeinflussen, und die Auswahl der Netzteile sowieso.

edit: geklärt
Pages: 1 ... 30 31 [32] 33 34 ... 77