PPG(プログラマブルパルス生成)

最大4相のパルス信号の生成ができるライブラリです。以下の通り、各相に対するピン番号は決まっています。使用する場合は、#include <PPG.h>を記述してください。

Phase0(pin0): 1
Phase1(pin1): 3
Phase2(pin2): 5
Phase3(pin3): 7

begin

概要
使用する相、パルスの周期を設定します。
文法
PPG.begin(bool pin0, bool pin1, bool pin2, bool pin3, uint32_t interval, uint8_t polarity = 0b0000)
パラメータ
pin0: true/false (使用/未使用)
pin1: true/false (使用/未使用)
pin2: true/false (使用/未使用)
pin3: true/false (使用/未使用)
interval: 周期(マイクロ秒)、およそ100us~500msまで指定可能
polarity: 各ビットで、0指定時は非反転、1指定時は反転出力
   例:0b0001の場合、第1相は反転出力
戻り値
なし

end

概要
設定されたピンを解放
文法
PPG.end()
パラメータ
なし
戻り値
なし

setTrigger

概要
各相のトリガー位置の設定を行う。適用はenableTriggerで全相に対して一括で行います。
文法
PPG.setTrigger(uint8_t phase, uint32_t triggerA_time, uint32_t triggerB_time)
パラメータ
phase: 相の番号(0~3)
triggerA_time: 1回目に反転する時間
triggerB_time: 2回目に反転する時間
戻り値
なし

enableTrigger

概要
setTrigger()の設定を適用する
文法
PPG.enableTrigger()
パラメータ
なし
戻り値
なし

start

概要
パルスの出力を開始する。
文法
PPG.start()
パラメータ
なし
戻り値
なし

stop

概要
パルスの出力を停止する。
文法
PPG.stop()
パラメータ
なし
戻り値
なし

サンプルプログラム

2相DCモータを制御するサンプルです。A0、A1の値でスピードを決定します。


#include <Arduino.h>
#include <PPG.h>
 
uint32_t    motor_speed[2];
uint32_t    motor_pwm_cycle = 500;  // 500[micro-second]
void    calc_speed();
 
void    setup()
{
  PPG.begin(true, true, true, true, motor_pwm_cycle, 0b0101);
  PPG.setTrigger(0, 0, motor_pwm_cycle / 2);
  PPG.setTrigger(1, 0, motor_pwm_cycle / 2);
  PPG.setTrigger(2, 0, motor_pwm_cycle / 2);
  PPG.setTrigger(3, 0, motor_pwm_cycle / 2);
  PPG.start();
}
 
void    loop()
{
  calc_speed();
  PPG.setTrigger(0, 0, motor_speed[0]);
  PPG.setTrigger(1, 0, motor_speed[0]);
  PPG.setTrigger(2, 0, motor_speed[1]);
  PPG.setTrigger(3, 0, motor_speed[1]);
  PPG.enableTrigger();
  delay(100);
}
 
void    calc_speed()
{
  // Set spped according to A0, A1
  motor_speed[0] = map(analogRead(A0), 0, (1U<<12), 0, motor_pwm_cycle);
  motor_speed[1] = map(analogRead(A1), 0, (1U<<12), 0, motor_pwm_cycle);
}