找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4025|回复: 0
打印 上一主题 下一主题
收起左侧

倒立摆源码与硬件电路资料 参加电赛的可以来看看

[复制链接]
跳转到指定楼层
楼主
里面有许多模块电路 软件的资料 很不错

文件夹说明

AccelStepper、AccelStepperConstSpeedTest 为AccelStepper步进电机驱动库
Encode_SwingUp、MiniEncoderTest 编码器测试
KeyTest ADC键盘测试
MotorPID、MotoTest 直流减速电机方案测试
pendulum_program_PID     Jiyue He(何吉越)的倒立摆方案
PID 我的倒立摆控制程序
PWMTest pwm频率测试
TimerOneStepper TimerOne库测试

PID_0_3 ~PID_1_2为测试版本,其中有的版本使用直流减速电机,有的版本使用步进电

PID_1_3:最终版本,使用串口作为调试手段
PID_1_4:最终版本,将串口调试改为键盘调试


硬件:
AVR atmega328,arduino nano
步进电机+TB6050
绝对型编码器x2(检测摆杆角度、步进)
12864液晶屏(最终没用上)
ADC键盘
24V电源

///////////PID_1_3/////////
PID_1_3.ino :主程序,开机自动检测0°并计算出180°,之后进入循环功能演示。平衡采用PID控制,第一个PID,以摆杆角度作为作为输入,步进电机速度作为输出。第二个PID,以步进速度作为输入,平衡点作为输出(180°±8°)
当摆杆在-110°~-180°或110°~180°范围内时,进行平衡控制,否则关闭步进输出
编码器读数、PID控制放在Timer2中断中,以保证控制周期精准,控制周期5ms
串口命令读取、状态发送放在主函数循环中
起摆思路1:步进电机往一个方向运动一点距离,停止,等待摆杆达到最高点,再反向运动,停止,等待摆杆达到反向最高点,如此反复,摆杆进入平衡范围后进行平衡控制(起摆时间太长,不采用)
起摆思路2:步进电机突然给一个方向速度,再急刹车,摆杆由于惯性继续圆周运动,当进入平衡范围时,进行平衡控制(时间基本1s以内)
起摆思路3:步进电机突然给一个方向速度,再急刹车,等待摆杆达到最高点,步进电机再反向快速运动,以提高摆杆动能(杆子太重可用此方法)

Stepp.ino :步进电机驱动,使用了Timer1,setStepperSpeed(long myspeed)用于更新速度,StepperEvent()根据速度值驱动步进,如果有加减速效果会更好
Command.ino :接收命令,更新参数,P100代表参数P=100,etc

Encoder.ino :绝对型编码器读数

Filter.ino :FIR低通滤波、中值滤波

function1~6.ino :分别实现基本要求1~3,提高要求1~3

///////////PID_1_4/////////
PID_1_4.ino : loop中命令值略有更改

Command.ino : 将读取串口数据改为读取ADC键盘值,ADC键盘优点:仅一个AD口可实现10个按键,缺点:读数略复杂,只能单点按键,适合atmega328管脚少的芯片

其他函数同PID_1_3



全部资料51hei下载地址:

大学生电子设计竞赛作品程序代码.zip

152.02 KB, 下载次数: 32, 下载积分: 黑币 -5

大学生电子设计竞赛作品硬件电路.zip

4.81 MB, 下载次数: 24, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表