2018年12月01日

Design Spark Mechanical v4リリース

Design Spark Mechanical v4が先日リリースされました。

商用でも無償で利用可能で、
3Dプリンタのstlファイル形式で出力できる3DCADソフトウェアなので重宝しています。

rs.jpg


Design Spark Mechanical v4は64bit版のみの提供のようです。

ここ数年、全くアップデートがなかったDesign Spark Mechanicalですが、
やっとアップデートが先日ありました。
某3DCADソフトウェアのように毎月あるのは考えものですが、
数年全くないのも心配していた状況でのアップデートです。

新機能として、回転体、連続体、シートメタルの作成が可能な
ブレンドツールが追加されています。

他に自動保存機能、ソリッドボディジオメトリをエラー修正のための
ヒント分析機能なども追加されています。

基本機能はそのままに3DプリンタのソフトウェアKuraとのシームレスな連携など、
より最近のトレンドを捉えたソフトウェアに仕上がってます。

新機能の詳細についてはまた別の機会に紹介します!
posted by Crescent at 00:00| Comment(0) | 3Dプリンタ | このブログの読者になる | 更新情報をチェックする

2018年11月17日

フォトダイオード増幅回路

光センサの1つにフォトダイオードがあります。

距離センサ、ガルバノメータのエンコーダ等では
フォトダイオードを使用しています。

フォトダイオードの信号は微弱な電流のため、
微弱な光の強弱を検出するために増幅回路が必要です。
今回はフォトダイオードの増幅回路を紹介します。

電圧電流変換の回路を応用して、
微弱なフォトダイオードの電流を増幅します。
回路は下記のような感じです。

photodiode.jpg

光を受けて発生した光起電力を増幅するため、
フォトトランジスタではこの回路は使用できません。
フォトダイオードの一種が太陽電池なので、
光起電力が発生するダイオードであれば、
この増幅回路が使用できます。
秋月ではPINフォトダイオード等が使用できます。

フォトダイオードの増幅回路は他にもありますが、
光の有無を検出するような回路ばかりで、
光の変化をレンジが広く、線形に得られる回路はなかなかありません。
色々検討して上記の回路にたどり着きました。

