SSブログ
- | 次の10件

超音波距離計の製作1 [アプリケーション]

※勿論これは普通にArduinoでも実験可能です!。是非お試しを。
Img_1930_s.jpg超音波距離計は、40KHzの超音波領域の音をスピーカーから発し、対象物に当たって帰って来た音をマイクで拾い、往復に掛かった時間から対象物までの距離を計算すると言う、わりと簡単な原理で動いています。

秋月で発売されている超音波距離計は、タイマーICで40KHzを生成してスピーカーで出し、マイクで拾った音を増幅して簡単なバンドパスフィルターを通して一定のレベルとの比較出力を時間を換算しているロジックに入れて距離を出し、7セグメントLEDにて表示をしています。
なかなか良く考えられた回路だと思います。

翻ってArduinoでそれをやろうとした時、勿論特別にタイマーICを用意する必要も、時間を計るロジックICを用意する必要も無く、全てはArduinoのAVRマイコンの中にあります。

なので超音波距離計を作る残りの要素は極僅かですね。
超音波スピーカーをドライブする回路と、超音波スピーカー、超音波マイクに増幅回路、バンドパスフィルター、レベル比較器、表示器だけです。

この位の回路なら十分ブレッドボード上に構成可能です。それがこの記事の冒頭の写真となっています。
回路図はこれです。拡張子をpdfに戻してください。
また、スケッチは簡単ですが以下の内容で可能です。

※Maruduinoのプロトタイプ基板で作成している為、若干発売中の基板とはポートが異なります。
/***********************************************************************/
/* ultra sonic distance meter                                          */
/*                                               designed by hamayan   */
/*                                               Copyright(C) hamayan  */
/***********************************************************************/
#include <LiquidCrystal.h>
#include <avr/io.h>
#include <avr/interrupt.h>

/*************************************************************************/
/* defines                                                               */
/*************************************************************************/
#define  AREF     0
#define  NOT_GND  1
#define  DI13     2
#define  DI12     3
#define  DI11     4
#define  DI10     5
#define  DI9      6
#define  DI8      7
#define  DI7      8
#define  DI6      9
#define  DI5      10
#define  DI4      11
#define  DI3      12
#define  DI2      13
#define  DI1      
#define  DI0      
#define  AN0      14
#define  AN1      15
#define  AN2      16
#define  AN3      17
#define  AN4      18
#define  AN5      19
#define  PWM11    DI4
#define  PWM10    DI5
#define  PWM9     DI6
#define  PWM6     DI9
#define  PWM5     DI10
#define  PWM3     DI12

/*************************************************************************/
/*  global parameter                                                     */
/*************************************************************************/
#define  UltraSonicPin  PWM6
LiquidCrystal lcd(DI2, DI3, DI4, DI5, DI6, DI7);

/*************************************************************************/
/*  prototype                                                            */
/*************************************************************************/

/*************************************************************************/
/*  timer1 output compare match a int handler                            */
/*************************************************************************/
SIGNAL( TIMER1_COMPA_vect )
{
}

/*************************************************************************/
/*  setup                                                                */
/*************************************************************************/
void setup()
{
  lcd.begin(16,2);
  lcd.clear();
  lcd.print( "designed by" );
  lcd.setCursor(0,1);
  lcd.print( "  hamayan." );
  pinMode( DI8, INPUT );
  pinMode( DI10, OUTPUT );
  digitalWrite( DI10, LOW );
}

/*************************************************************************/
/*  main loop                                                            */
/*************************************************************************/
void loop()
{
  digitalWrite( DI10, HIGH );
  tone( UltraSonicPin, 40000 );
  unsigned long startMicro = micros();
//  delayMicroseconds( 500 / 8 );
  delayMicroseconds( 250 / 8 );
  noTone( UltraSonicPin );
//  delayMicroseconds( 500 / 8 );
  delayMicroseconds( 750 / 8 );
  digitalWrite( DI10, LOW );
  delayMicroseconds( 500 / 8 );
  unsigned long endMicro = startMicro;
  while( digitalRead( DI8 ) == LOW )
  {
    endMicro = micros();
    if( (endMicro - startMicro) > 20 * 1000UL ) break;
  }

  unsigned long distance;
  if( (endMicro - startMicro) < 20 * 1000UL )
  {
    distance = ((340 * (endMicro - startMicro)) / 10000UL) / 2;
  }
  else
  {
    distance = 999;
  }

  lcd.clear();
  lcd.print( distance );
  lcd.print( "cm" );

  delay( 500 );  
}


