タグ別アーカイブ: Cortex-M4

Run the linear actuator with STM32F

ステッピングモータの制御を試作するためにリニアアクチュエータを購入しました。
リニアスライドレール、アルミ合金0808ボールねじ57モーター付き単軸台形(500mm)
https://www.amazon.co.jp/gp/product/B081B4BFYP/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1
実物は、ボールねじではりません。台形ねじです。500mmという大型ですが格安なので購入しました。

ドライバは、以下を購入しました。
Quimat 4A TB6600 ステッピング モーター ドライバー コントローラー 9V-40V CNC単軸 2位相4位相(4/6/8線) 駆動工具 ドライバー QD07
https://www.amazon.co.jp/gp/product/B06XSBB45M/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1

モータは、ロータリーエンコーダを接続するためにデュアルシャフトの物に交換しています。
HANPOSE 17HS8401S-D150Sダブルシャフト48mm Nema 17ステッピングモーター42モーター42BYGH 1.8A 52N.cm 4線式3DプリンターCNCレーザー
https://jp.banggood.com/HANPOSE-17HS8401S-D150S-Double-Shaft-48mm-Nema-17-Stepper-Motor-42-Motor-42BYGH-1_8A-52N_cm-4-lead-for-3D-Printer-CNC-Laser-p-1415966.html?rmmds=myorder&cur_warehouse=CN

アクチュエータのリミットセンサとして反射型の光電センサを使用しました。
HiLetgo 10pcs TCRT5000赤外線反射センサーIR光電スイッチバリアライン障害物回避モジュールトレースセンサートレースモジュール
https://www.amazon.co.jp/gp/product/B07WR9JP3W/ref=ppx_yo_dt_b_asin_title_o07_s00?ie=UTF8&psc=1
センサーは、上側リミット、下側リミット、原点近傍の3個を使用しました。

制御には、STM32F401CCU6を使用しました。
STM32F401開発ボードSTM32F401CCU6 STM32F4学習ボード
https://jp.banggood.com/STM32F401-Development-Board-STM32F401CCU6-STM32F4-Learning-Board-p-1568897.html?rmmds=myorder&cur_warehouse=CN

 

I bought a linear actuator to make a prototype control of a stepping motor.
Linear slide rail, aluminum alloy 0808 Ball screw 57 Single shaft trapezoid with motor (500 mm)

https://www.amazon.co.jp/gp/product/B081B4BFYP/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1
The real thing is not a ball screw. It is a trapezoidal screw. I bought it because it is a large size of 500mm but it is cheap.
The driver purchased the following:
Quimat 4A TB6600 Stepping Motor Driver Controller 9V-40V CNC Single Axis 2 Phase 4 Phase (4/6/8 Wire) Drive Tool Driver QD07

https://www.amazon.co.jp/gp/product/B06XSBB45M/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1
The motor is replaced with a dual shaft one to connect the rotary encoder.
HANPOSE 17HS8401S-D150S Double Shaft 48mm Nema 17 Stepping Motor 42 Motor 42BYGH 1.8A 52N.cm 4-Wire 3D Printer CNC Laser

https://jp.banggood.com/HANPOSE-17HS8401S-D150S-Double-Shaft-48mm-Nema-17-Stepper-Motor-42-Motor-42BYGH-1_8A-52N_cm-4-lead-for-3D-Printer-CNC-Laser-p-1415966.html?rmmds=myorder&cur_warehouse=CN
A reflective photoelectric sensor was used as the limit sensor of the actuator.
HiLetgo 10pcs TCRT5000 Infrared Reflection Sensor IR Photoelectric Switch Barrier Line Obstacle Avoidance Module Trace Sensor Trace Module

https://www.amazon.co.jp/gp/product/B07WR9JP3W/ref=ppx_yo_dt_b_asin_title_o07_s00?ie=UTF8&psc=1
Three sensors were used: the upper limit, the lower limit, and the vicinity of the origin.
STM32F401CCU6 was used for control.
STM32F401 development board STM32F401CCU6 STM32F4 learning board

https://jp.banggood.com/STM32F401-Development-Board-STM32F401CCU6-STM32F4-Learning-Board-p-1568897.html?rmmds=myorder&cur_warehouse=CN

 

