久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 15275|回復: 24
打印 上一主題 下一主題
收起左側

我的磁懸浮相關資料,基于arduino單片機,有原理圖和源程序

  [復制鏈接]
跳轉到指定樓層
樓主
附件里面有原理圖和源程序,可以參考一下,我已經實現了。

磁懸浮PCB設計方案:
  電源模塊:暫定5v24v組合
  電流驅動模塊:貼片式L298P
                           
單片機選型:Atmega328p
運放:LM358
傳感器:UGN3503
電源轉換芯片:lm1117-5
線圈規格:800


原理圖
Arduino code
  1. //PINs setting
  2. int adjust1Pin = A0;    //用來調節A的電位器
  3. int adjust2Pin = A1;    //用來調節B的電位器
  4. int read1Pin = A2;      //用來連接輸入A傳感器
  5. int read2Pin = A3;      //用來連接輸入B傳感器
  6. int i1Pin = 6;        //連接電機驅動板的I1接口
  7. int i2Pin = 7;        //連接電機驅動板的I2接口
  8. int i3Pin = 9;        //連接電機驅動板的I3接口
  9. int i4Pin = 8;        //連接電機驅動板的I4接口
  10. int power1Pin = 4;     //連接電機驅動板的EA接口
  11. int power2Pin = 3;     //連接電機驅動板的EB接口

  12. double setKp = 0.55;
  13. double setKi = 0.55;
  14. double setKd = 22;

  15. //PID structure
  16. typedef struct {
  17.   double target;
  18.   double aver;
  19.   double Kp;
  20.   double Kd;
  21.   int preError;
  22.   int power;
  23.   boolean flag;
  24.   double v;
  25. } PID;

  26. PID Pid1, Pid2;

  27. void setup()
  28. {
  29.   pinMode(i1Pin, OUTPUT);     //I1和I2都是數字信號
  30.   pinMode(i2Pin, OUTPUT);     //通過設置I1和I2來控制電流方向
  31.   pinMode(i3Pin, OUTPUT);     //I1和I2都是數字信號
  32.   pinMode(i4Pin, OUTPUT);     //通過設置I1和I2來控制電流方向
  33.   pinMode(power1Pin, OUTPUT);  //按占空比方式輸出的模擬信號
  34.   pinMode(power2Pin, OUTPUT);  //按占空比方式輸出的模擬信號

  35.   TCCR0B = 0x01;   // Timer 0: PWM 5 &  6 @ 16 kHz
  36.   TCCR1B = 0x01;   // Timer 1: PWM 9 & 10 @ 32 kHz
  37.   TCCR2B = 0x01;   // Timer 2: PWM 3 & 11 @ 32 kHz
  38.   Pid1.Kp = setKp;
  39.   Pid1.preError = 0;
  40.   Pid1.Kd = setKd1;
  41.   Pid1.power = 0;
  42.   Pid1.flag = true;
  43.   Pid1.target = 300;
  44.   Pid1.aver = 0;
  45.   Pid1.v = 0;
  46.   Pid2.Kp = setKp;
  47.   Pid2.preError = 0;
  48.   Pid2.Kd = setKd2;
  49.   Pid2.power = 0;
  50.   Pid2.flag = true;
  51.   Pid2.target = 300;
  52.   Pid2.aver = 0;
  53.   Pid2.v = 0;

  54. }

  55. void loop()
  56. {

  57.   //=======第一組電位器和傳感器========
  58.   int readValue1 = 0;
  59.   for(int i = 0; i < 4; i++) readValue1 += analogRead(read1Pin);
  60.   readValue1 >>= 2;
  61.   //readValue1 += (Pid1.flag ? 1 : -1) * Pid1.power / 17;
  62.   int adjustValue1 = analogRead(adjust1Pin); //410 analogRead(adjust1Pin);
  63.   Pid1.aver = Pid1.aver * 0.9995 + readValue1 * 0.0005;
  64.   Pid1.target = Pid1.target + (Pid1.target - Pid1.aver) / 100.0;

  65.   //=======第二組電位器和傳感器=======
  66.   int readValue2 = 0;
  67.   for(int i = 0; i < 4; i++) readValue2 += analogRead(read2Pin);
  68.   readValue2 >>= 2;
  69.   //readValue2 += (Pid2.flag ? 1 : -1) * Pid2.power / 6;
  70.   int adjustValue2 = analogRead(adjust2Pin); //240 analogRead(adjust2Pin);
  71.   Pid2.aver = Pid2.aver * 0.9995 + readValue2 * 0.0005;
  72.   Pid2.target = Pid2.target + (Pid2.target - Pid2.aver) / 1000.0;

  73.   //Calculate power values
  74.   double v, error;
  75.   error = readValue1 - Pid1.target;
  76.   v = error - Pid1.preError;
  77.   Pid1.v = (Pid1.v * 6 + v) / 7;
  78.   Pid1.power = (int)error * Pid1.Kd + Pid1.v * Pid1.Kp;
  79.   Pid1.flag = Pid1.power > 0;
  80.   Pid1.power = abs(Pid1.power);
  81.   if(Pid1.power>255) Pid1.power = 255;
  82.   Pid1.preError = error;

  83.   error = readValue2 - Pid2.target;
  84.   v = error - Pid2.preError;
  85.   Pid2.v = (Pid2.v * 6 + v) / 7;
  86.   Pid2.power = (int)error * Pid2.Kd + Pid2.v * Pid2.Kp;
  87.   Pid2.flag = Pid2.power < 0;
  88.   Pid2.power = abs(Pid2.power);
  89.   if(Pid2.power>255) Pid2.power = 255;
  90.   Pid2.preError = error;

  91.   //Write PMW to control the floa
  92.   digitalWrite(i1Pin, Pid1.flag);
  93.   digitalWrite(i2Pin, !Pid1.flag);
  94.   analogWrite(power1Pin, Pid1.power);

  95.   digitalWrite(i3Pin, Pid2.flag);
  96.   digitalWrite(i4Pin, !Pid2.flag);
  97.   analogWrite(power2Pin, Pid2.power);

  98. }

