エントリー

カテゴリー「実験・研究」の検索結果は以下のとおりです。

ページ移動

  • ページ
  • 1
  • 2
  • 3
  • 4
  • 5

ステッピングモーターでロータリースイッチを制御

当初はバリコンを遠隔制御するため以下のようなモーターを購入していたのだが上手くいかないので現在はバリキャップ(可変容量ダイオード)に切り替えようと思っている

IMG_20230607_192903.jpgIMG_20230607_192942.jpg

その中で購入していた4相ステッピングモーターがバンド切替に使えるかもしれないと考え試してみた

IMG_20230607_193229.jpg

動作確認

まずは4相ステッピングモーターの動作を確認(YouTubeでよみやさんが丁寧に説明しているので詳細はそちらで)

専門では「2相ユニポーラ」と言われているようだ(2相はバイポーラ)

以下のように2相(青1ー黄3,オレンジ4ーピンク2)の間に1本共通の線(赤5)が配線されている

20230609_001.png

これに電流を順番に8シーケンス流すと回転する(以下は正回転)

20230609_011.png20230609_012.png20230609_013.png20230609_014.png

20230609_015.png20230609_016.png20230609_017.png20230609_018.png

逆回転させるには逆順にする

2相だと2つの電磁石の極性を交換させながらモーターを回転させるので1相毎に4石(計8石)必要だが4相だと既に4方向あるので4石で済むことになる

IMG_20230607_210158.jpg

正回転テスト用スケッチ

ロータリースイッチと繋ぐ

IMG_20230608_164545.jpg

ダイレクトにロータリースイッチに繋いで動かすにはトルクが足りなそうなのでフランジを3Dプリンタで作製(PETG使用)

IMG_20230608_164620.jpgIMG_20230608_164642.jpg

トルクが不足していないか試行して確認

回転したので次へ

ロータリースイッチ回転制御

ロータリースイッチの位置を判断するため2回路を使い抵抗で分圧回路を構成

20230609_021.png

ケースを3Dプリンタで作製(PETG使用)

IMG_20230608_193835.jpg

ロータリースイッチとステッピングモーターを組み込み

IMG_20230608_201320.jpg

UP/DOWNスイッチを付けたスケッチを作製して確認

スケッチ

改良・課題
  • ステッピングモーターを動作させない時はMOへの制御をOFFにしていおかないと電力を消費する
  • ロータリースイッチのスイッチ間にスイッチ未接触間があり対処が以下の場合と絡む
  • 回転時の異常発生を考慮してタイムアウトしているが,その場合の対応策
  • フランジの軸受けが甘いため動作不良が起きた場合の対処
  • モーターの軸が中央にないのでケースサイズが大きくなる

不良品のAD9833は中華製あるあるだった

先日確認したところ出力が得られないため不良品としたAD9833モジュール

購入先のAmazonで不良が多いとのコメントがあり,その中に半田付けが粗いというコメントもあった

そこでチップ面をじっくり観察

IMG_20230603_170603.jpg

目視してもレンズを使っても見えないのでスマホのカメラで10倍撮影して確認してみるとピン間に半田の接触がありそうに観えた(ほんの僅かに下から突き出している)

試しにを軽く吸い取ってみる

IMG_20230603_202759.jpg

ピン間の半田は無くなったように観える

IMG_20230603_174036.jpg

再度モジュールの確認をしてみると

IMG_20230603_202438.jpg

出力できるようになったではないか!

さすが中華製

DDSモジュールの確認

DDSでVFOを作製しようとして購入していたDDSモジュールをテスト

ADF4351

周波数が35MHz~4.4GHzで,実はちょっと勘違いして(Aliexpressで購入したので安価だったが)購入したモジュール

本当はDC~30MHz位のDDSを考えていたので,後にAD9834モジュールでも購入しようと思う

このチップは高い周波数を安定して出せるようなのでアップ・ダウンコンバーターとして利用しようかと考えている

動作確認するために「こちら」と「こちら」から情報をもらった

「LCD keyboard シールド」を準備して

IMG_20230520_193153.jpg

3.3Vが必要なので新しく購入したコンパクトなDCDCモジュールを使用

IMG_20230525_142928.jpg

裏側のパターン処理で3.3Vなど固定出力可能

IMG_20230525_143010.jpg

多少のズレはあるが問題なく動作

IMG_20230525_165317.jpg

AD9833

12.5MHz位まで出力できるモジュール

IMG_20230528_120742.jpg

接続

