网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
06月02日漏签0天
电子科学与技术吧 关注:14,599贴子:29,245
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 1 2 下一页 尾页
  • 22回复贴,共2页
  • ,跳到 页  
<<返回电子科学与...吧
>0< 加载中...

【电科吧】分享设计:简易旋转倒立摆及控制装置

  • 只看楼主
  • 收藏

  • 回复
  • 帅帅泉州仔
  • 名扬四海
    16
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
一、 设计要求和目的
要求:
设计并制作一套简易旋转倒立摆及其控制装置。旋转倒立摆的结构如图1所示。电动机A固定在支架B上,通过转轴F驱动旋转臂C旋转。摆杆E通过转轴D固定在旋转臂C的一端,当旋转臂C在电动机A驱动下作往复旋转运动时,带动摆杆E在垂直于旋转臂C的平面作自由旋转。

旋转倒立摆结构示意图
目的:
主要包括旋臂、摆杆、直流电机以及角位移传感器部分。其中直流电机为执行机构,可由专门的电机驱动芯片如L298、LMDl8200等驱动。由一个角位移传感器测量得到摆杆的角位移信号,作为系统的输入量送入到控制器中,根据一定的算法计算得到控制律并转化为电压信号提供给驱动芯片,来驱动直流电机转动,从而带动旋臂在水平面内旋转,最终实现控制摆杆运动的效果。
倒立摆系统工作原理框图

直流伺服电机:
直流伺服电动机的基本结构与普通他励直流电动机一样,所不同的是直流伺服电动机的电枢电流很小,换向并不困难,因此都不用装换向磁极,并且转子做得细长,气隙较小,磁路不饱和,电枢电阻较大。按励磁方式不同,可分为电磁式和永磁式两种,电磁式直流伺服电动机的磁场由励磁绕组产生,一般用他励式;永磁式直流伺服电动机的磁场由永久磁铁产生,无需励磁绕组和励磁电流,可减小体积和损耗。为了适应各种不同系统的需要,从结构上作了许多改进,又发展了低惯量的无槽电枢、空心杯形电枢、印制绕组电枢和无刷直流伺服电动机等品种。
摆杆状态检测
我们选择单圈的5K精密电位器,它具有线性度好、易于调整阻值、可以在0--360范围内周而复始的旋转等特点,电位器旋转到每一角度对应一定的阻值,电位器接基准的3.3V电压,通过STM32的ADC转换为角度值。
摆杆通过精密电位器与旋臂模块连接,旋臂模块在一定范围能摆动时,使摆杆可以在竖直平面内上下左右摆动。


  • 帅帅泉州仔
  • 名扬四海
    16
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
一、 设计原理
2.1 电路设计
2.1.1 语音模块电路的设计

2.1.2 L298电机驱动电路设计


