双动力船模模块
来源:互联网 发布:网络购物的利弊 编辑:程序博客网 时间:2024/05/16 02:11
一.遥控电路部分
1. 遥控电路规划图:
MCU RF收发模块 A/D转向控制模块 液晶显示模块 键盘控制模块
2. 各模块说明
Rf收发模块:
Rf收发芯片采用全双工的nrf905,用于遥控电路和控制电路的通讯,将遥控器设定的set_speed和set_angle发送给控制电路执行,同时接受控制电路测得的real_speed。因而有一个接收驱动函数rfr()和一个发送驱动函数rft()。
A/d转向控制模块:
A/d转向控制模块由接有滑动变阻器的a/d转换器组成。改变滑动变阻器的阻值,电压在0-5v变化,输出的数字量在0-255变化,再减去128后就是我们要的hand_angle(在-128-127变化)了
键盘控制模块:
a. 遥控器键盘的组织:
Send On/off up left right down
b.键的功能:
On/off:使驱使电路初始化。初始化后船的速度变为零。
Send:信号的发送。当send键按下时将调动rf收发模块的rft(),将设定好的set_speed和set_angle发送给驱使电路。
键值
键的功能
备注
Up
Set_speed0++;set_speed1++
Down
Set_speed0--;set_speed1--
Left
Auto_angle++
当按下send键后将自动清零。用于对转向的智能控制。其优先级高于手动方式。
Right
Auto_angle--
Up+left
Set_speed0++
由于螺旋桨的原因,在两个电机在转速相等时船体不一定就能直线航行,因而可以通过微调两边的转速而达到直线航行的目的。
Down+left
Set_speed0--
Up+right
set_speed1++
Down+right
set_speed1--
注:实现自动方式优先级高于手动方式
定时中断入口 读取自动角度auto_angle和a/d的手动角度hand_angle Auto_speed==0 Set_speed=hang_speed Set_speed=auto_speed 定时中断出口
液晶显示模块:
用于显示set-angle,real-speed和set-speed,写在主函数中。
3. 逻辑纽带关系
a. 数据buffer的设定:
Structure data_buffer
{
Uchar set_speed0;//设定的左驱动电机的速度
Uchar set_speed1;//设定的右驱动电机的速度
Char set_angle;//设定的转过的角度
Uchar real_speed0;//实际测的左驱动电机的速度
Uchar real_speed1;//实际测的右驱动电机的速度
};
注:real_speed0和real_speed1是通过rfr()接收的,set_speed0,set_speed1和set_angle
是通过遥控自己设定的
b.数据关系结构图:
Set-speed set-angle (两个) 定时扫描键盘读取set_speed值对其值进行修改 定时读取hand_angle和auto_angle,对set-angle修改 当send键按下时发送 并将atuo_angle清零 real-speed (两个) 主函数中读set_speed和set_angle显示
二.控制电路部分
1. 控制电路规划图
MCU RF收发模块 转速检测模块(两个) 驱动电机模块(两个)
2. 各模块说明:
Rf收发模块:同上
驱动电机模块:
a.闭环系统速度的调节:
由于水的阻力很大,在船航行中有加速慢降速快的特点,因而我们采用bang_bang算法来控制船的转速。对real-speed和set-speed进行比较来实现pwm占空比的调节。
bang_bang算法调速方案:
定时中断入口 获得当前数度real_speed和设定的数度set_speed Set_speeed>real_speed 定时中断出口 驱动电机占空比为0% 驱动电机占空比为100%
b.开环系统转弯角度的控制:
由于转弯的角度和两个驱动电机的转速,转弯的时间有关。因而我们在设定两
个驱动电机的转速后,通过时间的长短来控制转弯的角度。
转速检测模块:
由单片机的外部中断,定时计数功能和光电探口组成。定时得到驱动电机的实际转速real-speed。real-speed将作为驱动电机控制的一参数试用,同时定时发送回遥控电路作为实时监测。
速度检测方案:
外部中断intx打开 有下跳沿 Countx++ T0定时时间到 Real_speedx=countx Countx=0;
3. 逻辑纽带关系
a. 数据buffer的设定:
Structure data_buffer
{
Uchar real_speed0;//实际测的左驱动电机的速度
Uchar real_speed1;//实际测的右驱动电机的速度
Uchar set_speed0;//设定的左驱动电机的速度
Uchar set_speed1;//设定的右驱动电机的速度
Char set_angle;//设定的转过的角度
};
注:set_speed0,set_speed1和set_angle是通过rfr()接收的,real_speed0和real_speed1
是通过遥控自己设定的
Set-speed set-angle 中断接收 Real-speed 定时测转速修改real-speed 定时比较Real-speed和Set-speed得到输出的占空比 由set_angle来确定转向时间从而达到转向 定时发送 驱动电机 驱动电机
- 双动力船模模块
- 船模制作基础大全
- 动力
- 动力
- 动力
- 动力
- 动力
- 动力
- 动力
- OGRE 向场景中添加船模型
- 持续动力
- 压力?动力?
- 目标 ---动力
- 学习动力
- 压力、动力
- 学习动力
- 动力碰撞
- EFT配船模拟器(EVE Fitting Tool) v2.18.1中文免费版下载
- 中国各行业龙头股-最新
- ASP.NET TreeView 用JS实现节点的单选功能
- MIX09大会独家报道 IBM欲64亿收购Sun
- 在Linux的终端和Shell中显示中文时显示乱码的解决办法
- 本人写的stream analysis: support mpeg2,ac3, psi等信息,playback.
- 双动力船模模块
- 响应键盘特定按键(只响应数字键)
- 关于值类型和引用类型的思考
- 过早死=不睡觉+可乐+洗发水+高路洁 (很可怕的,一定要看完........... )
- SP相关
- ...
- 如何让你的SQL运行得更快!【经典】
- Java的参数传递
- Give up