- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
磁悬浮Arduino代码
折腾了几天终于把这个东西搞定了。看似简单,还是有一些小技巧的。主要材料:Arduino UNO主控SS495线性霍尔采集位置信息L298N驱动直径12.7mm强磁球电磁铁12V,线圈电阻10欧主要参数:PID控制,采样周期1ms,PWM频率 3921Hz,悬浮距离30mm,电流300mA筷子版的,下面是一个磁体,上面是一个小铁块,中间是一截筷子。悬浮距离比较小,但是方便进行建模和控制理论分析。?磁球版,悬浮距离很大,不容易进行理论分析。?ARDUINO 代码复制打印constint SS495_PIN = A0;??// Analog input pin that the SS495 is attached toconstint PWM_PIN=3;??// Pins 3 and 11 are connected to Timer 2.?constint SampleTime=600;constint PWM_BIAS=128;?int Setpoint=850;double Kp=1, Ki=0.001, Kd=50;?void setupCoilPWM(){??? ?// Setup the timer 2 as Phase Correct PWM, 3921 Hz.? ?pinMode(3, OUTPUT);? ?// Timer 2 register: WGM20 sets PWM phase correct mode, COM2x1 sets the PWM out to channels A and B.? ?TCCR2A = 0;? ?TCCR2A = _BV(COM2A1) | _BV(COM2B1) | _BV(WGM20);? ?// Set the prescaler to 8, the PWM freq is 16MHz/255/2/prescaler? ?TCCR2B = 0;? ?TCCR2B = _BV(CS21);}?void writeCoilPWM(uint8_t pin, int val){? ?? ?OCR2B = val;}?void PID_Compute(){??staticint lastError=0;??staticunsignedlongint lastTime=0;??staticdouble iiterm=0;???unsignedlong now,timeChange;??int input,output,error,piterm,diterm;???now = micros();??timeChange = (now - lastTime);??if(timeChange=SampleTime)??{? ? lastTime = now;?? ? input=read_input();?? ? error = -(Setpoint - input);?? ? iiterm+= (Ki * error);? ? iiterm=constrain(iiterm,-255,255);?? ? piterm=Kp * error;? ? diterm=Kd * (error - lastError)*1000/timeChange;? ? output = PWM_BIAS+(piterm + diterm);? ? output=constrain(output,0,255);? ? writeCoilPWM(PWM_PIN, output);?? ? // print the results to the serial monitor:? ? //sprintf(str,%04d,%+04d,%+04d,%+04d,%04d,error,piterm,diterm,(int)iiterm,output);? ? //Serial.println(str);? ??? ? /*Remember some variables for next time*/? ? lastError = error;? ?}}?int read_input(){??staticint last=0;??int r;??r=analogRead(SS495_PIN);??if(abs(r-last)4)? ? r=last;??else? ? last=r;??return r;}?voidsetup(){??setupCoilPWM();}?voidloop(){??// read the analog in value:??PID_Compute();}下一步准备加上串口通讯,用matlab做上位机界面。已经做好了Arduino的自平衡车和两旋翼模型,有空也放上来。完整版,用串口向PC机发
您可能关注的文档
- 矿山救护队岗位责任制.doc
- 矿山班组安全周会.pptx
- 矿山机电题库.doc
- 矿山生产安全事故常识及救护.doc
- 矿床考题汇总.doc
- 矿山部复工安全培训.doc
- 矿建公司2014年11月份安全例会会议纪要.doc
- 矿热余热锅炉安装作业指导书.doc
- 矿物岩石学 九.docx
- 矿灯有关管理规定结合工作实际如何杜绝矿灯失爆.ppt
- 全球创业生态系统报告2024(英文).pdf
- 品牌价值-雇主品牌指数2024(英).pdf
- 欧洲央行-数字创新与银行监管(英)-2024.pdf
- 世界银行-选定的碳定价政策对阿拉伯埃及共和国的经济和分配影响(英)-2024..pdf
- 中国蓄热储能产业发展报告(2024).pdf
- 2024广东韶关市新丰县梅坑镇人民政府综合行政执法队社会购买服务人员招聘笔试参考题库含答案解析.pdf
- 2024内蒙古赤峰市元宝山区应急管理局应急管理综合行政执法技术检查员招聘笔试参考题库含答案解析.pdf
- 2024年上海市公安机关文职辅警、公安机关勤务辅警、检察系统辅助文员招聘笔试参考题库含答案解析.pdf
- 2024河北张家口赤城县自然资源和规划局乡镇森林草原消防专业队人员招聘笔试参考题库含答案解析.pdf
- 2024内蒙古呼伦贝尔市根河市事业单位综合类岗位及卫生专业技术人员招聘笔试参考题库含答案解析.pdf
文档评论(0)