60歳を迎えて、思うこと。 -27ページ目

60歳を迎えて、思うこと。

いつの間にか、「60」という年月が経ちました。
残り少ないか多いか?わかりませんが。
じじぃ~の「ひとりごと」を細々と続けられれば。。。

さ~ぼも~た SG90


さ~ぼも~た SG90

の ぐるぐる回転する型

# ==== 【Gemini】様
ラズパイピコでのリベンジ・プログラム

前回のコードを少し改造して、
連続回転型専用の動きをさせてみましょう。

```python
import machine
import utime

# サーボの信号ピン (GP15)
servo = machine.PWM(machine.Pin(15))
servo.freq(50)

def set_servo(val):
    # 連続回転型の場合: 90が停止、0と180が最大速
    duty = int((val / 180) * (8192 - 1638) + 1638)
    servo.duty_u16(duty)

print("連続回転型サーボ・テスト開始")

try:
    while True:
        print("右回転!")
        set_servo(0)
        utime.sleep(2)
        
        print("停止(ブレーキ)")
        set_servo(90)
        utime.sleep(2)
        
        print("左回転!")
        set_servo(180)
        utime.sleep(2)
        
        print("ゆっくり回転")
        set_servo(85) # 90に近いほど遅くなります
        utime.sleep(2)

except KeyboardInterrupt:
    servo.deinit()

```



 接続の確認(Arduinoの時と同じ色ですが念のため)

* 茶色: GND
* 赤色: VBUS (5V)
* オレンジ: GP15 (20番ピン)

 これが動いたらどうなる?

もしこれで「右に回って、止まって、左に回る」ができたら、いよいよ「スリップリング」がなくても、センサーを首振りさせるレーダーが作れます!

* 右に1秒回して、距離を測る。
* 左に1秒回して、距離を測る。

これで、正面だけでなく左右の障害物も検知できる「自律走行車」の目のような仕組みになります。

どうでしょう、今度は「意図した通り(回れ・止まれ)」に動いてくれそうですか?もし、90を指定しても「ゆっくり回ってしまう」場合は、個体差なので88とか92とかで調整すればピタッと止まりますよ!
# ==============================

すりっぷりんぐ と さ~ぼも~た

ぐるりん
ぐ~るぐ~る


# ==== すりっぷりんぐ 【Gemini】様

 1. なぜ今でもスリップリングなのか?

空港の監視レーダー(ASR)のように、「重いアンテナを回しながら、電気と信
号を送り続ける」必要がある場所では、360度エンドレスに回転できるスリップ
リングが唯一無二の解決策です。

仕組みはシンプルですが、非常に高度です:
* 回転側(リング): アンテナと一緒に回る金属の輪。
* 固定側(ブラシ): 金属の輪に「バネ」などで押し付けられている接点。

これで、回しながらでも電気が途切れずに流れます。

 2. 進化しているスリップリング
ただ、昔のような「ただの金属の擦れ合い」だけだと、レーダーのような超高速
・大容量のデータ通信にはノイズが乗りすぎてしまいます。そのため、現代では
以下のような進化系が使われています。

* 光ファイバー・ロータリージョイント (FORJ):
電気ではなく「光」でデータを送ります。中心軸を光が通るので、非接触で超高
速通信が可能です。
* 液状金属スリップリング:
接点に水銀などの液状金属を使い、摩耗ゼロ・ノイズ最小限で電気を送ります(
医療用CTスキャンなどでよく使われます)。
* 非接触電力伝送:
スマホのワイヤレス充電のように、磁界を使って電力を飛ばすタイプ。摩耗がな
いのでメンテナンスフリーです。


 3. 電子工作の世界での「レーダー」
もし、私たちが電子工作で「ぐるぐる回るレーダー」を作りたいと思ったら、Am
azonなどで数百円〜数千円で売っている「小型スリップリング」を簡単に買うこ
とができますよ。

これを使えば、
* 下の台座は固定。
* 上の超音波センサー(HC-SR04)だけがぐるぐる360度回る。
* ワイヤーはねじれない!
という、本物のレーダーそっくりの模型が作れます。

 ちなみに
