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

標題: 我的磁懸浮相關資料,基于arduino單片機,有原理圖和源程序 [打印本頁]

作者: chris泉    時間: 2016-5-25 15:16
標題: 我的磁懸浮相關資料,基于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)


作者: 2100598336    時間: 2017-3-26 04:28
拿走了
作者: Hk9322    時間: 2017-4-14 14:19
太感謝了!!!!!!!!!!
作者: sdwjy1998    時間: 2017-12-2 15:20
正在學習中。感謝分享
作者: wylizheng    時間: 2018-2-14 08:23
新人報道。。。謝謝分享。。
作者: MagicCarlos    時間: 2018-4-25 22:11
感謝分享
作者: jeilly6100    時間: 2018-4-27 15:25
這個教程適合小白嗎?網上老男孩的和各種各樣的教程,不是因為時間過久東西缺失,就是東拼西湊的。。很無語。
作者: wmy19951029    時間: 2018-4-29 17:17
感謝樓主
作者: wuxishun    時間: 2018-5-10 00:00
學習中,還不會用
作者: 電子特工    時間: 2018-5-22 23:53
正想做一個
作者: zhkl99    時間: 2018-6-12 13:01
多謝,先看下
作者: wrlsohu    時間: 2018-6-27 09:33
程序編譯不過,
作者: zhhufe    時間: 2018-7-5 16:16
學習學習     下載看看
作者: shadeb    時間: 2018-7-23 16:14
謝謝分享
作者: jidejide    時間: 2018-9-21 11:22
謝謝了
作者: zhanghoub    時間: 2019-1-27 10:47
可以改成51的就好了。

作者: 淘氣的孝一    時間: 2019-1-27 19:37
好東西 可以沒幣··多回復吧!!!!
作者: 淘氣的孝一    時間: 2019-1-31 11:12
好東西··存起來!
作者: sleepybug    時間: 2019-2-18 09:55
學過C語言是不是學這個會容易些?
作者: w6731040    時間: 2019-2-18 11:12

謝謝,學習了。
作者: kuraudo    時間: 2019-6-20 13:44
謝謝分享,主要來看看代碼怎么寫的
作者: AI.陽    時間: 2019-7-14 16:36
好東西好東西
作者: dj3365    時間: 2019-7-31 13:58
有教程嗎,想學習一下
作者: jwjjwj123    時間: 2019-8-2 14:33
正在學習中。感謝分享
作者: dj3365191    時間: 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




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产精品国产a | 国产精品视频导航 | 国产成人综合网 | 欧美成人精品一区二区三区 | 在线观看日韩精品视频 | 97狠狠干 | 国产中文字幕网 | 久久综合九色综合欧美狠狠 | 二区在线视频 | 国产一区二区三区免费观看视频 | 国产色网站 | 中文字幕影院 | 久久亚洲国产 | 国产男女视频网站 | 欧美一级片在线看 | 亚洲资源在线 | 操人网 | 91不卡在线| av入口| 国产丝袜一区二区三区免费视频 | 免费高潮视频95在线观看网站 | 精品九九久久 | av毛片免费| 欧美v片| 国产精品久久久久久久久久免费看 | 一级看片免费视频 | 日本欧美黄色片 | 日本精品一区 | 色婷婷综合久久久中字幕精品久久 | 国产精品一区二区日韩 | 午夜午夜精品一区二区三区文 | 亚洲精视频| 国产一区 日韩 | 99精品欧美一区二区三区 | 精品欧美一区二区三区久久久 | 99九九视频 | 亚洲视频一区 | 狠狠操狠狠干 | www.黄网| 亚洲第一福利网 | 成人午夜看片 |