Computer mit 12V Triggersignal ein und ausschalten Arduino UNO

Hallo zusammen,

ich möchte folgendes tun.

Ich habe einen Hifi Vestärker, welcher über seine 12V Trigger Ausgänge
meinen Raumakustikprozessor, welcher wie ein normaler Desktop PC
funktioniert, einschaltet und auch ausschaltet.

Wenn ich den Verstärker einschalte, liegen die 12V an, wenn ich
ausmache, sind diese weg.

Um den PC einzuschalten benötige ich einen einfachen Impuls, der einfach
zwei Kontakte (des An/Aus Schalters vom PC) brückt, so dass der PC
eingeschaltet wird. Ausgeschaltet wird der PC über zwei Impulse.

Wenn ich nicht irre, wird am PC Schalter ein 5V Signal durchgeschleift.

Das Triggersignal ist auf max. 150mA beschränkt.

Der PC kann auch gern mit zwei Impulsen oder mehr eingeschaltet werden.
Da er dort eh grad erst hochfährt, nimmt er von Signal 1 gefolgte
Signale für die ersten 10 Sekunden nicht mehr wahr.

Somit bräuchte ich also eine Schaltung, die generell zwei kurze Impulse
im Abstand von einer Sekunde erzeugt.

Kann mir jemand sagen, wie ich das bewerkstellige ?

Ich habe hier noch einen Arduino Uno, mit welchem das doch funktionieren sollte ?!

Eine Master/Slave Dose ist übrigens nicht möglich.

Viele Grüße
Markus

Was ist eine Master/Slave Dose?

Am einfachsten geht es mit einem Relais. Einfach den Kontakt paralell zum Einschalttaster schalten.

Grüße Uwe

uwefed:
Was ist eine Master/Slave Dose?

Ich vermute, dass damit eine Steckdosenleiste gemeint ist, bei der n andere Steckdosen Energie bekommen, wenn nur das an einer Dose (eben der „Master“-Dose, an der z. B. der PC hängt) hängende Gerät eingeschaltet wird.

Gruß

Gregor

Markus2700:
Kann mir jemand sagen, wie ich das bewerkstellige ?

Ich habe hier noch einen Arduino Uno, mit welchem das doch funktionieren sollte ?!

Du nimmst ein Relais, hatte Uwe ja schon vorgeschlagen.

Dieses steuerst du mit einem Transistor an. Dieser wiederum bekommt aus dem Arduino für eine Sek. einen High-Impuls und geht danach wieder auf LOW.

Dem Uno musst du natürlich mitteilen, wann er das High ausgeben soll.
Wenn der Uno nichts anderes machen soll, kannst du hier natürlich mit delay arbeiten, auch wenn es unschön ist.

Markus2700:
Kann mir jemand sagen, wie ich das bewerkstellige ?

Es gibt sogenannte "Reed-Relais" für 5V Nennspannung mit 500 Ohm Spulenwiderstand, die kannst Du mit einem Atmega-Pin schalten.

Die Schaltleistung dieser Kleinrelais liegt bei ca. 0,5A bis 1,0A, aber das sollte für Deine Zwecke ja wohl ausreichen.

Markus2700:
Somit bräuchte ich also eine Schaltung, die generell zwei kurze Impulse
im Abstand von einer Sekunde erzeugt.

Gibt es eine Möglichkeit den PC mit nur einem Impuls abzuschalten? Dann brächte man ein Relais nur in Reihe mit einem Elko an den 12V Trigger zu schalten. Evtl. braucht man noch parallel dazu eine Diode. Beim Einschalten zieht das Relais an, bis der Kondensator geladen ist, beim Ausschalten bis er Entladen ist.

Vielen Dank für eure zahlreichen Antworten : )

Was das anschalten des PCs angeht, wäre es noch möglich immer mit zwei Impulsen zu arbeiten.

Nur einer funktioniert nicht, bloß halt beim einschalten.

Vielleicht könnte mir ja jemand genauer beschreiben, wie ich vorzugehen habe, da ich von Elektronik nur halb Ahnung habe. :wink:

Markus2700:
Was das anschalten des PCs angeht, wäre es noch möglich immer mit zwei Impulsen zu arbeiten.

Nur einer funktioniert nicht, bloß halt beim einschalten.

Das widerspricht sich doch.

Und zwei Impulse musst du halt so programmieren, das der Ausgang zwei mal auf High geht und das Relay 2 mal anzieht.

Ich pack hier nochmal rein, was ich oben geschrieben hatte :- )

"Der PC kann auch gern mit zwei Impulsen oder mehr eingeschaltet werden.
Da er dort eh grad erst hochfährt, nimmt er von Signal 1 gefolgte
Signale für die ersten 10 Sekunden nicht mehr wahr."

Markus2700:
Ich pack hier nochmal rein, was ich oben geschrieben hatte :- )

"Der PC kann auch gern mit zwei Impulsen oder mehr eingeschaltet werden.
Da er dort eh grad erst hochfährt, nimmt er von Signal 1 gefolgte
Signale für die ersten 10 Sekunden nicht mehr wahr."

Dann kannst du es gern so programmieren, wie ich es im Post #7 geschrieben habe.
Zum Einschalten und Ausschalten jeweils 2 Impulse.

Ich habe mich nun mal versucht einzulesen, ebenso habe ich einen Arduino Uno gekauft.

Gibt es vielleicht jemanden, der mir das Programm schreiben könnte ?

Woben erwähnt soll:

Wenn 12V am Eingang anliegen, soll ein 5V Impuls gegeben werden, um den PC einzuschalten

