- LiFePO4 Speicher Test         
Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 39

Thema: Suche dringend C-Befehl für "Pause" und "Schn

  1. #21
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    07.07.2004
    Ort
    um Berlin
    Beiträge
    346
    Anzeige

    Praxistest und DIY Projekte
    @danionbike,
    Portzugriffe unter Winows: lies Dir mal das hier durch:
    https://www.roboternetz.de/phpBB2/viewtopic.php?t=10599

    Eine Zeitspanne warten (in C/C++ mit Windows-API):
    wie schon erwähnt:
    #include <windows.h>

    ...
    Sleep (3 * 60 * 1000); // 3 Minuten warten
    ...

    Besser wäre es mit einem Timer und einer Timerprocedur:

    ...
    SetTimer (NULL, 0, 1000 * 60, MyTimeProc); // 1-Minuten-Timer
    ...
    VOID CALLBACK TimerProc(
    HWND hwnd, // handle to window
    UINT uMsg, // WM_TIMER message
    UINT_PTR idEvent, // timer identifier
    DWORD dwTime // current system time
    )
    {
    // Tu irgendwas
    }

    Warum nimmst Du nicht die serielle Schnittstelle? Die ist kurzschlußfest und liefert ca. 5mA bei etwa 10V.

    ...
    HANDLE hPort;

    hPort = CreateFile (TEXT("COM1"),
    GENERIC_READ | GENERIC_WRITE,
    0,
    0,
    OPEN_EXISTING,
    0,
    0);

    EscapeCommFunction (hPort, SETRTS); // RTS setzten
    Sleep (2000);
    EscapeCommFunction (hPort, CLRRTS); // RTS rücksetzten
    Sleep (2000);
    EscapeCommFunction (hPort, SETRTS); // RTS setzten
    Sleep (2000);

    CloseHandle (hPort);
    ...

    Blackbird

  2. #22
    Benutzer Stammmitglied
    Registriert seit
    02.08.2005
    Beiträge
    78
    @ Blackbird

    die Wartefunktion habe ich ja schon!
    diese funktioniert auch einwandfrei.

    das mit der seriellen Schnittstelle wäre eine Überlegung wert.

    bin leider auf dem Gebiet kein Profi!

    meinst du nun, dass ich deinen Quellcode


    ...
    HANDLE hPort;

    hPort = CreateFile (TEXT("COM1"),
    GENERIC_READ | GENERIC_WRITE,
    0,
    0,
    OPEN_EXISTING,
    0,
    0);

    EscapeCommFunction (hPort, SETRTS); // RTS setzten
    Sleep (2000);
    EscapeCommFunction (hPort, CLRRTS); // RTS rücksetzten
    Sleep (2000);
    EscapeCommFunction (hPort, SETRTS); // RTS setzten
    Sleep (2000);

    CloseHandle (hPort);
    ...


    einfach ins Programm einbinden soll?

    Und fertig ist es?
    Brauch ich dann unter NT2000/XP keine weiteren Teiber o.ä.?

    sorry, wenn ich so viel frage, aber wie gesagt, bin blutiger Anfänger!

  3. #23
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    07.07.2004
    Ort
    um Berlin
    Beiträge
    346
    Ein einfaches Beispiel:
    Code:
    /*******************************************
    ** Pin5 ist Masse, Pin7 ist +10V (== AUS)
    **                 Pin7 ist -10V (== EIN)
    ** Version 1 mit Funktion 'warte ()'
    *******************************************/
    #include <windows.h>
    #include <time.h>
    
    #define SWITCH_ON  3     // Minuten
    #define SWITCH_OFF 57
    
    void warte (int sekunden) 
    { 
    	clock_t start; 
    	sekunden *= CLOCKS_PER_SEC; 
    	start = clock (); 
    	while (clock() < start + sekunden); 
    }
    
    int main (void)
    {
    	HANDLE hPort; 
    
    	hPort =  CreateFile (TEXT("COM1"), GENERIC_WRITE, 
    		                   0, NULL, OPEN_EXISTING, 0, NULL);
    
    	for (;;)
    	{
    		EscapeCommFunction (hPort, SETRTS); // RTS setzten Pin7
    		warte (SWITCH_ON * 60);
    		EscapeCommFunction (hPort, CLRRTS); // RTS rücksetzten Pin7
    		warte (SWITCH_OFF * 60);
    	} 
    
    	CloseHandle (hPort);
    	return (0);
    }
    oder einfacher:

    Code:
    /*******************************************
    ** Pin5 ist Masse, Pin7 ist +10V (== AUS)
    **                 Pin7 ist -10V (== EIN)
    ** Version 2 mit Funktion 'Sleep ()'
    *******************************************/
    #include <windows.h>
    
    #define SWITCH_ON  3     // Minuten
    #define SWITCH_OFF 57
    
    int main (void)
    {
    	HANDLE hPort; 
    
    	hPort =  CreateFile (TEXT("COM1"), GENERIC_WRITE, 
    		                   0, NULL, OPEN_EXISTING, 0, NULL);
    
    	for (;;)
    	{
    		EscapeCommFunction (hPort, SETRTS); // RTS setzten Pin7
    		Sleep (SWITCH_ON * 60 * 1000);
    		EscapeCommFunction (hPort, CLRRTS); // RTS rücksetzten Pin7
    		Sleep (SWITCH_OFF * 60 * 1000);
    	} 
    
    	CloseHandle (hPort);
    	return (0);
    }
    Blackbird

  4. #24
    Benutzer Stammmitglied
    Registriert seit
    02.08.2005
    Beiträge
    78
    hallo,

    bist du dir sicher, dass an Pin7 10V anliegen?
    hab gelesen dass am Parallelport bei einem "high" ca. 5V anliegen.
    und nach dem Aufbauschema ist Pin5 auch nicht Masse sondern Pin18 bis Pin 25.

    Grundaufbau 25pol Sub-D Buchsenleiste:

    Pin2 bis Pin9 = Ausgänge (Bidirektional) Zugriff durch DATA Register
    Pin15, Pin10 bis Pin13 = Eingänge Zugriff durch STATUS Register
    Pin1, Pin14, Pin 16, Pin17 = Ein/Ausgänge Zugriff durch CONTROL Register
    Pin 18 bis Pin25 = Masse

    stimmt doch oder?


    Oder meinst du nun den seriellen Anschluss????

  5. #25
    Benutzer Stammmitglied
    Registriert seit
    02.08.2005
    Beiträge
    78
    klar, du meinst die serielle.

    eine Frage hätte ich noch:
    du schreibst in deinem Progr. für Pin7 == AUS ist dieser +10V und für == EIN -10V bzw. Pin5 ist Masse.
    Möchte ja gerne ein Relais an den Pin7 anschließen, schaltet das Relais dann auch nur bei -10V? Oder wie ist das mit +/-10V gemeint?

  6. #26
    Benutzer Stammmitglied
    Registriert seit
    02.08.2005
    Beiträge
    78
    hallo!

    also das Programm funktioniert!!!

    bei EIN habe ich -11,34V
    bei AUS habe ich +11,34V

    aber wie soll ich damit ein Relais steuern???

    was gibt es noch für Möglichkeiten einen Arbeitsstromkreis damit zu steuern?

    Möchte ja erreichen dass einmal Strom fließt und dann garkein Strom fließt (auch kein negativer).

    bin mal auf eure Antworten gespannt!

  7. #27
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    07.07.2004
    Ort
    um Berlin
    Beiträge
    346
    Ganz einfach: mit einer Diode (Polung ist egal) vom Pin7 zum Relais und vom 2. Anschluß des Relais zum Pin5 (Masse). Das Relais sollte aber ein 12V-Typ im IC-Gehäuse sein, also eins, welches für IC-Ausgänge geeignet ist. Denn mehr als ca. 10 mA kommen da nicht raus.

    Solche Relais schalten aber selten mehr als 0,3A bis 0,5A bei höchstens 42V!

    Statt Relais kannst Du besser einen Optokoppler (mit Vorwiderstand) einsetzen. Die Empfängerseite kann dann (mit einer externen Spannungsquelle) je nach Schaltung, alles Mögliche treiben/schalten/steuern.

    Blackbird

  8. #28
    Benutzer Stammmitglied
    Registriert seit
    02.08.2005
    Beiträge
    78
    hallo!

    also wie ich dich versteh kann ich das mitm Relais vergessen oder?

    Wie funktioniert ein Optokoppler?

    Hast du für meine Anwendung einen Schaltplan o.ä.?

  9. #29
    Benutzer Stammmitglied
    Registriert seit
    02.08.2005
    Beiträge
    78
    hab mich mal bei Conrad umgeschaut.

    folgendes Relais gefunden:

    SIGNALRELAIS DS2Y 2U 2A 12V

    Spulenspannung V/DC 12
    Typ DS2Y-S-DC12V
    Ansprechsp. V/DC max. 8,4
    Abfallsp. V/DC min. 1,2
    Spulenwid. Ω* 720
    Spulenstrom mA* 16,7
    Leistungsaufn. mW 200
    Betriebssp. V/DC max. 24


    2 x UK - 200 mW empfindliches Miniatur-Relais, 1500 V FCC Überspannungsfestigkeit. Hohe Empfindlichkeit - 200 mW Betriebsleistung. Hohe Durchbruchspannung 1500 V FCC zwischen den geöffneten Kontakten. Gehäuse passend für 16-poligen IC-Sockel. Versiegeltes Gehäuse.
    Technische Daten: Übergangswiderstand (bei Spannungsabfall 6 V/DC 1 A): 50 mΩ · Kontaktmaterial: Vergoldetes Silber · Grenzwerte: Schaltleistung (ohmsche Last) max. 60 W, 62,5 VA · max. Schaltspannung 220 V/DC, 250 V/AC, max. Schaltstrom 2 A , max. Carrying-Strom 3 A · UL/CSA Grenzwerte: 1 A 30 V/DC, 0,3 A 110 V/DC, 0,3 A 125 V/AC · Lebensdauer: Mechanisch 1 x 108, elektrisch (1 A 30 V/DC) 5 x 105, (2 A 30 V/DC) 1 x 105 · Isolationswiderstand min. 1000 MΩ (bei 500 V/DC) · Durchbruchspannung: offene Kontakte 750 Vrms, zwischen den Kontaktsätzen 1000 Vrms, zwischen Kontakten und Spule 1000 Vrms · FCC Überspannungsfestigkeit zwischen den geöffneten Kontakten 1500 V · Umgebungstemperatur -40 bis +70 ºC.

    *±10%

  10. #30
    Gast
    Die Wahl des Relais hängt doch vom Einsatz ab. Über den hast Du noch nicht viel geschrieben. Welche Spannung, wieviel Strom sollen denn geschaltet werden?
    Wenn es Netzspannung (230V~) ist, kannst Du besser ein Solid-State-Relais vervenden. Das ist erstens optisch getrennt und zweitens schaltet es eben Netzwechselspannung.

    Schaltungen zum Ansteuern von Lasten per PC-Schnittstelle (seriell und parallel) gibt es im Internet viele. Und auch hier im Forum ist schon mehrmals darüber diskutiert worden.
    Für das Verständnis der Vorgänge sind aber ein paar Grundkenntnisse in Elektronik sehr hilfreich. Das hilft Zeit und Geld sparen, kannst Du mir ungeprüft glauben.


    Blackbird

Seite 3 von 4 ErsteErste 1234 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad