6: 2009-11-18 (水) 03:59:54 takaboo ソース 7: 2009-11-20 (金) 18:23:07 takaboo ソース
Line 229: Line 229:
 const char gyao[27000] PROGMEM = {0,0,0,0,0,0,};  const char gyao[27000] PROGMEM = {0,0,0,0,0,0,};
**BUZZER.c [#e8471f5c] **BUZZER.c [#e8471f5c]
-指定周波数で圧電ブザーを鳴らす。+PD7(OC2)端子に接続されたトランジスタを介して他励式のブザーを駆動する。 
 +#ref(bz.png) 
 +この回路ではPD7端子がHIGHになるとトランジスタがONしてブザーの+/-両端に電圧が加わる。LOWになるとトランジスタがOFFしてブザーの-端子がオープンになる。これをゆっくり繰り返すとブザーがプチプチとなるだけだが、数百~数kHzの周期で繰り返すとぴ~ぷ~といった音として聞こえる様になる。 
 + 
 +周波数はPA7(ADC7)端子に接続したポテンショメータで分圧された電圧を計測する事で設定するものとしている。 
 +#ref(vr.png) 
 + 
 +PD7はカウンタタイマ2のOC2端子が接続されており、コンペアマッチでトグル動作する様に設定すればOCR2に設定できる範囲の値で周波数が設定出来る。また同時にPD7を出力端子に設定する必要もある。 
 + void ToneOn (int tone) { 
 +   OCR2 = UD_ToneTable[tone]; 
 +   TCCR2 = _BV(WGM21) | _BV(COM20) | _BV(CS22) | _BV(CS20); 
 +   // PD7(OC2)を出力に 
 +   DDRD |= _BV(PIND7); 
 + } 
 +大抵ブザーの類は常時一定の電圧を加えておく事は推奨されていないので、音を出さないときはOFFしておく事で劣化を防ぎつつ無駄に電力を消費する事もなくなる。 
 + void ToneOff (void) { 
 +   // PD7(OC2)を入力(外部のプルダウン抵抗でLOWに) 
 +   DDRD &= ~_BV(PIND7); 
 +   TCCR2 = 0; 
 + }
**SPI_BRIDGE.c [#j47c03d0] **SPI_BRIDGE.c [#j47c03d0]
SPIバスで接続されたATA6831(3ch ハーフブリッジドライバ)と通信を行い、任意のパターンで各チャネルのトランジスタをON/OFFさせる。 SPIバスで接続されたATA6831(3ch ハーフブリッジドライバ)と通信を行い、任意のパターンで各チャネルのトランジスタをON/OFFさせる。
 +#ref(spi.png)
 +SPIは簡単に言えばクロック同期式の双方向シリアル通信で、MISO・MOSI・SCKとチップセレクトの4本の信号でコミュニケーションする。対象によってタイミング等細かい違いはあるが、AVRの場合は大抵のデバイスとと接続する事ができる。
 +
 +ATA6831は3chのハーフブリッジを内蔵した主にリレーやランプを駆動するドライバICである。ここのうちハーフブリッジを2つ使えばモータの正/逆転を行うのに十分なHブリッジが構成できるので、小型モータの駆動程度であれば十分に使える。~
 +また3chのハーフブリッジに対してモータをうまくつなげば、動作モードの制限はあるものの2台を個別に駆動する事ができない事も無い。
**RCSERVO.c [#l9555243] **RCSERVO.c [#l9555243]


トップ   差分 リロード印刷に適した表示   全ページ一覧 単語検索 最新ページの一覧   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom