KZ
bin
Негізгі бет
Қазірдің өзінде танымал
Тікелей эфир
Ұнаған бейнелер
Қайтадан қараңыз
Жазылымдар
Кіру
Тіркелу
Ең жақсы KZbin
Фильм және анимация
Автокөліктер мен көлік құралдары
Музыка
Үй жануарлары мен аңдар
Спорт
Ойындар
Комедия
Ойын-сауық
Тәжірибелік нұсқаулар және стиль
Ғылым және технология
I made inverted pendulum with arduino but I found out it is very difficult
15:20
【ライントレース応用】小中学生向けPID制御2 ライントレース 原理編(積分制御と微分制御の原理とプログラミング)
18:11
Симбу закрыли дома?! 🔒 #симба #симбочка #арти
00:41
كم بصير عمركم عام ٢٠٢٥😍 #shorts #hasanandnour
00:27
Farmer narrowly escapes tiger attack
00:20
I thought one thing and the truth is something else 😂
00:34
【ゆっくり】ArduinoでPID制御を体験しよう!【電子工作】
Рет қаралды 4,417
Facebook
Twitter
Жүктеу
1
Жазылу 384
重なるねこ
Күн бұрын
Пікірлер: 1
@Kasanaru-Neko
2 ай бұрын
以下最終的なプログラムとなっています。 動画内で触れるのを忘れてましたがPythonのプログラムも後ろにつけておきます。Pythonに関してはコピペしただけなので解説は難しいかも… const int x7 = A1; // センサー入力 const int x6 = 9; // PWM出力 float x1, x2, x3, x3_old, x4, x5, x8, x9; float r, t, dt; float Kp, Ki, Kd; unsigned long previousMicros = 0; const unsigned long interval = 3000; // 制御周期3ms void setup() { Serial.begin(9600); pinMode(x7, INPUT); pinMode(x6, OUTPUT); t = x3_old = x4 = x9 = 0; // 初期化 r = 2.5; // 目標値 Kp = 1.0; // 比例ゲイン Ki = 0.0; // 積分ゲイン Kd = 0.0; // 微分ゲイン dt = 0.003; // 制御周期 // スタート信号を待つ while (Serial.available() == 0) { // 何もせず待機 } // スタート信号を受信 if (Serial.read() == 'S') { Serial.println("Start received"); } } void loop() { unsigned long currentMicros = micros(); // 3ミリ秒ごとに処理を実行 if (currentMicros - previousMicros >= interval) { previousMicros = currentMicros; x1 = r; x2 = x1 - x9; x3 = x2 * 100.0 * (255.0 / 500.0); // x2のままでは小さすぎる x4 = Kp * x3 + Ki * integ(x3,x3_old,x4,dt) + Kd * diff(x3,x3_old,dt); // PI制御 x3_old = x3; x5 = limit(x4, 0, 255); analogWrite(x6, x5); // 制御入力 // x6 → RC回路 → x7 x8 = analogRead(x7); // センサー x9 = x8 * (5.0 / 1023.0); t += dt; Serial.print(t * 1000); // tをミリ秒に変換して出力 Serial.print(","); Serial.print(x8); Serial.print(","); Serial.print(x4); Serial.print(","); Serial.println(x5); } } float limit(float x, float min, float max) { if (x < min) return min; if (x > max) return max; return x; } float integ(float y_in, float y_old, float S_old, float dt) { float S_out = S_old + (y_in + y_old) * dt / 2.0; return S_out; } float diff(float y_in, float y_old, float dt){ float Diff = (y_in - y_old) / dt; return Diff; } ---------------------------------------------------------------------------------------------------------------------------------------------- #ここから先パイソン import serial import pandas as pd import time # シリアルポートとボーレートの設定 (ポートは環境に合わせて変更してください) ser = serial.Serial('COM1', 9600) # シリアル通信が始まるまで少し待機 time.sleep(2) # Arduinoのリセット待ち # Arduinoにスタート信号を送る ser.write(b'S') # 'S'を送信 # データを格納するリスト data_list = [] while True: if ser.in_waiting > 0: # シリアルポートから1行読み取り line = ser.readline().decode('utf-8').rstrip() # 読み取ったデータをコンマ区切りで分割 data = line.split(",") # データが要素を持っているか確認 if len(data) == 4: try: t = float(data[0]) x8 = float(data[1]) x4 = float(data[2]) x5 = float(data[3]) print(f"t: {t}, x8: {x8}, x4: {x4}, x5: {x5}") # データをリストに追加 data_list.append([t, (x8/1023)*5, x4, x5]) # ループを終了する条件 if t >= 300: break except ValueError: print("データの変換に失敗しました:", data) # データの確認 print("データリスト:", data_list) # データをDataFrameに変換 df = pd.DataFrame(data_list, columns=['t', 'x8', 'x4', 'x5']) # データフレームの確認 print("データフレーム:") print(df.head()) # Excelファイルに保存 保存したいパスを指定 try: df.to_excel(r'F:\フォルダ1\フォルダ2\エクセル.xlsx', index=False, engine='openpyxl') print("データがExcelファイルに保存されました。") except Exception as e: print(f"エラー: {e}")
15:20
I made inverted pendulum with arduino but I found out it is very difficult
イチケン / ICHIKEN
Рет қаралды 136 М.
18:11
【ライントレース応用】小中学生向けPID制御2 ライントレース 原理編(積分制御と微分制御の原理とプログラミング)
枚方ロボットプログラミング学習塾
Рет қаралды 9 М.
00:41
Симбу закрыли дома?! 🔒 #симба #симбочка #арти
Симбочка Пимпочка
Рет қаралды 5 МЛН
00:27
كم بصير عمركم عام ٢٠٢٥😍 #shorts #hasanandnour
hasan and nour shorts
Рет қаралды 11 МЛН
00:20
Farmer narrowly escapes tiger attack
CTV News
Рет қаралды 13 МЛН
00:34
I thought one thing and the truth is something else 😂
عائلة ابو رعد Abo Raad family
Рет қаралды 11 МЛН
7:14
DJI Drone Ban is happening - What you need to do
Joseph Blake Photography
Рет қаралды 70 М.
26:47
The circuit performance can change so much depending on whether you use a Professional or Amateur
イチケン / ICHIKEN
Рет қаралды 280 М.
5:23
【秋月電子商品レビュー】AVRマイコンATtiny202!小型Arduinoとして使ってみる!【ずんだもん】
rough robotics
Рет қаралды 29 М.
6:09
【ゆっくり】パワーエレクトロニクスの基本!昇圧チョッパ回路の実験【電子工作】
重なるねこ
Рет қаралды 957
10:39
小学生でもわかる微分積分
ぴよぴーよ速報
Рет қаралды 1,2 МЛН
5:25
【ロボコンに最適】PD制御を使ったらライントレースロボットが驚きの滑らかさに!【PID制御】
Vstone / ヴイストン
Рет қаралды 24 М.
10:51
Fast Line Follower Robot using PID | How to Make Competitive LFR
Aslam Hossain
Рет қаралды 64 М.
13:07
Arduinoとトランジスタでモーターを動かそう!【電子工作】
Mikku S
Рет қаралды 33 М.
20:55
Why is a terminating resistor necessary? Explained using a printed circuit board and a wave machine.
イチケン / ICHIKEN
Рет қаралды 118 М.
6:20
DCモータをサーボライブラリで動かす! Arduino モータドライバ
麦茶の逸般人工作室
Рет қаралды 10 М.
0:59
Fake Samsung Galaxy S25 Ultra Plus на iOS
Wylsacom
Рет қаралды 367 М.
0:21
Introducing the "VitaWear SmartBand," a next-generation wearable gadget 😍@NBG4896
Bhardwaj4896
Рет қаралды 726 М.
0:40
НЕ ПОКУПАЙ iPhone 17 Air!
ÉЖИ АКСЁНОВ
Рет қаралды 236 М.
0:16
😧 Хотела "улучшить" свой MacBook, окунув его в воду, но всё пошло не по плану! | Новостничок
НОВОСТНИЧОК
Рет қаралды 9 МЛН
0:27
CONFIGURATION💘PERFECTA🔔para✅ SAMSUNG😊 A3,A5,A6,A7,J2,J5,J7,S5,S6,S7,S9,A10,A20,A30,A50,A70 #shorts
souvik pal
Рет қаралды 1,9 МЛН
0:11
Today's Console Pick 🔥
Gleb POV
Рет қаралды 1,5 МЛН
0:30
Проверила лайфхак беспроводная зарядка⚡! #лайфхак #проверкалайфхаков #lifehack #funny
Miss.Lucky01
Рет қаралды 1,2 МЛН