Relais Schalten

Wechseln zu: Navigation, Suche

Kleines Projekt zum Schalten von Relais

Ein ULN2803 wurde mit den 8 Ausgängen des AVR NET-IO von Pollin verbunden. Am Asgang des ULN sind 12V Relais angeschlossen, die die angeschlossenen Geräte schalten (nicht vergessen Pin10 mit der positiven Versorgungsspannung zu verbinden, sonst sind die Freilaufdioden nicht angeschlossen). Parallel zu dem Relais sind noch LEDs zur Signalisierung des Schaltzustandes angeschlossen.

Zusätzlich wurden noch Tastern an die Eingänge des NET-IO gegen Masse angeschlossen.

Hier das zugehörige Control6-Skript:

dnl Taster konfigurieren und einlesen
static uint8_t t1=0;
static uint8_t t2=0;
static uint8_t t3=0;
 
 
CONTROL_START
 
   ON STARTUP DO
      DDRA   &= ~_BV(PA0);            dnl switch pin for Input        DDRA(PA0) = 0
      DDRA   &= ~_BV(PA1);            dnl switch pin for Input        DDRA(PA1) = 0
      DDRA   &= ~_BV(PA2);            dnl switch pin for Input        DDRA(PA2) = 0
 
      DDRC  |=  _BV(PC0);	      dnl Ausgang Drucker
      DDRC  |=  _BV(PC1);	      dnl Ausgang Sound
      DDRC  |=  _BV(PC2);	      dnl Ausgang Festplatte
 
      PORTA  |=  _BV(PA0);            dnl     PORTA(PA0) = 1          seite 56 und 57
      PORTA  |=  _BV(PA1);            dnl     PORTA(PA1) = 1          seite 56 und 57
      PORTA  |=  _BV(PA2);            dnl     PORTA(PA2) = 1          seite 56 und 57
 
      PORTC  &= ~_BV(PC0);	      dnl Ausgang Drucker
      PORTC  &= ~_BV(PC1);	      dnl Ausgang Sound
      PORTC  &= ~_BV(PC2);	      dnl Ausgang Festplatte
   END
 
 
   if (!(PINA & 0b00000001)) t1++;	dnl prüfen ob Taste gedrückt, falls ja einen Zähler zur Entprellung inkrementieren
     else t1=0;				dnl ansonsten Zähler wieder auf Null setzen
 
   if (!(PINA & 0b00000010)) t2++;
     else t2=0;
 
   if (!(PINA & 0b00000100)) t3++;
     else t3=0;
 
   if (t1==5) PORTC ^= (1<<PC0);	dnl nach 5*25ms den entsprechenden Port toggeln
 
   if (t2==5) PORTC ^= (1<<PC1);
 
   if (t3==5) PORTC ^= (1<<PC2);
 
CONTROL_END
Ich musste die Abfrage klassisch mit einer Bitmnusterabfrage machen, da bei mir ein Abfrage des Pins mittels
PINA0
usw. nicht funktionierte.

Eingebaut wurde das Ganze in einen alten Router. Einzige Modifikation am NET-IO ist ein Kühlkörper am 7805, da ich nur ein 12V Netzteil übrig hatte. Falls gewünscht, kann ich ja noch ein paar Fotos machen.

Diese seite ist von den DrD user, bzw. AVR aus dem Channel erstellt worden.