LoginSignup
4
1

More than 3 years have passed since last update.

PSoC5LP+ESCONでモータを回してみた!

Posted at

はじめに

ガチガチの機械系が初めての電子工作に挑戦しました.
多少,言葉のミスがあるかと思いますが,大目に見てください:eyes:

やること

1.ESCONのチューニング
2.PSoCからduty比をESCONに入力してモータを回転させる
3.モータの回転数をTeraTermに出力する

使用するもの

*PSoC5LP PrototypingKit
*ESCON 50/5
*モータ(maxon RE40)※エンコーダ付き
*USB A-MicroB ケーブル
*USB A(オス)-A(メス)ケーブル
*配線等

環境

*PSoC Creater 4.3
*ESCON Studio 2.2

準備

ESCONを使うにあたって,事前準備が必要です.
まず,「ESCON Studio」というコントローラの初期設定ソフトを自分のPCにインストールします.
下記リンクからESCON Studioをインストールします.(2020/12 確認済み)
https://www.maxongroup.co.jp/maxon/view/content/ESCON-Detailsite

また,ESCON Studioの進め方はゲッティングスタートを見ながらやるのをお勧めします!!

~1.ESCONのチューニング~

インストールできたらESCON Studioを開いて,指示に従ってUSBケーブルをPCとESCONを接続します.
その後,ゲッティングスタートを見ながら進めます.
モータのパラメータ,制御方法,入出力端子などの選択をします.
全行程の設定が完了したら,最後に「自動チューニング」を選択し,下記のように接続し,「開始」ボタンを押します.

接続~チューニング時~

配線図01.png

接続

配線図.png

TopDesign

スクリーンショット (97).png

Pins

スクリーンショット (98).png

コード

~2.PSoCからduty比をESCONに入力してモータを回転させる~

for文でPSoCのPWMコンポーネントのduty比を変化させて,加減速させています.

#include "project.h"
#include <stdio.h>

int main(void)
{
    CyGlobalIntEnable; /* Enable global interrupts. */

    /* Place your initialization/startup code here (e.g. MyInst_Start()) */

    PWM_Start();
    UART_Start();
    ADC_SAR_Start();
    int i;
    int16 count=0;
    char String_count[64]={'\0'};

    LED_Write(1);
    Rotation_Write(1);
    Enable_Write(1);

    for(;;)
    {
        /* Place your application code here. */

        ADC_SAR_StartConvert();

        for(i=0;i<200;i++)
        {
            PWM_WriteCompare(i);
            CyDelay(10);
            count=ADC_SAR_GetResult16();
            sprintf(String_count,"%d\r\n",count);
            UART_PutString(String_count);
            if(SW_Read()==0)    
            {
                Stop_Write(1);  /*Switchが押されたら動作停止*/
            }
        }
        for(i=199;i>0;i--)
        {
            PWM_WriteCompare(i);
            CyDelay(10);
            count=ADC_SAR_GetResult16();
            sprintf(String_count,"%d\r\n",count);
            UART_PutString(String_count);
            if(SW_Read()==0)
            {
                Stop_Write(1);  /*Switchが押されたら動作停止*/
            }
        }
    }
}

~3.モータの回転数をTeraTermに出力する~

スクリーンショット (99).png
sprintf(String_count,"%d\r\n",count);
UART_PutString(String_count);
で,TeraTermに出力します.

最後に

PSoC5LPとESCONを使ってモータを回しました.
AD変換(ADC_SAR)コンポーネントを用いてESCONからのアナログ信号(回転数)をAD変換してUART通信でTeraTermで表示させました.この時にbit数について改めて勉強し直しました(;^_^A

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1