Quick Charge 2.0 電源から 9V をとる (任意の電圧をとる)
500 Can't connect to lowreal.net:443 (certificate verify failed) というのを書いたが 、これだと12V だけしかとれない。
12Vとれれば個人的にはいいんだけど、9V もとるには(というより任意の電圧をとる) にはどうするかなと思って考えた。
回路図
追記: 特に3段にする必要もないので計算が簡単で定数が簡単な回路にかえた
古い回路図:
D12をハイ(5V)にすると D- に 0.6V、 D11 をハイにすると 3.3V がかかるように分圧抵抗を選び、このポートをコントロールする。D+ 側も同様 (D10, D9)
どっちかがハイのときはどっちかはHi-Zにして回路を切断する。
ファームウェア
例によって Arduino で試した
#include <Arduino.h>
#include <avr/sleep.h>
const int D_PLUS_0V6 = 12;
const int D_PLUS_3V3 = 11;
const int D_MINUS_0V6 = 10;
const int D_MINUS_3V3 = 9;
enum EVoltage {
E_12V,
E_9V,
E_5V
};
void setup() {
EVoltage voltage = E_9V;
// init with hi-Z
pinMode(D_PLUS_3V3, INPUT);
pinMode(D_PLUS_0V6, INPUT);
pinMode(D_MINUS_3V3, INPUT);
pinMode(D_MINUS_0V6, INPUT);
digitalWrite(D_PLUS_3V3, LOW);
digitalWrite(D_PLUS_0V6, LOW);
digitalWrite(D_MINUS_3V3, LOW);
digitalWrite(D_MINUS_0V6, LOW);
// wait until stable connection
delay(1000);
// reset line (D+ = 0V, D- = 0V)
pinMode(D_PLUS_0V6, OUTPUT);
pinMode(D_MINUS_0V6, OUTPUT);
delay(100);
// D+ = 0.6V, D- = 0.6V for 1.25s
digitalWrite(D_PLUS_0V6, HIGH);
digitalWrite(D_MINUS_0V6, HIGH);
delay(1500);
// D- to 0V for 1ms
digitalWrite(D_MINUS_0V6, LOW);
delay(2);
// Set voltage
// (now: D+ = 0.6V, D- = 0)
// D+ must not be low; it cause reset.
switch (voltage) {
case E_12V:
// D+ = 0.6V, D- = 0.6V
digitalWrite(D_MINUS_0V6, HIGH);
break;
case E_9V:
// D+ = 3.3V, D- = 0.6V
digitalWrite(D_PLUS_3V3, HIGH);
pinMode(D_PLUS_3V3, OUTPUT);
pinMode(D_PLUS_0V6, INPUT);
digitalWrite(D_PLUS_0V6, LOW);
digitalWrite(D_MINUS_0V6, HIGH);
break;
default:
// nothing to do
break;
}
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_mode();
}
void loop() {
} 出力
赤は VBUS, 黄は D-
9V とれたよ〜
9V 時の D+, D-
12V 時の D+, D-
懸念点
0.6V 出力時かなりドライブ能力が低いのが心配。
メモ
スイッチ切り替えで任意電圧とれるアダプタみたいなのがあると便利そうですね。
このエントリを参照するエントリ
関連エントリー
- AD9851 DDS モジュール AD9850 DDS モジュール に続き AD9851 で、別基板バージョンのものです。 ジャンパとかが一切ない簡略版?なのか進化版?でしょ...
- Arduino の digitalWrite / pinMode / digitalRead をコンパイル時に展開する 先日 [tech] Arduino の digitalWrite をコンパイルタイムに解決する | Tue, Dec 15. 2015 - ...
- AD9850 DDS モジュール ebay で800円ぐらいで買ったものです。 この手のモジュールにはAD9851(源クロック6倍周波数逓倍器付き)のものとAD9850のもの...
- Arduino / AVR でコード上からピンを非接続状態とする (実質的な) 非接続状態のことをハイインピーダンス (Hi-Z) 状態 (Tri-state) と言う。久しぶりに触ると、どうすれば Hi-...