復制代碼



所有資料下載:
磁懸浮.rar (244.88 KB, 下載次數: 260)

評分

參與人數 4黑幣 +68 收起 理由
zhhufe + 8 很給力!
wxy3002 + 5 贊一個!
蔡定銀 + 5 共享資料的黑幣獎勵!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏12 分享淘帖 頂2 踩
回復

使用道具 舉報

來自 2#
ID:143767 發表于 2024-11-16 12:18 | 只看該作者
這個程序編譯通不過,報錯提示:
C:\Users\Administrator\AppData\Local\Temp\.arduinoIDE-unsaved20241016-34040-1i8gnm2.ep5hh\sketch_nov16a\sketch_nov16a.ino: In function 'void setup()':
C:\Users\Administrator\AppData\Local\Temp\.arduinoIDE-unsaved20241016-34040-1i8gnm2.ep5hh\sketch_nov16a\sketch_nov16a.ino:46:13: error: 'setKd1' was not declared in this scope
   Pid1.Kd = setKd1;
             ^~~~~~
C:\Users\Administrator\AppData\Local\Temp\.arduinoIDE-unsaved20241016-34040-1i8gnm2.ep5hh\sketch_nov16a\sketch_nov16a.ino:46:13: note: suggested alternative: 'setKd'
   Pid1.Kd = setKd1;
             ^~~~~~
             setKd
C:\Users\Administrator\AppData\Local\Temp\.arduinoIDE-unsaved20241016-34040-1i8gnm2.ep5hh\sketch_nov16a\sketch_nov16a.ino:54:13: error: 'setkd2' was not declared in this scope
   Pid2.Kd = setkd2;
             ^~~~~~
C:\Users\Administrator\AppData\Local\Temp\.arduinoIDE-unsaved20241016-34040-1i8gnm2.ep5hh\sketch_nov16a\sketch_nov16a.ino:54:13: note: suggested alternative: 'setKd'
   Pid2.Kd = setkd2;
             ^~~~~~
             setKd

exit status 1

Compilation error: 'setKd1' was not declared in this scope
回復

使用道具 舉報

板凳
ID:147616 發表于 2017-3-26 04:28 來自手機 | 只看該作者
拿走了
回復

使用道具 舉報

地板
ID:189416 發表于 2017-4-14 14:19 | 只看該作者
太感謝了!!!!!!!!!!
回復

