So-net無料ブログ作成

Arduinoによる自動運転 その12 [Arduino]

TLC5940NTにて増設したPWM出力をパワーパック用に使えるようにしました。

パワーパック出力.jpg
スケッチは、正転で発車後定速維持、その後減速して停止。

停止後、逆転して発車後定速を維持、その後減速停止です。

発車位置と最後の停止位置が半周ズレますが御愛嬌ってことで。

*******************
#include <Tlc5940.h>

void setup() {
 Tlc.init();
  for(int i=500;<1500;i++){  //発車
   Tlc.clear();
    Tlc.set(1,i);    //第1引数「1」で正転
      Tlc.update();
  delay(15);
  }
 
    Tlc.clear();
    Tlc.set(1,1500);  //定速1500維持
      Tlc.update();
  delay(5000);
 
  for(int i=1500;>500;i--){  //減速から停止
   Tlc.clear();
    Tlc.set(1,i);
      Tlc.update();
  delay(15);
  }
  delay(5000);
 
 //ここから逆転操作 
for(int i=500;i<1500;i++){  //発車
   Tlc.clear();
    Tlc.set(2,i);    //第1引数の「2」で逆転
      Tlc.update();
  delay(15);
  } 
    Tlc.clear();
    Tlc.set(2,1500);
      Tlc.update();
  delay(5000);
 
  for(int i=1500;i>500;i--){
   Tlc.clear();
    Tlc.set(2,i);
      Tlc.update();
  delay(15);
  }
 Tlc.clear();
   Tlc.update(); 
}

void loop() {
 
}

*******************

このスケッチをvoid loop()内に書けば、延々と繰り返し動作になります。

P1050669.JPG

スムーズに走行してくれますね。

これでギャップは好き放題切れますね。


タグ:鉄道模型
コメント(0)  トラックバック(0) 
共通テーマ:趣味・カルチャー

Arduinoによる自動運転への道 その11 [Arduino]

前記事で、PWM定電流ドライバICのTLC5940NTを使ったPWM出力ピンの増設は無理なのではないかと記載しましたが、sinさんから助け船がありました。

ta8428k.jpg

モータードライバIC(TA8428K)とPWM定電流ドライバIC(TLC5940NT)の間にPNPトランジスタ回路を挟みます。

こうすると、TLC5940NTのOUT1がSETさせると、トランジスタエミッタ・ベース間に電流が流れると共にエミッタ・コレクタ間にも電流が流れて、TA8428Kの1番ピンにも流れ込み、めでたしめでたしということです。

なるほどね、理に叶った回路ですね。

親爺ぃには思いもつきません。

現役を離れたとはいえ、まだまだ頭の中には抵抗やコンデンサが詰まってるお方は凄いですね。

ありがとうございます。

早速、トランジスタを手に入れたら実験に移ります。

上手く行ったら、OUTピン16本全部にこの回路を入れるのです。

