ATtiny202 Infrarot-Telegraphie

                      Elektronik-Labor  Bastelecke  Projekte  Mikrocontoller                        




Für Morse-Übungskurse im Amateurfunk-Club habe ich eine Übertragungsstrecke mit Infrarotlicht aufgebaut. Der Empfänger besteht aus einem integrierten IR-Empfänger TSOP31236 für 36-kHz-Signale. Ein Piezo-Schallwandler wird direkt angeschlossen. Damit kann man Infrarot-Fernbedienungen testen und das Störumfeld beurteilen. Wenn zum Beispiel Leuchtstoffröhren im Raum sind, hört man ein unregelmäßiges Knistern.
 
Der Sender soll nun so arbeiten, dass er einen hörbaren Ton auf das 36-kHz-Signal aufmoduliert, das dann am Empfänger hörbar wird. Versuche mit einem Signalgenerator und eine IR-Sendediode haben gezeigt, dass optimale Empfangsergebnisse erzielt werden, wenn die 36-kHz-Impulse sehr kurz sind, und man nur kurze Sequenzen aus ca. 10 Impulsen sendet. Das Modulationssignal sollte also kein symmetrisches Rechteck sein, sondern aus einer Folge kurzer Impulse bestehen.
 


Eine gute Morsetaste ist nicht leicht zu finden oder zu bauen. Deshalb soll hier ein kapazitiver Berührungssensor verwendet werden. Das Arbeitsprinzip ist einfach. Der Port wird aktiv low geschaltet und damit entladen. Für eine Messung wird er in den Eingangszustand mit internem Pullup umgeschaltet. Der Controller misst dann die Zeit, bis der Eingangszustand high gelesen wird. Normalerweise dauert das nicht mal eine Mikrosekunde. Bei einer Berührung steigt jedoch die Kapazität, und es wird eine größere Verzögerung gemessen. Das entspricht einer gedrückten Morsetaste.

So gut wie jeder kleine Mikrocontroller kann diese Aufgaben übernehmen. Den ATtiny202 habe ich deshalb gewählt, weil er über seinen UPDI-Pin programmiert werden kann und dazu nur ein extrem einfaches Programmiergerät braucht. Es besteht aus einem USB-Seriell-Wandler und einem einzelnen Widerstand.

//IRCW202, Touch PA1, IR-LED PA3
#include <Arduino.h>
char t=0;
void setup() {
  PORTA.DIRSET = 0x08;    //Ausgang PA3
  PORTA.DIRSET = 0x02;    //Ausgang PA1
  PORTA.PIN1CTRL = 0x08;  //Pullup PA1
}

void loop() {
  t=0;
  PORTA.DIRCLR = 0x02;
  while(!(VPORTA.IN & 0x02)){
    t++;
  }
  PORTA.DIRSET = 0x02;
  if (t>1){
    for(char n=0; n<10; n++){
      PORTA.OUTSET = 0x08;
      delayMicroseconds (3);
      PORTA.OUTCLR = 0x08;
      delayMicroseconds (21); 
    } 
    delay(1);
  } 
}

Die Software wurde mit Visual Studio Code und PlatformIO im Arduino-Framework entwickelt. Das kompilierte Programm firmware.hex kann mit dem Tool pymcuprog.exe unverändert auch in den ATtiny402 gebrannt werden. Größe und Form der Sensorfläche kann experimentell ermittelt werden. Beim Musteraufbau hat es sich bewährt, die Sensorkontakte mit Tesafilm zu isolieren.


 




Elektronik-Labor  Bastelecke  Projekte  Mikrocontoller