Prototyping Lab ―「作りながら考える」ためのArduino実践レシピ

Prototyping Lab ―「作りながら考える」ためのArduino実践レシピ

  • 作者: 小林 茂
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2010/05/27
  • メディア: 大型本



Mad Science ―炎と煙と轟音の科学実験54

Mad Science ―炎と煙と轟音の科学実験54

  • 作者: Theodore Gray
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2010/05/24
  • メディア: 大型本



搭載イメージ(写真) [ドキュメント]

以前、Maruduinoの実装イメージが判らないとご指摘を受けていました。それはそうですよね、かつてArduinoのシールドの中で基板をひっくり返して実装するシールドなんて見た事ないですから。
と言う訳で幾つかの搭載部品の写真を掲載してみました。実装時の参考としてください。

※写真は試作段階の基板を使用しているため、実際にマルツさんから購入した場合の部品や搭載位置に若干の違いがあります。

Img_1979_s.jpg 写真はJapaninoですが、Duemilanoveでも同様にひっくり返して搭載してください。 下側がシールドの搭載位置です。こちらは普通の向きとなります。
Img_1981_s.jpg 基本パーツのLEDやスイッチの搭載位置はここになります。 ※LEDを点灯させる場合はスイッチは使えません。逆にスイッチを使う場合はLEDを使う事ができません。どちらかを排他で使う事になります。
Img_1985_s.jpg ブレッドボードの搭載位置はこの辺りとなります。基板上にシルクで四角い枠が描かれています。 両面テープで固定する場合は下の説明をご覧下さい。
Img_1987_s.jpg ブレッドボードの底面いっぱいに両面テープが貼られていますが、もし今後ブレッドボードを外して下の回路を使いたいとなった時、底面いっぱいの両面テープを剥がす事は容易ではありません。写真の様に両面テープにカッターで切り目を入れて、必要最小限の領域とした方が良いでしょう。と思って実際にやってみましたが、見事に失敗。別の方法を考えてみます。
Img_1993_s.jpg スピーカー出力周りの実装です。ここはLCDの真下となりますので、電解コンデンサーを立てて実装する事ができません。写真の様に寝かせた状態で実装して下さい。この時、電解コンデンサの極性を間違えない様にして下さい。2つのコンデンサ共にこの向きから見た時、右側に白い帯が来るようにします。 ※スピーカーは100円ショップで販売されている物が使えます。
Img_1982_s.jpg 外部電源入力です。+9Vで中心が正極のACアダプターが使用できます。このアダプターが利用できます。
https://www.marutsu.co.jp/user/shohin.php?p=9196
※ここもシールド基板の下になりますので、電解コンデンサは寝かせて実装する事となります。この向きから見た時は左側にコンデンサの白い帯が来ます。 ※外部電源入力は、必ずベースボード単体で動かす時のみ、ACアダプターを接続してください。
Img_1989_s.jpg ブレッドボードを外して、このMaruduinoの拡張機能のIO拡張を使う時、この位置にIOエクスパンダーIC及びRTCを搭載します。 IOの拡張はI2C機能を利用します。I2C機能はArduinoのWireライブラリを使うと利用できます。
Img_1990_s.jpg 7セグメントLEDを搭載する時はこの位置に実装します。一番上から電流供給(Source)用のPNPトランジスタ、若干の抵抗、そしてアノードコモンに分類される7セグメントLEDとなります。 7セグメントLEDのドライブは、先のI2C、IOエクスパンダーICで行います。
Img_1991_s.jpg 24個のタクトスイッチを付ける位置は基板の一番下となります。 並びを見ると判る様に、鍵盤を模してあります。スイッチのスキャンは、先のI2C、IOエクスパンダーICで行います。マトリックススキャンではないので、ソフトウエアが容易になりますし、複数キーの同時押しも可能です。


Prototyping Lab ―「作りながら考える」ためのArduino実践レシピ

Prototyping Lab ―「作りながら考える」ためのArduino実践レシピ

  • 作者: 小林 茂
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2010/05/27
  • メディア: 大型本