2025-06-02 14:45:39
广告
  • 帅帅泉州仔
  • 名扬四海
    16
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
2.1.3 稳压模块电路的设计


  • 帅帅泉州仔
  • 名扬四海
    16
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
2.2 程序结构与设计
2.2.1 程序流程图


  • 帅帅泉州仔
  • 名扬四海
    16
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
2.2.2 主要源程序
PID算法程序如下:
void PID(void)
{
i_term=d_term=0;
en0=1935-DATA;
SumE=SumE+en0; //计算误差项之和SumE
if(SumE>7000) //检测SumE是否太大
SumE=7000;
if(SumE<-7000) //检测SumE是否太小
SumE=-7000;
i_term=SumE>>6; //计算SumE/Tf,Tf为64Hz
i_term*=Ki; //计算积分项
d_term=en0-en2;
if(d_term>60) //检测是否太大
d_term=60;
if(d_term<-60) //检测是否太小
d_term=-60;
d_term*=Kd;
d_term*=32; //计算微分项
if(d_term>2000)
d_term=2000;
if(d_term<-2000)
d_term=-2000;
Cn=en0*K; //比例项
Cn+=i_term+d_term;
en2=en1;
en1=en0;
en0=0;
motor();
}


  • 帅帅泉州仔
  • 名扬四海
    16
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


  • 帅帅泉州仔
  • 名扬四海
    16
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
程序代码:
#include <stm32f10x_lib.h>
#include<math.h>
#include "tanke.h"
#include "timer.h"
#include "delay.h"
#include "exit.h"
#include "adc.h"
#define uchar unsigned char
int i;
int en0,en1,en2,DATA,DATA2=0;
int SumE,d_term,i_term;
long int Cn;
uchar K,Ki,Kd,a=0,flag=0;
uchar PID_flag,motor_flag;
u8 c=0;
uchar table[]="time";
uchar table1[]=".";
u16 pwmval=0;
void motion(u8 a,u8 b)
{
led0=a;
led1=b;
}
void write_com(uchar com)
{
rs=0;
rw=0;
GPIOE->ODR=com<<0;
en=0;
delay_ms(5);
en=1;
delay_ms(5);
en=0;
}
void write_date(uchar date)
{
rs=1;
rw=0;
GPIOE->ODR=date<<0;
en=0;
delay_ms(500);
en=1;
delay_ms(500);
en=0;
}
void motor()
{
motor_flag=0;
if(DATA>2500)
motor_flag=1;
if(DATA<1500)
motor_flag=1;
if(DATA>1996&&DATA<2005)
motor_flag=1;
if (DATA2>DATA-8||DATA2<DATA+8)
{
a++;
if (a>1)
{
a=0;
motor_flag=1;
}
}
else
DATA2=DATA;
//if(DATA<1500||DATA>2500)
//motor_flag=1;
Cn>>=5;
if(Cn>900)
Cn=900;
if(Cn<-900)
Cn=-900;
if(motor_flag==0)
{
if(Cn>0)
{
motion(1,0);
pwmval=900-Cn;
// pwmval=1000-pwmval;
}
if(Cn<0)
{
motion(0,1);
pwmval=900+Cn;
//pwmval=1000-pwmval;
}
LED0_PWM_VAL=pwmval;
}
}
void PID()
{
i_term=d_term=0;
en0=1935-DATA;
SumE=SumE+en0;
if(SumE>7000)
SumE=7000;
if(SumE<-7000)
SumE=-7000;
i_term=SumE>>6;
i_term*=Ki;
d_term=en0-en2;
if(d_term>60)
d_term=60;
if(d_term<-60)
d_term=-60;
d_term*=Kd;
d_term*=32;
if(d_term>2000)
d_term=2000;
if(d_term<-2000)
d_term=-2000;
Cn=en0*K;
Cn+=i_term+d_term;
en2=en1;
en1=en0;
en0=0;
motor();
}
void init()
{
en0=en1=en2=0;
en=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
for(i=0;i<4;i++)
write_date(table[i]);
write_com(0x80+5);
write_date(0x30+c);
write_com(0x80+7);
write_date(table1[0]);
}
int main(void)
{
u16 ff=0;
Stm32_Clock_Init(9);// 系统时钟 配置为72兆
tanke_init();
delay_init(72);
//init();
Timerx_Init(5000,7199);//500ms
Adc_init();
//Exit_Init();
PWM_Init(1000,0);
flag=0;
Cn=d_term=i_term=0;
//K=75; 70,2
K=142;
Ki=60;
Kd=35;
SumE=0;
motor_flag=0;
ff=0;
while(ff==0)
{
// DATA=Get_Adc(1);
motion(1,0);
delay_ms(300);
motion(0,1);
delay_ms(100);
motion(0,1);
delay_ms(300);
motion(1,0);
delay_ms(100);
motion(0,1);
delay_ms(100);
ff=1;
}
while(ff==1)
{
motion(0,0);
}
}


  • 老☆妖
  • 赫赫有名
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

   不是繁华喧嚣衬托了你的落寞,而是你的孤单影响了空气流动!


2025-06-02 14:39:39
广告
  • 左岩sunny
  • 颇具名气
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


  • 1246470500
  • 远近闻名
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
不明觉厉


  • 空心回忆z
  • 远近闻名
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


  • Nuance七天
  • 崭露头角
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
大二的完全看不懂。。。∑(( つ•̀д•́)つ!!啊
虽然学过C语言,但是还完全无法理解将程序语句执行的感觉
虽然学过模电数电。。但是这么多种的芯片。。我只听闻了单片机(╯`□′)╯(┻━┻


  • crazy_小洲
  • 默默无闻
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
挖挖坟墓,今年刚做到这个题目,想问楼主,直流伺服电机您用的是哪一款


  • 晴空下的乌云
  • 默默无闻
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
@帅帅泉州仔 大佬,还有旋转倒立摆控制器的资料吗


2025-06-02 14:33:39
广告
  • CHINGLISH981
  • 默默无闻
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
十年前的帖子,我才是掘墓人


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1 2 下一页 尾页
  • 22回复贴,共2页
  • ,跳到 页  
<<返回电子科学与...吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示