2017年07月16日

ProjectionBall IoT販売開始

今回は昨日から販売開始した
ProjectionBall IoTについて紹介します。


既にOpenHardwareとして公開しているProjectionBall IoTの
組立済みモデルを販売開始しました。


main-photo.jpg



これまでのProjectionBallとの大きな違いは下記の通りです。

・サイズが直径12cm→10cmに小型化
・ESP-WROOM02を搭載でスマートフォンやタブレット等から操作可
・フォント内蔵で任意の文字列描画可能(英数字、一部記号のみ)
・RTC内蔵でアナログ時計やデジタル時計、日付を描画可能


Projection Ball IoTはこちらのサイトから購入可能です。


posted by Crescent at 00:00| Comment(0) | TrackBack(0) | お知らせ | このブログの読者になる | 更新情報をチェックする

2017年07月06日

赤外線グリッドセンサ

以前に日本で入手可能な赤外線グリッドセンサとして
MELEXIS製 MLX90621を紹介しました。

価格が6000円前後、I2Cの通信と16x4という細長いグリッドのため、
扱いには癖がありました。

一方、以前からパナソニック製AMG8832 解像度8x8 がありましたが、
輸出規制品のため、日本では個人で購入できませんでした。


つい最近、Digikeyの広告で新機種のAMG8833が宣伝されており、
国内で買えないはずでは?と思いつつ、ページを見てみると
日本円の価格がついていました!
約2700円程度の安さ。

ということで他の部品と合わせて注文したところ、
使用目的などの申請書類なしに普通に買えました。
なお、RSでは申請書類を要求されました。


AMG8833.JPG

Digikey日本でも取扱を開始したようです。

価格も手ごろで8x8の赤外線グリッドセンサが手に入るのは感激です。
また後ほど、変換基板等を設計して実験してみたいと思います。


ただ、今年の赤外線グリッドセンサの本命は
32x24のMLX90640だと思いますが。
秋発売予定で価格がどうなるか待ち遠しいです。



ラベル:部品 IoT
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2017年06月29日

自作リニアエンコーダ

今回は簡単なリニアエンコーダを部品代300円程度で
自作してみましたのでご紹介します。


リニアエンコーダは浮上するわけでなく、
リニア=直線 のエンコーダということです。

以前に何度か紹介したAS5048AやTLE5012Bなどの磁気エンコーダは
ロータリーエンコーダで、回転の角度位置を検出します。


一方、リニアエンコーダは直線の位置を検出します。
用途としては3Dプリンタの軸に取り付けて位置を検出するなど...



使用する部品は
・ホールセンサー
・100均一などのテープ状マグネット
です。


秋月電子でホールセンサーA1324LUA-Tがアナログ出力で
磁力なしで中心電圧2.5V出力のため、使い勝手が良いです。



実は、100円均一で扱っているシートマグネットや
広告として配布されるシート状のマグネットは奥が深いのです。


どこでもぺたっとくっ付くシート磁石ですが、
単に表がN極、裏がS極ということではありません。

細かく数ミリピッチで綺麗にNとSが交互に並んでいます。



製造元によってピッチは異なりますが、
規則的に並んでいるため、
この磁界を検出すれば位置センサとして使用できるということです。

ピッチを知りたい場合はシート磁石を2枚重ねてスライドさせると、
ガタガタとN極S極の吸着部分と同極同士の反発部分を手で感じることができます。
ガタガタのピッチを測定すれば磁極ピッチが分かります。



magnet.jpg

国内で手に入るものはほとんど2~4mmピッチです。



実際にホールセンサーA1324LUA-Tとダイソーで購入したテープ状磁石で
ホールセンサーをある一定速度でスライドさせると、綺麗に正弦波が出力として出ました。

IMG_4629.JPG


磁石のピッチが既知であれば、波の山や谷を数えればざっくりとした位置が分かります。
さらに正弦波に近似するとピッチのどの位置にいるか、更に高精度化することも可能です。



シート状の磁石は少し磁界が弱いため、
現状はセンサと磁石がベタ付け状態ですが、
センサの種類の変更やセンサ出力を増幅させるなどの工夫で
非接触でもセンシングできると思います。



テープ磁石をタイヤなどの回転物に巻けば、
ロータリーエンコーダとしても使用できそうです。


ラベル:部品
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2017年06月23日

磁気エンコーダTLE5012B その2

紹介しました。

TLE5012Bの問題点はSPIインタフェース互換のSSCという通信方式で
MOSIとMISOが1つで双方向に通信を行います。

前回はMOSIとMISOに抵抗を挟んで通信しましたが、
STM32のHALライブラリにはSSCに対応したHalf Duplexモードがあるため、
そちらを使用して通信してみました。

CubeMXではHalf Duplex Masterとして設定します。
SPI.png


配線ではMISOは使用せず、
MOSIのみで双方向に通信します。
1本のみの通信のため、抵抗値を0にしています。

SPI-HalfDuplex.png



コードは下記の通りです。

