Na stiahnutie

... z Mekovej tvorby a mnoho iného

AM vysielač morzeovky s AVR

Pre účely jednej geocache som plánoval postaviť jednoduchý AM vysielač s dosahom max. pár metrov, ktorý by vysielal morzeovku. Pôvodne som chcel pomocou AVR spínať externý vysielač, ktorý by vysielal konštantný "beep", ale nakoniec som narazil na jednoduchú schému, ako sa to dá spraviť iba pomocou AVR a jedného tranzistora.

Pôvodný zdroj, z ktorého som čerpal, je na tejto stránke.

Schému som prekreslil do EAGLE-u, aby bolo jasne a jednoznačne vidieť hodnoty súčiastok.

Je to pomerne jednoduché.

AVR beží na internom oscilátore o takte 8 MHz, ktorý je delený ôsmimi, takže beží v skutočnosti na 1 MHz. Hodinové impulzy vystupujú z AVR na PB4 (pin 3). Tento nosný signál o frekvencii približne 1 MHz je modulovaný impulzmi z PB3 (pin 2), ktoré ovládame priamo z kódu. Výstup je zosilnený cez N-MOSFET a šup s ním na anténu.

Signál môžeme potom naladiť na AM frekvencii okolo 1 MHz (nie presne, keďže interný oscilátor nie je až taký presný).

Program je tiež pomerne jednoduchý:

#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

#define _BV(bit) (1 << (bit)) // _BV macro is not defined so define it here

void beep()
{
    for (char i = 100; i; i--)
    {
        DDRB |= _BV(PB3);_delay_ms(1);
        DDRB &= ~_BV(PB3);_delay_ms(1);
    }
}

void rest()
{
    _delay_ms(200);
}

void dot()
{
    beep();
    rest();
}

void dash()
{
    beep();
    beep();
    beep();
    rest();
}

void space()
{
    rest();
    rest();
    rest();
    rest();
}

void spaceWord()
{
    space();
    space();
}

int main()
{
    DDRB |=_BV(PB3);
    for (;;)
    {
        dash(); dash(); space(); // M
        dot(); space(); // E
        dash(); dot(); dash(); space(); // K
        dot(); dash(); dash(); space(); // W
        dot(); space(); // E
        dash(); dot(); dot(); space(); // B
        _delay_ms(1500); // silence
    }

    return 0;
}

Pri programovaní do AVR treba nastaviť poistky (FUSES) takto:

  • Internal Oscillator 8 MHz
  • DIV8 enabled
  • CKOUT enabled

Dosah vysielača závisí od dĺžky antény. S 10 cm drôtom bol asi 1 meter, zato s 1,5m drôtom bol signál v celej miestnosti (ďalej som neskúšal). Najlepšie to išlo, keď som anténu chytil do ruky.

V pôvodnom prameni bol použitý AVR ATTiny44A, ja som použil ATTiny85, ktorý je menší, ale má stále viac než dosť pinov, ktoré sú potrebné. Rovnako, tranzistor mal byť 2N7000, ale ten je v našich končinách exotický. Rovnako dobre fungoval tranzistor FQPF8N60C, ktorý je tiež N-MOSFET typu enhancement-mode.

Výsledok môžeš vidieť na nasledujúcom videu. Ukazujem príjem na bežný rádioprijímač, aj cez SDR-Sharp v PC.

ZIP súbor na stiahnutie z tejto stránky obsahuje schému ako PNG, aj vo formáte EAGLE, a zdrojový kód vo forme projektu pre Atmel Studio.

Komentáre (3)

:} lol :D =) :o) :B 8-D :P :-)) :-< ;) :-/ :( :.( O.o ;o) :-* 8-| :-| 8)
GregK   1. januára 2018 01:58
I was actually thinking it just transmits the last 4 digits of the lat and long and you just type that in to your GPS and that takes you to the real cache. But your idea is better :)
Mek   23. decembra 2017 11:19
Hello! No worries, this idea is here for sharing so it will be cool if you use it.
Anyway, this was only an idea for a geocache, but I have yet to find an electronically-lockable box (that can be also opened with a key if necessary) so it is only in the planning stage. But I will surely update this article with link to the geocache, if it ever gets published :)
GregK   23. decembra 2017 11:16
Hey! Cool idea I had the same one to make a geocache! :) I thought it was an original idea but I guess not :( I was looking for a way to make a simple CW transmitter for AM and I found this. Anyway I'm going to do this thanks for the great post! What is your cache's number ill be sure to take a look and maybe find it one day.

Toplist