aka) Author: Christian Davén Version: 2.0 Author URI: http://www.daven.se/usefulstuff/ */ # adds an options page to the options menu function SUP_add_options_page() { if(function_exists("add_options_page")) add_options_page("Smart Update Pinger", "Smart Update Pinger", 5, basename(__FILE__), "SUP_show_options_page"); } # shows the options page function SUP_show_options_page() { $ping = get_option("SUP_ping"); $uris = get_option("ping_sites"); $pingservicesnow = "今すぐ ping を送信!"; if(isset($_POST["ping"]) && $_POST["ping"] == $pingservicesnow) { SUP_log("手動で ping を送信中 ..."); SUP_ping_services(); } elseif(isset($_POST["submit"])) { $uris = $_POST["uris"]; $ping = 0; if($_POST["ping"] == 1) $ping = 1; update_option("SUP_ping", $ping); update_option("ping_sites", $uris); echo '

設定を保存しました.

'; } $checked = ''; if($ping == 1) $checked = 'checked="checked"'; echo '

ping 送信先のサーバ

以下に登録されている ping サーバへは記事を投稿する際,自動的に ping 送信や更新通知がなされます。WordPress が通常行うような,以前書いた記事の編集時ではありません

注意: このリストは オリジナルのアップデートサービスリストと同期します。.

複数サーバを登録する際は改行で URI を分けて下さい

Ping 送信ログ

このプラグインのログです(下に行くほど新しいログです)

'.SUP_get_last_log_entries(20).'

