ありぎりす の徒然日記

アクセスカウンタ

zoom RSS RaspberryPiで鉄道模型を動かしてみる その3

<<   作成日時 : 2016/07/23 16:13   >>

ナイス ブログ気持玉 1 / トラックバック 0 / コメント 0

PWMで速度制御:
PWMとは、パルス幅変調Pulse Width Modulation)のこと。
このPWMを使えば、アナログ電圧出力が無くても、
出力電力を加減して、鉄道模型の速度を制御できるのですよ。

新たに作るのはソウトウェアだけ、
動作環境、電子回路などは前回ブログ その2 と同じです。

ライブラリのwiringPiにはPWMを使うための
関数が用意されています。

そのプロトタイプ宣言は以下の3つです。

softPwm.h
extern int softPwmCreate (int pin, int value, int range) ;
extern void softPwmWrite (int pin, int value) ;
extern void softPwmStop (int pin) ;


softPwmCreate はPWMを生成する関数です。
 pinは使用するGPIOのピン番号、valueはパルス幅の初期値(単位は0.1msec)
 rangeはパルス周期(単位は0.1msec)です

softPwmWrite はパルス幅の書き換えです。

softPwmStop はPWMを終了させる関数です。


それでは実際にプログラムを組んで動かしてみましょう。


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <wiringPi.h>


#define GPIO24 24
#define GPIO19 19


int main(void) {
 int i;
 int speed;

 if(wiringPiSetupGpio() == -1)
 {
  printf(" SetUp error \n");
  return 1;
 }

 softPwmCreate(GPIO24, 0, 50);
 softPwmCreate(GPIO19, 0, 50);

 for (speed = 10; speed < 50; speed=speed + 10)
 {
  softPwmWrite(GPIO24, speed);
  sleep(10);
 }

 for (speed = 50; speed > 0; speed=speed - 10)
 {
  softPwmWrite(GPIO24, speed);
  sleep(10);
 }

 softPwmWrite(GPIO24, 0);

 sleep(3);

 for (speed = 10; speed < 50; speed=speed + 10)
 {
  softPwmWrite(GPIO19, speed);
  sleep(10);
 }

 for (speed = 50; speed > 0; speed=speed - 10)
 {
  softPwmWrite(GPIO19, speed);
  sleep(10);
 }

 softPwmWrite(GPIO24, 0);
 softPwmWrite(GPIO19, 0);

 softPwmStop(GPIO24);
 softPwmStop(GPIO19);

 return 0;
}


PWMのパルス周期5msec(周波数:200ヘルツ)で、
徐々に加速、徐々に減速して3秒停止
今度は逆方向に徐々に加速、徐々に減速して停止する
プログラムです。

それでは、実際にどんな感じで電圧が出力されるか、
出力電圧を見てみましょう。

デューティ20%(パルス幅1msec)
画像


デューティ80%(パルス幅4msec)
画像


めでたく鉄道模型の車両速度を制御することができました。ヽ(´▽`)ノ

PWMの周期や加減速の加速度などは、色々試して調整してみるといいでしょう。


実用としてはこれで十分なのですが、次回は別の方法で
速度制御することを考えてみようと思います。


関連ブログ一覧:

 『RaspberryPiで鉄道模型を動かしてみる その1
   まずは下準備 』


 『RaspberryPiで鉄道模型を動かしてみる その2
   車両を動かす(ON/OFF制御) 』


 『RaspberryPiで鉄道模型を動かしてみる その3
   PWMで速度制御 』


 『RaspberryPiで鉄道模型を動かしてみる その4
   DACで速度制御その1 』


 『RaspberryPiで鉄道模型を動かしてみる その5 追記あり
   DACで速度制御その2 』


 『RaspberryPiで鉄道模型を動かしてみる その6
   ポイントを動かす 』


 『RaspberryPiで鉄道模型を動かしてみる その7
   駅で停める 』


 『RaspberryPiで鉄道模型を動かしてみる その8
   効果音を鳴らす 』


 『RaspberryPiで鉄道模型を動かしてみる その9
   制御プログラムの話』

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ
気持玉数 : 1
ナイス

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
RaspberryPiで鉄道模型を動かしてみる その3 ありぎりす の徒然日記/BIGLOBEウェブリブログ
文字サイズ:       閉じる