Piサーボハットフックアップガイド
SparkFun Piサーボハットを使用すると、RaspberryPiでI2C接続を介して最大16個のサーボモーターを制御できます。これによりGPIOが節約され、オンボードGPIOを他の目的に使用できるようになります。さらに、Piサーボシールドはシリアル端末接続を追加します。これにより、RaspberryPiをモニターやキーボードに接続しなくても起動できます。
このチュートリアルに沿って従う必要があることは次のとおりです。 NOOBS対応カードにはPiZero Wをサポートするのに十分な新しいOSがない可能性があるため、NOOBS対応カードではなく空のmicroSDカードを購入することをお勧めします。
さらに、セットアップをテストするために、ある種のサーボモーターが必要になります。チュートリアルの後半で提供される例を、最初に一般的なサブマイクロサーボでテストしてみてください。
この製品アセンブリを追跡するために特別な工具は必要ありません。はんだごて、はんだ、および一般的なはんだ付けアクセサリが必要になります。
使用が最小限に抑えられるように設計された帽子であるため、ボードには関心のあるアイテムがわずかしかありません。
USBマイクロBコネクタ –このコネクタは、サーボモーターにのみ電力を供給するため、またはサーボモーターとハットに接続されているPiに電力を供給するために使用できます。また、シリアルポート接続を介してPiに接続するために使用して、Piのセットアップにモニターとキーボードを使用する必要をなくすことができます。
電源絶縁ジャンパー –このジャンパーをクリアして(デフォルトでは閉じています)、サーボ電源レールをPi5V電源レールから分離できます。なぜあなたはそれをしたいのですか?複数のサーボがある場合、または大きなサーボに大きな負荷がかかっている場合、サーボモーターによって電源レールに発生するノイズにより、完全なリセットまたはシャットダウンまで、Piで望ましくない動作が発生する可能性があります。 Piに電力が供給されている限り、このジャンパーの状態に関係なく、シリアルインターフェースは引き続き機能することに注意してください。
サーボモーターピンヘッダー –これらのヘッダーは、サーボモーターを簡単に取り付けることができるように間隔が空けられています。ほとんどのホビータイプのサーボモーターコネクタでは、適切な順序でピン留めされています。
男性のヘッダーをPiZeroWにはんだ付けすることをお勧めします。
このタイプの状況での私のお気に入りのトリックは、1つのピンをはんだ付けし、次に右手で鉄を持ってそのピンのはんだを溶かし、下に示すように平らになるまで左手でヘッダーを調整することです。ヘッダーの短い方の側ではんだ付けし、長い方のピンがコンポーネント側にあることを確認してください。 1つのピンを固定した後、すべてのピンをPi ZeroWにはんだ付けします。
メスヘッダーとPiサーボハットを使用して手順を繰り返します。
ボードの下部から短いピンを挿入し、コンポーネント側にはんだを追加して、PiサーボハットがPi ZeroWのオスヘッダーピンの上に重なるようにしてください。また、すべてのピンをはんだ付けする前に、ヘッダーが水平になっていることを確認する必要があります。
ヘッダーをはんだ付けしたら、Pi ZeroWにPiServo Hatを積み重ねます。次に、使用しているサーボに基づいて、ホビーサーボをチャネル「0」に接続します。ホビーサーボのデータシートを参照するか、このチュートリアルに記載されている標準のサーボコネクタのピン配列を参照してみてください。十分な5Vウォールアダプターを使用して、Pi Zero Wに電力を供給できます。ウォールアダプターを壁のコンセントに接続して電力を供給し、Pi ZeroWの「PWRIN」ポートとラベル付けされたmicro-Bコネクターを接続します。
ここでは、Pythonでpiサーボハットにアクセスして使用する方法について詳しく説明します。
完全なサンプルコードは、製品のGitHubリポジトリで入手できます。
最初のポイント:ほとんどのOSレベルの対話では、I
2
CバスはSMBusと呼ばれます。したがって、コードの最初の行を取得します。これにより、smbusモジュールがインポートされ、SMBusタイプのオブジェクトが作成され、PiのさまざまなSMBuseのバス「1」に接続されます。
プログラムに部品のアドレスを伝える必要があります。デフォルトでは0x40なので、後で使用するために変数を設定します。
次に、PWMチップを有効にして、書き込み後にアドレスを自動的にインクリメントするように指示します(これにより、単一操作のマルチバイト書き込みを実行できます)。
実行する必要のあるセットアップはこれですべてです。これからは、PWMチップにデータを書き込んで、応答することを期待できます。これが例です。
最初の書き込みは、チャネル0の「開始時間」レジスタへの書き込みです。デフォルトでは、チップのPWM周波数は200Hz、つまり5msごとに1パルスです。開始時間レジスタは、5msサイクルでパルスがいつハイになるかを決定します。すべてのチャネルはそのサイクルに同期されます。通常、これは0に書き込む必要があります。2番目の書き込みは「停止時間」レジスタへの書き込みであり、パルスがいつローになるかを制御します。この値の範囲は0〜4095で、各カウントはその5ms期間(5ms / 4095)の1つのスライス、つまり約1.2usを表します。したがって、上記の1250の値は、5ミリ秒の期間あたり約1.5ミリ秒のハイタイムを表します。
サーボモーターは、そのパルス幅から制御信号を取得します。一般的に、パルス幅が1.5msの場合、モーターの範囲の両極端の中間にある「ニュートラル」位置になります。 1.0msは中心から約90度ずれ、2.0msは中心から-90度ずれます。実際には、これらの値は90度よりわずかに多いか少ない可能性があり、モーターはどちらの方向にも90度よりわずかに多いまたは少ない運動が可能です。
他のチャネルをアドレス指定するには、上記の2つのレジスタのアドレスを4だけ増やします。したがって、チャネル1の開始時間は0x0A、チャネル2の開始時間は0x0E、チャネル3は0x12など、チャネル1の停止時間アドレスは0x0Cです。チャネル2の場合は0x10、チャネル3の場合は0x14などです。次の表を参照してください。
開始アドレスに0を書き込む場合、90度からのオフセットのすべての次数は、停止アドレスに書き込まれる4.6カウントを必要とします。つまり、達成したいニュートラルからのオフセット度数に4.6を掛けてから、希望する動きの方向に応じて、その結果を1250から加算または減算します。たとえば、中心から45度のオフセットは、モーションの方向に応じて、207(45×4.6)カウントまたは1250未満になります。
続きを読む…
Piサーボハットフックアップガイド
必要な材料
必要なツール
ソフトウェア– Python
SMBusリソースへのアクセスを設定する
import smbus
bus =smbus.SMBus(1) addr =0x40
bus.write_byte_data(addr、0、0x20)bus.write_byte_data(addr、0xfe、0x1e)
PWMレジスタへの値の書き込み
bus.write_word_data(addr、0x06、0)bus.write_word_data(addr、0x08、1250)
チャンネル番号 開始アドレス ストップアドレス Ch 0 0x06 0x08 Ch 1 0x0A 0x0C Ch 2 0x0E 0x10 Ch 3 0x12 0x14 Ch 4 0x16 0x18 Ch 5 0x1A 0x1C Ch 6 0x1E 0x20 Ch 7 0x22 0x24 Ch 8 0x26 0x28 Ch 9 0x2A 0x2C Ch 10 0x2E 0x30 Ch 11 0x32 0x34 Ch 12 0x36 0x38 Ch 13 0x3A 0x3C Ch 14 0x3E 0x40 Ch 15 0x42 0x44
製造プロセス