面倒臭いね。(^^ゞ


タグ:鉄道模型
コメント(2)  トラックバック(0) 
共通テーマ:趣味・カルチャー

紫陽花 [日々雑感]

蒸し暑い日の休日、紫陽花で有名な相模原北公園に行ってきました。

200種あまりの紫陽花が1万株も植わっているとの情報を得て、紫陽花好きの親爺ぃとしては行かないわけには行きません。

曇の予想に反して時折日差しが射すお天気でした。(雨が良かったのですがねぇ)

行ってみた感想としては、

「お腹、いっぱ~~~~~~い!!」

今年はもう紫陽花は見たくありません。

それほど満足した一日でした。

全ての品種を撮ってこようと意気込んで行ったのですが、半分も撮らないうちにゲロ吐きそうになったので帰ってきてしまいました。

その中の目についた紫陽花を載せておきます。

名前が間違っているかもしれませんがご勘弁を。

IMGP8974.jpg
「アナベル」

IMGP8979.jpg
「ブントスペヒト」

IMGP8981.jpg
「レディ・サチコ」

IMGP8984.jpg
「シロテマリ」

IMGP8987.jpg
「ハルナ」

 IMGP8992.jpg
「ブルダニューフ」

IMGP8994.jpg
「ロイヤルブルー」

IMGP9001.jpg

IMGP9002.jpg
「ダンスパーティー」

IMGP9004.jpg
「ウェディングドレス」

IMGP9014.jpg
「小町」

IMGP9018.jpg
「?」

IMGP9021.jpg
「ギンペル」

IMGP9025.jpg
「さざ波」

IMGP9026.jpg
「ウサミガクアジサイ」

IMGP9031.jpg
「フラウヨシコ」

IMGP9045.jpg
「ピーターパン」

IMGP9052.jpg
「紫式部」

IMGP9054.jpg
「ポージィブーケ ミミ」

IMGP9056.jpg
「ポージィブーケ ララ」

IMGP9059.jpg
「紅(クレナイ)」

IMGP9063.jpg
「子持七段花」

いやはや、紫陽花も奥が深いですねぇ~。


タグ:紫陽花
コメント(2)  トラックバック(0) 
共通テーマ:趣味・カルチャー

Arduinoによる自動運転への道 その10 [Arduino]

PWM定電流ドライバICのTLC5940NTを使ってPWM出力ピンの増設のお話。

TLC5940NTxPWM2.jpg
注意・・・Arduino MEGA 2560 R3の使用ピンはこれでないと誤作動します。

ArduinoのPWMピン2本とDigitalピン3本使ってPWM出力ピンを16本に増やせます。

今回は増えた内の1本を使って、PWM出力を可変させてみます。

OUT1に繋いだLEDは消灯から徐々に明るくなって一定の明るさになったらその明るさを維持します。(発車モード)

**************************

#include <Tlc5940.h>

void setup() {
 Tlc.init();
  for(int i=0;i<4095;i++){
   Tlc.clear();
    Tlc.set(1,i);
      Tlc.update();
  delay(30);
  }
}

void loop() {
  
}
**********************************

うまく点灯してくれました。

今回の目的はLED制御ではなくて、増設したピンでPWM制御パワーパックの役目が出来るかです。

TA8428.jpg

5Vでは車両は動かないので、モータードライバIC(TA8428K)をLEDの代わりに繋ぎます。

回路図を書いていると、「はて?」と気づきました。
(一番上の回路図を書いている時にすでに気づいていたのですが)

「無理なんじゃね?」

一番上の回路図に戻ってみてください?

LEDの向きをみると、通常出力ならLEDの向きは逆です。

しかし、TLC5940は電流はOUTピンに向かって流れ、あたかも入力ように扱っています。

これではモータードライバICは動いてくれませんね。

TLC5940による増設は、LEDのPWM制御には使えても、レイアウトのパワーパック代わりには使えません。

PWM制御パワーパック用ピンの増設は潔く諦めましょう。


タグ:鉄道模型
コメント(5)  トラックバック(0) 
共通テーマ:趣味・カルチャー

Arduinoによる自動運転への道 その9 [Arduino]

TC74HC165の2個直列による、16本入力増設が出来たので記しておきます。

シフトイン16.jpg

参考にしたのは、ここです。

**********************

int LATCH = 22;
int CLOCK = 23;
int DATA = 24;

#define NUM_OF_74HC165 2

byte received[NUM_OF_74HC165];
byte previous[NUM_OF_74HC165];


void setup() {
        Serial.begin(9600);

        pinMode(LATCH, OUTPUT);
        pinMode(CLOCK, OUTPUT);
        pinMode(DATA, INPUT);
       pinMode(26, OUTPUT); //26番ピンをoutputに設定
       
       
        digitalWrite(CLOCK,LOW);
        digitalWrite(LATCH,LOW);
}

void loop() {

        digitalWrite(LATCH,HIGH);

        for ( byte i=0; i < NUM_OF_74HC165 ; i++ ) {
                received[i] = shiftInMSBFirst(DATA,CLOCK);
        }

        digitalWrite(LATCH,LOW);

        for ( byte i=0; i < NUM_OF_74HC165 ; i++ ) {
                if ( previous[i] != received[i] ) {
                        previous[i] = received[i];
                        Serial.print(i,DEC);
                       // Serial.print(' ');
                        Serial.print(received[i],DEC);
                        Serial.println();
                        
        if(i==0,received[i]==254){ //ここから26番ピンに繋いだLEDを点灯
            digitalWrite(26,HIGH) ;
     }
        if(i==0,received[i]==255){ //ここから26番ピンに繋いだLEDを消灯
            digitalWrite(26,LOW) ;
     }
                }
        }
}

byte shiftInMSBFirst(byte dataPin, byte clockPin) {
        byte value = 0;

        for (byte i = 0; i < 8; ++i) {
                value = value | digitalRead(dataPin) << (7 - i);
                digitalWrite(clockPin, HIGH);
                digitalWrite(clockPin, LOW);
        }
        return value;
}



**********************

上のスケッチはタクトスイッチ1番を押すと、Arduinoの26番ピンに繋いだLEDを点灯するスケッチです。

他のスイッチを押した時に任意のLEDを点灯させる場合は下記を参照してください。

シリアルモニター2.jpg


タグ:鉄道模型
コメント(2)  トラックバック(0) 
共通テーマ:趣味・カルチャー

Arduinoによる自動運転への道 その8 [Arduino]

信号機の前に気になっていることがあります。

2列車同時運行を先に片付けておきます。

マルチ3.png

こんなシーンを想像してください。

車両Aが「定速モード」で走行中に、車両Bを「発車モード」で出発させます。

マニュアル運転なら「WPP」で簡単に実現できますね。

そこで、

wpp3.jpg

Arduinoを2枚使ってWPPと同じことをさせてしまえば、2列車同時運行は簡単ではないでしょうか。

問題はArduino同士の連携をどうするかです。

I2C通信や、Processingで2枚を制御させるとかあるようですが、簡単に連携出来る方法を思いついたので記しておきます。

Arduino2.jpg

LED1を上図の信号機の青とします。

Arduino1は、車両Aのスケッチを書いて、Arduino2には車両Bのスケッチを書きます。

前々記事の、「MyShiftOut( DATAPIN, CLOCKPIN, 16, 32768 );  」を「MyShiftOut( DATAPIN, CLOCKPIN, 16, 49152 );  」に書き換えます。

すると、QAピンに繋がるLED1(青)が点灯すると、QBピンに繋がるLED2も点灯(5V出力)するので、QBピンの配線をArduino2に送ってしまいます。

これをトリガーにして、「もし、Arduino1のQBピンがHIGHなら、車両Bを発車させる」をスケッチをArduino2に書けば、タイミングを合わせることが出来ますね。

説明がへたくそですねぇ。(^^ゞ

構成.jpg

本番のレイアウトではArduino1枚に1列車を担当させて、3列車同時運行を実現したいですね。


タグ:鉄道模型
コメント(4)  トラックバック(0) 
共通テーマ:趣味・カルチャー

Arduinoによる自動運転への道 その7 [Arduino]

Arduinoによる自動運転への道 その4でPWMピンの増設をしましたが、デジタルピンとしては使えますがPWMピンとしては働いてくれません。

「1」か「0」か、「5Vが出力される」か「出力がない」かしか出来ません。

スケッチの書きようがないのです。

ネットで調べてみると、これを使えばいいようです。

使い方は、ここ。(丸投げモードです。)

ArduinoのPWMピン4本を使って16本出力が増えます。

TLC5940NTは4個まで繋げられるので、最大64本も増えますね。

各ピン個別にPWM制御ができるようですね。


タグ:Arduino
コメント(2)  トラックバック(0) 
共通テーマ:趣味・カルチャー