ようやく4号コンテナ完成しました。
まずは動画をご覧いただけたらと思います。約2分半あります。
今回は音楽の時間に入りきらなくて早回し入れてますw
前回基本的なパーツの組み入れを行いましたが、前後のコンテナハッチの工作を忘れていましたw
塗装をして前方の上方に警告灯を付けてみました。
ハッチを閉めた時に必要なピン状のパーツが今回は破損しやすいとのことで、ネオジム磁石を埋め込んでピンのパーツは使わないことにしました。
今回はハッチ自体にはガイディングライトは埋め込みませんでした。
床裏に配置したパーツ類はこんな感じになりました。
1.3.7Vのリチウムポリマー電池2. ATmega168P(メイン)3.Attiny13A(警告灯用)
4.スロープスライド用減速モーター。5.スロープ上下用減速モーター
6.モータードライバー7.側壁、天井LED用のトランジスタ8.Attiny13A用トランジスタ
9.赤外線センサー10、11.側壁LED用CRD12.メインスイッチ
てな感じになりました。後ほど配線図とプログラム載せておきます。
途中モーターの配線を間違えていたり、赤外線センサーの配線を間違えたりでてんやわんやでしたw
電源はリチウムポリマー電池を使います。この電池を内部に入れたままは怖いので、コンテナ底面に穴をあけて取り外せるようにしました。
使わないときはリチウムポリマー電池は外しておきます。充電も外してから行います。
蓋をプラ板で作って(かなり適当ですw)ネオジム磁石で取れないようにしておきました。
これで一通りパーツができあがりましたので、組み立てて動かしてみました。
合いはまずまずの様です。
ギミックの確認をしてみると・・・・・・。
うわwスロープのスライド部分がハッチとムチャクチャ離れていますw
スロープの角度の問題ですね・・・・。てなことでスロープを持ち上げる支柱部分を伸ばしてみました。
試行錯誤してこのくらい(内部の真鍮線が見えていますw)伸ばす必要がありました。
スロープの角度が増しましたが、天井のキャットウォークにどうにか当たっていません。セーフ^^。
スロープの支柱部分は新たに少し太目のプラ棒で修正しておきました。
これで気にならない位までスロープの先端とハッチが近づいてくれました。
ハッチの固定用のピンが無くなってネオジム磁石になっているのもわかると思います^^。
これで大分いい雰囲気になってくれたので4号を乗せて動かしてみていたのですが、
どうもなんか寂し~!
てなことで4号に電飾仕込んでみました。
まずはエンジン部分に穴をあけて1608のチップLEDを投入~!
次にコクピットにもライトを投入。
電源はボタン電池R41を使用することにしました。(写真の電池はR41ではありません)
こちらがR41のボタン電池です。綺麗に治ってくれます。
5vに昇圧してAttiny85でLEDをコントロールします。
エンジンはPWMでチラツキを出してみたのですが、電流量が少ないからなのかコクピットのライトも連動してチラツキますw
ここでさらに前照灯の電飾を忘れていたのを思い出し追加しました。
配線はそのままパーツ内側の表面に添わせて、汚しの時に機体色と似た色でごまかします^^;
面倒でしたのでコクピットと同じピンにはんだ付けしておきました。
うまく点灯してくれています。
コクピットの天井はクリアパーツに塗装してあるものなのでスケスケですw
アルミテープを貼って適当に遮光しておきました。
ちなみにこの前照灯をつけるとさらにチラツキがひどくなったので結局PWMによるエンジンのチラツキは無しにして、始動時のみPWMを活用しました。
スイッチについてはリードスイッチを機体下面に埋め込んでいます。
スロープの途中の裏に磁石を仕込んでそこを通過する時にサンダーバード4号がONとなることを狙ってみました。
そのためにスロープ下に7x4x4mmのネオジム磁石を接着したのですが、この時に大惨事に!
瞬着で止めていたのですが、瞬着が流れすぎてスロープをスライドさせるモーターの減速ギアに流れ込んでしまいまし・・・・(>_<)
結局スライド用のモーターを摘出してギアの部分を交換することになりました。
かなりパニクっていましたので写真撮っていませんでしたw
最後の最後でとんだハプニングがありましたがなんとか形になりました^^。
とりあえずプログラムと回路図載せておきます。
コンテナメインの回路図はこちら(クリックすると少し大きくなります)
プログラムはこちら(全機能試していませんので誤作動有ったらすみません)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 |
/* * N04 container Main ATmega168P * Created: 2017/06/11 * Author: 6jiro * IR受信プログラムはdiorama111さんのものを使用 */ //ATmega168P clock:8MHz //IR NEC-type #include <avr/io.h> #include <avr/interrupt.h> #define F_CPU 8000000UL #include <util/delay.h> void wait(uint16_t w){while(w--){volatile uint16_t i=1;while(i--);}} int cti,ads,cmd; char bt,ib; int n,u,h,r=0,s=0,t=0,u=0,v=0; int z1=0x30CF,z2=0x18E7,z3=0x7A85,z4=0x10EF,z5=0x38C7,z6=0x5AA5; int z7=0x42BD,z8=0x4AB5,z9=0x52AD,z0=0xD42B; int zd=0xA25D,zn=0xE21D,zg=0x22DD,zs=0xC23D,zc=0x6897;//電源:zd,MENU:zn,TEST:zg,回転矢印:zs int zu=0xE01F,zw=0x906F,zv=0xA857,zp=0x02FD,zm=0x9867;//巻き戻し:zu,早送り:zw,再生:zv:+:zp,-:zm unsigned int m=10,q; //---------- all off ---------------------------------------------- void off(){ PORTD|=(1<<PD1); PORTB|=(1<<PB4);//back while(!(~PINC & 0x08)){} if(~PINC & 0x08){PORTB&=~(1<<PB4);} PORTB|=(1<<PB2);//down while(!(~PINC & 0x02)){} if(~PINC & 0x02){PORTB&=~(1<<PB2);} PORTD&=~(1<<PD1); }//off //----------------end--------------------------------------------- void end(){ off(); PORTD&=~(1<<PD0); }//end //----------------------------------------------------------------- void deci(){ if(cmd==zd) { //power if(v==0){v=1;PORTD|=(1<<PD0);}else{v=0;end();}} if(cmd==zg && v){PORTD^=(1<<PD1);} if(cmd==zp && v){PORTB&=~(1<<PB2);//down停止 r^=1;//1回スイッチオスごとに動作変化 if(r) {if(~PINC & 0x01){PORTB&=~(1<<PB1);}//アップセンサーONなら動かない else{PORTB|=(1<<PB1);}}//アップセンサーOFFなら動く else{PORTB&=~(1<<PB1);}}//再度スイッチ押すと停止 if(cmd==zm && v){PORTB&=~(1<<PB1); t^=1;//down if(t) {if(~PINC & 0x02){PORTB&=~(1<<PB2);} else{PORTB|=(1<<PB2);}} else{PORTB&=~(1<<PB2);}} if(cmd==zu && v){PORTB&=~(1<<PB4); if(~PINC & 0x02){PORTB&=~(1<<PB3);}//スロープダウン状態では動かない else{ s^=1;//Forward if(s) {if(~PINC & 0x04){PORTB&=~(1<<PB3);} else{PORTB|=(1<<PB3);}} else{PORTB&=~(1<<PB3);}} } if(cmd==zw && v){PORTB&=~(1<<PB3); u^=1;//back if(u) {if(~PINC & 0x08){PORTB&=~(1<<PB4);} else{PORTB|=(1<<PB4);}} else{PORTB&=~(1<<PB4);}} if(cmd==zv && v){n^=1;q=0;u=0;off();if(n==0){u=99;}}//demo mode wait(3000); }//deci //--------- lead -------------------------------------------------------- ISR(PCINT0_vect){ cti=0;while(~PINB & 0x01){cti++;_delay_ms(0.1);} //leader(16T) check if(cti>80 && cti<100){ //cti:90(16T) cti=0;while((PINB & 0x01)&&(cti<55)){cti++;_delay_ms(0.1);} //blank(8T) check if(cti>35){ //cti:45(8T) for(ib=0;ib<32;ib++){ while(~PINB & 0x01); cti=0;while((PINB & 0x01)&&(cti<20)){cti++;_delay_ms(0.1);} if(cti>10){bt=1;}else{bt=0;} //cti:16(3T) cmd=cmd<<1; //cmd:command cmd|=bt; if(ib==15){ads=cmd;cmd=0;} //ads:address } deci(); cti=0;while((PINB & 0x01)&&(cti<10)){cti++;_delay_ms(0.1);} while(~PINB & 0x01); //stop bit }//if(cti>35 }//if(cti>80 cti=0;while((PINB & 0x01)&&(cti<1500)){cti++;_delay_ms(0.1);} //blank check if(cti>1400){cmd=0;} }//ISR //--------------Safe system----------------------------------------- ISR(PCINT1_vect){ wait(50); if(~PINC & 0x01){PORTB&=~(1<<PB1);} //up stop if(~PINC & 0x02){PORTB&=~(1<<PB2);} //down stop if(~PINC & 0x04){PORTB&=~(1<<PB3);} //forward stop if(~PINC & 0x08){PORTB&=~(1<<PB4);} //back stop }//ISR(PCINT //--------- caution lamp , demo setting --------------------------- ISR(TIMER1_COMPA_vect){ q++;if(q>=m){q=0;u++;if(u>20){u=0;}} }//ISR(TIMER //--------------main------------------------------------------------- int main(){ DDRB =0b01111110; PORTB =0b00000001; DDRC =0b00110000; PORTC =0b00001111; DDRD =0b11111111; PORTD =0b00000000; PCICR =0b00000011; //PCINT setting PCMSK0=0b00000001; //remote control read PCMSK1=0b00001111; //PCINT8,9,10,11 TCCR1A=0b00000000; //caution,demo TCCR1B=0b00001100; //比較一致タイマ CTC top=OCR1A TIMSK1=0b00000010; //割り込み許可 OCR1A =13500; sei(); //------------------------------------------------------------------------- while(1){ u=0; while(n){ //------------caution lamp on--------------- if(u==0){PORTD|=(1<<PD1);} //----------------up------------------------ if(u==1){ if(~PINC & 0x01){PORTB&=~(1<<PB1);} else{PORTB|=(1<<PB1);} } if(u==2){if(~PINC & 0x01){PORTB&=~(1<<PB1);} else{PORTB|=(1<<PB1);} } if(u==3){if(~PINC & 0x01){PORTB&=~(1<<PB1);} else{PORTB|=(1<<PB1);} } //--------------forward-------------------- if(u==4){if(~PINC & 0x04){PORTB&=~(1<<PB3);} else{PORTB|=(1<<PB3);}} if(u==5){if(~PINC & 0x04){PORTB&=~(1<<PB3);} else{PORTB|=(1<<PB3);}} //--------caution lamp off----------------- if(u==6){PORTD&=~(1<<PD1);} //-------------back------------------------ if(u==12){PORTD|=(1<<PD1); _delay_ms(1000); if(~PINC & 0x08){PORTB&=~(1<<PB4);} else{PORTB|=(1<<PB4);}} if(u==13){if(~PINC & 0x08){PORTB&=~(1<<PB4);} else{PORTB|=(1<<PB4);}} //-------------down------------------------ if(u==14){PORTB&=~(1<<PB1); if(~PINC & 0x02){PORTB&=~(1<<PB2);} else{PORTB|=(1<<PB2);}} if(u==15){if(~PINC & 0x02){PORTB&=~(1<<PB2);} else{PORTB|=(1<<PB2);}} if(u==16){if(~PINC & 0x02){PORTB&=~(1<<PB2);} else{PORTB|=(1<<PB2);}} //---------caution lamp off---------------- if(u==17){off();} //----------------end---------------------- if(u==99){off();} }//while(n) }//while(1) }//int main() |
次に4号の回路図はこちら
プログラムはこちら
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
/* * Thunderebird_4.c * * Created: 2017/06/17 22:22:14 * Author: 6jiro *Attiny85 */ #include <avr/io.h> # define F_CPU 1000000UL #include <util/delay.h> #include <avr/interrupt.h> int h,i,duty=0,j,k,m,n,sw; void delay_ms( int time ) { while( time-- ){ _delay_ms( 1); } } void start(){ for (i=0;i<=50;i++) {duty++; OCR0A=duty; delay_ms(40); } for (h=0;h<=19;h++) {duty=duty+10; OCR0A=duty; delay_ms(30); } OCR0A=240; delay_ms(500); } void renzoku(){ OCR0A=255; delay_ms(80); } void end(){ duty=241; delay_ms(50); for (m=0;m<=240;m++) {duty--; OCR0A=duty; delay_ms(20); } } int main( void ){ DDRB = 0b00001001; // PB0を出力に設定 PORTB = 0b00000100; // PB2をプルアップ GTCCR = 0b10000000; TCCR0A = 0b10000001; // 位相基準PWM動作 上昇一致でLow下降一致でHigh TCCR0B = 0b00000001; // 前置分周なし OCR0A=0; while(1){if (~PINB & 0x04) {sw=1; PORTB|=(1<<PB3); delay_ms(11000); start(); while(sw){ renzoku(); if (!(~PINB & 0x04)){ for (n=0;n<=300;n++) {renzoku();} end(); PORTB&=~(1<<PB3);sw=0;} } } } } |
てな感じです。何かわからなければコメントいただけたらと思います^^。
しかし、コンテナ作りはもうお腹いっぱいですw95号までの延長どうしようかな・・・・。
関連すると思われる記事:
- None Found
こんにちは!
いや~、もう言葉がありません。
お見事というか、流石6jiroさんです。
スロープの傾くスピードや、スライドが伸びるスピードも、バッチリです。
コンテナ内部の赤い警告灯も雰囲気を醸し出していますし、スライドのガイダンスライトも良いですね!
4号の内部配線はすごいことになっていますね。(思いのほか4号が小さく見えます)
これだけのメカ(ギアモータや電子パーツ、電池など)を薄い床板の隙間に押し込んだテクニックにはびっくりです。
正式完成時は、4号は水の中に突入でしょうか?(笑)
Vividさん こんばんは!
なんとかできました^^。
何と無く雰囲気出ていますかね。
あのスライドする部分の減速モーターは以前サンダーバード1号の翼を開くのにすごく遅かったモーターがありましたが、取り替えたため余っていたのでそれを再利用しました。
おっしゃる様に床下が思いの外狭いので結構難儀しましたが、最大の問題点である電源がリチウムポリマーで最初から解決していましたので気は楽でした^^。
4号の配線はハンダ付けしやすい様にある程度の長さで作ってしまったので、エイヤッ!と丸めて詰め込んじゃいましたw
さすがに水にポチャするとやばいですよねw
6jiroさん、こんばんは!
アップされた動画がめちゃくちゃドラマチック!
役者ヨシ、舞台ヨシ、監督ヨシ カメラも音響もヨシで凄いです。
(で、それを6jiroさん一人でやってるわけですから…!!)
でもコレ、数ある場面の中の1シーンってことでしょ
他も2号の出発シーンだとかコンテナを降ろすシーンだとか
この後も色々と濃密なのが控えてるワケですよね!!
そんなことを思うと本当にビビッてしまいます。
すっごー!
GG.takaさん こんばんは!
コメントありがとうございます!
ちなみに音響は音楽そのままパクリですし、舞台は子供部屋ですw
2号の完成の暁には色々なシーンを撮ってみたいですね〜!
ただ、うまく表現できるかは謎ですがね^^;
発進シーンとかデアゴのディスプレー台がきたら撮ってみたいです。
ラフェラーリの記事のtaka節楽しみにしていますね!
カッコイイ~!!!
凄いです!
動画を拝見しましtが、BGMと相まって、もう完全に本物のTBですよ!キタこれ!
裏の制御パーツがまた凄いですね。
このままデコパーツと化しても良さそうなくらい(笑)
4号の電飾とその制御もお見事です!
もう本当に全部お見事と言うほか有りません(-o-!)
パチパチパチ。
凄い!お見事です!!
これだけでも一つの作品として完成しているけど、これはあくまでも「サンダーバード2号」という作品のほんの一部なんですよね。
全てが揃った時にどんな作品が展開されるのか、今から楽しみです。
「綺麗に治ってくれます。」→職業病が出てますな!
yangminさん こんばんは!
ありがとうございます!
BGMはまたまいつもの曲で^^;
サンダーバードの曲ってこのくらいしか思い浮かばないんですよね^^;
なんとかそれらしくしながら、現代風なアレンジを追加してみました。それらしく見えたら嬉しいです^^。
裏側は・・・・あまり見せられたもんではないんですけどね・・・まっ、苦労の結晶ということで^^;
4号は適当なタイミングでエンジン発光作ったのですが、意外とどんぴしゃりで自分で作っておきながらびっくりしましたw
taraさん こんばんは!
ありがとうございます!
そうなんですよ〜これは4号コンテナという一部ですので2号完成の暁にはどの様な動画をとるか考えも及びませんwなんか自分でハードル上げていってる感じで怖いですw
あまり期待しすぎないでくださいね・・・・。
うっw職業病出ていますかw
おはようございます!
動画素晴らしいですね~!
ほんものTV番組みたいです♪
電飾と可動ギミックも完璧ですね~
もしサンダーバードがアシェットだったら何処までギミック投入できただろうか・・・・?
まあ、デアゴだからパーツ破損気にせず安心して改造できるってのは有りますよね♪
こんにちは。是非、2番コンテナも磁力運搬機が電動で出てくるように改造を! というのは冗談ですが、すごいですねえとしか言葉が出ません。私は完走で精一杯ですが、どこか手を入れてみたいですね。
レッサーかずさん こんばんは!
ありがとうございます!
もしアシェットなら・・・・・・かなり緊張しながらの改造になったでしょうねw
今考えるとトムキャットよくあんな無茶したなと思いますw
そう言った意味ではデアゴさんはパーツ供給安定しているのでホントありがたいです。
Takayuki Konnoさん こんばんは!
ありがとうございます!
2番コンテナみなさん行かれるみたいですね・・・・・。どうしようか未だに悩んでいますw
正直コンテナの製作は高速エレベーターカー並みにお腹いっぱいになっています^^;
でも残りの救助メカも魅力ありそうですね・・・。
こんばんわ、FAB4です。
いやー皆さんがおっしゃっているとおり、お見事の一言に尽きます。ディアゴはデロリアンの代行制作を請け負うような会社ですから、この仕組みを制作、アイデア料込みでディアゴに売り込んだらどうです? このような細かい作業となると、とても自作は出来そうにもないので。
因みに4号コンテナは一式まだ組み立てていないので、何なら部品全部送りますから制作代行お願い出来ます?私ならお金に糸目をつけずに買いますよ~(笑)。
何せあのバカ高いポール・マッカートニーの武道館公演、見に行ったくらいですから、好きなものにはお金を惜しみません。ちなみに、アリーナ最前列をゲット出来て信じられない位の至近距離で見られたので、元は十分取れました(笑笑)。
FABさん こんばんは!
ありがとうございます!
さすがにこれをもう一度作るとなると心が折れますw
ギミック自体は単純な物の積み重ねですから、どこかのメーカーが作ってくれた方が絶対スッキリと確実な動作になるとは思いますが・・・・RCジェットモグラを作成したタカラあたりがもう一度本気を出してくれたらすごいものが出来そうなんですけどね〜。
ちなみに動画では完動していますが、たまに4号のスイッチが入らないこととかありますw
スロープの動きは安定しているんですけどね^^;
ポール・マッカートニーのコンサートはそんな良い席を取られていたんですね!
これはすごく良い思い出になられたでしょうね〜!