uint16_t GetEncPos(){
 uint8_t    sData[6];
  uint8_t rData[6];
  uint8_t rCRCBuff[12];
  uint16_t res;

 HAL_GPIO_WritePin(ENC_CS1_GPIO_Port, ENC_CS1_Pin,0);//CS
 sData[0]=0x80;sData[1]=0x21;
 HAL_SPI_Transmit(&hspi1,sData,2,500);


 sData[0]=0x00;sData[1]=0x00;sData[2]=0x00;sData[3]=0x00;
 rData[0]=0;rData[1]=0;rData[2]=0;rData[3]=0;

 for(int i=0; i<1; i++)asm("nop");//Point

 HAL_SPI_Receive(&hspi1,(uint8_t*)&rData,4,500);

 HAL_GPIO_WritePin(ENC_CS1_GPIO_Port, ENC_CS1_Pin,1);//CS

 uint8_t rCRC;//CRC from Recieve data
  uint8_t dCRC;//Calc CRC from Data

   rCRCBuff[0]=0x80;
   rCRCBuff[1]=0x21;
   rCRCBuff[2]=rData[0];
   rCRCBuff[3]=rData[1];

   rCRC=rData[3];
   dCRC=GetCRC8(rCRCBuff, 4);//CRC check
   
    if(rCRC!=dCRC){
        ENC_Err_Count++;
        return 0;
    }
 
 res =(rData[0]<<8)+rData[1];
 return  0x7FFF&res;
}

uint8_t GetCRC8(uint8_t *buff, size_t size )
{
    uint8_t crc=0xFF;
    uint8_t i;

    while(size--){
        crc^= *buff++;
        for(i=0;i<8;i++){
            crc=crc&0x80?(crc<<1)^0x1d:crc<<1;
        }

    }
    return (~crc)&0xFF;
}

以前紹介したコードとの差はHalf Duplex Masterのため、
HAL_SPI_TransmitReceiveを使用せずに
HAL_SPI_ReceiveとHAL_SPI_Transmitを使用している点です。
自動的にMOSIの入出力がHALライブラリ内で切り替わります。
また、SafetyWordのCRCチェックを行っています。



実際に高速で通信した際に
角度読み出しコマンド実行後にすぐに角度を読み出すと、
正しい値を返さない現象が発生しました。
Infineonのフォーラムでも同じような不具合のディスカッションがされており、
角度読み出しコマンド実行後に10us待ってから読み出すことが重要なようです@2MHz


tle5012.jpg


実際にFullDuplexMasterで以前紹介したようなMOSIとMISOを使用する配線で
10us待つためには
sData[0]=0x80;sData[1]=0x21;
HAL_SPI_TransmitReceive(&hspi1,sData,rData,2,200);
sData[0]=0x00;sData[1]=0x00;sData[2]=0x00;sData[3]=0x00;
rData[0]=0;rData[1]=0;rData[2]=0;rData[3]=0;
HAL_SPI_Receive(&hspi1,(uint8_t*)&rData,4,200);
とすると丁度良い待ち時間になりました。


通信クロックに関して、
FullDuplexMasterではSPIクロック最大2MHz、
HalfDuplexMasterではSPIクロック最大4MHzという結果でした。
8MHzではビット読み違いが多発し、CRCチェックで値が落ちて通信できませんでした。



最終的に値取得周期は
TLE5012Bが2個、FullDuplexMaster@2MHzで約120us
TLE5012Bが2個、HalfDuplexMaster@4MHzで約100us
という結果となりました。


値読み出しコマンドとSafetyWord分の通信が必要なため、
1回の通信で8bit x 6回の通信が必要です。
SafetyWordを読み込まない場合でも8bit x 4回の通信が必要です。

TLE5012Bは内部更新周期42.7usで読み出すためには
SPIクロックを8MHzにしてなんとか実現可能なレベルということが分かりました。
AMS社のAS5048Aでは8bit x 2回の通信で済むため、
比べると通信量が多いことが分かります。



安さと15bit分解能、フィルタ内蔵というのは良いですが
SSCインタフェース、通信量の多さ、
角度読み出しコマンド後の待機時間の曖昧さには要注意です。


ラベル:部品 STM32 HAL
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2017年06月17日

ProjectionBallオープンハードウェア化

先月、MakerFaireBayAreaに参加して以降、
海外からの問い合わせが増えました。


一方で海外向けに販売できる体制を短期間で構築できないため、
最新版のProjectionBall IoTをオープンハードウェア化することにしました。

ProjectionBall IoT v5.4の特徴
・スマートフォンやPCからWifi経由で遠隔操作可能
・アナログ時計、デジタル時計を内蔵
・任意の文字列を表示可能(最大32文字、フォント内蔵)
・直径が10cm(旧モデル12cm)と一回り小さく
・Wifiはアクセスポイントモード、サーバモードの両対応


◆ProjectionBall IoTファームウェア&ソースコード

◆ProjectionBall IoT部品リスト&STLデータ&カーバーデータ

◆ProjectionBall IoT Wifiモジュールソースコード


ドキュメント類や説明がまだ充実していない状況のため、
英語版のドキュメント含め、順次、追加していきたいと思います。


また、国内向けにはProjectionBall IoTの完成版を
近日、協力会社から販売開始予定です。



ぜひ、Facebookページへ「いいね」をお願いします。

posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする