Relais Schalten
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
PINA0
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.