大人の科学マガジン Vol.27(8ビットマイコン) (Gakken Mook)

大人の科学マガジン Vol.27(8ビットマイコン) (Gakken Mook)

  • 作者: 大人の科学マガジン編集部
  • 出版社/メーカー: 学習研究社
  • 発売日: 2010/05/12
  • メディア: ムック



ドキュメント置き場 [ドキュメント]

※2010年7月12日更新
Img_1936_s.jpg
このページではMaruduinoのドキュメントの公開を行います。

このblogには本来画像、動画しか登録できないのですが、ドキュメントのほとんどはPDFでの提供となりますので、ちょっと変わった方法でblogに貼り付けます。

各種アーカイブ(zipやpdf)の拡張子をjpgに変換して、blogにはリンク先を用意しますので、ブラウザの画面上で右クリックなどからリンク先のアーカイブをローカルに落とし、その後拡張子をpdfまたはzip等に戻してからお使いください。


1.回路図
回路図です、拡張子をpdfに戻してお使いください。

2.全部入り部品表
※ただし全部の部品を載せて、全部の機能を同時に動かす事はできません。
部品表全部入り。拡張子をpdfに戻してお使いください。

3.基本構成パッケージ
Maruduino基板にこの部品を付け足す事で、キャラクターLCD、ブザー、LED、スイッチ等のArduinoのサンプルを実験できます。
基本構成パッケージ。拡張子をpdfに戻してお使いください。

4.Duemilanoveクローン作成パッケージ
DuemilanoveやDiecimila相当にする為に必要な部品です。クローンの作成に付いては別途解説を行います。
クローン作成パッケージ。拡張子をpdfに戻してお使いください。

5.XBee追加パッケージ
XBeeを追加する際に必要となる部品です。XBeeの追加方法に付いては別途解説を行います。
XBee追加パッケージ。拡張子をpdfに戻してお使いください。

6.7セグメントLED追加パッケージ
ブレッドボードを使った実験が一通り終わったら、ブレッドボードを外して代わりに7セグメントLEDを搭載し、色々な表示に利用してみよう!パッケージです。
近日中にマルツさんからMaruduinoに搭載できるRTCモジュールが発売されますので、RTCを追加すれば時計として利用できます。
7セグメントLED追加パッケージ。拡張子をpdfに戻してお使いください。

7.24キー追加パッケージ
ブレッドボードを使った実験が一通り終わったら、ブレッドボードを外して代わりに24個のタクトスイッチを搭載し、簡易キーボードを作成してみよう!パッケージです。
注意!6.の7セグメントLEDと同時使用はできません。
24キー追加パッケージ。拡張子をpdfに戻してお使いください。

8.基板の部品面(表面)シルク図(部品配置を示した図)
部品を実装する際にご利用ください。
部品面シルク図。拡張子をpdfに戻してお使いください。

9.基板の半田面(裏面)シルク図(部品配置を示した図)
部品を実装する際にご利用ください。
半田面シルク図。拡張子をpdfに戻してお使いください。

10.基板の部品面(表面)パターン(基板上の配線)図
パターンを確認する際にご利用ください。
部品面パターン図。拡張子をpdfに戻してお使いください。

11.基板の半田面(裏面)パターン(基板上の配線)図
パターンを確認する際にご利用ください。
半田面パターン図。拡張子をpdfに戻してお使いください。



データシート
1.7セグメントLED
掲載の部品表ではアノードコモン10mm×13mm×文字高さ9.9mmの青色LEDでしたが、どうも売り切れたみたいなので、代品は緑色か赤色となってしまいますが、以下のリンク先の商品です。
http://www.marutsu.co.jp/user/shohin.php?p=9158
https://www.marutsu.co.jp/user/shohin.php?p=9159
青色LEDのデータシートはこれになります。拡張子なpdfです。
ええ勿論、データシート見て同等品を実装されても良いのですよ。



Prototyping Lab ―「作りながら考える」ためのArduino実践レシピ

Prototyping Lab ―「作りながら考える」ためのArduino実践レシピ

  • 作者: 小林 茂
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2010/05/27
  • メディア: 大型本



Mad Science ―炎と煙と轟音の科学実験54

Mad Science ―炎と煙と轟音の科学実験54

  • 作者: Theodore Gray
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2010/05/24
  • メディア: 大型本



- | 次の10件

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。