Forum: Mikrocontroller und Digitale Elektronik Arduino Hilfe


von Dan N. (noname88)


Angehängte Dateien:

Lesenswert?

Hallo, ich kenne mich mit Arduino-Programmierung noch nicht aus.
Vielleicht wäre jemand so nett und hilft mir bei meinem Projekt.
Die Aufgabe ist eigentlich ganz einfach...siehe Schaltplan im Anhang.

Wenn der Taster S1 betätigt wird, soll sofort das Relais anziehen und 
nach einer bestimmten Zeit wieder abfallen. Also eine 
Ausschaltverzögerung.
Die Zeit soll im Millisekundenbereich sein z.B. 90ms.

Mein Code bisher:

}const int reed = 2;
const int relay = 8;
int reedstatus = 0;

void setup() {
  // put your setup code here, to run once:
pinMode(relay, OUTPUT);
pinMode(reed, INPUT);

}

void loop() {
  // put your main code here, to run repeatedly:


Vielen Dank im Voraus.
MfG6

von Michael U. (amiga)


Lesenswert?

Hallo,

wenn Du pinMode gefunden hast, sollte Dir digitalRead() und 
digitalWrite() auch begegnet sein. delay() vermutlich auch und für den 
Anfang durchaus erstmal nutzbar.

Ich kenne zwar Dein Relais nicht, aber mit etwas Pech hat das nach 90ms 
gerade mal fertig angezogen. Ein Relais ist Mechanik...

Gruß aus Berlin
Michael

von Joachim B. (jar)


Lesenswert?

Dan N. schrieb:
> Wenn der Taster S1 betätigt wird, soll sofort das Relais anziehen und
> nach einer bestimmten Zeit wieder abfallen. Also eine
> Ausschaltverzögerung.

zuerst musst du mal dein Ziel definieren!

was wenn der Taster nie losgelassen wird (oder hängt)?
startet die Zeit nach Taster drücken oder nach Taster loslassen?

wie du schreibst also sofort nach Taster drücken.....

nur wenn der Taster nie losgelassen wurde (oder hängt), was dann?
was wenn dein Relais 100ms bis zum Anziehen braucht, soll es dann nicht 
losgehen weil deine Zeit ja 90ms vorgibt? (das würde bedeuten man lässt 
das Relais abfallen bevor es richtig angezogen hatte)

Ich würde das auch nicht Ausschaltverzögerung nennen....

Für mich wäre eine Ausschaltverzögerung,

Taster wird gedrückt, Relais zieht an solange bleibt das Relais 
angezogen
Taster wird losgelassen und dann erst 90ms später wird auch das Relais 
abgeschaltet.

von kenny (Gast)


Lesenswert?

Wofür soll R2 gut sein?

von Stefan F. (Gast)


Lesenswert?

R2 stellt sicher, dass der Eingang des µC auf Low Pegel liegt, wenn der 
Taster losgelassen ist.

von Einer K. (Gast)


Lesenswert?

kenny schrieb:
> Wofür soll R2 gut sein?

Sowas nennt man öfter mal auch Pulldown Widerstand.
Eigentlich recht üblich, die Verwendung von Pulldowns.

von Wolfgang (Gast)


Lesenswert?

kenny schrieb:
> Wofür soll R2 gut sein?

Der wird wohl einen Spannungsteiler mit dem Schalter bilden.
(Bei der unkonventionellen Zeichnungsweise allerdings schwer zu 
erkennen)

Trotzdem sollt natürlich der Gnd-Pin des Arduino mit Gnd verbunden sein.

von kenny (Gast)


Lesenswert?

Wolfgang schrieb:
> kenny schrieb:
>> Wofür soll R2 gut sein?
>
> Der wird wohl einen Spannungsteiler mit dem Schalter bilden.
> (Bei der unkonventionellen Zeichnungsweise allerdings schwer zu
> erkennen)
>
> Trotzdem sollt natürlich der Gnd-Pin des Arduino mit Gnd verbunden sein.

Genau das kommt mir spanisch vor :)
Denke auch hier liegt ein Fehler im Schaltplan vor.
R2 sorgt für einen Spannungsabfall, somit ist der Arduiono GND immer 
größer als GND.

