0

電子工作始めたての頃に読むと良い部品屋のRSS

電子工作を始めたての人は、まず世の中にどんな部品が存在するのかを把握すると良いと思う。

このへん3ヶ月ぐらい読んでると、どんな部品が存在するのかわかってくる(他におすすめなRSSあったら教えてください)


秋月の新商品
http://shokai.herokuapp.com/feed/akizuki.rss


aitendoの新商品
http://www.aitendo.com/rss/rss.php


ストロベリーリナックスの新商品
http://pipes.yahoo.com/pipes/pipe.info?_id=43d7a8defa45bcda73071c0a157abadf


マルツのblog
http://marutsumake.blog74.fc2.com/?xml


共立のblog
http://blog.siliconhouse.jp/atom.xml


sparkfunのニュース
http://www.sparkfun.com/feeds/news


あまり多すぎても大変なので、ジャンルが被らない感じで適当に選んでみた。
どれも新入荷商品や商品紹介blog。大きい写真多めでfeedが全文配信されているので、よくわからん部品でもパラパラ見やすい。

何に使う部品か理解できなくても、気にせず名前や外見に見覚えがある部品を増やす。そのうち、それらが結合されて回路図とかが理解できるようになる。なのでパラパラ見ると良い。

0

PSoC CapSenseで静電容量タッチセンサ 4つ動かした

前の記事の回路などが思いきり間違っていたので修正しつつ、CapSenseとLED4つずつに増やした。
多分、マイコンの足の数だ増やせる。

例によってコードはBitbucketにアップした




CapSense CSDウィザードで4つスイッチを置いて
capsenseたくさん


AnalogMUXBusに接続されている事を確認
capsenseたくさん


CSDの設定。しきい値などをかなり何度も直した。適当にやってたので理論をわかってないんだけど、どうやらセンサ部分の形状や配置に応じて微調整しなければ使い物にならないっぽい。
capsenseたくさん


ピンの設定。LEDが4つにした。
使ってないピンをPull Upにしておくとノイズが来ないので安定する事に気づいた。
capsenseたくさん


実体配置図
capsenseたくさん


前の記事の回路が間違っていて、あのままではうまく動かなかったが、1kΩの抵抗と0.1μFのキャパシタを足したら複数認識できるようになった。

CapSense CSDのデータシートにあった図。抵抗とキャパシタが必要らしい
capsenseたくさん

P1[5]とP0[3]の間に1kΩを入れて、P0[3]からキャパシタを通して銅箔テープに延ばす。
R0011375
前の記事はP1[5]とP0[3]で静電容量取ろうとしてたので、思いっきり間違ってた。



プログラム。
前のやつのif(CSD_1_bIsSensorActive(センサ番号))を増やしただけ。
shokai / CapSense LED / source — bitbucket.org
main.c

#include <m8c.h>        // part specific constants and macros
#include "PSoCAPI.h"    // PSoC API definitions for all User Modules
#define _BV(BIT) (1<<BIT)
#define sbi(BYTE,BIT) (BYTE |= _BV(BIT))
#define cbi(BYTE,BIT) (BYTE &= ~_BV(BIT))
#define LED_0_ON() sbi(PRT1DR, 7);
#define LED_0_OFF() cbi(PRT1DR, 7);
#define LED_1_ON() sbi(PRT0DR, 1);
#define LED_1_OFF() cbi(PRT0DR, 1);
#define LED_2_ON() sbi(PRT0DR, 5);
#define LED_2_OFF() cbi(PRT0DR, 5);
#define LED_3_ON() sbi(PRT0DR, 7);
#define LED_3_OFF() cbi(PRT0DR, 7);


void main()
{
  M8C_EnableGInt;
  CSD_1_Start();
  CSD_1_InitializeBaselines();
  CSD_1_SetDefaultFingerThresholds();
  while(1){
    CSD_1_ScanAllSensors();
    CSD_1_UpdateAllBaselines();
    if(CSD_1_bIsSensorActive(0)){
      LED_0_ON();
    }
    else{
      LED_0_OFF();
    }

    if(CSD_1_bIsSensorActive(1)){
      LED_1_ON();
    }
    else{
      LED_1_OFF();
    }
    if(CSD_1_bIsSensorActive(2)){
      LED_2_ON();
    }
    else{
      LED_2_OFF();
    }
    if(CSD_1_bIsSensorActive(3)){
      LED_3_ON();
    }
    else{
      LED_3_OFF();
    }
  }
}




電源を5VのACアダプタにしたらすっきりしたので、大学院棟の俺の机に置いておきます
さわると光ります
R0011369

0

PSoC CapSenseで静電容量タッチセンサを自作した

回路などが間違っている事に気がつきました
正しい実装は次の記事へ。
使った部品の説明などはこのまま下へ。
*********************************************


できたっぽい。ひさしぶりにマイコンいじった。
銅箔テープの部分に指が近づけると電気容量の乱れるので、それをPSoC CY8C21334のCapSense機能で検出してLEDを光らせている。
コードもbitbucketにアップしました


(音小さい)

LEDは点滅させたくてさせているんじゃないんだけど、してしまっている。
もう少し抵抗値などの調整が必要らしい。

静電容量タッチセンサはメカニカルな部品が無いので、ビデオの最後にやっている様に、何の変哲もない壁に埋め込んでその上に人の手が乗っているかを検出したりできる。
防水加工も容易だし、銅箔等を使えば曲面に埋め込む事も出来る。
実際ヨーロッパの寒いところに行くと信号機やエレベータのボタンが凍結防止のために静電容量センサで実装されていたりする。

