エアーシリンダーで往復運動
往復運動をする装置を作ろうと思って考えていたら、エアーシリンダーが良いのでは無いかと思い付き、エアーシリンダーと電磁バルブを買って、装置を組み上げた。
昔見た装置は、モーターを使って、往復運動を実現していたが、直接往復運動ができるエアーシリンダーの方が、良いだろう。しかし、2ポートの電磁バルブを買ったら、ガスの逃げ場が無くて、すぐに動かなくなってしまった。当たり前のことだが、盲点だった。3ポートを買い直すのも馬鹿馬鹿しいので、いろいろと考えて、配管を工夫したら、うまくいった。
あとは、電磁バルブに電流を供給するためのトランジスタや、それに信号を送るマイコンを組み込んだ回路を作り、待ち時間などを調整したら、完成である。久々に2313を使ったが、この程度のプログラムではバグは出来なかった。
まだ、箱には入れていないが、ほぼ完成したので、明日テストランをしてみよう。
古いlubuntuのインストール
old-releasesで使える
あるPCのHDDが死んだので、HDDを入れ替えて、linuxをインストールした。32bit用のものとしては、手元にはlubuntu11.04しかなかったので、それを使うことにしたが、新たに別のソフトをインストールできるかが不安だった。しかし、aptソースをold-releases.ubuntu.comに書き換えると使えるらしいので、試してみたら、うまくいった。rubyもftpdもインストールできたので、無事にだいたい元通りに使える環境になった。
PCの更新
AMDのAPU
少し前からPCの調子がおかしくなり、その頻度が増してきたので、更新することにした。このところ、CPUはAMDにしているが、最近のはGPUも組み込んで、APUと読んでいるらしい。とりあえず、Debian wheezyを入れて、Rのプログラムを動かしたら、以前のPCよりもそれなりに早くなっているようである。でも、環境をすべて移していないので、完全移行には、もう少し時間がかかりそうである。
pingは通るけどftpにつながらない
netmaskの問題だった
少し前から、あるPCに別のWindowのPCからftpでつなごうとするとつながらないという現象が生じていた。別のPCからはつながるので、ftpサーバーの問題ではないし、pingも通る。しばらくはWindowsが悪さをしているのだろうと思っていた。しかし、Linuxの別のPCからもつながらないことを発見して、何かがおかしいに違い無いということで調べてみた。
pingは通るのに、ftp以外にもsshもつながらない。また、つながるPCとつながらないPCのIPを調べてみたら、64を境にして、つながるかつながらないかが異なっているように感じられた。そこで気がついたのがnetmaskの問題である。
以前、ネットワークの設定が変わって、そのときに固定IPのマシンの設定もすべて変更したのだが、その一台に限ってnetmaskの設定をミスっていたのだ。本当はnetmaskを192から128にしないといけなかったのだが、メモを見ずに設定したために192のままになっていた。その結果64を境にして、内部と外部という判断がされてしまっていたのだ。
ううん。ネットワークは難しい。
FTDIのbitbangでのAVR書き込みの二つのモード
ft245rとdiecimila
以前はプリンタポートを使ったAVR書き込み機を使っていたが、壊れてしまったのを機会に、FTDIの書き込み機に移行した。最初はFT232RLのft232rというものを使ったが、avrdude.confを見ていたら、diecimilaというものもあるようだ。配線は、少し違うが両方共うまく書き込みができる。RESETはそれぞれDTRとRIにつながっている。その結果、通常の状態で前者はリセットがかかり、後者はリセットがかからないという大きな違いがある。つまり、後者は書き込み機を接続すると、電源が供給されて、AVRが動き出すが、前者は動かない。この違いを考えて、両者を使い分けると良いだろう。
Fedoraのavrdudeのインストール
fedoraのavrdudeでftdiのbitbangを使うには
AVRへの書き込みツールとして、avrdudeでftdiのbitbangを使えるということを見つけて、以前debianにインストールした。今度はfedoraで同じことをしようと思ったら、それなりに苦労した。
まず、コンパイルに必要なパッケージを入れるのだが、apt-getの代わりにyumを使えば良いと思ったら、パッケージ名がいろいろと違っていた。まずインストールすべきものとして書かれていたパッケージのうち、patch automake autoconf bison flexは、そのままfedoraにもあったので、そのまま入れた。一方、libusb-devとlibftdi-devは、devをdevelに変えたものを入れた。byaccも必要そうだったので入れたが、これは後の操作で十分だったかも知れない。また、libreadline-devとlibncurses-devはlibを無くしてdevをdevelにしたものを入れた。問題だったのが、build-essentialとbuild-depである。いろいろと調べたら、
yum groupinstall buildsys-build development-tools yum-builddep pidgin
としたら良いようだったので、それらを実行してみた。
あとは、debianと同様にしたらインストールは完了した。うまくpathが通っていなかったので、シンボリックリンクをはっておいた。
しかし、いざ実行してみると、動かない。ftdi_sioとかち合っているのが問題らしい。/etc/modprobe.d/blacklist.confにftdi_sioを加えて、rmmod ftdi_sioしたら、無事に書き込めた。ttyUSB0を使うときには、mosprobe ftdi_sioする必要があるが。
これで、fedoraでもAVRが使えるようになって安心だ。
電圧が正しく読めない
tiny261Vとtiny861Aの違い
ADCをつんだAVRとしては、これまでtiny261を使っていた。その残りが少なくなった時に、秋月で売っていた861を買った。261のADCはこれまで何度も使っていて、それなりに使えるなと感じていた。しかし、プログラムの容量が大きくなって261に入らなくなったので、861にして使ってみたが、電圧の値が大きくなってしまい、うまくいかない。261で動いていたプログラムをそのまま861にしてもおかしいので、ICの方の問題だろうとは思ったのだが、なかなか原因が分からなかった。
よくよく型番を見ると、ATTINY261VとATTINY861Aと書いてある。Vは低電圧用のものだった気がするが、Aは何か分からなかったので、調べてみたら、新しい型のICのようだ。マニュアルも別にあるようだ。いろいろと試してみたのだが、なかなかうまくいかなかった。
マニュアルをよくよく読むと、差動チャネルの場合には安定に時間がかかると書いてある。そこで、150usぐらい待つようにしたら、ようやく電圧がうまくいくようになった。やはり、VとAではいろいろと違うようだ。
ADCの使えない861など価値が無いじゃないかと思っていたが、これで無事に使えるようになった。
AVRを用いた定電力電源
tiny261のADCとtimerを使った電力制御
先週ぐらいから作っていた定電力電源がようやく完成した。定電圧や定電流なら、それほど苦労せずに作ることができるが、定電力はそれほど簡単では無いように感じられる。最初はPWMで制御しようと考えたが、それほど速い制御は必要無いので、0.5秒ごとにON/OFFを繰り返すことにした。
問題はどのようにして定電力にするかであるが、最終的にはtiny261のADCを使って負荷にかかる電圧と、標準抵抗の電圧から電流を測定し、それから電力を計算して、一定時間に加えるべきエネルギーに達したらOFFにするということを繰り返すことにした。
原理的な設計はすぐに終わったのだが、実際に動くようにするには、やはりそれなりに苦労した。ざっとプログラムを書いて動かしてみたが、当然のように動かない。まず、液晶に文字を表示させるまでに、コントラストの調整、RW端子の接続、適切なウェイトの設定などで苦しんだ。以前にも液晶は使ったことがあったのだが、コントラストの調整は毎回忘れて苦しんでいる気がする。ウェイトに関しては、初期化の最後にすぐに表示する場合には必要だったようだが、これまでは表示するまでに別の処理をしていたため、必要なかったようだ。その後でも、いろいろなところでつまずいたが、最後に、ADCを停止しないと、裏で走ってしまうという点と、シフト演算子の結合順序が間違っていることに気がついて、動くようになった。
マイコンでの制御がうまう動くと、それなりにうれしいものである。
AVR書き込み機の更新
電圧のモニタ
nohupを使って
装置の調子がおかしいので、その状態を常時監視しようということになって、そのためのシステムを作った。と言っても、ただ電圧を定期的に読み込んで保存するだけなのだが。とりあえず、問題の解決にどのくらいの期間かかるか分からないので、長期運用体制である。raspberry piにusbtmcのデジボルをつないで、それをrubyで読み取って保存するようにした。sshからログインして使用することにしたが、ログアウトできなくなるので、nohupで使うことにした。nohup ruby volt.rb &として、exitすれば、あとはひたすらデータを保存してくれる。ざっと計算すると、一年で2Mbyteぐらいなので、このまま続けても大丈夫だろう。