Arduino AD9833
5V VCC
GND DGND
SCK(#13) SCLK
MOSI(#11) SDATA
SS(#10) FSYNC

Arduino用のライブラリに動作確認用のスケッチがあったので使用

IMG_20230527_203113.jpg

しかし,サイン波,三角波ともに全く出力されず

IMG_20230528_120540.jpg

不良品かACカップリングのためコンデンサを取り付ける際に破壊してしまったのか・・・

nRF24L01のループバックテスト

かなり前に購入して使わなかったnRF24L01(無線モジュール)の利用価値を確認するためテストした

Arduinoで直接nRF24L01ボードは扱いにくいので3.3V降圧付きのソケットを購入

IMG_20230518_111254.jpg

(左)nRF24L01ボード(右)ソケットアダプタ

8ピンソケットに刺して利用すると感度も良くなるらしいがどうだろう?

IMG_20230518_111338.jpg

接続方法など「無線モジュールnRF24L01を使いArduino間で無線通信をやってみる!」を参考にさせていただいた

使用するためのライブラリは(こちら),メソッドの仕様は「RF24 Class Reference」にある

LED点灯にて送受信確認

まずは参考サイトのとおりボタン押下を通信しLED点灯を行い動作を確認

IMG_20230518_131551.jpgIMG_20230518_144502.jpg

(左)送信側(右)受信側

消費電力

IMG_20230518_171959.jpg

UNO込み5Vで最大20mAのようだ(送受信で10~20mAを変動)

ループバックテスト

無線なんでどのくらいの距離を通信可能か確認したいこともありループバックでテストした

ループバックテストとはメインとスレーブとしたら,メインがスレーブに送信,スレーブが受信したデータをメインに送信(返送)してメインがデータが同じであることを確認する昔からある簡単かつ確実な通信確認(エコーバック,ピンポン手順として通信で利用されることも)

尚,Arduinoで送受信できることは問題ないようなので受信側はATtiny85を使用してみる

(送信側スケッチ)

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

#define TIMEOUT 200

RF24 radio(7, 8); //CE,CSNピンの指定
const byte sendAddress[6] = "00001";  //送信アドレス
const byte backAddress[6] = "00002"; //受信アドレス

const byte sendData[] = "0123456789abcdef";

void setup() {
Serial.begin(9600);
Serial.println("loopback test begin");

radio.begin();
radio.setPALevel(RF24_PA_MAX); //出力(RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX)
radio.openWritingPipe(sendAddress); //データ送信先アドレスを指定
radio.openReadingPipe(1, backAddress); //(0-5), データ受信アドレスを指定
//0は書き込みパイプと共有となるのでなるべく受信パイプは1-5
}

void loop() {
byte data;
int n, tm;
boolean retry;

for(n = 0; n < sizeof(sendData) - 1; n++) {
retry = true;

do {
delay(5);
radio.stopListening(); // 送信側として動作
radio.write(&sendData[n], sizeof(byte));

delay(5);
radio.startListening(); // 受信側として動作

for(tm = 0; tm < TIMEOUT; tm++) {
if(radio.available()) {
radio.read(&data, sizeof(byte));
if(sendData[n] == data) {
Serial.print(" -> back: ");
Serial.println(data);
retry = false;
} else {
Serial.println(" -> error");
Serial.println("retry");
}
break;
}
delay(5);
}
if(tm >= TIMEOUT) {
Serial.println(" -> time out");
Serial.print("retry");
delay(200);
}
} while(retry);

delay(2000);
}
}

(受信側スケッチ)

// ATMEL ATTINY85 / ARDUINO
//
// +-\/-+
// RESET PB5 | |8 VCC
// ADC3 (D3) PB3 2| |7 PB2 (D2) ADC1
// ADC2 (D4) PB4 3| |6 PB1 (D1) PWM1
// GND 4| |5 PB0 (D0) PWM0
// +----+
//
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(3, 4); //CE,CSNピンの指定(D3, D4)
const byte sendAddress[6] = "00002"; //送信アドレス
const byte recvAddress[6] = "00001"; //受信アドレス

void setup() {
radio.begin();
radio.setPALevel(RF24_PA_HIGH); //出力(RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX)
radio.openWritingPipe(sendAddress); //データ送信先アドレスを指定
radio.openReadingPipe(1, recvAddress); //データ受信アドレスを指定
}

void loop() {
byte data;

delay(10); //これがないと正常に送受信しない
radio.startListening(); //受信側として動作
if(radio.available()) {
radio.read(&data, sizeof(byte));
delay(10); //これがないと正常に送受信しない
radio.stopListening(); //送信側として動作
radio.write(&data, sizeof(byte));
}
}

(結果)

ATtiny85側のsetPALevelを最高のRF24_PA_MAXにすると処理が追い付かないのか通信不良となるのでRF24_PA_HIGHにした(送信側はRF24_PA_MAX)

場所(受信側) 距離 通信 結果画面
見通し 3m 良好
見通し 7m 良好
隣の部屋 5m SS20230519_room.png
2つ隣の部屋 10m 不可 SS20230519_2_room.png
1F-2F 5m(直線) SS20230519_1F-2F.png
10m以上 不可 SS20230519_outside.png
備忘録

(ATtiny85のスケッチ書き込み)

IDE2.XだとArduinoISPで書き込む場合「→」では書き込めなくなっていた(嵌った)

「スケッチ」→「書き込み装置を使って書き込む」を実行

SS20230519_001.png

(ATtiny85との結線)

IMG_20230519_103328.jpg

ATtiny85では全てのピンを使用してしまうため利用するのは厳しそうだ

(ArduinoUNOとの結線)

IMG_20230518_180618.jpg

ページ移動

  • ページ
  • 1
  • 2
  • 3
  • 4
  • 5

ユーティリティ

検索

エントリー検索フォーム
キーワード

新着コメント

Re:ArduinoIDEでFTDIチップでの書き込みエラー
2026/01/16 from 権限がありません
Re:ArduinoIDEでFTDIチップでの書き込みエラー
2026/01/15 from admin
Re:ArduinoIDEでFTDIチップでの書き込みエラー
2026/01/14 from 権限がありません
Re:NOAA受信システム復旧
2025/06/11 from admin
Re:NOAA受信システム復旧
2025/06/11 from とおりすがり

過去ログ

Feed