PSoCのCapSenseはワンチップで静電容量センサを簡単に実装できるパッケージで、商業的にはSONYのオーディオコンポやAppleのiPodのホイールなんかにも使われていてずいぶん潤っているらしく、セミナーも無料だし基盤は配るしタダメシも出てくる。


次は複数のcapsenseを使えるようにしてみる予定。
静電容量タッチセンサ(capsense)


■必要な部品
リンク先は買ったお店の商品ページ。

  • PSoCマイコン CY8C21334-24PVXI(20pin)
    capsenseがついているマイコン。いろいろ探した結果、これをchip1stopで買うのがコストパフォーマンスが一番良いという結論になった
  • 秋月のSSOP変換基板
    CY8C21334がSSOPという超小さいパッケージしか無いので、ブレッドボードに刺せるように足幅を広げる基盤。28ピンなので8ピン余るけど安いからこれを使う。
  • 銅箔テープ たしか千石で買ったと思う。薄くて平べったい電極ならなんでも良さそう


あとは、秋月で買ったPSoC MiniProgというUSB接続の書き込み機と、ブレッドボードとLEDとクリップとベニヤ板と変換基板のピンヘッダ(オス)。



■センサー部分の制作
銅箔テープを千石で買ってきて適当な木の板に平行に貼る。裏に糊がついていたので楽だった。
銅箔テープ銅箔テープ

CY3235 CapSense-ProxDetでは2.2kΩの抵抗と0.1μFのキャパシタがついているらしいが、手持ちのPSoC Expressセミナーの時にもらったCY3121では何もなくCY8C21434に直結しているように見えるので、これでいいのかも。


■マイコンのはんだづけ
今回はんだづけはここだけ。
フラックスをたっぷり塗って、足に沿ってさっさっと撫でる。
変換基板にはんだづけ変換基板にはんだづけ



■PSoC Designerでのデバイス設定
新規プロジェクトをCY8C21334 24PVXI(20pin)で開始して、
Device EditorでUser ModulesからCap Sense(CSD)を配置。
capsense

「Select CSD with clock prescaler」を選択した。
PSoC入門:PSoC First Touch編 – MeRLマイコンブの記事ではwithout clock prescalerを選んでいるが、digital/analog block消費量も変わらないのでclock prescalerにしてみた。


Interconnect Viewで、CSD_1をplaceしてから右クリックすると「CSDウィザード」というのがあるのでそれを使う。
センサの数を1、スライダーを0にしてPORT0_1を左上にドラッグアンドドロップして「OK」
capsense


すると、CSD_1に接続されている。
いままでUARTやADCモジュールではInterconnect Viewで自分で接続していたが、その必要が無くなっている。
capsense


CSD_1の設定を確認。Pinの設定をしておく。
capsense



最後に、PORT0_0でLEDを光らせるためにDriveをStrongに変更
capsense


ピン割り当て
capsense




Generate Applicationして、Cでプログラムを書く。


■PSoC Designerでのプログラミング
shokai / CapSense LED / source — bitbucket.org
main.c

#include <m8c.h>        // part specific constants and macros
#include "PSoCAPI.h"    // PSoC API definitions for all User Modules
#define _BV(BIT) (1<<BIT)
#define sbi(BYTE,BIT) (BYTE |= _BV(BIT))
#define cbi(BYTE,BIT) (BYTE &= ~_BV(BIT))
#define LED_ON() sbi(PRT0DR, 0);
#define LED_OFF() cbi(PRT0DR, 0);


void main()
{
  M8C_EnableGInt;
  CSD_1_Start();
  CSD_1_InitializeBaselines();
  CSD_1_SetDefaultFingerThresholds();
  
  while(1){
    CSD_1_ScanAllSensors();
    CSD_1_UpdateAllBaselines();
    if(CSD_1_bIsSensorActive(0)){
      LED_ON();
    }
    else{
      LED_OFF();
    }
  }
}




■マイコンの回路を作る
データシートを見て、PSoC MiniProgから接続が必要なSCLK、SDATA、XRES、VDD(VCC)、VSS(GND)の位置を確認
ピン配置


その通りに配線。電源はUSBのPSoC MiniProgから給電できる。
この時点でLEDを点灯させるだけのプログラムを書いて、マイコン単体で動くか確認した。
R0011336



さきほどのプログラムを書き込んで、
PORT0_1とPORT1_5からクリップで銅箔テープに接続して完成。
さわると光る。
静電容量タッチセンサ(capsense)

0

工具を交換

工具にガタが来たりしていたので買ってきた
DSCF4222

Read more

0

moxaを9V電池で動くように改造する

基本はUSB給電だが、内部にレギュレータがあるので9V電池をそのまま接続するだけで使えるようになる。

DSCF3388



■電源ケーブルを付け直す
上の写真にもある赤いケーブルが、PCのUSB端子からの5V給電をmoxaのレギュレータに送る役目をしている。
(上の写真では既に付け直した後だが)最初は基盤裏側に付けてあるのだけど、今回は下方向にピンヘッダを付けたかったので基盤表側につけなおした


基盤裏のピンヘッダ。赤い電源ケーブルははんだごてを当てながら抜けば簡単に外せる
DSCF3376

表側に付け直した。
DSCF3372


この状態で、まずは一回moxa基盤そのものがパソコンから認識できるかどうか確かめたりしておいた方が良い。電源まわりはバグの元なので。



■9V電池を接続する
図のように接続する。9Vのプラスとマイナスを間違えないように注意。
9v-moxa

外部にセンサーなどを接続する時は、右の3.3V出力を利用する。左側のUSBからの5V出力は当然動いていないので使えない。
あと、左側にもGNDがあるのでうまく利用すると良いかも。

今回作った基盤は裏から見るとこうなっている。電池からの給電をON/OFFするスイッチを、電池+→VIN間に付けた。
DSCF3389