von Dan N. (noname88)


Lesenswert?

Ok, dann versuche ich es anders zu formulieren.
Sobald der Kontakt S1 geschlossen ist soll für eine einstellbare Zeit(in 
meinem Beispiel hab ich mal 90ms genommen)am Ausgang D8 ein Highsignal 
sein, unabhängig davon, ob S1 wieder öffnet oder nicht.

@kenny: R2 ist dazu da, um Störsignale und Spannungsschwankungen 
abzuleiten.

von Einer K. (Gast)


Lesenswert?

kenny schrieb:
> Genau das kommt mir spanisch vor :)
> Denke auch hier liegt ein Fehler im Schaltplan vor.
> R2 sorgt für einen Spannungsabfall, somit ist der Arduiono GND immer
> größer als GND.

Denke dir den Widerstand zur Brücke, und der Taster macht einen 
Kurzschluss.
Nein, der gehört da hin.

von Dan N. (noname88)


Lesenswert?

Ach ja und der Arduino hängt natürlich an einer externen Batterie.
Das heißt das der R2 die Störsignale nach GND ableitet.

von Dan N. (noname88)


Lesenswert?

Da habt ihr recht, ich hab die Spannungsversorgung für den Arduino nicht 
eingezeichnet, daher etwas verwirrend mit dem GND. sorry

von Stefan F. (Gast)


Lesenswert?

Im Arduino Umfeld ist es nicht ungewöhnlich, dass man die 
Netzteil-Buchse und den integrierten Spannungsregler des Arduino Boardes 
verwendet. Insofern ist das Arduino Board häufig selbst die 
Spannungsquelle (etwas vereinfacht betrachtet).

von Joachim B. (jar)


Lesenswert?

Dan N. schrieb:
> Sobald der Kontakt S1 geschlossen ist soll für eine einstellbare Zeit(in
> meinem Beispiel hab ich mal 90ms genommen)am Ausgang D8 ein Highsignal
> sein, unabhängig davon, ob S1 wieder öffnet oder nicht.

das funktioniert halt nicht!

schrieb ich ja schon,
aber egal

von Wolfgang (Gast)


Lesenswert?

Arduino F. schrieb:
> kenny schrieb:
>> Wofür soll R2 gut sein?
>
> Sowas nennt man öfter mal auch Pulldown Widerstand.
> Eigentlich recht üblich, die Verwendung von Pulldowns.

Üblicher, zumindest bei Mikrocontrollern, ist die Verwendung von Pull-Up 
Widerständen. Für viele Anwendungen reichen sogar schon die intern 
vorhandenen. Seinen pinMode-Wortschatz muss man dazu noch um 
"INPUT_PULLUP" erweitern.
Der Taster schaltet dann einfach gegen Gnd.

von Dan N. (noname88)


Lesenswert?

Stefan U. schrieb:
> Im Arduino Umfeld ist es nicht ungewöhnlich, dass man die
> Netzteil-Buchse und den integrierten Spannungsregler des Arduino Boardes
> verwendet. Insofern ist das Arduino Board häufig selbst die
> Spannungsquelle (etwas vereinfacht betrachtet).

So war es ja auch gedacht...der Arduino wird extern mit 9V versorgt, 
d.h. dass der eingezeichnete GND mit Masse der 9V-Versorgung verbunden 
ist.


Joachim B. schrieb:
> Dan N. schrieb:
>> Sobald der Kontakt S1 geschlossen ist soll für eine einstellbare Zeit(in
>> meinem Beispiel hab ich mal 90ms genommen)am Ausgang D8 ein Highsignal
>> sein, unabhängig davon, ob S1 wieder öffnet oder nicht.
>
> das funktioniert halt nicht!
>
> schrieb ich ja schon,
> aber egal

und wieso funktioniert das nicht? Es muss doch möglich sein, mit einem 
Mikrocontroller einen Ausgang für eine bestimmte Zeit auf high zu 
schalten?

von Einer K. (Gast)


Lesenswert?

