FusionPCBに基板お願いしてますが、香港の長いナショナルホリデーのお陰で、基板の出来上がりは相当先になりそうです。
 
デフォルト10枚発注で
Sub-Total:  $18.90
Shipping Cost:  $6.22
Total:  $25.12

相変わらずやっすぃ。

このサイズで枚数毎の値段ですが、
 5枚で$15.90
10枚で$18.90
15枚で$32.70
30枚で$44.67

単価を計算してグラフにするとこんな感じです。

20151004


散布図で書くともう少し分かりやすいですかね。
20151003-2

50枚までガタンと単価が下がりますが、その後は一枚一ドルってな感じ。
なぜか75枚が単価高いんですが・・・なんでやねんっていう。

まぁ5枚はやめたいから、10枚買えってことなんですか。
10枚位でプロトタイピングするならば一枚200円。
このレベルならばFusionPCBは圧倒的なコストパフォーマンスを持っていますね。

日本の基板屋さんは品質良くても高すぎるのでどないにもなりません。
FusionPCBの様に世界相手に売りまくるやり方には、コストの面でなかなか勝てないだろうと思います。

で発注した基板はこんな感じ。

22zip_top_small
 

zip_bottom_small
 
MBEで基板を書いてますが、ビットマップなどはこれを利用してます。
http://cwaweb.bai.ne.jp/~ohishi/zakki/BMConv.htm


んでまた、これがちゃんと動くかどうかは別の話でして。
基板ってやってみて、波形とるまでわかりませんで。
配線ミスとかも、基板が来てから「あっ」と思うこともままあり、、、。


ソフトウェアの方ですが、次回はリファクタリングを入れます。

計画している大きな変更点は以下の通り。

・Timer2とTimer1の入れ替え
PIC12F683の時代に作り始めたので、コアの部分が古い設計制限のままです。
PIC16F1、PIC12F1シリーズのエンハンスドミッドレンジシリーズですと、Timer2の計測できる時間が伸びましたので、入れ替えが可能になります。

現状は8ビットタイマーであるTimer2はパルス検知から点火までの時間のカウントアップ、16ビットタイマーのTimer1はクランクの回転速度を検知する時間に使ってます。
現状クランク回転速度の分解能は最小100rpmです。
えーっとこれは仕様です。設定を10rpm毎に入れるのは現実的でもありませんし。
12000rpmまで計測するとしても、120の分解能があればよい訳です。
Timer2のカウントは8ビット、つまり255までで、理屈的には25000rpmまで計測出来ますのでこれで十分です。

一方、パルス検知から点火までにTimer1を利用する事によって、今一生懸命やっているTimer2用の変換が不要になります。
この変換は時間が掛かる処理になりますから、現在はPC側でやっています。

Timer1は16ビットタイマーですから、65,535までカウント可能です。
これがどこまでカウント出来るのか、ちょいと計算してみましょう。
PICマイコンを16MHzで動作させた場合、一回のカウントは0.25us(0.00025ms)で行われます。
65,535 x 0.00025 = 16.39ms がカウントできる事になります。

エンジンの回転数が1000rpmの場合、一回転に掛かる時間は60msです。
16.39ms / 60ms = 0.27
つまり一回転する時間の27%、360度の27%で97度まではそのままカウント可能です。
SDRのピックアップはBTDC70度で来ますから、1000rpmというとても遅い回転数でもATDC27度の点火時期までサポートできる事になります。

素で(マイコンからすれば)遅い遅い回転数にも「素」で対応可能なので、これは便利です。

なぜ「素」で対応可能なのが便利なのか。
一番は点火時期を自動的に調整する処理等で、複雑な計算処理をせずとも実現できるからです。
例えば温度センサーやスロットルポジションセンサーを取り付けて、シリンダー温度が上がると点火時期を遅らせる事もマイコン側で簡単(≒素早く)に出来ます。

・IOCからINTへの変更
PIC16F1シリーズはInputCapture機能が無くなった為、IOC(Interrupt on change)機能を使いました。
IOCは沢山のポートを同時に監視できる非常に便利な機能ですが、シュミットトリガが付いてません。
INTポートに置き換えることによって、対ノイズ性を上げて部品点数を削減します。

・PC側ソフト
今あるものはFLTKやHID APIという初物を使って、色々と試しながら作ったもので全く美しくなく拡張性が低いので、全面的に書き換えます。


そんな感じで考えているのですが、ちょっと今やりたいな〜と思っている事は、デトカンセンサーを利用した点火時期自動補正です。
点火時期の調整とは、結局最大圧力をATDC10度付近に持ってくる為にやっている訳ですから、シリンダー内部の圧力推移を知ってそれをフィードバックできれば、その他の所作は不要なんじゃないかなって思う訳です。
例えばRS用のデトネセンサーや、ここのプラグ座面圧力センサー(今は売ってないみたいですが)を使って、シリンダー内部の圧力を計測する事が出来れば実現可能かな〜と思ったり。
まぁセンサーが2万円もするので、実用的な技術とは言えないかも知れませんが、妄想するだけなら無料ですから。

 
あ、アルモクさん、この辺てAC/DC共通の部分なんで、、、。