エアーシリンダー

エアーシリンダーで往復運動
往復運動をする装置を作ろうと思って考えていたら、エアーシリンダーが良いのでは無いかと思い付き、エアーシリンダーと電磁バルブを買って、装置を組み上げた。 昔見た装置は、モーターを使って、往復運動を実現していたが、直接往復運動ができるエアーシリンダーの方が、良いだろう。しかし、2ポートの電磁バルブを買ったら、ガスの逃げ場が無くて、すぐに動かなくなってしまった。当たり前のことだが、盲点だった。3ポートを買い直すのも馬鹿馬鹿しいので、いろいろと考えて、配管を工夫したら、うまくいった。 あとは、電磁バルブに電流を供給するためのトランジスタや、それに信号を送るマイコンを組み込んだ回路を作り、待ち時間などを調整したら、完成である。久々に2313を使ったが、この程度のプログラムではバグは出来なかった。 まだ、箱には入れていないが、ほぼ完成したので、明日テストランをしてみよう。

Read more...

古いlubuntuのインストール

old-releasesで使える
あるPCのHDDが死んだので、HDDを入れ替えて、linuxをインストールした。32bit用のものとしては、手元にはlubuntu11.04しかなかったので、それを使うことにしたが、新たに別のソフトをインストールできるかが不安だった。しかし、aptソースをold-releases.ubuntu.comに書き換えると使えるらしいので、試してみたら、うまくいった。rubyもftpdもインストールできたので、無事にだいたい元通りに使える環境になった。

Read more...

PCの更新

AMDのAPU
少し前からPCの調子がおかしくなり、その頻度が増してきたので、更新することにした。このところ、CPUはAMDにしているが、最近のはGPUも組み込んで、APUと読んでいるらしい。とりあえず、Debian wheezyを入れて、Rのプログラムを動かしたら、以前のPCよりもそれなりに早くなっているようである。でも、環境をすべて移していないので、完全移行には、もう少し時間がかかりそうである。

Read more...

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を境にして、内部と外部という判断がされてしまっていたのだ。 ううん。ネットワークは難しい。

Read more...

FTDIのbitbangでのAVR書き込みの二つのモード

ft245rとdiecimila
以前はプリンタポートを使ったAVR書き込み機を使っていたが、壊れてしまったのを機会に、FTDIの書き込み機に移行した。最初はFT232RLのft232rというものを使ったが、avrdude.confを見ていたら、diecimilaというものもあるようだ。配線は、少し違うが両方共うまく書き込みができる。RESETはそれぞれDTRとRIにつながっている。その結果、通常の状態で前者はリセットがかかり、後者はリセットがかからないという大きな違いがある。つまり、後者は書き込み機を接続すると、電源が供給されて、AVRが動き出すが、前者は動かない。この違いを考えて、両者を使い分けると良いだろう。

Read more...

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が使えるようになって安心だ。

Read more...

電圧が正しく読めない

tiny261Vとtiny861Aの違い
ADCをつんだAVRとしては、これまでtiny261を使っていた。その残りが少なくなった時に、秋月で売っていた861を買った。261のADCはこれまで何度も使っていて、それなりに使えるなと感じていた。しかし、プログラムの容量が大きくなって261に入らなくなったので、861にして使ってみたが、電圧の値が大きくなってしまい、うまくいかない。261で動いていたプログラムをそのまま861にしてもおかしいので、ICの方の問題だろうとは思ったのだが、なかなか原因が分からなかった。 よくよく型番を見ると、ATTINY261VとATTINY861Aと書いてある。Vは低電圧用のものだった気がするが、Aは何か分からなかったので、調べてみたら、新しい型のICのようだ。マニュアルも別にあるようだ。いろいろと試してみたのだが、なかなかうまくいかなかった。 マニュアルをよくよく読むと、差動チャネルの場合には安定に時間がかかると書いてある。そこで、150usぐらい待つようにしたら、ようやく電圧がうまくいくようになった。やはり、VとAではいろいろと違うようだ。 ADCの使えない861など価値が無いじゃないかと思っていたが、これで無事に使えるようになった。

Read more...

AVRを用いた定電力電源

