ATtiny402 Infrarot-Transceiver

                      Elektronik-Labor  Bastelecke  Projekte  Mikrocontoller                        




Das bereits vorgestellte Infrarot-Morsegerät mit kapazitivem Berührungsssensor wurde noch einmal verbessert und zu einem kompletten Infrarot-Transceiver erweitert. Das Ziel waren kleine Morsegeräte für Übungen im Amateurfunk-Club. Teilnehmer von Morsekursen können sich gegenseitig anfunken und den normalen Funkverkehr üben. Neben der IR-Sendediode ist auch der IR-Empfänger mit auf der Platine. Zusätzlich muss nur noch ein Piezo-Lautsprecher angeschlossen werden.

Ein entscheidender Punkt ist der geringe Stromverbrauch und eine automatische Abschaltung nach einer gewissen Zeit ohne Sendeaktion. Der Mikrocontroller ATtin202/402 schaltet dann das Empfänger-IC und eine Bereitschafts-LED ab und geht in den Power-Down-Modus. Gemessen wurde ein Reststrom von nur noch 3 µA, was unterhalb der Selbstentladung üblicher Batterien liegt. Eine kleiner Li-Akku findet Platz auf der Platine.


 
Zum erneuten Einschalten wird ein Tastschalter verwendet, der einen Interrupt auslöst und den Controller aus dem Sleep-Modus aufweckt. Als zweite Nutzung kann dieser Taster auch alternativ zum Berührungssensor als Morsetaste verwendet werden. PA6 verwendet einen internen Pullup und ist mit dem Taster verbunden. An PA7 liegt eine rote LED zur Anzeige der Bereitschaft. Gleichzeit wird über PA3 der Empfänger eingeschaltet. Beide Ausgänge hätte man auch zusammenfasen können. Allerdings ist so die Möglichkeit offen geblieben, den Empfänger während der aktiven Aussendung stumm zu schalten. Das aktuelle Programm lässt den Empfänger mitlaufen, sodass man über die optische Kopplung einen Mithörton bekommt. PA3 steuert wieder die IR-Sende-LED, wobei diesmal ein Treibertransistor für eine höhere Sendeleistung eingesetzt wird. Die Reichweite konnte damit bis auf 10 m vergrößert werden.

//IRCWTRX202, Touch PA1, IR-LED PA3, LED PA7, S1 PA6, RX PA2
#include <avr/io.h>
#define F_CPU 3333333
#define __DELAY_BACKWARD_COMPATIBLE__
#include <util/delay.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>
#include <util/atomic.h>

volatile uint8_t pa6Ioc;
uint8_t t=0;
uint16_t timeout = 0;

ISR(PORTA_PORT_vect){
    if(PORTA.INTFLAGS & PIN6_bm){
        pa6Ioc = 1;
        PORTA.INTFLAGS &= PIN6_bm;
    }
}

int main(void){
  PORTA.DIRSET = PIN3_bm;    //Ausgang PA3
  PORTA.DIRSET = PIN1_bm;    //Ausgang PA1
  PORTA.PIN1CTRL = PORT_PULLUPEN_bm;;  //Pullup PA1
  PORTA.DIR |= PIN7_bm;   //LED
  PORTA.OUT |= PIN7_bm;
  PORTA.DIR |= PIN2_bm;   //IR-RX
  PORTA.OUT |= PIN2_bm;
  PORTA.DIR &= ~ PIN6_bm; //S1
  PORTA.PIN6CTRL |= PORT_PULLUPEN_bm | PORT_ISC_BOTHEDGES_gc;
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);
  sei();
  while(1) {
    t=0;
    PORTA.DIRCLR = PIN1_bm;
    while((!(VPORTA.IN & PIN1_bm))&&(t<3)){
      t++;
    }
    PORTA.DIRSET = PIN1_bm;
    if (t>1 ||!(VPORTA.IN & PIN6_bm) ){
      for(char n=0; n<10; n++){
        PORTA.OUTSET = PIN3_bm;
        _delay_us(3);
        PORTA.OUTCLR = PIN3_bm;
        _delay_us(21);  
      }
      timeout = 0;
    }  
    _delay_ms(1);
    timeout++;
    if(timeout>65000){
      PORTA.OUT &= !PIN7_bm;
      PORTA.OUT &= !PIN2_bm;
      sleep_mode();
      ATOMIC_BLOCK(ATOMIC_FORCEON){
        _delay_ms(10);
      }
      timeout=0;
      PORTA.OUT |= PIN7_bm;
      PORTA.OUT |= PIN2_bm;
    }
  }
}


Umbau zum Breitband-Morsesender



Bisher lief ja alles über Infrarot. Aber jetzt brauchte ich einen kleinen Sender für den Betrieb mit experimentellen Breitband-Kurzwellenempfängern. Da kam dieses Gerät gerade recht. Der IR-Empfänger und der Piezo-Lautsprecher wurden ausgebaut, und statt der IR-Sendediode wurde eine Festinduktivität mit 10 µH eingebaut. Der Controller steuert den NPN-Transistor mit kurzen Impulsen an. An den hinteren Flanken der Stromimpulse entstehen induktive Spitzen bis 40 V. Die Oberwellen der NF-Signale reichen bis in den Kurzwellenbereich. An der Festinduktivität wird ein Antennendraht angeschlossen, mit dem man nun je nach Empfänger eine Reichweite von einigen Metern erzielt. Alles andere bleibt gleich. Man kann den Taster oder wahlweise auch den Berührungssensor als Morsetaste verwenden. Mit dem Taster wird das Gerät auch eingeschaltet, und die rote LED zeigt den aktiven Zustand. Nach einer längeren Sendepause schaltet sich der CW-Sender automatisch ab.

Die Antenne ist z.B. ein 3 m langer Draht. Funkstörungen durch die Signale sind nicht zu befürchten, weil die geringe Energie auf viele Frequenzen aufteilt wird. Tatsächlich hat man hier nur im Nahfeld bis etwa 1 m eine kapazitive Kopplung zur Empfangsantenne. Es reicht aber, um mehrere Testempfänger gleichzeitig zu erreichen.






Elektronik-Labor  Bastelecke  Projekte  Mikrocontoller