goo blog サービス終了のお知らせ 
Indoor airplane world
 



 
 6ピンのATtiny10は二つのPWMを持っています。赤外線受信機のプログラムを組む場合は入力に1ポート、スロットルのPWM出力で1ポート、残りの2ポートをサーボ・パルス出力に使うと、3チャンネルの受信機ができます。

 ATtiny45Vの時はリセット・ポートを使わなかったのですが、ATtiny10で3チャンネル受信機を作る場合は、リセット・ポートも使わなければなりません。ここでどうしたら良いのか少し悩みました。



 リセット・ポートであるPB3をI/Oポートとして使うためにはヒューズビットのRSTDISBLヒューズをチェックして書き込めばよいことがわかりました。一度書き込んだRSTDISBLヒューズはなぜかSTK600で消去できません。何か別の方法で消去するのでしょうか。

 ATtiny10のI/Oポートは最大入出力電流が40mAまでとなっていますが、リセット・ポート(PB3)をI/Oポートに設定した場合は、吸い込み吐き出し電流ともに他のポートより弱く(内部抵抗が大きく)なります。PB3を赤外線受光素子からの入力に割り当てる場合は問題なさそうです。

 今までプログラムのテストにブレッドボードを使っていましたが、STK600には各ポートの出力ピンの他に、8個のLEDと8個のタクトスイッチが載っています。そこでLEDのON/OFF程度ならオンボードでテストできるのではないかと思って調べてみました。


 
 STK600に載っているLEDの回路です。ATtiny10のポート出力ピンからLEDポート入力ピンにジャンパすればLEDを点灯させることができます。ポート出力がLのときLEDが点灯します。

 

 STK600に載っているスイッチの回路です。ポートにつないでスイッチを押すとLになります。

 ジャンパケーブルで配線してLEDの点滅やスイッチを使ったLEDの点滅など、一通り入出力のテストが終わったので、受信機のプログラムを組んでみました。

 ATtiny10には高速PWM、位相基準PWM、位相/周波数基準PWMの3種類があります。なんとなく高速PWMがよさそうに思えますが、前にも書いたように、デューティ0%で完全OFFにならない(ひげが残る)のと、デューティ100%でも完全ONにならなかったので今回は使いません。どちらもプログラムで回避できると思うのですが、まだそれだけのスキルがありません(汗)。

 位相基準PWMはATtiny45Vを使った赤外線受信機のプログラムで使ってみたので、今回は位相/周波数基準PWMでプログラムを組んでみました。

 ATtiny10の二つのPWMはそれぞれ出力ポートがPB0とPB1に決まっていて、PB0を出力先にする場合とPB1を出力先にする場合とでは使えるレジスタに違いがあります。

 今回はスロットル・チャンネルのPWM出力をPB1に割り当てました。PB3を負論理入力(赤外線受光素子から)、PB0をエルロン・チャンネル出力、PB2をエレベータ・チャンネル出力に割り当てました。


今回使用した位相/周波数基準PWM設定
 
 試行錯誤しながら、3チャンネル・サーボ対応赤外線受信機のプログラムが何とか完成しました。シミュレータで動作確認したあと、ブレッドボード上で動作を確かめてから受信機を組み立てました。



 ATtiny10のPB3ポートへの入力(赤外線受光素子の出力)波形(3チャンネル赤外線送信機使用)が上で、下がエルロン・チャンネルのサーボ出力でPB0ポートの波形です。
 


 こちらは上の画像同様エレベータ・チャンネルのサーボ出力でPB2ポートの波形です。



 スロットル・チャンネルのPWM出力でPB1ポートの波形です。スロットル・スティックが中央付近の波形でデューティ約50%、PWM周期は約9.7KHz(画像の一番下に表示)です。スロットルの分解能は50ステップに設定してます。

 ウォッチドッグ・タイマも組み込んで、信号が途絶えたら1秒後にモータをカットするようにしました。

左がATtiny45Vを使った受信機、右がATTiny10を使った受信機(サイズ8mmx8mm、基板重量0.18g)



 早速ATtiny10を使った受信機をエレボン1号機に搭載してみました。次回の飛行会でテストしてみたいと思います。

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


« ATtiny10への... 日程 第144回... »
 
コメント(10/1 コメント投稿終了予定)
 
 
 
Unknown (KAERU)
2011-03-02 03:59:36

リセットのヒューズはHigh Voltage Serial Programmingを利用すると元に戻すことができます。
STK600のユーザーマニュアルを参考して下さい。
 
 
 
6ピンのATtimi10の場合は (toko)
2011-03-02 16:23:58
TPIインターフェースのみしかサーポートしていないので
High Voltage Serial Programmingが利用できないのではないでしょうか。

でもSTK600上でヒューズビットが元に戻せないのは何か片手落ちのような気がするので、STK600のユーザマニュアルをもう少し調べてみます。
 
 
 
What is the arduino code? (Blackdemon)
2023-06-07 02:06:28
Hello Tanaka Sir,
Beautiful plane.
Can you share the receiver and transmitter code for arduino?
Thank you. Arigato.
 
コメントを投稿する
 
名前
タイトル
URL
コメント
コメント利用規約に同意の上コメント投稿を行ってください。

数字4桁を入力し、投稿ボタンを押してください。