tiny261のADCとtimerを使った電力制御
先週ぐらいから作っていた定電力電源がようやく完成した。定電圧や定電流なら、それほど苦労せずに作ることができるが、定電力はそれほど簡単では無いように感じられる。最初はPWMで制御しようと考えたが、それほど速い制御は必要無いので、0.5秒ごとにON/OFFを繰り返すことにした。 問題はどのようにして定電力にするかであるが、最終的にはtiny261のADCを使って負荷にかかる電圧と、標準抵抗の電圧から電流を測定し、それから電力を計算して、一定時間に加えるべきエネルギーに達したらOFFにするということを繰り返すことにした。 原理的な設計はすぐに終わったのだが、実際に動くようにするには、やはりそれなりに苦労した。ざっとプログラムを書いて動かしてみたが、当然のように動かない。まず、液晶に文字を表示させるまでに、コントラストの調整、RW端子の接続、適切なウェイトの設定などで苦しんだ。以前にも液晶は使ったことがあったのだが、コントラストの調整は毎回忘れて苦しんでいる気がする。ウェイトに関しては、初期化の最後にすぐに表示する場合には必要だったようだが、これまでは表示するまでに別の処理をしていたため、必要なかったようだ。その後でも、いろいろなところでつまずいたが、最後に、ADCを停止しないと、裏で走ってしまうという点と、シフト演算子の結合順序が間違っていることに気がついて、動くようになった。 マイコンでの制御がうまう動くと、それなりにうれしいものである。

Read more...

AVR書き込み機の更新

FTDIのFT232RLを使ったBitbang AVR書き込み機 AVRを使って電子工作をしていたら、AVRの書き込みができなくなってしまった。これまでPCのパラレルポートでdapaを使って書き込みを行っていたが、パラレルポートに変な電圧をあたえてしまったらしい。 新しい書き込み機を準備する必要があるのだが、パラレルポートのあるPCを探してくるか、USBで書き込みできるものを準備するかを迷ったが、今後はパラレルポートはどんどんすたれてくるので、USBにしたいと考えた。USB接続できるコンパクトで安い書き込み機としては、どんなものがあるかを調べていたら、おもしろいものを発見した。FTDI BitBang AVR-Writerというもので、FTDIのFT232RLの出力を制御して書き込むというものだ。手元にFT232RLはあるし、SSOP28を載せる基板も持っているので、これは作るしかないと思って、作り始めた。 まずは、FT232RLでUBSと接続できるように、USBのVccと4,20、GNDと7,18,21,25,26、USB+と15、USB-と16を接続し、17と18の間に104を入れた。そして、AVR側のmisoと5(RXD)、sckと1(TXD)、resetと2(DTR)、mosiと3(RTS)を接続し、VccとGNDも繋ぐ。ピンヘッダの上では、V,3,Gと5,1,2となる。接続はこれで完了である。 つぎに書き込み用のAVRDUDEであるが、ここを参考にしてパッチをあてた。そして、 sudo avrdude -p t261 -c ft232r -P ft0 -B 57600 -U flash:w:out.hex などとしたら、書き込みがうまく言った。-B指定をしないとうまく動かなかったので、注意が必要だ。 avrdude.confには programmer id = "ft232r"; desc = "FT232R Synchronous BitBang"; type = ft245r; miso = 1; # RxD sck = 0; # RTS mosi = 2; # TxD reset = 4; # DTR と書いてあるのだが、sckとmosiが入れ替わっているようで、それを発見するのに苦労してしまった。そのときには、 avrdude: BitBang OK avrdude: pin assign miso 1 sck 0 mosi 2 reset 4 avrdude: drain OK ft245r: bitclk 38400 -> ft baud 19200 avrdude: ft245r_program_enable: failed avrdude: initialization failed, rc=-1 Double check connections and try again, or use -F to override this check.
Read more...

電圧のモニタ

nohupを使って
装置の調子がおかしいので、その状態を常時監視しようということになって、そのためのシステムを作った。と言っても、ただ電圧を定期的に読み込んで保存するだけなのだが。とりあえず、問題の解決にどのくらいの期間かかるか分からないので、長期運用体制である。raspberry piにusbtmcのデジボルをつないで、それをrubyで読み取って保存するようにした。sshからログインして使用することにしたが、ログアウトできなくなるので、nohupで使うことにした。nohup ruby volt.rb &として、exitすれば、あとはひたすらデータを保存してくれる。ざっと計算すると、一年で2Mbyteぐらいなので、このまま続けても大丈夫だろう。

Read more...