Wenn 12V am Eingang nicht mehr anliegen, sollen zwei kurz aufeinanderfolgende 5V Impulse gegeben werden, um den PC auszuschalten

Betriebsspannung bekommt der Arduino vom Mainboard des PCs, wo dauerhaft 5V vom internen USB anliegen.

Das wäre für mich extrem hilfreich :))

Markus2700:
Das wäre für mich extrem hilfreich :))

Das ist es sicher nicht, da du dann nichts lernst.
Hier heißt es Hilfe zur Selbsthilfe, also lerne Programmieren und wir helfen dir dabei.

void setup() //Hier beginnt das Setup
{ //Hier beginnt ein Programmabschnitt.
int eingang=A0;
pinMode(13, OUTPUT); //Pin 13 soll ein Ausgang sein.
} //Hier ist ein Programmabschnitt beendet.
void loop() //Hier beginnt das Hauptprogramm
{ //Programmabschnitt beginnt.
digitalWrite(13, HIGH); //Schalte die die Spannung an Pin13 ein (LED an).
delay(1000); //Warte 1000 Millisekunden (eine Sekunde)
digitalWrite(13, LOW); //Schalte die die Spannung an Pin13 aus (LED aus).
delay(1000); //Warte 1000 Millisekunden (eine Sekunde).
} //Programmabschnitt beendet.

Teilweise habe ich das jetzt mal versucht noch zu ergänzen.

Der Loop kann ruhig da sein, somit blieibt doch dann der Status immer aktuell.?

Ich versteh nun aber noch nicht, wo ich ihm sage, dass, wenn an Eingang=A0 kein Signal mehr anliegt, er zwei Impulse auf PIN13 geben soll. Irgendwie stehe ich auf dem Schlauch.

Markus2700:
Teilweise habe ich das jetzt mal versucht noch zu ergänzen.

Der Loop kann ruhig da sein, somit blieibt doch dann der Status immer aktuell.?

Ich versteh nun aber noch nicht, wo ich ihm sage, dass, wenn an Eingang=A0 kein Signal mehr anliegt, er zwei Impulse auf PIN13 geben soll. Irgendwie stehe ich auf dem Schlauch.

Was du mit "Loop da sein" und "Status aktuell" meinst, verstehe ich nicht.

Was den Eingang A0 betrifft, kannst du in der IDE unter "Beispiele - AnalogInput" nachlesen.

Na den Loop brauche ich doch, damit der Arduino kontiniurlich sein Programm ablaufen lässt oder ?!

Ich habe ja keine definierte Zeit, wann ich meinen Verstärker ausschalten will, also muss doch der Zustand des 12V Signals dauerhaft überwacht werden. ?! ...so war jetzt mein Gedanke.

Ich bin nun soweit, dass ich es bis hierhin gechafft habe. Was meint ihr dazu ?

Habe ich noch etwas vergessen ? Muss hier auch ein loop bzw. setup rein ?

*/

char pin1 = 0; //pin1 = eingang
char pin2 = 0; //pin2 = ausgang
char merker = 0; //merker um zu sehen ob PC ein oder Ausgeschaltet ist.

if(pin==1 && merker==0) //pc einschalten
{
pin2 = 1;
warteschleife;
pin2 = 0;
merker=1;
}

if(pin1==0 && merker==1) //pc ausschalten
{
pin2 = 1;
warteschleife;
pin2 = 0;
warteschleife
pin2 = 1;
warteschleife;
pin2 = 0;
merker=0;
}

*/

Markus2700:
Habe ich noch etwas vergessen ? Muss hier auch ein loop bzw. setup rein ?

Du solltest dir unbedingt mal ein paar Beispiele ansehen.

In jeden lauffähigen Sketch gehört ein Setup und eine Loop.
Das sind Grundlagen, die du lernen musst.

Du wirst es durch einfaches testen (kompilieren) in der IDE auch feststellen.

Und bitte setze deinen Sketch immer in Code-Tags.

Verwende dazu die Schaltfläche </> oben links im Editorfenster.
Das kannst du auch nachträglich machen.
Dazu den Sketch markieren und die Schaltfläche klicken.

Damit wird dieser für alle besser lesbar.

mir sind deine Bedingungen für Ein- und Ausschalten noch nicht klar.
Einschalten wenn 12V anliegen?
Ausschalten wenn keine 12V anliegen?

#define eingang 2 // Pin 2 als Eingang über einen Spannungsteiler (10k/18k)
#define ausgang 3 // Pin 3 als Augang für das Relais

void ein() // 1 Impuls
{
 digitalWrite(ausgang,HIGH);
 delay(100);
 digitalWrite(ausgang,LOW);     
}
void aus() // 2 Impulse
{
 digitalWrite(ausgang,HIGH);
 delay(100);
 digitalWrite(ausgang,LOW); 
 delay(100);
 digitalWrite(ausgang,HIGH);
 delay(100);
 digitalWrite(ausgang,LOW); 
}
void setup() {
  pinMode (ausgang,OUTPUT);

}

void loop() {
  bool eingang_wert = digitalRead(eingang);
  if (eingang_wert) ein();
  if (!eingang_wert) aus();

}

Auch sind die Definitionen deiner Variablen sehr merkwürdig.

char pin1 = 0;   //pin1 = eingang

Ein "int" oder "Byte" ist hier eher angebracht.

Oder per "#define" wie ardubu es vormacht.

Und beide auf den Pin 0 setzen, funktioniert auch nicht.
Wobei du in den meisten Fällen D0 und D1 nicht belegen solltest, da diese vom USB-Serial-Wandler auf dem Board genutzt werden.

Ein "int" oder "Byte" ist hier eher angebracht.

lieber const int oder const byte