face book ページも更新中! https://www.facebook.com/taisukem1

twitterも更新中! https://twitter.com/marutai_nara

2023年3月26日日曜日

車高ゲージの開発

こんなものを作ってみました

最近モーターを制御してみようプロジェクトをひっそりと進めているのですが

自分はコーディングスキルが全くなく,モーターの回る理論がわかってもゲートドライバにどのような信号を与えればよいのか分かっていない状況でした.

もちろん最近はオートコーディングやChatGPTがコード生成してくれる便利な機能がたくさんあります.

ただ基本のキが分かっていないのにそういった便利な道具を使うのは性に合ってないのでarduinoを題材に電子工作でコーディングスキルを磨いてみようという動機から始めてみました.


電子工作で作ってみたいなーと思っていたのはこんな感じのセッティングボード

車高は赤外線センサの非接触のもの
タイヤの下に独立した板を配置してその板はロードセルで支持
この構造でまず車高は置くだけで、しかもボディが付いていても測定できる
かつ4輪荷重を同時に測れていることでコーナーウェイトも測定できる

セッティングボードの前で正座スタイルでツイーク調整で接地荷重を合わせていますがこういうツールでもっと楽にできないかなと
しかもツイーク調整の後,車高がズレたりすることもあるので同時に車高が分かればセッティング工数も減りそう


ただこれをやるには
・arduinoでLCDに結果を表示させるコードの履修
・arduinoでロードセル、測距センサのアナログ値を読み取るコードの履修
・割と精度が求められるセッティングボードの加工
と結構手間がかかりそう

そんな中、京商のチームメイトのK上氏のツイートからヒントをもらいました
なるほど、とりあえず車高だけ測ってみようと

とりあえず簡単なものを作ってみてスキルをあげつつ
最終的な目標の便利デジタルセッティングボードの開発に移るような段階を踏んだ開発にしてみようと思います.


ということでひとまず手持ちのOPTION No.1製の車高ゲージを持っていたのでこれを改造してみます

筐体は3Dプリンタで自作

構造としてはもともと目盛りのついていた左側の高さを可変抵抗で読み取るものとしました.

表示は数字だけでいいと思ったので7セグLEDにしてみます.


7セグLEDを光らせるのにあんまり工数かけたくなかったので
このモジュールを選択
複数桁の配線やダイナミック点灯のコードなど面倒なことをせずに豊富なライブラリとI2C通信で表示させる数字を表示できます.

Githubでライブラリが公開されているのでarduinoIDEにインストールして使用しました.

書いたコードはこんな感じ
可変抵抗はA0ポートに接続してグローバル変数に定義しています.

#include "HT16K33.h"
#include "wire.h"
#include "Arduino.h"
#include "math.h"

///////////////////////////////////////////////
//変数定義
float INPUT_PIN = A0;
float VOLUME;
float Slidedistance;
///////////////////////////////////////////////

HT16K33 seg(0x70);

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);   //I2C通信レート定義
  seg.begin();
  seg.displayOn();
  seg.brightness(5);   //7セグLED輝度設定
  seg.displayClear();
  Wire.setClock(100000);

}

void loop() {
  // put your main code here, to run repeatedly:
  VOLUME = analogRead(INPUT_PIN);

  Slidedistance = VOLUME * 0.0194 + 3.0429 - 3.55;  //測定値1mm当たりの可変抵抗変位をCADから算出

  Serial.print("VOLUME: ");
  Serial.println(Slidedistance);


  seg.displayFloat(Slidedistance);

  delay(500); //数値更新頻度

}

このコードでの動作確認はこんな感じ


たった37行で動作するのは楽ちんでいいですね


ただSlidedistanceを定義しているところが苦しい感じ
3Dプリンタをモデリングしたときに測定値1mm当たりの可変抵抗が動く距離を計算してコードの中に入れてみましたが,これだと筐体のガタ等で値がバラついてしまいます.

なのでA1ポートにはタクトスイッチを取り付けているので
5mmの基準高さを測ったときに校正し,相対値として測れるコードにアップデート予定

あと数字がパラパラ変わって見づらいので平均値をとるようなコードに一緒に変更予定


とりあえずちゃんと回路が組みあがって動作したのがうれしいのが今日の記事
電子工作が新しい趣味になりそう



ただやっぱりこの構造だと繰り返し精度に難ありな感じ
やっぱり非接触かな~

0 件のコメント:

コメントを投稿