'; } # telling WordPress to ping if the post is new, but not if it's just been edited function SUP_ping_if_new($id) { global $wpdb, $post_title; if(get_option('SUP_ping') == 1 and get_option('ping_sites') != "") { # fetches data directly from database; the function "get_post" is cached, # and using it here will get the post as is was before the last save $row = mysql_fetch_array(mysql_query( "SELECT post_date,post_modified FROM $wpdb->posts WHERE id=$id")); # if time when created equals time when modified it is a new post, # otherwise the author has edited/modified it if($row["post_date"] == $row["post_modified"]) { if($post_title) SUP_log("Pinging services (new post: “".$post_title."”) ..."); else SUP_log("Pinging services (新規の記事の投稿) ..."); SUP_ping_services(); # Try commenting the line above, and uncommenting this line below # if pinging seems to be out of order. Please notify the author if it helps! # generic_ping(); } else { if($post_title) SUP_log("NOT pinging services (“".$post_title."” の設定が変更されました)"); else SUP_log("NOT pinging services (記事が編集されました)"); } } else SUP_log("NOT pinging services (管理者が ping 送信を無効にしています)"); } # More or less a copy of WP's "generic_ping" from functions.php, # but uses another function to send the actual XML-RPC messages. function SUP_ping_services() { $services = get_settings('ping_sites'); $services = preg_replace("|(\s)+|", '$1', $services); // Kill dupe lines $services = trim($services); if ( '' != $services ) { $services = explode("\n", $services); foreach ($services as $service) SUP_send_xmlrpc($service); } } # A slightly modified version of the WordPress built-in ping functionality ("weblog_ping" in functions.php). # This one uses correct extendedPing format (WP does not), and logs response from service. function SUP_send_xmlrpc($server = '', $path = '') { global $wp_version; include_once (ABSPATH . WPINC . '/class-IXR.php'); // using a timeout of 3 seconds should be enough to cover slow servers $client = new IXR_Client($server, ((!strlen(trim($path)) || ('/' == $path)) ? false : $path)); $client->timeout = 3; $client->useragent .= ' -- WordPress/'.$wp_version; // when set to true, this outputs debug messages by itself $client->debug = false; $home = trailingslashit( get_option('home') ); # the extendedPing format should be "blog name", "blog url", "check url" (whatever that is), and "feed url", # but it would seem as if the standard has been mixed up. it's therefore best to repeat the feed url. if($client->query('weblogUpdates.extendedPing', get_settings('blogname'), $home, get_bloginfo('rss2_url'), get_bloginfo('rss2_url'))) { SUP_log("- ".$server." への ping 送信が成功しました (拡張フォーマット)"); } else { # pinging was unsuccessful, trying regular ping format if($client->query('weblogUpdates.ping', get_settings('blogname'), $home)) { SUP_log("- ".$server." への ping 送信が成功しました"); } else { SUP_log("- ".$server." への ping 送信が失敗しました。 以下のエラーメッセージが返されました: “".$client->error->message."”"); } } } $post_title = ""; # Receives the title of the post from a filter below function SUP_post_title($title) { global $post_title; $post_title = $title; return $title; } # ----- # Log stuff $logfile = ABSPATH."wp-content/smart-update-pinger.log"; # for debugging function SUP_log($line) { global $logfile; $fh = @fopen($logfile, "a"); @fwrite($fh, strftime("%D %T")."\t$line\n"); @fclose($fh); } function SUP_get_last_log_entries($num) { global $logfile; $lines = @file($logfile); if($lines === false) return "Error reading log file (".$logfile."). This could mean that the wp-content directory is write-protected and no log data can be saved, that you have manually removed the log file, or that you have recently upgraded the plugin."; else { $lines = array_slice($lines, count($lines) - $num); $msg = ""; foreach($lines as $line) $msg .= trim($line)."
"; return $msg; } } # ----- # adds a filter to receive the title of the post before publishing add_filter("title_save_pre", "SUP_post_title"); # adds some hooks # shows the options in the administration panel add_action("admin_menu", "SUP_add_options_page"); # calls SUP_ping whenever a post is published add_action("publish_post", "SUP_ping_if_new"); # calls SUP_ping_draft when changing the status from private/draft to published # add_action("private_to_published', 'SUP_ping_draft'); # removes the "WordPress official" pinging hook remove_action("publish_post", "generic_ping"); # activates pinging if setting doesn't exist in database yet # (before the user has changed the settings the first time) if(get_option("SUP_ping") === false) { update_option("SUP_ping", 1); } ?> バッテリ搭載 自走CCD車輛 | 空IKE飛行機! Blog

アーカイブ

‘バッテリ搭載 自走CCD車輛’ カテゴリーのアーカイブ

CCDカメラ付き自走車両の自作 静岡HS 2012年版 Nゲージ

2012 年 6 月 24 日 コメント 2 件

引き続き静岡HSのモデラーズクラブ合同展対応のCCDカメラ搭載車輛 改修記録です
毎年3〜5月頃だけNゲージ関係を調べ、合同展終了後は翌年まで放ったらかし・・・がいつものパターンですが、このままじゃ進歩無いと思って今年は終了後もマジメに改善策を練りましたw
まずは過去を振り返り改善点をまとめます
1、CCD車輛導入の2010年、Bトレ2輛にそれぞれ動力とCCDカメラ/送信機を仕込んで走行。
低速走行が安定しない事と、走行時の画像ノイズが気になった。
2、翌2011年、ノイズ対策を練らねばと思いつつもほぼブッツケで会場入り。停止時は非常にクリアな映像が得られるのは解っていたので走行中の集電にノイズ発生の原因があると判断し、思い切ってCCDユニットは送信電源を切り分けてみる。純正に付属の充電池は5Vになっていたがテストしてみたら3Vでも問題無く動作する模様。合同展の当日に会場で買い求めた限定コンテナ貨車にタミヤの単三電池BOXを2個直列で積み、CCDユニットを丸ごとマスキングテープでくくり付けた応急処置。
これじゃ変なメカってダケで模型として落第なのはさて置き、目論み通りノイズ無しのクリアな映像を得る事が出来た。
気になる電池の持続時間は単三アルカリx2本でほぼ2日間(14時間以上?)問題無く作動出来る程。予想以上にバッテリ消費は少ない様です。
※ この年の車輛の画像が残ってないんでこれでガマンしてくらさい・・・(笑)
2011_layout
動力車は前年と同じBトレ+KATO動力ユニットです。Loco効果もあったのか、速度を落としても終日比較的スムースに走行していました。
さらなる改善点として外観をも少し何とかしようよ、ってのと単三電池2本の重量はBトレ動力車に牽引させるにはちょっとヘヴィー過ぎるかも。段差や僅かな上り勾配でも明らかにスピードダウンするのは何とかしたい点です。

そして2012年版が↓コレ
arduino+PWM
色々考えてレール集電に見切りをつけ、arduinoでコントローラを作って動力用のバッテリも丸ごと車輛に搭載してみる事にしたのですが・・・結果はイマイチでした。
画像左側はCCDユニット+動力車、中央が単五電池BOX3個直列、右が電池用コンテナ台車です。
arduino駆動用に4.5V必要なのと、PWM駆動の安定を狙って単三3本直列=4.5V仕様にしましたが、思ったより消費電力が大きく2時間程度しか持たない様です。
やはりモーターは電圧はそれ程必要としない割りに電力消費が激しい様です。
2日間使用する場合2日間で単五電池を36本程使う計算になり、電池入れ替えの手間を考えると実用とは言えず、結局HS当日の午後からは動力車はバッテリからの配線をカットしてレール集電、CCDはバッテリを電源としました。
しかし元々有ったレール集電の電気経路も生きているのでCCDユニット側にもレールからの電気が通ってしまい、結果的にノイズ発生の原因になった模様です。
最近覚えたニワカ知識でコンデンサ噛ませば改善出来るのかなとも考えますが、レール集電から切り離すのが確実&手取り早いと思います。

CCD HEAD
CCDカメラにはボールジョイントを組んで上下左右に首振り可能な仕組みにしました。
真正面向きだと線路ばかりで周りの作品が今イチ映らないので・・・
でも支点の位置が悪くて、あまり左右に振り過ぎると鉄橋等に干渉して止まってしまうので改善の要有りです。支点はなるべくカメラの中心軸に合わせる必要がありますね。

CCD Camera Train
本当はユニットくみ上げて何かの車輛に納めるつもりでしたが時間切れと、良い車輛が見つからなかったので相変らず「ナンか変な電車走ってる〜」状態でお見苦しいです。

Circuit
PWMコントローラー部
こちらのサイトを参考に一般的?なモータードライバ(TA7291P)をarduinoでPWM制御しました。
前進/後退の設定を省いて可変抵抗の値を前進オンリー割り振った他はスケッチもマンマ流用です。
必要パーツはプログラムを書き込んだarduino(ATMega328P)の他に
積層セラミック発振子 16MHz
モータードライバ TA7291P
ON/OFFスイッチ
可変抵抗10kΩ・・・と、コレだけで済みます。
押し並べてそれなりに考えて改良した割りに今年はイマイチだったと反省しきりですが、来年は再びCCD車は車載バッテリで駆動、動力車はレール集電で駆動と切り分けるつもりです。
一つ解ったのですが今年は初めて高架をレイアウトに取り入れる事も有り、レールを設置する前にちゃんと水平器で展示卓のレベル出しをしました。
会場の展示卓にはアジャスタが付いているので用意したスペーサーは必要無かったのですが、テーブルのレベルを合わせるだけで想像以上にスムーズに走行する事が解り収穫でした。
考えて見れば尤もな事ですが、僅か数ミリのテーブルの段差でも勾配に換算すると結構な数値になりますもんね。
来年も頑張らねばw

PowerPack assy
と言う事で使わない予定の車載コントローラはプラケースに組み直してPWMコントローラとしました。
マイコン部分はそのままで、12VのACアダプタと100Vから12Vへの3端子レギュレータを噛ませ、電源ON確認用のLEDと進行方向の切り替えスイッチを追加しただけです。
ショート時の保護回路が無いですが、まぁ取りあえず必要ないかな?と言うコトで。
見てくれと安全性はともかく、買えば1万越えのPWMコントローラーが1000円ちょいのパーツ代で自作出来るんだから、やってみて損は無いですよね(笑)

PWM PP Sistem
その後の調べでarduinoのPWM出力周波数はPINに依って異なると言う事を知り、プログラムを書き直して周波数切り替えスイッチも追加。
arduinoのアナログ出力(PWM出力)は3.9番PIN、5.6番PIN、10,11番PINがペアになっていて周波数が一緒らしいですが、最初に指定した5,6PINは他のPIN(488MHz?)の倍の周波数(≒976MHz?)になっているそうです。
なので10番PINにもPINOUT指定をし、モータードライバの余った入力端子に接続して周波数を2種類で切り替えられる様にしました。
作ってみると確かに10PINの方は5PINよりもモーターからのPWM共振音が1オクターブ低く、より低速走行向けの筈ですがあくまで気のせい的なレベルで音以外は低速走行に劇的に変化は有りませんでした。
もっと低い周波数で効果がある様ですが、どうせなら低速走行用のパワーパック自作ももっと追求してみたいですね。
秒速数ミリで滑らかに進むディーゼル車輛とか、想像するだけで萌えますからね〜(笑)

Get Adobe Flash player Plugin by wpburn.com wordpress themes