AMワイヤレス・マイク


AMワイヤレス・マイクを作ってみました。
この実験は発振周波数 = 714KHzで行いました。
1〜2mのアンテナで、木造家屋内はもちろん、家の外周辺で十分に聞こえました。

@発振器
AVRのATTINY2313で、PB3/OC1Aに1000Hzの矩形波を、
SW1を設定しRESET SWを押すとPB2/OC0Aに下記の表の矩形波が出力します。

A送信ファイナル
アンテナ出力が最大になるように調整します。
その電圧は約70Vp-p (無変調時) となります。 (VCの耐圧に注意)
コイルは中波のラジオに使うOSC用コイルです。

Bローパスフィルタ (fc = 1000Hz)
矩形波をサイン波にします。 (テスト用)

C変調器
電圧利得は200倍です。
出力の直流電圧は、電源電圧の半分の6Vで、その6Vに音声電圧の±5.5Vpeakが加わります。 (LM386のデータシートの代表的な性能特性の Peak-to-Peak Output Voltage Swing vs Supply Voltageを参照)
R2の33Ωは100%まで変調がかかるように直流電圧を落としてます。
その33Ωの両端の電圧は1.7Vだから、2SC1815GRのコレクタ電流は 1.7 / 33 = 52mAです。 (コレクタ電流はR1で決まる)


ATTINY2313の矩形波出力
SW1 PB2/OC0A (KHz) PB3/OC1A (Hz)
0 500 1000
1 526
2 556
3 588
4 625
5 667
6 714
7 769
8 833
9 909
10 1000
11 1111
12 1250
13 1429
14 1667
15 2000


wl_mic_kairo.gif

回路図


wl_mic_test.JPG

SW2をTEST側にした時のアンテナ出力波形 (20V/DIV, 0.2ms/DIV)


wl_mic_bb.JPG

実験風景


How to Compile (コンパイルのしかた)

プログラム
/*
 *  wi_mic.c
 *  @OC0Aピンに
 *  500, 526, 556, 588, 625, 667, 714, 769KHz,
 *  833, 909, 1000, 1111, 1250, 1429, 1667, 2000KHz
 *  のいずれか一波を矩形波を出力する。
 *  AOC1Aピンに1000Hzの矩形波を出力する。
 *  SWの読み込みは電源オン時一回のみです。
 *  SWの値は負論理で全部オフ(SWがない状態)でSW=0(500KHz)です。
 *  ATtiny2313
 *
 *
 *  Fuses(システムクロック:20MHz)
 *              水晶    
 *  EXTENDED    0xFF
 *  HIGH        0xDB
 *  LOW         0xFF    
 */

#include <avr/io.h>

int main(void)
{
    unsigned char sw_data;

    /* ATtiny2313 */
    DDRA = 0b00000000;      /* xxxxx xxxxx xxxxx xxxxx xxxxx RESET XTAL2 XTAL1 */
    DDRB = 0b00001100;      /* SCK   MISO  MOSI  ----- OC1A  OC0A  ----- ----- */
    DDRD = 0b00000000;      /* xxxxx ----- ----- ----- SW4   SW3   SW2   SW1   */
    PORTA = 0b00000000;
    PORTB = 0b11111001;
    PORTD = 0b01111111;

    TCCR0A = 0b01000011;    /* 比較一致でOC0Aピントグル(交互)出力, 高速PWM動作 */
    TCCR0B = 0b00001001;    /* 高速PWM動作, clk / 1 */

//  +----+----------------------+------------------------------------+
//  | SW | OCr0A                | 比較一致でOC0A    ピントグル(交互)出力 |
//  |    |                      | 高速PWM動作                        |
//  +----+----------------------+------------------------------------+
//  | 15 | 20MHz /  5 = 4000KHz | 4000KHz / 2 = 2000KHz (0.5μs)     |
//  | 14 | 20MHz /  6 = 3333KHz | 3333KHz / 2 = 1667KHz (0.6μs)     |
//  | 13 | 20MHz /  7 = 2857KHz | 2857KHz / 2 = 1429KHz (0.7μs)     |
//  | 12 | 20MHz /  8 = 2500KHz | 2500KHz / 2 = 1250KHz (0.8μs)     |
//  | 11 | 20MHz /  9 = 2222KHz | 2222KHz / 2 = 1111KHz (0.9μs)     |
//  | 10 | 20MHz / 10 = 2000KHz | 2000KHz / 2 = 1000KHz (1.0μs)     |
//  |  9 | 20MHz / 11 = 1818KHz | 1818KHz / 2 =  909KHz (1.1μs)     |
//  |  8 | 20MHz / 12 = 1666KHz | 1666KHz / 2 =  833KHz (1.2μs)     |
//  |  7 | 20MHz / 13 = 1538KHz | 1538KHz / 2 =  769KHz (1.3μs)     |
//  |  6 | 20MHz / 14 = 1428KHz | 1428KHz / 2 =  714KHz (1.4μs)     |
//  |  5 | 20MHz / 15 = 1333KHz | 1333KHz / 2 =  667KHz (1.5μs)     |
//  |  4 | 20MHz / 16 = 1250KHz | 1250KHz / 2 =  625KHz (1.6μs)     |
//  |  3 | 20MHz / 17 = 1176KHz | 1176KHz / 2 =  588KHz (1.7μs)     |
//  |  2 | 20MHz / 18 = 1111KHz | 1111KHz / 2 =  556KHz (1.8μs)     |
//  |  1 | 20MHz / 19 = 1052KHz | 1052KHz / 2 =  526KHz (1.9μs)     |
//  |  0 | 20MHz / 20 = 1000KHz | 1000KHz / 2 =  500KHz (2.0μs)     |
//  +----+----------------------+------------------------------------+

    sw_data = ~PIND & 0b00001111;
    OCR0A = 20 - 1 - sw_data;

    TCCR1A = 0b01000011;;   /* 比較一致でOC1Aピントグル(交互)出力, 高速PWM動作 */
    TCCR1B = 0b00011001;    /* 高速PWM動作, clk / 1 */
    OCR1A = 10000 - 1;      /* 20MHz / 10000 = 2000Hz, 1000Hz / 2 = 1000Hz (1ms) */

    while(1){
        ;
    }
}


真空管
戻る