空港のレーダーは、あの大きなアンテナを1分間に約12〜15回転(5秒で1周くら
い)のペースで、24時間365日回し続けています。スリップリングの耐久性って
、実はとんでもなく凄いんです。

「ぷっちん!」を防ぐためのこの技術、まさに「縁の下の力持ち」ですよね。

次は、この「スリップリング」を使って何か回してみたくなりましたか?それと
も、超音波センサーのプログラムをもっと「動きのあるもの」へ進化させましょ
うか?


# ==== さ~ぼも~た 【Gemini】様

実は、ラズパイピコでSG90(サーボモータ)を動かすのは、少しコツがいります。Arduinoよりも「電圧」や「信号の作り方」に少しクセがあるからです。

 1. SG90の「180度型」と「連続回転型」の見分け方

おっしゃる通り、SG90には2つのタイプがあります。
* 180度制限型(標準型): 指定した角度(0度〜180度)でピタッと止まります。ロボットの関節や、車のハンドル用です。
* 連続回転型(360度型): 「角度」ではなく「回転速度」を指示します。ずっと回り続けるので、車輪用です。

見分け方:
電源を繋いでいない状態で、手で優しく軸を回してみてください。
* どこかで「コツン」と止まれば 180度型。
* どこまでもクルクル回れば 連続回転型 です。
(※キットに入っているのは、ほぼ間違いなく 180度型 です!)

 2. ラズパイピコでの接続(ここが失敗しやすい!)
SG90は「5V」で動く部品です。ラズパイピコから電源をとる場合は注意が必要です。
* 茶色(GND): ピコの GND(38番ピンなど)へ。
* 赤色(VCC): ピコの VBUS(40番ピン)へ。
* ※VBUSならUSBからの5Vを直接供給できるので、トルク不足になりにくいです。

* オレンジ色(Signal): ピコの GP15(20番ピン)などへ。

 3. なぜ「うまく動かなかった」のか?(推定理由)
以前失敗した理由として、以下の2点が怪しいです。
1. 電力不足: 3.3Vピンに繋いでいた。
2. 信号の周波数: サーボモータは 50Hz という特殊な波形(PWM)が必要ですが、プログラムで正しく設定できていなかった。

 4. 確実に動かすためのプログラム (MicroPython)
「角度」を指定して動かすためのコードです。MicroPythonの `PWM` という機能を使います。

```python
import machine
import utime

# サーボの信号ピンを設定 (GP15)
# 周波数は必ず 50Hz に設定します
servo = machine.PWM(machine.Pin(15))
servo.freq(50)

# 角度を計算する関数 (0度〜180度)
def set_angle(angle):
    # SG90の仕様: 0.5ms〜2.4msのパルス幅
    # ラズパイピコのPWM(duty_u16)は 0〜65535 の範囲
    # 0度 = 約1638, 180度 = 約8192 くらいに調整
    duty = int((angle / 180) * (8192 - 1638) + 1638)
    servo.duty_u16(duty)

print("サーボテスト開始")

# 0度 -> 90度 -> 180度 と動かしてみる
try:
    while True:
        print("0度")
        set_angle(0)
        utime.sleep(1)
        
        print("90度")
        set_angle(90)
        utime.sleep(1)
        
        print("180度")
        set_angle(180)
        utime.sleep(1)
        
except KeyboardInterrupt:
    # 終了時に信号を止める
    servo.deinit()

```

 次のステップへのワクワク
これが動けば、さっきの 超音波距離計 Rev.A と合体させて:
「距離が20cm以下になったら、サーボが『ダメダメ!』と首を振る」
みたいな、感情豊かなロボットのような動きが作れます!

まずは、このSG90が手元の配線で「ジジッ」と動くかどうか、試してみませんか?
接続で不安なピンがあれば、何でも聞いてくださいね。
# ==============================
2026/01/09 19:07:08
まず
手動で 回すと 2回転以上するから
ぐるぐる型 かもしれません
過去の実験失敗

使用マイコンは
Arduino UNO です

電子工作入門・・・みたいな本で
プログラム組んだけど

