Raspberry Pi は、電子エンジニアや愛好家向けに設計されたARMアーキテクチャプロセッサベースのボードです。PIは、現在最も信頼されているプロジェクト開発プラットフォームの1つです。より高速なプロセッサ速度と1GBのRAMを備えたPIは、画像処理やモノのインターネットなどの多くの注目を集めるプロジェクトに使用できます。
注目を集めるプロジェクトを行うには、PIの基本的な機能を理解する必要があります。 これらのチュートリアルでは、RaspberryPiのすべての 基本機能について説明します。各チュートリアルでは、PIの機能の1つについて説明します。チュートリアルシリーズの終わりまでに、あなたは自分で注目を集めるプロジェクトを行うことができるようになります。RaspberryPiおよびRaspberryPi構成の開始については、これらを確認してください。
以前のチュートリアルでは、LEDの点滅、ボタンのインターフェース、およびPWMの生成について説明しました。このチュートリアルでは、RaspberryPiとPWM技術を使用してDCモーターの速度を制御します。PWM(パルス幅変調)は、一定の電源から可変電圧を取り出すために使用される方法です。前のチュートリアルでPWMについて説明しました。
Raspberry Pi2には40個のGPIO出力ピンがあります。ただし、40個のうち26個のGPIOピン(GPIO2〜GPIO27)のみをプログラムできます。これらのピンのいくつかは、いくつかの特別な機能を実行します。特別なGPIOは別として、17個のGPIOが残っています。GPIOピンの詳細については、以下を参照してください:RaspberryPiによるLEDの点滅
これらの17個のGPIOピンはそれぞれ最大15mAを供給できます。また、すべてのGPIOピンからの電流の合計は50mAを超えることはできません。したがって、これらの各GPIOピンから平均で最大3mAを引き出すことができます。したがって、自分が何をしているのかを知らない限り、これらのことを改ざんしてはなりません。
ある+ 5V(ピン2および4)と+ 3.3V(ピン1&17)の電力出力端子ボード上の他のモジュールとセンサを接続します。この電源レールは、プロセッサ電源と並列に接続されています。したがって、この電源レールから大電流を引き出すと、プロセッサに影響します。PIボードにはヒューズがあり、高負荷をかけるとトリップします。+ 3.3Vレールから100mAを安全に引き出すことができます。ここでこれについて話しているのは、DCモーターを+ 3.3Vに接続しています。電力制限を考慮して、ここでは低電力モーターのみを接続できます。高電力モーターを駆動する場合は、別の電源から電力を供給することを検討してください。
必要なコンポーネント:
ここでは 、Raspbian JessieOSでRaspberryPi2モデルB を使用しています。ハードウェアとソフトウェアの基本的な要件はすべて前に説明しましたが、必要なものを除いて、RaspberryPiの概要で調べることができます。
- 接続ピン
- 220Ωまたは1KΩ抵抗(3)
- 小型DCモーター
- ボタン(2)
- 2N2222トランジスタ
- 1N4007ダイオード
- コンデンサ-1000uF
- ブレッドボード
回路の説明:
前述のように、GPIOピンから15mAを超える電流を引き出すことはできず、DCモーターは15mAを超える電流を引き出すため、RaspberryPiによって生成されたPWMをDCモーターに直接供給することはできません。そのため、速度制御のためにモーターをPIに直接接続すると、ボードが恒久的に損傷する可能性があります。
そこで、スイッチングデバイスとしてNPNトランジスタ(2N2222)を使用します。このトランジスタは、PIからPWM信号を取得することにより、高出力DCモーターを駆動します。ここで、トランジスタを誤って接続すると、ボードに大きな負荷がかかる可能性があることに注意する必要があります。
モーターは誘導であるため、モーターを切り替えるときに誘導スパイクが発生します。このスパイクはトランジスタを大幅に加熱するため、ダイオード(1N4007)を使用して、誘導性スパイクに対するトランジスタの保護を提供します。
電圧変動を低減するために、回路図に示すように、電源の両端に1000uFのコンデンサを接続します。
作業説明:
回路図に従ってすべてが接続されたら、PIをオンにしてプログラムをPYHTONで作成できます。
PYHTONプログラムで使用するいくつかのコマンドについて説明します。
ライブラリからGPIOファイルをインポートします。以下の関数を使用すると、PIのGPIOピンをプログラムできます。また、「GPIO」の名前を「IO」に変更しているため、プログラムでGPIOピンを参照する場合は常に、「IO」という単語を使用します。
RPi.GPIOをIOとしてインポートします
時々、私たちが使おうとしているGPIOピンが他の機能をしているかもしれません。その場合、プログラムの実行中に警告が表示されます。以下のコマンドは、PIに警告を無視して、プログラムを続行するように指示します。
IO.setwarnings(False)
PIのGPIOピンは、ボード上のピン番号または機能番号のいずれかで参照できます。ボード上の「PIN35」のように「GPIO19」です。したがって、ここでは、ピンを「35」または「19」で表すことにします。
IO.setmode(IO.BCM)
GPIO19(またはPIN35)を出力ピンとして設定しています。このピンからPWM出力を取得します。
IO.setup(19、IO.IN)
ピンを出力として設定した後、ピンをPWM出力ピンとして設定する必要があります。
p = IO.PWM(出力チャネル、PWM信号の周波数)
上記のコマンドは、チャネルを設定するためのものであり、PWM信号の周波数を設定するためのものでもあります。ここでの「p」は変数であり、何でもかまいません。PWM 出力チャネル としてGPIO19を使用してい ます 。LEDが点滅するのを見たくないので、「 PWM信号 の 周波数 」は100に選択されています。
以下のコマンドはPWM信号の生成を開始するために使用されます。「 DUTYCYCLE 」はターンオン率を設定するためのものです。0はLEDが0%の時間オンになることを意味し、30はLEDが30%の時間オンになることを意味します。100は完全にオンになることを意味します。 。
p.start(DUTYCYCLE)
中括弧内の条件がtrueの場合、ループ内のステートメントは1回実行されます。したがって、GPIOピン26がローになると、IFループ内のステートメントが1回実行されます。GPIOピン26がローにならない場合、IFループ内のステートメントは実行されません。
if(IO.input(26)== False):
一方1: 無限ループに使用されます。このコマンドを使用すると、このループ内のステートメントが継続的に実行されます。
これで速度制御を実現するために必要なすべてのコマンドがあります。
プログラムを作成して実行した後は、コントロールを操作するだけです。PIに接続された2つのボタンがあります。1つはPWM信号のデューティサイクルをインクリメントするためのもので、もう1つはPWM信号のデューティサイクルをデクリメントするためのものです。一方のボタンを押すとDCモーターの速度が上がり、もう一方のボタンを押すとDCモーターの速度が下がります。これにより、RaspberryPiによるDCモーター速度制御を実現しました。
また、チェックしてください:
- DCモーター速度制御
- Arduinoを使用したDCモーター制御