Dan N. schrieb:
> Es muss doch möglich sein, mit einem
> Mikrocontroller einen Ausgang für eine bestimmte Zeit auf high zu
> schalten?

Natürlich ist das möglich!

von Dan N. (noname88)


Lesenswert?

Noch einfacher gesagt:
Ab dem Zeitpunkt an dem an D2 ein High-signal ist, soll für eine 
bestimmte Zeit ein High-Signal an D8 sein.

von Dan N. (noname88)


Lesenswert?

Arduino F. schrieb:
> Dan N. schrieb:
>> Es muss doch möglich sein, mit einem
>> Mikrocontroller einen Ausgang für eine bestimmte Zeit auf high zu
>> schalten?
>
> Natürlich ist das möglich!

Und wie würde dann die Programmierung aussehen?

von Wolfgang (Gast)


Lesenswert?

Dan N. schrieb:
> Und wie würde dann die Programmierung aussehen?

Wenn D2 von Low auf High wechselt, muss D8 auf High gesetzt werden, 80 
ms gewartet werden und D8 wieder auf Low gesetzt werden.

Wie es dann weiter geht, hängt von deinen genauen Vorstellungen ab.

von Stefan F. (Gast)


Lesenswert?

Hast schon mal irgendein Arduino Tutorial durchgearbeitet? Als erstes 
lässt man gerne eine LED Blinken, und als zweite Übung kommt dann oft so 
etwas ähnliches, was du vor hast.

Wir zögern absichtlich damit, Dir dieses Programm vor zu kauen. Arduino 
ist eine Lern-Plattform und die Aufgabe ist sehr einfach. Das kannst und 
sollst du selber lernen. Das Schwierigkeitsniveau entspricht in etwa dem 
Kochen von Nudeln in einem Anfänger-Kochbuch.

Fertige Programme muss man kaufen, gegen angemessene Bezahlung findest 
du hier sicher jemanden, der das für Dich macht.

von Andy H. (gastrelais)


Lesenswert?

Ich weiß nichts obs wirklich stimmt aber das wäre jetzt mal ein grobes 
Beispiel. Pins habe ich frei Schnauze mal gewählt. Den Taster kann man 
auch noch entprellen.


void setup()
{
  pinMode( 5 , INPUT);
  pinMode( 8 , OUTPUT);
}

void loop()
{
  if (digitalRead(5))
  {
    digitalWrite( 8 , HIGH );
    delay( 90 );
    digitalWrite( 8 , LOW );
  }
}

von Du bist ja einer (Gast)


Lesenswert?

Andy H. schrieb:
> Ich weiß nichts obs wirklich stimmt aber das wäre jetzt mal ein grobes
> Beispiel.

Hat der TO in seiner Funktionsbeschreibung irgendetwas davon gesagt, 
dass die LED alle 90ms kurz ausgehen soll?

von Andy H. (gastrelais)


Lesenswert?

Muss er halt den Finger wieder runternehmen :-p

von Dan N. (noname88)


Angehängte Dateien:

Lesenswert?

hab jetzt nochmal eine überarbeitete Schaltung angehängt, ich denke 
jetzt macht das mehr sinn...

von Einer K. (Gast)


Lesenswert?

Ja!

von Joachim B. (jar)


Lesenswert?

Dan N. schrieb:
> ich denke
> jetzt macht das mehr sinn...

na ja, mehr Sinn würde ein pullup machen -> R und Taster getauscht, dann 
wäre beim Verkabeln und Kurzschluß wenigstens der Strom begrenzt!

Die Abfrage sollte dann nach 0 erfolgen, also auch umgedreht.

Üblicherweise sind oft mehr interne pullups als pulldowns verbaut und 
mit externen pullups vergisst man die nicht einzuschalten sondern kann 
ausserdem noch die Störunempfindlichkeit beeinflussen, hochohmig bei 
kurzen Leitungen und in störarmer Umgebung, niederohmiger wenn es 
gebraucht wird.

von Georg M. (g_m)


Lesenswert?

Dan N. schrieb:
> const int reed = 2;
> const int relay = 8;
> int reedstatus = 0;