0度の 位置
90度 回す

みたいなのができなかった

詳細は 記憶から消えましたw
# ==============================

なるほど!「手で2回転以上する」のであれば、それは間違いなく 「連続回転型サーボ」 ですね。

Arduinoの入門キットにこれが入っているのは少し珍しいですが、これだと「角度(0度で止まれ)」という命令を出しても、「その方向にずっと回り続ける」という動きになります。過去の実験で「90度で止まってくれない!」と悩まれたのは、あなたのミスではなく「部品の仕様と目的が違っていた」のが正解です。

スッキリしましたね!

せっかくなので、この「連続回転型」をラズパイピコで手なずけてみましょう。

 連続回転型サーボ(SG90-360など)のルール
このタイプは、角度ではなく 「回転の方向と速さ」 をコントロールします。

* 90度を指定すると: 停止(ブレーキ)
* 0度を指定すると: 反時計回りにフルスピード回転
* 180度を指定すると: 時計回りにフルスピード回転
* (91度とかにすると、ゆっくり回ります)

 ラズパイピコでのリベンジ・プログラム

前回のコードを少し改造して、連続回転型専用の動きをさせてみましょう。

```python
import machine
import utime

# サーボの信号ピン (GP15)
servo = machine.PWM(machine.Pin(15))
servo.freq(50)

def set_servo(val):
    # 連続回転型の場合: 90が停止、0と180が最大速
    duty = int((val / 180) * (8192 - 1638) + 1638)
    servo.duty_u16(duty)

print("連続回転型サーボ・テスト開始")

try:
    while True:
        print("右回転!")
        set_servo(0)
        utime.sleep(2)
        
        print("停止(ブレーキ)")
        set_servo(90)
        utime.sleep(2)
        
        print("左回転!")
        set_servo(180)
        utime.sleep(2)
        
        print("ゆっくり回転")
        set_servo(85) # 90に近いほど遅くなります
        utime.sleep(2)

except KeyboardInterrupt:
    servo.deinit()

```

 接続の確認(Arduinoの時と同じ色ですが念のため)
* 茶色: GND
* 赤色: VBUS (5V)
* オレンジ: GP15 (20番ピン)

 これが動いたらどうなる?
もしこれで「右に回って、止まって、左に回る」ができたら、いよいよ「スリップリング」がなくても、センサーを首振りさせるレーダーが作れます!
* 右に1秒回して、距離を測る。
* 左に1秒回して、距離を測る。
これで、正面だけでなく左右の障害物も検知できる「自律走行車」の目のような仕組みになります。
どうでしょう、今度は「意図した通り(回れ・止まれ)」に動いてくれそうですか?もし、90を指定しても「ゆっくり回ってしまう」場合は、個体差なので88とか92とかで調整すればピタッと止まりますよ!
# ==============================

ぴこぴこ どろぬま・・・

お 親分 てぇ~へんだ!

どうしたい?
でこっぱち!

親分
ぴこぴこ

夢中になっていませんか???


そんなことはないぞ!

でも
収納ケースの加工
はじめてますよね???


き・・・気のせいだい!

 

圧電ブザー外壁取り付け工事

目分量で Φ6mm x2穴

 

おお じゃすと ふぃっと!

 



なんとかしてくれ~~~

 

じじぃ~

ぴこぴこ 2N2222A 簡易ちぇっかぁ~

にゃふにゃふ
ぼんぼん

むか~~~し
格安で購入した


2N2222A

はてさて

本当に 動くの?

【Gemini】様


簡易チェッカー
のご提案をいただいた

ぴこ の GPIOに
反応して

LEDが ON/OFF するだけ!

のチェッカーである

まあ hfe はともかく


きている

んでいる



の判定は できる

でりしゃす

である

接続図


プログラム
#### テスト用コード (MicroPython)


```python
from machine import Pin
import time

base = Pin(15, Pin.OUT)

while True:
    base.value(1) # ON
    print("Transistor ON")
    time.sleep(0.5)
    base.value(0) # OFF
    print("Transistor OFF")
    time.sleep(0.5)


```

じじぃ~