ARCS6 AR6-REV.24062600
読み取り中…
検索中…
一致する文字列を見つけられません
SA2-RasPi2.hh
[詳解]
1
9//
10// Copyright (C) 2011-2020 Yokokura, Yuki
11// This program is free software;
12// you can redistribute it and/or modify it under the terms of the FreeBSD License.
13// For details, see the License.txt file.
14
15#ifndef SA2RASPI2
16#define SA2RASPI2
17
18#include "RPi2GPIO.hh"
19
20namespace ARCS { // ARCS名前空間
22 class SA2RasPi2 {
23 public:
24 SA2RasPi2();
25 SA2RasPi2(SA2RasPi2&& r);
26 ~SA2RasPi2();
27 void StartProcess(void);
28 void EndProcess(void);
29 void SetVoltage(double Vu, double Vv, double Vw, double Vdc);
30 void SetDutyRatioPWM(double DutyU, double DutyV, double DutyW);
31 void SetDutyRatioPWMU(double Duty);
32 void SetDutyRatioPWMV(double Duty);
33 void SetDutyRatioPWMW(double Duty);
34 void SetSinglePhaseDutyRatio(double Duty);
35 void SetVoltageDAC(double Vdac1, double Vdac2);
36 void SetVoltageDAC1(double Vdac);
37 void SetVoltageDAC2(double Vdac);
38 void GetPhaseCurrent(double& Iu, double& Iv, double& Iw);
39 void GetSinglePhaseCurrent(double& I);
40 void GetPosition(double& theta_rm, double& theta_re);
41 uint32_t GetIncEncoder(void);
42 int32_t GetIncMultiTurnEncoder(void);
43 double GetIncPosition(void);
44
45 private:
46 SA2RasPi2(const SA2RasPi2&) = delete;
47 const SA2RasPi2& operator=(const SA2RasPi2&) = delete;
48 static const uint32_t ADDR_PWMU = 0b00000000;
49 static const uint32_t ADDR_PWMV = 0b00000001;
50 static const uint32_t ADDR_PWMW = 0b00000010;
51 static const uint32_t ADDR_DAC1 = 0b00000011;
52 static const uint32_t ADDR_DAC2 = 0b00000100;
53 static const uint32_t ADDR_ABSL = 0b00000000;
54 static const uint32_t ADDR_ABSH = 0b00000001;
55 static const uint32_t ADDR_IU = 0b00000010;
56 static const uint32_t ADDR_IV = 0b00000011;
57 static const uint32_t ADDR_IW = 0b00000100;
58 static const uint32_t ADDR_INCL = 0b00000101;
59 static const uint32_t ADDR_INCH = 0b00000110;
60 static const uint32_t INC_MASK = 0x00000FFF;
61 RPi2GPIO gpio;
62 uint32_t DATA_PWMU;
63 uint32_t DATA_PWMV;
64 uint32_t DATA_PWMW;
65 uint32_t DATA_DAC1;
66 uint32_t DATA_DAC2;
67 uint32_t DATA_IU;
68 uint32_t DATA_IV;
69 uint32_t DATA_IW;
70 uint32_t DATA_ABS;
71 uint32_t DATA_INC;
72 uint32_t RawCountPrev;
73 int32_t UpperCount;
74 int32_t AbsMultCount;
75 uint32_t IncRawCountPrev;
76 int32_t IncUpperCount;
77 void WaitPwmSyncHigh(void);
78 void WaitPwmSyncLow(void);
79 void WaitEndOfConversionIuvw(void);
80 void WaitEndOfConversionAbs(void);
81 void WaitEndOfConversionInc(void);
82 void SendConversionStart(void);
83 void SendWriteSelect(void);
84 void SetReadSelect(void);
85 void ClearReadSelect(void);
86 void SetBusModeIn(void);
87 void SetBusModeOut(void);
88 void WaitUsingNop(const unsigned int N) const;
89 void WriteDataBus(uint32_t Address, uint32_t Data);
90 uint32_t ReadDataBus(uint32_t Address);
91 int32_t GetMultiTurnCount(uint32_t RawCount);
92 int32_t GetIncMultiTurnCount(uint32_t RawCount);
93 static uint32_t VoltToDacData(double Vdac);
94 static uint32_t DutyToPwmData(double Duty);
95 static double AdcDataToAmpere(uint32_t AdcData);
96 static double AbsDataToRadian(int32_t AbsMultData);
97 static double ConvElectAngle(uint32_t AbsData);
98 };
99}
100
101#endif
102
Raspberry Pi 2 GPIOコントローラ
Raspberry Pi 2 GPIOコントローラ
Definition RPi2GPIO.hh:21
ServoAmplifier2-RaspberryPi2インターフェースクラス
Definition SA2-RasPi2.hh:22
void SetVoltageDAC1(double Vdac)
D/AコンバータCH1の電圧を設定する関数
Definition SA2-RasPi2.cc:151
void SetDutyRatioPWM(double DutyU, double DutyV, double DutyW)
PWMのデューティ比を設定する関数
Definition SA2-RasPi2.cc:109
void GetSinglePhaseCurrent(double &I)
単相電流を取得する関数
Definition SA2-RasPi2.cc:173
void StartProcess(void)
開始処理
Definition SA2-RasPi2.cc:69
void EndProcess(void)
終了処理
Definition SA2-RasPi2.cc:85
uint32_t GetIncEncoder(void)
インクリメンタルエンコーダのバイナリデータを返す関数
Definition SA2-RasPi2.cc:187
void SetVoltage(double Vu, double Vv, double Vw, double Vdc)
PWMの電圧指令を設定する関数
Definition SA2-RasPi2.cc:101
double GetIncPosition(void)
インクリメンタルエンコーダの位置応答を返す関数
Definition SA2-RasPi2.cc:199
void SetSinglePhaseDutyRatio(double Duty)
単相Hブリッジインバータとして使う場合のデューティ比を設定する関数
Definition SA2-RasPi2.cc:117
void SetDutyRatioPWMW(double Duty)
PWM W相のデューティ比を設定する関数
Definition SA2-RasPi2.cc:137
void GetPosition(double &theta_rm, double &theta_re)
モータ機械角と電気角を取得する関数
Definition SA2-RasPi2.cc:180
void SetDutyRatioPWMV(double Duty)
PWM V相のデューティ比を設定する関数
Definition SA2-RasPi2.cc:131
void SetVoltageDAC(double Vdac1, double Vdac2)
D/Aコンバータの電圧を設定する関数
Definition SA2-RasPi2.cc:144
void SetDutyRatioPWMU(double Duty)
PWM U相のデューティ比を設定する関数
Definition SA2-RasPi2.cc:125
void GetPhaseCurrent(double &Iu, double &Iv, double &Iw)
相電流を取得する関数
Definition SA2-RasPi2.cc:165
SA2RasPi2()
コンストラクタ
Definition SA2-RasPi2.cc:37
int32_t GetIncMultiTurnEncoder(void)
インクリメンタルエンコーダの多回転バイナリデータを返す関数
Definition SA2-RasPi2.cc:193
void SetVoltageDAC2(double Vdac)
D/AコンバータCH2の電圧を設定する関数
Definition SA2-RasPi2.cc:157
~SA2RasPi2()
デストラクタ
Definition SA2-RasPi2.cc:63