我购买了线性执行器,以对步进电动机的控制进行原型设计。
线性滑轨,铝合金0808滚珠丝杠57带电机的单轴梯形(500mm)

https://www.amazon.co.jp/gp/product/B081B4BFYP/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1
真正的东西不是滚珠丝杠。 这是一个梯形螺钉。 我买了它是因为它最大可达500毫米,但价格便宜。
驱动程序购买了以下内容:
Quimat 4A TB6600步进电机驱动器控制器9V-40V CNC单轴2相4相(4/6/8线)驱动工具驱动器QD07

https://www.amazon.co.jp/gp/product/B06XSBB45M/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1
用双轴马达代替电动机来连接旋转编码器。
HANPOSE 17HS8401S-D150S双轴48mm Nema 17步进电机42电机42BYGH 1.8A 52N.cm 4线3D打印机CNC激光

https://jp.banggood.com/HANPOSE-17HS8401S-D150S-Double-Shaft-48mm-Nema-17-Stepper-Motor-42-Motor-42BYGH-1_8A-52N_cm-4-lead-for-3D-Printer-CNC-Laser-p-1415966.html?rmmds=myorder&cur_warehouse=CN
反射型光电传感器用作致动器的极限传感器。
HiLetgo 10pcs TCRT5000红外反射传感器红外光电开关障碍物避障模块跟踪传感器跟踪模块

https://www.amazon.co.jp/gp/product/B07WR9JP3W/ref=ppx_yo_dt_b_asin_title_o07_s00?ie=UTF8&psc=1
使用了三个传感器:上限,下限和原点附近。
STM32F401CCU6用于控制。
STM32F401开发板STM32F401CCU6 STM32F4学习板

STM32F401開発ボードSTM32F401CCU6 STM32F4学習ボード
https://jp.banggood.com/STM32F401-Development-Board-STM32F401CCU6-STM32F4-Learning-Board-p-1568897.html?rmmds=myorder&cur_warehouse=CN

STM32F401CCU6 STEPPING MOTOR CONTROL1

STM32F401CCU6開発ボードでSTEPPING MOTORを動かします。まずは、Rotary  Encoderを計測してみました。
Encoderの読み込みには、TIM3を使用しました。

エンコーダー 元 AB 相 5-24v 400 パルス 増分の光学式ロータリーエンコーダー 本体サイズ 39 * 35.5 mm NPN 出力
https://www.amazon.co.jp/%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%80%E3%83%BC-5-24v-%E5%A2%97%E5%88%86%E3%81%AE%E5%85%89%E5%AD%A6%E5%BC%8F%E3%83%AD%E3%83%BC%E3%82%BF%E3%83%AA%E3%83%BC%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%80%E3%83%BC-%E6%9C%AC%E4%BD%93%E3%82%B5%E3%82%A4%E3%82%BA-35-5/dp/B076Q5W251

MXの機能で「Encoder Mode」を設定すれば、コードを自動生成してくれます。
STM32F401CCU6は、USBも使用できるのでCDCでEncoder値を取り出せます。USB CDCもMXでコードの自動生成ができます。

STM32F401CCU6は、小さいですが高機能です。ピン数が少ないので、大きなシステムは組めませんが、単機能であれば十分な性能を生かすことができます。

STM32 Development Small Boards

海外通販サイトから小型のSTM32開発ボードを取り寄せました。
https://jp.banggood.com/ARM-Cortex-M0-STM32F051C8T6-STM32-Core-Board-Minimum-Development-Board-p-1316132.html?rmmds=mywishlist&cur_warehouse=CN
https://jp.banggood.com/STM32F401-Development-Board-STM32F401CCU6-STM32F4-Learning-Board-p-1568897.html?rmmds=myorder&cur_warehouse=CN
STM32F401CCU6とSTM32F051C8T6です。

STM32F401CCU6は、Cortex-M4、84MHz、FLASH 256kB、RAM 64kBの小型高性能のマイコンです。
https://www.stmcu.jp/stm32/stm32f4/stm32f401/12214/
STM32F051C8T6は、Cortex-M0、48MHz、FLASH 64kB、RAM 8kBの小規模マイコンです。
https://www.stmcu.jp/stm32/stm32f0/stm32f0x1/11868/
STM32CubeIDEで開発予定です。

NUCLEO-F303K8