const int reed = 2;
const int relay = 8;
int reedstatus = 0;
int prevreedstatus = 0;    // previous status

von Stefan F. (Gast)


Lesenswert?

> mehr Sinn würde ein pullup machen

Das ist völlig egal, solange es zum Programm passt. Jetzt lenke doch 
nicht von der eigentlichen Frage ab, du verwirrst den TO nur unnötig!

von Joachim B. (jar)


Lesenswert?

Stefan U. schrieb:
> du verwirrst den TO nur unnötig!

sorry ich wollte dir nicht ins Handwerk pfuschen, weil du ja das sonst 
übernimmst :)

also pullup vor pulldown ist störsicherer!

Zu den anderen Fragen sollte der TO noch mal nachdenken, das muss er 
definitiv selber übernehmen!

Du bist ja einer schrieb:
> Hat der TO in seiner Funktionsbeschreibung irgendetwas davon gesagt,
> dass die LED alle 90ms kurz ausgehen soll?

und was ist wenn die 90ms nicht zur mindest ON Zeit passen, trotzdem 
abschalten oder nicht erst einschalten?

von Stefan F. (Gast)


Lesenswert?

Alles gute Fragen. Willkommen in der Welt der Softwareentwickler.

von Dan N. (noname88)


Lesenswert?

Ich versuche jetzt mal zu kommentieren, mal sehen ob ich es einigermaßen 
verstanden habe.


> void setup()
> {
>   pinMode( 5 , INPUT);      //hier wird der Pin 5 als INPUT deklariert
>   pinMode( 8 , OUTPUT);     //hier wird der Pin 8 als OUTPUT deklariert
> }
>
> void loop()
> {
>   if (digitalRead(5))         //hier wird abgefragt, ob Pin 5 high ist
>   {
>     digitalWrite( 8 , HIGH ); //wenn Pin 5 high ist,dann geht Pin8 auf High
>     delay( 90 );              //Zeitverzögerung 90ms
>     digitalWrite( 8 , LOW );  //wenn 90ms abgelaufen sind,geht Pin8 auf low
>   }
> }

Stimmt das so in etwa??

von guest (Gast)


Lesenswert?

Dan N. schrieb:
> Stimmt das so in etwa??

Prinzipiell ja. Jetzt mußt Du nur noch Deine zusätlichen Bedingungen 
einbauen. So wie es jetzt ist zieht Dein Relais sofort wieder an, wenn 
Du den Finger nicht schnell genug vom Taster nimmst.

von Dan N. (noname88)


Lesenswert?

ja da wäre es gut, wenn man eine sperre von ca. 500ms einbauen könnte.
D.h. nach dem ersten Kontakt von S1 muss erst eine zeit von 500ms 
ablaufen, bevor D8 ein weiteres mal auf high geht

von Andy H. (gastrelais)


Lesenswert?

Ich hatte erst nur den Erstbeitrag gelesen. Wenn der Taster aktiv bleibt 
klappt es natürlich nicht.
Da musst du dir nun Gedanken um deine Bedingungen machen (Taster bleibt 
gedrückt usw.). Auch die 90ms werden recht sportlich sein. Aber da 
kannst du ja dann rumprobieren.

von guest (Gast)


Lesenswert?

guest schrieb:
> So wie es jetzt ist zieht Dein Relais sofort wieder an, wenn
> Du den Finger nicht schnell genug vom Taster nimmst.

PS: Um genau zu sein wird Dein Relais garn nicht erst abfallen solange 
der Taster gedrückt ist. So ein µC ist im Vergleich zu einem Relais 
rasend schnell, der hat das Relais schon wieder eingeschaltet, bevor 
dieses überhaupt mitbekommen hat, daß es abschalten soll.

von Andy H. (gastrelais)


Lesenswert?

Dan N. schrieb:
> ja da wäre es gut, wenn man eine sperre von ca. 500ms einbauen könnte.
> D.h. nach dem ersten Kontakt von S1 muss erst eine zeit von 500ms
> ablaufen, bevor D8 ein weiteres mal auf high geht

