しばらくカメラを空に向けてみた。星が小さいので、フルサイズ(1920×1080)でご覧になった方が見やすいかと。
AVRマイコンでカメラのシャッターを切って夜空の撮影なんぞしている。
内蔵RC発振器は温度依存性があるのは知っているが実際どの程度なのか分からなかったので、データシートから抜き出して調べてみた。
25℃で8MHzに調整された回路も-40℃で7.4MHz, 85℃で8.5MHzと結構動く。グラフの傾きから、1100ppm/K(0.11%/K)程の温度依存性があることが分かる。
25℃で設定しても-5℃の環境では、30℃違うので、3%程の周波数変動を覚悟しなくてはならない。
露光時間が最大30秒になるので、撮影間隔を30秒+αに設定したいが、30秒の3%というと、1秒程度になる。しかし、実際にいじってみている感じでは、もっと変動していると思うのです。
写真のタイムスタンプと比較してみよう。
マイコン内臓のRCクロックが温度により結構周波数変動するので、水晶振動子でクロックを・・・とおもったが、水晶つけるだけでは動かない仕様だった。
そとから入力するのはクロック信号になっている必要があったため、回路を作ってみた。
ワンゲードNOT回路が無いので、トランジスタを使った回路です。
回路図はネットで拾ったもの。時定数の一覧もあったので、それを参考に作ってみた。
ブレッドボードで仮組み。0.1uのパスコンはなかったので、0.047uFのものを使った。
とりあえず、16MHzで発振してくれた。
一眼レフの赤外線リモコンを以前に作ったが、それが今活躍している。
正確には、その当時のプログラムが残っていたので役に立った。ハードは作ったんだが、引っ越しのゴタゴタで行方不明。引越前には確かにあったのだが・・・
ゆっくりとした変化を追っていくような実験の場合、カメラを固定しておき、自動で撮影していくのが便利である。
使ったマイコンはATTiny13Aだが、内蔵のRC発振器をつかったのだが、周波数の温度依存性がかなりあるようで、気温の変動にあわせて周波数が変動する。
しかし、ATTiny13Aは水晶振動子での動作ができない。外部クロックでは動くのだが・・・
ずーっとまえに購入した秋月の12.8MHz TCXOを使おうかとも思ったが、今回は内蔵RCでGO。
撮影データのタイムスタンプを見ると、やはり変動しますね、周波数が。温度の影響でしょう。
次は手元に10個ほど余っている水晶振動子とコルピッツ発振回路で信号つくってみようかな。
さて、マイコン単体でいろいろやるのも楽しいが、外部の装置と接続したい。
デジタル通信ができるようになればかなり幅が広がるはず。
バスにいくつも接続できるI2Cが良さそうだ。
さて、ATTiny2313というマイコンは100円で買えた時期があったので、いくつか持っていたかとおもったが、どこにしまったかわからない。ストックから出てくるのはATMega88,168,328ばかりである。
ATTiny2313は諦めてATMegaで組もうかと思う。ATMega88は一つ170円@秋月電子ですし。
レジスタ周りは比較的似ているので、結構ソースそのままでいけるかんじ。
そして、サーボが動いた。とりあえず、往復するだけのワイパーみたいな動作だが、うごいた。
何かに応用しよう。
ATTiny2313には16bitタイマーがあるので、コレを使ってサーボモーターのコントロールをしようと思う。
パルスのHigh出力は500us~1500usの可変で、パルス周期は20msとする。
内蔵8MHzの8分周にて1MHzの信号が出力できて、20msは20,000カウントと、16bitタイマーにちょうど良い感じ。
とりあえずパルスhighを1000us±500usとなるようにプログラムを書いてみようと。三角波出力予定なので、サーボモータが右に行ったり左に行ったりを繰り返す予定。
マイコンのレジスタは同じATMELとはいえ、他のマイコンと少しずつちがって、ATTiny2313は高速PWMモードにてサーボのコントロールができる。
はじめデータシートを見ながらCTC(Clear Timer on Compare)が、PWMのカウント上限値をセットするモードだとおもってハマった。
PWMをやりたいときは、PWMモードから選べば良い。
さて、使うのは上記表46の14のモード。ちなみに15のモードはカウント上限をOCR1Aでセットするので、OC1AのピンにPWM出力ができない。しかし、14のモードはカウント上限をICR1という別のレジスタにセットできるので、OC1AとOC1Bにて違うduty比のパルスを出力することができる。
タブが潰れるが、いかが今のところテストしているコード。
#define F_CPU 1000000 //8MHz clock + DIV8
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
//16bitタイマーで回すからタイマーを16bitにするところから始めないと
//CTCじゃないみたいだぞ
DDRB = 0b00011000;
DDRD = 0b00000001;
ICR1 = 30;
OCR1A =10;
OCR1B =5;
TCCR1A = 1 << COM1A1
| 0 << COM1A0
| 1 << COM1B1
| 0 << COM1B0
| 1 << WGM11
| 0 << WGM10;
TCCR1B = 0 << ICNC1 /* */
| 0 << ICES1
| 1 << WGM13
| 1 << WGM12
| 0 << CS12
| 1 << CS11
| 0 << CS10;
// | 0 << CS12 /* 分周決定 */
// | 0 << CS11 /* CS1[2:1]が000 ,001,010,011,100, 101がそれぞれ次の分周 */
// | 1 << CS10; /* CS1[2:1]が停止, 1, 8, 64,256,1024 */
while(1)
{
//TODO:: Please write your application code
}
}
ちょっとした用途があって、PWMのコントローラをつくろうとした。
2回路入りのコンパレータorオペアンプで三角波作って、 基準電位と比べるやつでいいかなーと思ってたけど、結構部品が必要になる。抵抗数本だけど。
で、思った。マイコン使えばいいんじゃないかと。
なんと回路に必要な抵抗は可変抵抗のみ。ADCで可変抵抗で作った電圧を読み込んで、そのままPWMとして出力する。MOSFETのゲートは直結。内部抵抗で発熱しないか心配ですが、気にしたら負け。
MOSFETには2SK3510という75V 83Aのものを使っていますので、かなり電流を流せます。ゲート電圧が5Vとちょっと低いので、そこが心配だけど。
ペルチェの電流5A程度の制御ならこれで十分。
若干心配なのは、電源が電池なのでスイッチオンのときに電源電圧がかなり変動しそうなところ。でかいコンデンサは入れてないんだけどな。
PWM知らない人に渡すので、PWMの説明も兼ねてLEDをつけ、周波数は75Hzくらいで点滅。ペルチェなんて応答遅いからこんなんでいいでしょう。
そして、この基板を空中で振り回すとLEDの明滅が線になって見えるので、PWMの原理を簡単に説明できるはず。
MC34063の回路図、実際のICを上から見るとU1のような形になっているが、世の中にあるSpice用の回路図はU2にあるようにbottom viewのものばかり。Ctrl+Eでひっくり返したら良いのだが、はじめから逆であったらいいと思った。
少々長いが、Top Viewのものは
Version 4
SymbolType CELL
LINE Normal -44 -80 -59 -80
LINE Normal -44 -48 -44 -80
LINE Normal -59 -48 -44 -48
LINE Normal -59 -48 -59 -48
LINE Normal -59 -48 -59 -48
LINE Normal -92 -64 -75 -64
LINE Normal -29 -30 -84 -30
LINE Normal -29 -54 -29 -30
LINE Normal -44 -54 -29 -54
LINE Normal 29 -71 -44 -71
LINE Normal -149 -64 -131 -64
LINE Normal -149 -56 -149 -71
LINE Normal -157 -73 -149 -67
LINE Normal -157 -96 -157 -73
LINE Normal 35 -96 -157 -96
LINE Normal -157 -56 -149 -61
LINE Normal -157 -47 -157 -56
LINE Normal -169 -47 -157 -47
LINE Normal -169 -39 -169 -54
LINE Normal -177 -56 -169 -50
LINE Normal -177 -39 -169 -44
LINE Normal -177 -85 -177 -56
LINE Normal -213 -85 -177 -85
LINE Normal -177 -29 -177 -39
LINE Normal -214 -29 -177 -29
LINE Normal -68 -3 -68 -30
LINE Normal -20 127 -20 76
LINE Normal 16 101 -20 127
LINE Normal -20 76 16 101
LINE Normal -63 93 -20 93
LINE Normal -35 114 -20 114
LINE Normal 29 -71 29 101
LINE Normal 29 101 16 101
LINE Normal -35 144 -35 115
LINE Normal -177 19 -108 19
LINE Normal -177 64 -177 19
LINE Normal -197 64 -177 64
LINE Normal -12 98 -12 88
LINE Normal -17 93 -7 93
LINE Normal -17 114 -9 114
LINE Normal -175 -43 -177 -39
LINE Normal -173 -39 -177 -39
LINE Normal -153 -56 -157 -56
LINE Normal -155 -60 -157 -56
LINE Normal 35 144 -35 144
LINE Normal -13 -16 37 -16
LINE Normal -13 -3 -13 -16
RECTANGLE Normal 96 160 -240 -112
RECTANGLE Normal -131 -15 -92 -80
RECTANGLE Normal -109 53 0 -3
RECTANGLE Normal -137 120 -63 71
CIRCLE Normal -85 -34 -92 -26
ARC Normal -44 -80 -75 -48 -59 -80 -59 -48
TEXT -92 -64 Right 2 S
TEXT -131 -64 Left 2 Q
TEXT -94 -30 Right 2 R
TEXT -3 13 Right 2 Ipk
TEXT -99 84 Center 2 1.25V
TEXT -99 106 Center 2 Ref
TEXT -3 36 Right 2 Osc
TEXT -76 16 Right 2 C
TEXT -90 24 Right 2 T
WINDOW 0 -95 -128 Left 2
WINDOW 3 -170 177 Left 2
SYMATTR Value MC34063/NJM2360
SYMATTR Value2 MC34063
SYMATTR SpiceModel MC34063.lib
SYMATTR Prefix X
SYMATTR Description Switching regulator
PIN -240 -96 LEFT 8
PINATTR PinName SWC
PINATTR SpiceOrder 1
PIN -240 -16 LEFT 8
PINATTR PinName SWE
PINATTR SpiceOrder 2
PIN -240 64 LEFT 8
PINATTR PinName Ct
PINATTR SpiceOrder 3
PIN -240 144 LEFT 8
PINATTR PinName GND
PINATTR SpiceOrder 4
PIN 96 144 RIGHT 8
PINATTR PinName Cinv
PINATTR SpiceOrder 5
PIN 96 64 RIGHT 8
PINATTR PinName Vcc
PINATTR SpiceOrder 6
PIN 96 -16 RIGHT 8
PINATTR PinName Isns
PINATTR SpiceOrder 7
PIN 96 -96 RIGHT 8
PINATTR PinName DRC
PINATTR SpiceOrder 8
Bottom viewのものは
Version 4
SymbolType CELL
LINE Normal -97 -80 -82 -80
LINE Normal -97 -48 -97 -80
LINE Normal -82 -48 -97 -48
LINE Normal -82 -48 -82 -48
LINE Normal -82 -48 -82 -48
LINE Normal -49 -64 -66 -64
LINE Normal -112 -30 -57 -30
LINE Normal -112 -54 -112 -30
LINE Normal -97 -54 -112 -54
LINE Normal -170 -71 -97 -71
LINE Normal 8 -64 -10 -64
LINE Normal 8 -56 8 -71
LINE Normal 16 -73 8 -67
LINE Normal 16 -96 16 -73
LINE Normal -176 -96 16 -96
LINE Normal 16 -56 8 -61
LINE Normal 16 -47 16 -56
LINE Normal 28 -47 16 -47
LINE Normal 28 -39 28 -54
LINE Normal 36 -56 28 -50
LINE Normal 36 -39 28 -44
LINE Normal 36 -85 36 -56
LINE Normal 72 -85 36 -85
LINE Normal 36 -29 36 -39
LINE Normal 73 -29 36 -29
LINE Normal -73 -3 -73 -30
LINE Normal -128 -27 -220 -27
LINE Normal -128 -3 -128 -27
LINE Normal -121 127 -121 76
LINE Normal -157 101 -121 127
LINE Normal -121 76 -157 101
LINE Normal -78 93 -121 93
LINE Normal -106 114 -121 114
LINE Normal -170 -71 -170 101
LINE Normal -170 101 -157 101
LINE Normal -106 144 -106 115
LINE Normal 36 19 -33 19
LINE Normal 36 64 36 19
LINE Normal 56 64 36 64
LINE Normal -129 98 -129 88
LINE Normal -124 93 -134 93
LINE Normal -124 114 -132 114
LINE Normal 34 -43 36 -39
LINE Normal 32 -39 36 -39
LINE Normal 12 -56 16 -56
LINE Normal 14 -60 16 -56
LINE Normal -176 144 -106 144
RECTANGLE Normal 96 160 -240 -112
RECTANGLE Normal -10 -15 -49 -80
RECTANGLE Normal -32 53 -141 -3
RECTANGLE Normal -4 120 -78 71
CIRCLE Normal -56 -34 -49 -26
ARC Normal -97 -80 -66 -48 -82 -48 -82 -80
TEXT -49 -64 Left 2 S
TEXT -10 -64 Right 2 Q
TEXT -47 -30 Left 2 R
TEXT -138 13 Left 2 Ipk
TEXT -42 84 Center 2 1.25V
TEXT -42 106 Center 2 Ref
TEXT -138 36 Left 2 Osc
TEXT -65 16 Left 2 C
TEXT -51 24 Left 2 T
WINDOW 0 -95 -128 Left 2
WINDOW 3 -170 177 Left 2
SYMATTR Value MC34063/NJM2360
SYMATTR Value2 MC34063
SYMATTR SpiceModel MC34063.lib
SYMATTR Prefix X
SYMATTR Description Switching regulator
PIN 96 -96 RIGHT 8
PINATTR PinName SWC
PINATTR SpiceOrder 1
PIN 96 -16 RIGHT 8
PINATTR PinName SWE
PINATTR SpiceOrder 2
PIN 96 64 RIGHT 8
PINATTR PinName Ct
PINATTR SpiceOrder 3
PIN 96 144 RIGHT 8
PINATTR PinName GND
PINATTR SpiceOrder 4
PIN -240 144 LEFT 8
PINATTR PinName Cinv
PINATTR SpiceOrder 5
PIN -240 64 LEFT 8
PINATTR PinName Vcc
PINATTR SpiceOrder 6
PIN -240 -16 LEFT 8
PINATTR PinName Isns
PINATTR SpiceOrder 7
PIN -240 -96 LEFT 8
PINATTR PinName DRC
PINATTR SpiceOrder 8
EEVBlogの回路図を参考に編集しました。
24V電池でも48V電池でも同じような電力で放電できるようなものができないかと思って、考えてみた。
電圧が高い時はMOSFETがオフで2つの抵抗が直列になった状態で動く。
電圧が低くなるとMOSFETがオンになって、抵抗2つは並列に放電される。
負荷としては12Vのハロゲン球を2つ→110Wから120Wくらい。放電中はランプが点灯するので放電しているかわかりやすくてよい。
気になるのは、48V電池が放電最後に電圧下がった時、MOSFETの過渡期をゆっくり跨ぐように電圧が変動するとMOSFETが焼けるかも知れない点。
ダイオードもかなり発熱するはずなので、そこの放電に気をつけないといけないかな。
自分でちまちま荷物を運ぶ引っ越しをしてみようと思ったのが運の尽きだったかもしれない。なかなか運搬が大変である。しかもほとんど整理してないから、適当にダンボールに入れて運ぶ。運んだ後に収集付かないorz
意外とCX-5の輸送力はあるのだが、引っ越しとなると結構でかいものを運ぶのでキャパが中途半端。昼は暑くて運搬する気にならないので、昼は荷造り夜運搬。
新居に運び込むのだが、こういったものを運び込んで大丈夫なのか心配である。
電源装置はいっちーの教えにより電流制限できるタイプのスイッチングを導入したが、その後もう少し静かな電源が欲しくなってレギュレータ式のものを2台導入。正負電源が作れるぜと思ったが、電源2台活用ってなかなかないよね。
PAK35-10Aはスイッチング式は35V 10Aまでいけるが、最近のは電力リミットがかかるが比較的電流電圧に融通が聞くタイプもあるようで、乗り換えてもいいかとも思っている。200Wズーム式とか結構便利そう。
PCM35-2Aは負荷を大きくするとトランスが唸るが比較的使い勝手がよい。 マイコンの作業程度では、PCM35-2Aをもっぱら使っている。PAKはちょっと負荷を動かす時に使うとかかな。
どこに置こうね、この電源たち。
パワーリザーブといってゼンマイがどの程度巻き上がっているのか示す針があるのだが、動きが渋いようで、ジャンプする。
比較的大きな電池を放電する用途に放電器をつくろうかと。
6セル鉛電池×4直列で48Vくらいの電池を5Aくらいで放電したい。いやー250Wもの熱をどこに捨てよう。空気中ですよね。
はじめはMOSFET&電流安定化で放熱させようかと思ったが、なかなか発熱量が尋常じゃないのと、電流制御しなくていいだろうから、抵抗でよかろうと。抵抗に風を送っておけばまあいいんじゃないかと思う次第。
探してみると、100Wのホーロー抵抗がある。
http://eleshop.jp/shop/g/gD4H368/
しかし、実際に100Wも食わせるわけには行くまいだろうと思っているので、50Vに対して33Ωで約1.5A、75Wくらいの発熱をお願いしようかと思っているが、75Wって相当で、体験したことがない領域。
セメント抵抗を見ているとディレーティングカーブがあるので、これにしたがって設定すればいいかな。
ファンで空気を送るようにしておけばまあ、大丈夫じゃないかと期待しているが、あまりに温度が高いとハンダ付け箇所が溶けたりしないかね。
暗くなったら勝手にライト。電池がある程度放電するとそれを検知できるようにしておいた。電池電圧が4.5V以下になるとライトが点滅するようにしてみた。
MOSFETのスレッショルド電圧が低いので、MOSFETの下に0.5Vくらい下駄が履いても大丈夫だった。
消費電流:
待機電流:18uA (明)、11uA(暗)
点灯時:88mA(電源6V)、 45mA(電源4.5V)
動作:
外の光が入らない部屋において、消灯した時にライトが30秒点灯する。
電池寿命の見積もり:
明暗半々と仮定(実際には暗い時間のほうが長いけど)する。待機の平均電流15uAとして、一日は24hなので、待機で使う電流は24h*15uA=360uAh=0.36mAh/day
一日15回くらいライトが点灯すると仮定すると、点灯時間は15×30s=450s, 平均電流66mAとして、66*450=29700mAs -> 29700/3600=8.25mAh/day
というわけで一日あたり、9mAh程度の消費である。
電池が2000mAhくらいあるとすると、222日程度の電池寿命と見積もることができる。実際には電池の自己放電などもあるだろうが、半年は大丈夫そうだ。
ふとした不安がある。今は明るさがパッとかわる場所を想定しているが、ゆっくり明るさが変わるとすごくいやな予感がする。マイコンの入力ピンはシュミットトリガだったはずだが確認しておこう。
データシート確認したところAVR マイコンは入力ピンがデジタル入力になっているときはシュミットトリガが入った状態なのでよほど大丈夫だろう。
あまり考えずに配線してみた。MOSFETは背面に配置。手持ちのCdSセルが結構大きかったせいだろうか、かなり暗くならないと消灯しないぞ。
カットアンドトライを何回かやったのでちょっとアレな抵抗があったりするけど、気にしない気にしない。
電池と回路を透明ポリカケースに入れておしまい。できればヒューミシールしたいが・・・と思いついたらやっておくのがいいかな。一ヶ月くらい運用してから決定しよう。
電池電圧をLEDに流れる電流から検出し、4セルで4.2Vくらいまで電圧低下したらLEDを点滅させて電池交換を促す仕様なので、電池の液漏れ前に気がつくはず。
電子百葉箱でも作ってみようかと。まずは温度計。LM35Zでは0℃未満を測定するのに工夫が必要なのでI-8200Bというセンサーを使おうかと。0.1℃までの分解能でマイコン処理したいので、オペアンプで増幅してみようかと思ってこんな回路に。乗除算はプログラムスペースを食うのでなるべく増幅率を調節してADCの値にたいして加算減算で処理しようと思う次第。-20℃~50℃の70℃の幅が10bit ADCの幅700相当にすれば良いかとおもってこんな回路に。