https://www.st.com/ja/evaluation-tools/nucleo-f303k8.html
NUCLEO-F303K8です。チップワンストップで購入しました。送料無料にするためのついで買いです。
https://www.chip1stop.com/view/dispDetail/DispDetail?partId=STMI-0102441
STM32F303K8T6 Arm Cortex-M4 32-bit CPU with FPU 、72MHz、64kBフラッシュメモリのマイコンです。

小ピン高性能の分野の使用を考えています。STM32の開発の一環です。これもmbedでなくSTM32CubeIDEで開発予定です。

LPC4370 UART2

デバッグ等で使用できるようにLPC4370のUART機能を使用してみました。USBシリアル変換に以下のモジュールを使用しました。
超小型USBシリアル・モジュール【MPL2303SA】http://www.marutsu.co.jp/pc/i/137791/
periph_uart_rbサンプルプログラムでループバックの確認をしました。
LPC-LINK2が1.27㎜ピッチコネクタなので以下基板を使用しました。
10ピン2.54ピッチ(2×5)←→1.27ピッチ(1×10)変換基板 (4個入)
http://akizukidenshi.com/catalog/g/gP-07380/
他に1.27mmピッチボードソケット 2列80PとI型ヘッダーソケット 2列x5(10pin)
http://eleshop.jp/shop/g/gE2P134/
http://eleshop.jp/shop/g/gDA9364/
を使用して配線できるようにしました。
Jpeg
USBのCDCとUART2が使用できるようになりました。

LPC-LINKⅡ AS AN LPC4370 EVALUATION BOARD

HSADCを体験したくLPC4370の評価ボードとしてLPC-LINK2を購入しました。
http://akizukidenshi.com/catalog/g/gM-06706/
Jpeg
LabTool 、デバッガ用のLPC-LINK2が既にあるので今回3枚目のLPC-LINK2となります。同じボードとしては一番多く保有するボードとなりました。
開発環境で若干問題がありました。LPC-LINK2をCMSISM-DAPとして使用するとSPIFIのフラッシュに書き込みができませんでした。CMSISM-DAPはあきらめRedLinkを試すことにしました。新しいLPCXpressoは、デフォルトのデバッガがCMSISM-DAPなので、ちょっと古いものを使用しました。
LPCXpresso v7.1.1_125がPCに入っているのでこれで試したところ問題なくデバッグができるようになりました。
LPCXpresso v7.1.1_125でサクッとLED点滅の「periph_blinky」サンプルが動いたので、動作確認でUSBでシリアル通信が使用できるように「usbd_rom_cdc_vcom」サンプルを試しました。
CDCのドライバは、」以下のURLからダウンロードしました。
https://www.lpcware.com/content/nxpfile/lpcxpresso-link2-usb-driver-package
lpc_driver_setup.exe
この実行ファイルをダウンロードして実行します。
LPC USB VCom Portとして認識されました。
2016-05-16
無事、Tera termでループバック通信ができました。
2016-05-16-1
それにしてもLPC4370は、コアが3つもあるのですね。現状Cortex-M4だけを使用しています。いずれトリプルコアも使ってみたいですがまずはデュアルですね。

LPC4330-Xplorer i2s Reberve

Jpeg
LPCOpenの periph_i2sプロジェクトを改造して簡単な
Reberveを作成します。 前回のDelayを改造するので、設定は同じサンプリング周波数は32kHz16bitデータ長のステレオ設定としました。 データ取得も同じ、割り込みで取得します。 
一番単純な1系統のフェードバック系だけを作成します。入出力はステレオですが、バッファリングは、メモリ節約を考えて16bit符号なし整数としました。反響音は、左右同じ音を使用します。バッファ長は、100msecとし、32003.2kBとなります。フィードバック量は、まず、0.2で試しました。原音0.8に対して100msecバッファの音0.2を足し合わせて出力します。Delayとの違いは、バッファに、原音でなく足し合わせた音を保存するところです。 
フェードバック量を変えると長い反響が続き面白かったです

LPC4330-Xplorer i2s DELAY

LPCOpenの periph_i2sプロジェクトを改造して簡単なDELAYを作成します。 
Jpeg
サンプリングレートからi2sの通信速度を設定できるのでこちらを利用することにしました。 
 サンプリングレートは、48kHzも必要なく、処理時間を確保したいので32kHzとします。16bitデータ長のステレオ設定としました。 