使用道具 舉報

5#
ID:245349 發表于 2017-12-2 15:20 | 只看該作者
正在學習中。感謝分享
回復

使用道具 舉報

6#
ID:284039 發表于 2018-2-14 08:23 | 只看該作者
新人報道。。。謝謝分享。。
回復

使用道具 舉報

7#
ID:239354 發表于 2018-4-25 22:11 | 只看該作者
感謝分享
回復

使用道具 舉報

8#
ID:317835 發表于 2018-4-27 15:25 | 只看該作者
這個教程適合小白嗎?網上老男孩的和各種各樣的教程,不是因為時間過久東西缺失,就是東拼西湊的。。很無語。
回復

使用道具 舉報

9#
ID:319006 發表于 2018-4-29 17:17 | 只看該作者
感謝樓主
回復

使用道具 舉報

10#
ID:243748 發表于 2018-5-10 00:00 來自手機 | 只看該作者
學習中,還不會用
回復

使用道具 舉報

11#
ID:228524 發表于 2018-5-22 23:53 | 只看該作者
正想做一個
回復

使用道具 舉報

12#
ID:350191 發表于 2018-6-12 13:01 來自手機 | 只看該作者
多謝,先看下
回復

使用道具 舉報

13#
ID:28942 發表于 2018-6-27 09:33 | 只看該作者
程序編譯不過,
回復

使用道具 舉報

14#
ID:134692 發表于 2018-7-5 16:16 | 只看該作者
學習學習     下載看看
回復

使用道具 舉報

15#
ID:377927 發表于 2018-7-23 16:14 | 只看該作者
謝謝分享
回復

使用道具 舉報

16#
ID:400922 發表于 2018-9-21 11:22 | 只看該作者
謝謝了
回復

使用道具 舉報

17#
ID:382826 發表于 2019-1-27 10:47 | 只看該作者
可以改成51的就好了。
回復

使用道具 舉報

18#
ID:473428 發表于 2019-1-27 19:37 | 只看該作者
好東西 可以沒幣··多回復吧!!!!
回復

使用道具 舉報

19#
ID:473428 發表于 2019-1-31 11:12 | 只看該作者
好東西··存起來!
回復

使用道具 舉報

20#
ID:477574 發表于 2019-2-18 09:55 | 只看該作者
學過C語言是不是學這個會容易些?
回復

使用道具 舉報

21#
ID:477629 發表于 2019-2-18 11:12 | 只看該作者

謝謝,學習了。
回復

使用道具 舉報

22#
ID:567849 發表于 2019-6-20 13:44 | 只看該作者
謝謝分享,主要來看看代碼怎么寫的
回復

使用道具 舉報

23#
ID:272104 發表于 2019-7-14 16:36 | 只看該作者
好東西好東西
回復

使用道具 舉報

24#
ID:120322 發表于 2019-7-31 13:58 | 只看該作者
有教程嗎,想學習一下
回復

使用道具 舉報

25#
ID:61390 發表于 2019-8-2 14:33 | 只看該作者
正在學習中。感謝分享
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 色偷偷噜噜噜亚洲男人 | 一区二区三区视频播放 | 成人在线一区二区 | 欧美精品日韩精品国产精品 | 中日韩av | 另类专区亚洲 | 亚洲视频在线观看 | 综合久久久 | 国产一区2区 | 日韩精品中文字幕一区二区三区 | 亚洲色片网站 | 区一区二区三在线观看 | 欧美亚洲在线 | 久久久久久一区 | 国产日韩欧美一区二区 | 99综合| 亚洲欧美在线观看 | 国产视频1区 | 亚洲成人综合社区 | 成人网址在线观看 | 久久久做| 黄色片av | 夜夜夜操 | 成人影院在线观看 | 欧美欧美欧美 | 亚洲一级毛片 | 天堂视频中文在线 | 亚洲一区播放 | 一区二区三区亚洲 | 久久国产精彩视频 | 91成人在线| 日韩一级免费看 | 日本不卡一区二区 | 自拍偷拍第一页 | 国产毛片视频 | 久久精品国产亚洲一区二区三区 | 天天插天天搞 | 日本久久精品 | 免费的一级视频 | 日韩一区二区三区在线 | 午夜成人免费电影 |