ラジオ少年の楽しい電子工作、その他

AVRを使った簡単な回路の実験、そして日々のちょっとした出来事を書きます。

スピーカ極性チェッカー(2号機完成)

2014年08月31日 | 日記

お蔭様でスピーカ極性チェッカー2号機がほぼ完成しました。

マイクの感度、SPとの距離でうまく検出できないこともありますが、この様な検出の仕組みではやむを得ないところでしょう。確実に検出するには、コーン紙が前に出ているのか引っ込んでいるのかを物理的に調べる必要があります。コーン紙にセンサーを接触させて動きを検出することが出来れば完全にOKです。しかし、これではテストに時間がかかりあまり具合が良くありません。

 

コメント (2)
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

アルカリ電池破裂

2014年08月30日 | 日記

昨夜、TVを見ているときに、物置の様な私の机から「パン」と何かが破裂した様な結構大きな音がしました。通電中の基板はありませんしパソコンも電源オフで、そんな爆発音がするような物は見当たりません。しばらく机の上の物を色々調べて見ましたが怪しそうなものはなさそうです。

結局分からずじまいです。今日(8月30日、PM5頃)、デジボルの電池がなくなりLCDに何もでなくなりましたので電池を交換しました。LR1130 x 4です。中を開いて見ますと4個の内1個がやけに厚ぼったく見えます。はずして見ると内部のガス圧でマイナス電極が持ち上がり穴が開いています。夕べの破裂音はこの電池が爆発した事によるものと判明しました。

こんな小さな電池ですが危ないですね。

こんな経験初めてです。電池の容量が小さいから火災にはなりませんが、もっと大きな容量の電池だと燃える可能性があります。そんな事故、リチウム電池の事故は新聞にも出たことが過去にありました。まさか?アルカリ電池が破裂するなんて。

私たちの身の回りにはカメラ、携帯、其の他色々な電子機器で電池が使われています。

注意しましょう!

コメント (4)
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

AVR 割り込み処理(2)

2014年08月30日 | 日記

怪しげなプログラムを作りました。

PB1にスイッチが繋がっています。これがLowになるとパルスが発生します。ここは1.024ms Low,

220ms Highのパルス出ています。SPからはプツ プツと定期的な音が出ています。

SPにマイクを近ずけて振動を拾います。PD3にlow パルスが出るとPD0に繋がった緑のLEDを点灯します。PD2にlowが出るとPD1に繋がった赤のLEDを点灯します。

とりあえずLow パルスは出ていてPD2,3に入力されています。LEDは点灯しません。

1msのパルスが出ている間にPD2,3に検出信号が入りますが、while以下の処理がタイミング的に間に合わない?じゃーないかなと、そんな気がしてます。

 

/*** Speaker Polarity Checker ***/
//ATtiny2313、 CPU CLK = 8MHz
//Fuse Low = E4, High = DF,Ex = FF

#include <avr/io.h>
#include <avr/interrupt.h>

#define F_CPU 8000000UL
#include <util/delay.h>
volatile unsigned int SW = 0;

ISR(TIMER1_COMPA_vect)
{
    if (bit_is_clear (PINB,PB1)){//PB1=0 start pulse generation  
    if(SW==0) {
    OCR1A = 31;    //Set timer1  1ms (1.024ms)
     SW = 1;
     PORTB &= ~_BV(PB0);
     } else  {
     OCR1A = 6874;   //6875 counts (Set timer1  220ms)
     SW = 0;
     PORTB |= _BV(PB0);
     }
}    

}
int main()
{
    OCR1A = 0;
    TCCR1A = 0x00;
    TCCR1B = 0x0C;  //CTC Mode, 1/256
   
    TIMSK = 0x40;      //Set OCIE1A
   
    DDRB =(0<    PORTB = (1<       DDRD = (0<    PORTD = (1<
    cli();
    sei();
    while(1); {    <--------whileの後の;は不要
    if (bit_is_clear (PIND,PD3)){
    PORTD |= _BV(PD1);
    PORTD &= ~_BV(PD0);  // Green On
    _delay_ms(100);
    PORTD |= _BV(PD0);}

    //else{

  if (bit_is_clear (PIND,PD2)){
    PORTD |= _BV(PD0);
    PORTD &= ~_BV(PD1); // Red On
    _delay_ms(100);
    PORTD |= _BV(PD1);}

   }
    
     return 0;
}

2014/8/30(Sat)

ジャングル配線です、何とか動作するようになりました。

コメント (3)
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

MTR VF80

2014年08月29日 | 日記

何故か古いマルチトラックレコーダー(VF80)を¥3.5Kで買いこんでしまいました。ちょっと、この手の録音機の使い方を含めた中味が知りたくなり、プチッとボタンを押してしまったのです。

ジャンクですので動かなくても仕方のない、ゴミになるかも知れない代物です。HDDに録音データが書き込まれます。知り合いに頼み、不具合のある部品は何とか手にいれました。

フェーダーが1個NG、音が片ch出ません。基板を見ると何となくいじった感じが見えます。半田付けもあまり綺麗ではありません。

もう一度駄目もとで再ハンダをしました。これで何とか音が出るようになり、録音も良さそうです。ラッキーです。

40GのHDDのフォーマットをやることにしました。すべてご破算にした方がベターだと思います。

 

コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

AVR 割り込み処理

2014年08月26日 | 日記

下記のプログラムはPB1がLowの時に1ms(low)、220ms(high)のパルスを連続して出すのが目的です。割り込みを許可していますので、当然割り込みが生じると其の処理へジャンプします。

割り込みは _delay_ms(1);の間に起きます。割り込みを処理するとこの1msのdelayは変わってしまいます。同時に平行して2つのことを処理は出来ませんので、当然の結果です。

    while(1) {
          
          sei();
      
       if (bit_is_clear (PINB,PB1)){
        PORTB &= ~_BV(PB0);
         _delay_ms(1);
        PORTB |= _BV(PB0);
         _delay_ms(220);
                     }
    else  {
                cli();
                PORTB |= _BV(PB0);
     }         
    
    }
     return 0;

 

コメント (4)
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする