液晶ディスプレイの故障
LEDバックライト
本日、メンバーの液晶ディスプレイが故障した。微妙に表示はしているのだが、色が変になって、チラチラするようになった。最近、ディスプレイの故障が多い気がする。暑いからなのかも知れない。ディスプレイが映らないと仕事にならないということで、近くの店で買ってきた。IODATAの23型だが、バックライトがLEDである。まず感じたのは、非常に薄くて軽いということである。これまでの液晶では、バックライトの陰極管のための高電圧発生回路が必要だし、二つの陰極管の光を、面状に分散させるための板なども必要だった。LEDバックライトはどのような仕組みになっているのかはまだ知らないが、面状に発光するために、薄くできるのかも知れない。いつかLEDバックライトの液晶ディスプレイが故障した時に、仕組みを調べてみよう。
3日目のrails
railsのモデル
ruby on railsは、MVCという概念を採用している。これは、model, view, conrtollerに分けて設計するというものである。viewは、いわゆる見た目を定義する部分で、この意味合いは理解しやすい。残りのmodelとcontrollerが具体的に何を意味しているのかは、私には漠然として理解できていない。
modelの使用法の一つとして、入力されたデータを検証するというものがある。app/modelsの下にあるファイルに記述すると、データが適切でない場合に警告が出るようになる。その記述するコマンドにどのようなものがあるかを調べたところ、以下のようなものがあることが分かった。
validates_acceptance_of validates_associated validates_confirmation_of validates_each validates_exclusion_of validates_format_of validates_inclusion_of validates_length_of validates_numericality_of validates_presence_of validates_size_of validates_uniqueness_of
使い方が明らかなものもあるが、複雑そうなものもある。徐々に使い方を覚えていきたい。
自作サイリスタ
サイリスタユニットの設計
AVRを使って、サイリスタユニットを作れる気がしたので、いろいろと考えてみた。いくつかの解決すべき問題がある。
まずは、信号の入力をどうするかである。電気的に絶縁した状態で、4-20mAの信号を読み取る必要があるのだが、アナログフォトカプラというものがあるようで、電流の違いを抵抗の変化として検出できるようだ。
次の問題は、AC電源の位相をどのように検出するかである。いくつかの方法があるようだが、トランスで降圧した電圧をブリッジダイオードで正にした電圧を、ツェナーダイオードを通すことによって、ゼロ付近の電圧になったのをデジタル信号としてとらえることができる。ADを持つAVRならば、それを電圧として読み取ることもできる。
最後の問題は、AC電源の正と負をどのようにして判別するかである。トライアックを用いる場合には、これは問題にならないが、サイリスタの場合には正と負のそれぞれで信号を出さなければいけない。センター端子のあるトランスでそれをGNDにして、ダイオードで整流することにすれば、正と負のそれぞれの電圧を別々の信号として受けることができる。
マイコンでこれらの信号を受けて、適切なタイミングでフォトトライアックを介して、トライアックを制御すれば、サイリスタユニットが完成するはずである。
今度、試しに作ってみよう。
サイリスタユニット
電力の制御が必要な時には、ソリッドステートリレーまたはサイリスタを使用する。後者としては、これまでサイリスタユニットを購入して利用していた。これは信号の入力にしたがって、出力を制御するユニットです。箱に組み込もうとしたのだが、放熱器は箱の外に出ていた方が良いだろうということで、分解して放熱器以外を箱の中に入れ、放熱器が外にでるようにした。その時にサイリスタユニットの構造をざっと見たのだが、基本的には、制御回路がサイリスタモジュールに適切なタイミングでトリが信号を送るようになっているようだ。
折角なので、サイリスタモジュールの制御の仕方を調べてみた。昔からよく使われている回路では、ダイアックを使ってトリガを作って、これでトライアックなどのサイリスタモジュールを制御する場合が多いようです。最近の回路では、マイコンを使ってトリがを生成する場合もあるらしい。フォトカプラで適切に絶縁しないといけないが、余分な回路が不要になるので、単純化できる気がする。いつかAVRでサイリスタユニットを作ってみようかな。
2日目のrails
railsで二つのデータ
人の名前を選べるようにしてみた。まず、
rails use cd use ruby script/generate scaffold member name:string affiliation:string rake db:migrate ruby script/generate scaffold use from:time to:time member_id:integer rake db:migrate
として、人のデータベースと、時間のデータベースを作る。そして、app/models/use.rbにbelongs_to :memberと追記して、 app/views/uses/index.html.erbとshow.html.erbのuse.member_idをuse.member.nameに変える。そして、app/views/uses/new.html.erbとedit.html.erbのf.text_field :member_idを
select("use","member_id",Member.find(:all).collect{|i| [i.name,i.id]})
に変更する。これで、member_idをリストから選べるようになった。
ruby on rails
railsを入れてみた
rubyを使う人間としては、railsをいつか使ってみようと考えていたのだが、debianでインストールしている人の記録を見ると、面倒そうだったのでなかなか手を出していなかった。しかし、いろいろと試してみると、
aptitude install rails
で、ほとんどのパッケージが入るようだ。データベースはsqliteがデフォルトのようだ。railsはまだ全く理解していないのだが、試しにテストをしてみた。
rails memo cd memo ruby script/generate scaffold memo date:date title:string body:text check:boolean rake db:migrate ruby script/server
とすると、http://localhost:3000/memosに簡単なメモのwebアプリができた。なんとなくrailsの一部を感じることができた気がする。今はwebrickでwebサーバーを動かしているが、apach+SCGIで動かすのが良いらしい。SCGIはlibapache2-mod-scgiを入れれば良いのかな。
2010/7/31追記 script/generateで指定できるのは、controller, integration_test, mailer, migration, model, observer, plugin, resource, scaffold, session_migrationがあるようですが、それぞれが何をするものなのかまだ理解していません。 ちなみに、scaffoldで指定するデータの型としては、 :primary_key, :integer, :float, :string, :text, :datetime, :timestamp, :date, :time, :boolean, :binaryが使えるらしい。
温度の記録
AVR温度計
今年の夏は例年に比べて相当暑い気がする。しかし、やはり自分でそのデータを示さないことには結論を出せないだろう。というわけで、AVRで温度計を作ってみることにした。ICとしては、tiny261を使うことにした。これにはAD converterが内臓されており、さらに内臓温度計の電圧を測ることによって、温度も分かる。しかし、UARTは無いので、RS232Cでデータを送信するのは難しい。そこで、測定結果は、液晶に表示するようにした。
さて、いろいろと苦労をして、なんとか測定できるようになった。引っかかった点としては、電源の方向、reset端子になっているためにIOとしては使えないpinの位置、液晶のコントラストの調整、周波数の設定などである。液晶も普段使っている161が余っていないので、162のものを使った。
1.1Vを基準電圧として、10bitでADが行われるので、理想的な分解能は約1.1mVということになる。一方、温度センサは、1mV/1度らしい。ということは、分解能は1.1度しか無いことになってしまう。これでは使い物にならない。外部に適切な温度計をつないで、電圧を読むようにしないと。
RS232Cモニター
今度の修理
液晶ディスプレイが故障
昨年、共用のディスプレイが故障した。他にも故障しているディスプレイを集めてみると、三台あった。一台はバラしてしまって部品取り用にして、その他の二台を修理することができた。二台ともインバーター回路のトランジスタが死んでいたので、移植することによって動くようになった。先月一台が不調になったので、追加修理をした。
今日、メインに使っている液晶ディスプレイが急に動かなくなった。幸い、昨年卒業した学生が使っていたものが余っていたので、それに置き換えて仕事ができるようになった。今回壊れたのはIO-DATAのLCD-AD194VBというものである。いつ購入したか覚えていないが、おそらく三年前ぐらいだと思う。問題は、どう修理するかだ。
まず、中を開けてみて気がついたのが、前のものにくらべて、インバーター回路がすっきりとしているということだ。前回の経験を生かすことができない。見た目では電解コンデンサは大丈夫なようだし、インバーター回路のトランジスタがどこにあるのかも分からない。今度の故障箇所を特定するのは難しそうだ。