//US40CW202
Ultraschall 40 kHz
#include <avr/io.h>
#include
<avr/interrupt.h>
#include <util/delay.h>
#define F_CPU 10000000
ISR(TCA0_OVF_vect) {
PORTA.OUTTGL
= 255;
TCA0.SINGLE.INTFLAGS = TCA_SINGLE_OVF_bm;
}
int main(void) {
_PROTECTED_WRITE (CLKCTRL_MCLKCTRLB, 1); // 10 MHz
char n = 0;
PORTA.DIR =
255;
PORTA.OUT =
127;
sei();
TCA0.SINGLE.CTRLA = TCA_SINGLE_CLKSEL_DIV1_gc;
TCA0.SINGLE.PER = 125; //80 kHz
TCA0.SINGLE.INTCTRL = TCA_SINGLE_OVF_bm;
TCA0.SINGLE.CTRLA |= TCA_SINGLE_ENABLE_bm;
while (1){
sei();
_delay_ms(300); cli() ;_delay_ms(100);
//B
sei();
_delay_ms(100); cli() ;_delay_ms(100);
sei();
_delay_ms(100); cli() ;_delay_ms(100);
sei();
_delay_ms(100); cli() ;_delay_ms(100);
_delay_ms(200);
sei();
_delay_ms(100); cli() ;_delay_ms(100);
//U
sei();
_delay_ms(100); cli() ;_delay_ms(100);
sei();
_delay_ms(300); cli() ;_delay_ms(100);
_delay_ms(500);
}
}
Der Controller
erzeugt zwei gegenphasige Signale mit 40 kHz im Timer-Interrupt.
Dadurch
hat man die doppelte Signalspannung am Schallwandler. Alles wurde zuerst
mit einem Tiny202 auf dem gemeinsamen Entwickluingsboard mit dem
Tiny3216 entwickelt und dann in dern Tiny402 gebrannt.
Das Gerät wurde mit Schalter und Bereitschafts-LED auf eine kleine SMD-Adapterplatine gelötet. Der Ultraschall-Lautsprecher ist eine piezokeramische Kapsel, die auch als Ultraschall-Mikrofon für den Fledermausdetektor eingesetzt wird. Ein flacher Li-Akku ist unterhalb der Platine montiert.