データは、割り込みで取得します。とりあえず、0.5秒間のDELAYを実現するために32bit符号なし整数のバッファを作成します。バッファ長は、32000の半分なので16000個、64kBとなります。リングバッファで使い、今回のデータと16000回のデータを足し合わせて出力しました。 
今回、これだけです。まずは、足し合わせはできることが確認できました。もっと複雑な処理に挑戦したいと思います。

LPC4330-Xplorer i2s LPCOpen sample

NXGのサンプルに引き続きLPCOpenのi2sを使用してみます。 
Jpeg
LPCOpenは以下のページからダウンロードできます。 
https://www.lpcware.com/content/nxpfile/lpcopen-software-development-platform-lpc43xx-packages 
 
LPCXpresso v7.9.2_493 IDEにサンプルをインポートします。この中の periph_i2sプロジェクトを使用します。 
このサンプルには、ポーリングと割り込みとDMAを使ったサンプルが含まれています。 
ただし、これを使用するには、UARTでコマンドを送る必要があります。幸いにもXBeeをつなげておいたのですんなりとコマンド送信ができました。 
ビルドも難なく通り、書き込みも難なく終わりデバッグできますが、ギターを鳴らしても音が聞こえません。 
Decimator volumeが大きくADC入力が減衰しすぎのようです。NXGのサンプルと同じ値にしました 
UDA1380_REG_DECVOL_DEFAULT_VALUEの0xE4E4を減衰でなく増幅側の0x0F0Fに変更しました。 

音が聞こえるようになりました。音が大きすぎるのでこれも
NXGのサンプルで変更したようにしました 
UDA1380_REG_MSTRVOL_DEFAULT_VALUEの0x0000を0x8080に変更しました。 

その他の設定は、
48kHzで16bitデータ長になっています。16bitなので送受信時にFIFOから1読み書きで行っています。 

ポーリングは、転送が追い付いていないのか、ノイズだらけで使い物になりません。
 
割り込みは、リングバッファを使うとADとDAがかみ合わないのかノイズがでるのでNXGと同じようにバッファをつかず、直接転送すれば使用できます。 
DMAは、ノイズありませんが、ADCからDACへ直接転送している設定なので入力を処理して出力に出すことができません。メモリに転送する方法を探ろうと思います。
当面、割り込みを改造して遊んでみようと思います。

LPC4330-Xplorer i2s NXG sample

LPC4330-Xplorer
http://akizukidenshi.com/catalog/g/gM-06457/
LPC4330-Xplorerには、オーディオ・コーデック(UDA1380)が搭載されています。
これを使用し、i2sのサンプルでギターの入力をヘッドホンで聞いてみようと思います。
Jpeg
サンプルは、NXGの物とLPCOpenの物を使用します。
まずは、NXGのサンプルで試してみます。
NXGのサンプルは以下のページからダウンロードできます。
http://shop.ngxtechnologies.com/product_info.php?cPath=21_37&products_id=104

LPCXpresso v7.9.2_493 IDEにサンプルをインポートします。この中の LPC4330_Xplorer_Audioプロジェクトを使用します。
ビルドも難なく通ります。MCU Settingsだけ変更が必要です。Default flash driverを
LPC18_43_SPIFI_4MB_64KB.cfx
に変更してください。

デバッガには、LPC-LINK2を使用しました。現在LPC-LINK2はCMSIS-DAPとして使用しています。
書き込みも難なく終わりデバッグできます。
ギターとヘッドホンをつないで聞いてみました。スルーしているだけなのヘッドホンからギターの音が聞こえました。ちょっと音がでかいです。
デフォルトでマスターボリュームが最大(0x00)なので左右とも0x80を設定しました。
UDA_Reg_write((UDA1380_REG)UDA1380_REG_MSTRVOL, volume);
レジスタに設定するだけでボリュームがコントロールできます。
その他の設定は、44.1kHzで32bitデータ長になっています。32bitなので送受信時にFIFOからLRの両方の取り出しと書き込みを2回行っています。
今回変更したのは、これだけです。i2sは、割り込みを使用した取り込みです。今後、入力信号を処理して出力してみたいと思います。

© 2014 Spineedge Corporation.