Na dann setz halt noch ein Delay mit rein. Teste einfach mal etwas rum. 
Auf Youtube gibt es auch viele Beispiele.

von Wolfgang (Gast)


Lesenswert?

Dan N. schrieb:
> Stimmt das so in etwa??

Na ja. Der Ausgang geht für 90ms auf High, wenn der Taster gedrückt 
ist. Laut deiner ursprünglichen Aufgabenstellung sollte für die Zeit 
auf High gehen, wenn der Taster gedrück wird.
Im einen Fall fragst du den aktuellen Zustand ab, im anderen Fall 
reagiert der Ausgang auf eine Zustandsänderung.

von Andy H. (gastrelais)


Lesenswert?

Wolfgang schrieb:
> Dan N. schrieb:
>> Stimmt das so in etwa??
>
> Na ja. Der Ausgang geht für 90ms auf High, wenn der Taster gedrückt
> ist. Laut deiner ursprünglichen Aufgabenstellung sollte für die Zeit
> auf High gehen, wenn der Taster gedrück wird.
> Im einen Fall fragst du den aktuellen Zustand ab, im anderen Fall
> reagiert der Ausgang auf eine Zustandsänderung.

Sicher? Hab doch extra das else weggelassen :-(

@Dan
http://starthardware.org/arduino-programmieren/

von Joachim B. (jar)


Lesenswert?

Stefan U. schrieb:
> Alles gute Fragen. Willkommen in der Welt der Softwareentwickler.

das musste ich schon vor 30 Jahren lernen, man entwickelt ein Prüfmittel 
und testet die Tasten die gedrückt werden sollen!

Im Prüffeld wurden wir immer wieder überrascht was passiert wenn die 
Bediner mal andere Tasten drücken was der Entwickler nicht vorgesehen 
hatte!

Heute stelle ich fest bei online Bestellung kann ich 4 Adresszeilen 
eingeben mit je 40 Zeichen, aber egal wie ich es anstelle,

mal fehlt auf dem Adressaufkleber die Adresszusatzbezeichnung der 
Abteilung, kann nicht geliefert werden
mal wird auf dem Adressaufkleber nur 20 Zeichen gedruckt, kann nicht 
geliefert werden

mal beides und immer wieder kommen deswegen Bestellungen nicht an.

Das größte Ärgernis der heutigen Zeit, ich frage mich ob die heutigen 
Programmierer alle billige Computerinder oder 12-jährige 
Hobbyprogrammierer sind, gerade im online Handel könnte man doch 
erwarten (professionell) das sowas geprüft wird.

von Dan N. (noname88)


Lesenswert?

Hab jetzt eine andere Frage: Kann der uC auf Tastendruck zwei Ausgänge 
kurzschließen? So könnte ich mir das Relais ja komplett sparen...

von Andy H. (gastrelais)


Lesenswert?

Dan N. schrieb:
> Hab jetzt eine andere Frage: Kann der uC auf Tastendruck zwei Ausgänge
> kurzschließen? So könnte ich mir das Relais ja komplett sparen...

Was meinst du mit kurzschließen? Was willst du überhaut machen? Also was 
ist das Ziel?

von Wolfgang (Gast)


Lesenswert?

Andy H. schrieb:
> Sicher? Hab doch extra das else weggelassen :-(

Aber du weißt bei der Entscheidung nicht, in welchem Zustand der Taster 
vorher war - dafür fehlt ein Gedächnis.

von Joachim B. (jar)


Lesenswert?

Dan N. schrieb:
> Tastendruck zwei Ausgänge
> kurzschließen?

nicht wirklich

er kann 2x GND ausgeben oder 2x VCC

wenn es sich um sehr ähnliche Spannung handelt die frei hängen zum 
Arduino doer gleich angebunden sind geht das bedingt.

Er kann keine 48V= oder 230V~ zusammenbringen!

Eine LED mit 20mA die am VCC vom Arduino mit RV hängt kann er wohl nach 
+ oder GND bringen, aber keinen LED Stripe mit 12V oder 10A

: Bearbeitet durch User
von Andy H. (gastrelais)


Lesenswert?

Ich weiß ja noch gar nicht was er wirklich will. Jetzt soll er sich halt 
mal Gedanken machen und einlesen. Darum habe ich ihm ja einen Link 
geschickt.

von fast (Gast)


Lesenswert?

Joachim B. schrieb:
> also pullup vor pulldown ist störsicherer!

aus reiner Neugier, woran liegt das?

von Joachim B. (jar)


Lesenswert?

fast schrieb:
> aus reiner Neugier, woran liegt das?

möglicherweise an den Pegeln, es scheint wohl leichter für Störungen zu 
sein den pulldown nach oben zu heben als den pullup nach unten zu 
befördern.

Für die high Erkennung genügt wohl meist weniger Spannung, sagen wir 
1,5V bei 5V.

Das low zur Erkennung macht der Taster nach low besser als der R mit 
seinen kOHM

ansonsten frage die ICs, ich bin nicht aus Silizium.

von Dan N. (noname88)


Lesenswert?

Andy H. schrieb:
> Ich weiß ja noch gar nicht was er wirklich will. Jetzt soll er
> sich halt mal Gedanken machen und einlesen. Darum habe ich ihm ja einen
> Link geschickt.

Danke für den Link. Ich werde morgen mal rumprobieren.

Also, zur Erklärung. Ich hab früher mal eine Schaltung gebaut fürs 
Motorrad. Einen so genannten Schaltautomaten. Den hab ich mit einem 
NE555 und Poti zur Einstellung der Abfallzeit vom Relais gebaut. Das 
Teil hat auch funktioniert. Aber jetzt möchte ich es umbauen auf uC, 
damit ich eben die Zeit genau einprogrammieren kann. Das Relais soll 
lediglich für kurze Zeit die Zündung unterbrechen. Der S1 ist ein 
Reedkontakt und ist am Schalthebel montiert. Der Reedkontakt ist so 
montiert,dass der Kontakt bei Betätigung des Ganghebels,jedoch vor dem 
tatsächlichen Gangwechsel schließt und den D2 auf high setzt. Das Relais 
soll für eine Zeit zwischen 65 und 75ms die Zündung unterbrechen.
Zur Info: Das ganze wird nur auf der Rennstrecke verwendet,also alles 
legal.

Das mit dem kurzschließen der Ausgänge vergisst ihr am besten wieder, da 
hatte ich einen groben denkfehler! Genau das Gegenteil ist nämlich der 
Fall. Wenn ich das ganze ohne Relais machen wollte, dann müsste ich die 
zwei Leitungen der Zündung nehmen und an zwei Ausgänge des uC 
anschließen. Ist es dann möglich,diese zwei Ausgänge mittels uC 
dauerhaft zu verbinden und eben kurzzeitig zu öffnen?

von Stefan F. (Gast)


Lesenswert?

> Für die high Erkennung genügt wohl meist weniger Spannung

Bei Arduino gelten ungefähr die gleichen Schwellwerte wie für allgemeine 
CMOS Logik:

  * High = mehr als 2/3 der Versorgungsspannung
  * Low = weniger als 1/3 der Versorgungsspannung

Der verbotene Bereich dazwischen liegt genau in der Mitte. Aufgrund des 
symmetrischen Verhaltens sehe keinen Vorteil beim Pull-Down Widerstand 
verglichen mit dem Pull-Up Widerstand.

Wenn wir hier TTL Pegel hätten, würde ich jedoch zustimmen.

von Joachim B. (jar)


Lesenswert?

Stefan U. schrieb:
> Aufgrund des
> symmetrischen Verhaltens sehe keinen Vorteil beim Pull-Down Widerstand
> verglichen mit dem Pull-Up Widerstand.

musst du nicht sehen, fühle es einfach!

Baue Geräte und prüfe was besser funktioniert!
Es bleibt dabei, bei pullup ist der Strom auf der Strippe begrenzt, bei 
pulldown mit Taster nach VCC eben nicht wenn der Taster gedrückt wird 
und irgendwo ein GND Bezug reinkommt.

von Sumo (Gast)


Lesenswert?

Joachim B. schrieb:
> Es bleibt dabei, bei pullup ist der Strom auf der Strippe begrenzt, bei
> pulldown mit Taster nach VCC eben nicht wenn der Taster gedrückt wird
> und irgendwo ein GND Bezug reinkommt.

Ich benutze ebenfalls Pullup und Kontakte gegen GND.
Aber das, was du bezüglich des Stromes sagst, kann man genauso gut auch 
andersherum sagen. Hier ist der Strom auch nicht begrenzt, wenn die 
geschaltete Leitung von irgendwoher einen VCC-Bezug hat. Das kann man 
drehen und wenden, man bekommt immer eine Lösung mit Vorteilen und eine 
mit Nachteilen...

von Joachim B. (jar)


Lesenswert?

Sumo schrieb:
> Das kann man
> drehen und wenden, man bekommt immer eine Lösung mit Vorteilen und eine
> mit Nachteilen...

ist nur meine Erfahrung, üblicherweise sind pullup mit Taster nach GND 
sicherer, ein Indiez könnte sein das es mehr intern schaltbare pullups 
-> AVR gibt oder I konst Quellen aus VCC -> PCF8574(a) als pulldown 
Widerstände.

Es mag theroretisch egal sein und es mag Ausnahmen geben wo es genau 
anders besser läuft, ich kann nur von meinen "Erfahrungen" und den von 
anderen berichten die mit pulldowns weniger Erfolg hatten.

von Sumo (Gast)


Lesenswert?

Joachim B. schrieb:
> ist nur meine Erfahrung,

Ich will das ja auch nicht schlecht reden. Ich verwende wie gesagt auch 
Pullup's und keine Pulldown's. Aber das Argument "was passiert bei einem 
Kurzschluss mit GND-Bezug" sollte man auch mal gegenteilig betrachten. 
Nichts anders wollte ich tun, ok? :-)

von Joachim B. (jar)


Lesenswert?

Sumo schrieb:
> Aber das Argument "was passiert bei einem
> Kurzschluss mit GND-Bezug" sollte man auch mal gegenteilig betrachten.

klaro nur ist es leichter auf GND zu treffen als auf VCC

Aktive Leitung mit VCC ohne R trifft öfter auf GND, Masseflächen, 
Schirmbleche, Chassis uvam. als man auf mit GND auf echte VCC trifft.

Nichts anderes wollte ich sagen.

von Andy H. (gastrelais)


Lesenswert?

Ich arbeite generell mit Pulldowns. Ich verbaue fast immer Potentiometer 
und halte damit auch dann eine klare Linie ein. Oder man will den 
Tastzustand per LED anzeigen lassen. Ist halt eine Sache des 
Anwendungsfalls.

von Dan N. (noname88)


Angehängte Dateien:

Lesenswert?

So ich hab jetzt mit verschiedenen Delays usw. herumprobiert.
Ich bin jetzt zu einem Ergebnis gekommen, bei dem ich denke, dass es 
soweit passt:

void setup()
{
  pinMode( 2 , INPUT);
  pinMode( 8 , OUTPUT);
}

void loop()
{
  if (digitalRead(2))
  {
    digitalWrite( 8 , HIGH );
    delay( 70 );
    digitalWrite( 8 , LOW );
    delay(1000);
  }
}

Meine Simulation mit dem Relais und LED war erfolgreich.

Jetzt bliebe nur noch das Problem mit der anderen Variante, indem man 
das Relais komplett weglässt.
Ich habe leider keine Ahnung wie das dann softwaretechnisch 
funktionieren könnte...jemand eine Idee?

Auf jeden Fall ein Dankeschön an Alle bisher...

von Andy H. (gastrelais)


Lesenswert?

Da würde mir nur einfallen die Zündung über einen z.B. Mosfet zu 
aktivieren und diesen dann bei Bedarf wegzuschalten. Aber KFZ-technisch 
bin ich da nicht so belesen.
Da wird es ja mit Spannungen über 100 Volt gehen denk ich mal.

Vielleicht sowas? 
http://www.datasheetcatalog.com/datasheets_pdf/I/R/F/P/IRFPC60.shtml

: Bearbeitet durch User
von Dan N. (noname88)


Lesenswert?

Andy H. schrieb:
> Da würde mir nur einfallen die Zündung über einen z.B. Mosfet zu
> aktivieren und diesen dann bei Bedarf wegzuschalten.

Ich denke da eher an was ganz Einfaches. Ist es möglich dem uC einen 
Befehl zu geben, in dem ich z.B. D5 mit D6 intern verbinde? Und diese 
Verbindung durch einen weiteren Befehl kurzfristig öffne? Ist sowas 
generell realisierbar?

Andy H. schrieb:
> Da wird es ja mit Spannungen über 100 Volt gehen denk ich mal.

Nein. Der Zündkreis hat auch nur 12 Volt.

von Joachim B. (jar)


Lesenswert?

Dan N. schrieb:
> Ist es möglich dem uC einen
> Befehl zu geben, in dem ich z.B. D5 mit D6 intern verbinde?

NEIN nur über den Umweg VCC oder GND der Versorgung vom µC

aber das schrieb ich schon, ES IST AUF KEINEN FALL MÖGLICH DEINEN 
ZÜNDKREIS DARÜBER ZU VERBINDEN!!!!

einmal vielleicht schon und dann wird ein neuer µC fällig!

von Andy H. (gastrelais)


Lesenswert?

Dan N. schrieb:
> Andy H. schrieb:
>> Da würde mir nur einfallen die Zündung über einen z.B. Mosfet zu
>> aktivieren und diesen dann bei Bedarf wegzuschalten.
>
> Ich denke da eher an was ganz Einfaches. Ist es möglich dem uC einen
> Befehl zu geben, in dem ich z.B. D5 mit D6 intern verbinde? Und diese
> Verbindung durch einen weiteren Befehl kurzfristig öffne? Ist sowas
> generell realisierbar?
>
> Andy H. schrieb:
>> Da wird es ja mit Spannungen über 100 Volt gehen denk ich mal.
>
> Nein. Der Zündkreis hat auch nur 12 Volt.

Der Zündkreis ja, aber du kannst ja für z.B. 100ms nicht die Versorgung 
der Zündanlage unterbrechen oder? Oder mal so gesagt, was unterbrichst 
du mit dem Relais? Wirklich nur die Stromversorgung zur Zündanlage? Ich 
bin in sowas nicht fit.

: Bearbeitet durch User
von Manfred (Gast)


Lesenswert?

Dan N. schrieb:
> mit verschiedenen Delays

Delay ist meistens Pfusch. Für die Aktivzeit des Relais ist das OK, weil 
der µC nichts anderes zu tun hat. Aber dann delay(1000) - nee, so nicht.

Abgesehen davon kommen mir 1000ms ganz schön lange vor, wenn mal zwei 
der drei Gänge zügig gerissen werden sollen?

Man kann die Taste fragen und solange warten, bis sie wieder frei ist
(aus einer meiner Geräte kopiert):

  do {  // warten bis Taste wieder frei
    delay (10);
  }
  while (digitalRead(Taste) == HIGH);

> anderen Variante, indem man das Relais komplett weglässt.
> Ich habe leider keine Ahnung wie das dann softwaretechnisch
> funktionieren könnte...jemand eine Idee?

Ob ein Relais oder Transistor gesteuert wird, ist für die Software ohne 
Bedeutung. Finde Dich damit ab: Der µC direkt kann das nicht, da muss 
ein spannungsfestes Schaltglied zwischen.

Dan N. schrieb:
>> Da wird es ja mit Spannungen über 100 Volt gehen denk ich mal.
> Nein. Der Zündkreis hat auch nur 12 Volt.

Na doch, da ist ein aus Sicht der Elektronik ziemlich unangenehmes 
Bauteil drin: Die Zündspule. Die erzeugt eine deutlich hohe 
Gegenspannug, weit über den 12 Volt.

Irgendwie beschäftigt mich noch die Frage, ob Deine Trennelektronik 
eigentlich keinen ungewollten Zündfunken zur falschen Zeit verursachen 
könnte.

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.