今後は上記の回路を応用してガルバノメータを取り込んで、
デジタル制御してみたいと思います。
posted by Crescent at 00:00| Comment(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする

2018年11月10日

STM32F373 SDADCマルチチャンネル読み込み

今回はSTM32F373マイコンに内蔵されている
デルタシグマADC(SDADC)のMulti Channelでの
読み込みする方法を紹介します。

SDADCは一部のSTM32マイコンのみ内蔵のため、
サンプルコードや情報がなかなかありません。

試行錯誤してSDADC+DMA+2channelという条件で動作したため、
方法を覚書として紹介します。



今回はSDADC1の2チャンネルを順次変換します。


CubeMX上の設定は下記の通りです。
ポイントは
・Injected Conversions有効化
・DMA転送
です。


・Injected Conversions :Enable
・Number of Channels To be converted :2
・Continuous Mode :Enable
・Channel Configuration1,2: Channel 4,5


sdadc-conf.jpg


・Mode: Circular
・Increment Address: Memory Checked


sdadc-dma.jpg



main.cでは下記のコードを追記します。

//グローバル変数
uint16_t g_SDADCBuffer1[2];

//while文の前に初期化
HAL_SDADC_InjectedStart_DMA(&hsdadc1 , (uint32_t*)g_SDADCBuffer1,2);

//while文
printf(" %d,\t %d, \n\r",g_SDADCBuffer1[0],g_SDADCBuffer1[1]);
HAL_Delay(100);


g_SDADCBuffer1[0]にChennel 4
g_SDADCBuffer1[1]にChennel 5
がDMA転送で格納されます。


実際に実行した結果は下記の通りです。
順次SDADCの変換結果が格納されていることが確認できます。

sdadc-res.jpg

DMA転送でContinuous Mode :EnableかつCircularモードの場合は
void HAL_SDADC_ConvCpltCallback(SDADC_HandleTypeDef* hsdadc)の
関数内でDMA割込みの設定し直す必要はないようです。


HAL_SDADC_PollForConversionを使用すると変換待ちの時間を要するため、
DMA転送できると変換待ちがなく、色々応用範囲が広がります。

posted by Crescent at 00:00| Comment(0) | 組込ソフト | このブログの読者になる | 更新情報をチェックする

2018年11月03日

MachXO3LFのSPI Flashからのロード方法

今回はLattice製FPGA MachXO3LF Starter Kitについて紹介します。
MachXO3LF Starter KitはLUT規模は小さいものの、
3千円程度とお手頃な価格で入手することができます。
また、開発環境Diamondもフリーライセンスで利用できるため、
気軽に始めることができます。

特に開発環境のDiamondがダウンロードサイズ1GB前後、
インストール後が5GB前後で他社の開発環境に比べて
コンパクトな点も気に入っています。

今回はMachXO3LFのSPI Flashからのロードする設定方法を紹介します。

Starter Kitのちょっとした注意点
MachXO3LFとMachXO3Lの2種類ある点です。

・MachXO3LFはFPGA内にFlashを内蔵しており、
何度も書き換えが可能なタイプ。

・MachXO3LはNVCM(Non-Volatile Configuration Memory、
ワンタイム・プログラマブル)という数回のみ書き換え可能な
メモリを内蔵しているタイプです。

製品実装等ので将来、書き換えることがない場合にMachXO3Lを使用しますが、
一般的なホビー用途や検討では何度も書き換え可能な
MachXO3LFが適切といえます。

最初に詳しく調べもせずに誤ってMachXO3Lを買ってしまいました…
後に改めてMachXO3LFを購入。


■MachXO3LF/MachXO3L Starter Kitについて
両タイプもSPI Flashが実装されています。
購入時にデモプログラムが書き込まれており、
MachXO3LはSPI Flashにデモコードが書き込まれており、
FPGAにはSPI Flashからプログラムをロードするコンフィグが
書き込まれています。
そのため、プログラムの書き換えはSPI Flashに
任意のbitデータを書き込んで使用します。

一方、MachXO3LFはデモプログラムは内蔵Flashに書き込まれています。
そのため、プログラムの書き換えは内蔵Flashを書き換えればよいのですが、
せっかくなので内蔵メモリでなく、外部のSPI Flashから読み込みます。

ただ、どのように外部のSPI Flashから読み込むのか、
情報が少なく、少し苦戦したため、
覚書として今回紹介することにしました。


@MachXO3LF内蔵Flashに外部SPIブートの設定書き込み

プロジェクトを生成する際のグローバル設定は下記のように設定します。


generalsetting.jpg

ポイントは
・MASTER_SPI_PORTをENABLEにする
・CONFIGURATIONをEXTERNALにする
です。

他の設定は任意です。

グローバル設定を保存しプロジェクトを合成します。
そのあと、SPI Flashに書き込むBitstream File
内蔵Flashに書き込むJEDEC Fileの2つを生成します。

続いて、外部SPI Flashから起動するための
設定ファイル(コンフィグレーション)を内蔵Flashも書き込みます。
その際にBitstream File全体でなく、
設定ファイル(コンフィグレーション)のみを書き込むことがポイントです。

書き込む際のOperationに「FLASH CFG〜」を選択します。
設定ファイル(コンフィグレーション)のみの「CFG」がポイントです。

flashcfg.jpg

これでMachXO3LFは外部SPIから起動するようになります。

A外部SPI Flashにプログラム書き込み

Starter Kitに搭載のSPI FlashはSpasion製
SPI-S25FL208Kを搭載しています。

SPI FlashオプションにSPI-S25FL208Kを選択して、
Bit Streamファイルを選択して書き込みます。

flashwrite.jpg

電源再投入でSPI Flashからプログラムを読み込みます。



今回は今回はMachXO3LFのSPI Flashから
ロードする設定方法を紹介しました。

FPGAを扱ったことが少ないため、
SPI Flashから読み込む設定をどのように書き込めばよいのか、
いろいろ探してしまいました。

書き込み時にプログラム全体を書き込むのでなく、
設定ファイル(コンフィグレーション)のみを書き込むことで、
SPI Flashから読み込むことができました。

SPI Flashから読み込めることが確認できたので、
Starter Kitを使っていろいろ実験してみたいと思います。

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

2018年10月27日

2.42インチOLEDモジュール試食

今回は2.42インチOLEDモジュールについて紹介します。

秋月やamazon等で手に入るOLEDは解像度は128x64でそこそこあるものの、
画面サイズが0.96インチで遠くからの視認性があまり良くありません。

日本ではあまり入手性がよくありませんが、
同じ解像度128x64で同じ種類の制御ドライバの

0.96インチの制御ドライバはSSD1306で、
2.42インチの制御ドライバはSSD1309です。
互換はあるようです。

2.42インチOLEDモジュールが届いた状態では
SPIモードとなっており、
裏側のジャンパ抵抗を切り替えてI2Cモードとして動作させます。

このジャンパ抵抗が曲者でした・・・
SPIモードで使用しているジャンパ抵抗は4.7kの抵抗のため、
同じようにI2Cモードも4.7kでジャンパしましたが、
まったく動作せず・・・
I2Cのアドレススキャンにも応答せず・・・

oled-jumper.jpg

ジャンパ抵抗を4.7kでなく、
0Ωにするとアドレススキャンに応答し、
I2Cモードで動作確認できました。


2.42oled.jpg


同じようなOLEDなのに思った以上に動作確認に苦戦しました。

以前、ご紹介したようにRES端子を改造して、
4線のみで簡単に制御できるようにして試食完了です。

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