双动力船模模块

来源:互联网 发布:网络购物的利弊 编辑:程序博客网 时间:2024/05/16 02:11

一.遥控电路部分

1.  遥控电路规划图:

 

MCU

RF收发模块

A/D转向控制模块

液晶显示模块

键盘控制模块

2.  各模块说明

Rf收发模块:

Rf收发芯片采用全双工的nrf905,用于遥控电路和控制电路的通讯,将遥控器设定的set_speedset_angle发送给控制电路执行,同时接受控制电路测得的real_speed。因而有一个接收驱动函数rfr()和一个发送驱动函数rft()。

 

              A/d转向控制模块:

A/d转向控制模块由接有滑动变阻器的a/d转换器组成。改变滑动变阻器的阻值,电压在0-5v变化,输出的数字量在0-255变化,再减去128后就是我们要的hand_angle(在-128127变化)了

 

键盘控制模块:

a. 遥控器键盘的组织:

 

Send

 

On/off

up

 

left

 

right

down

b.键的功能:

On/off:使驱使电路初始化。初始化后船的速度变为零。

Send:信号的发送。当send键按下时将调动rf收发模块的rft(),将设定好的set_speedset_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_anglea/d的手动角度hand_angle

Auto_speed==0

Set_speed=hang_speed

Set_speed=auto_speed

定时中断出口

              液晶显示模块:

                     用于显示set-anglereal-speedset-speed,写在主函数中。

3.  逻辑纽带关系

a. 数据buffer的设定:

Structure  data_buffer

{

       Uchar set_speed0;//设定的左驱动电机的速度

       Uchar set_speed1;//设定的右驱动电机的速度

                     Char set_angle;//设定的转过的角度

Uchar real_speed0;//实际测的左驱动电机的速度

                     Uchar real_speed1;//实际测的右驱动电机的速度

              }

              注:real_speed0real_speed1是通过rfr()接收的,set_speed0set_speed1set_angle

                     是通过遥控自己设定的

              b.数据关系结构图:

 

Set-speed   set-angle

(两个)

定时扫描键盘读取set_speed值对其值进行修改

定时读取hand_angleauto_angle,对set-angle修改

send键按下时发送

并将atuo_angle清零

real-speed

(两个)

主函数中读set_speedset_angle显示

 

 

 

二.控制电路部分

1.  控制电路规划图

 

MCU

RF收发模块

 

转速检测模块(两个)

驱动电机模块(两个)

 

2.  各模块说明:

Rf收发模块:同上

 

驱动电机模块:

a.闭环系统速度的调节:

由于水的阻力很大,在船航行中有加速慢降速快的特点,因而我们采用bang_bang算法来控制船的转速。对real-speedset-speed进行比较来实现pwm占空比的调节。

bang_bang算法调速方案

定时中断入口

获得当前数度real_speed和设定的数度set_speed

Set_speeed>real_speed

定时中断出口

驱动电机占空比为0%

驱动电机占空比为100%

 

              b.开环系统转弯角度的控制:

由于转弯的角度和两个驱动电机的转速,转弯的时间有关。因而我们在设定两

个驱动电机的转速后,通过时间的长短来控制转弯的角度。

 

转速检测模块:

     由单片机的外部中断,定时计数功能和光电探口组成。定时得到驱动电机的实际转速real-speedreal-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_speed0set_speed1set_angle是通过rfr()接收的,real_speed0real_speed1

                     是通过遥控自己设定的

 

Set-speed   set-angle

中断接收

Real-speed

定时测转速修改real-speed

定时比较Real-speedSet-speed得到输出的占空比

 

set_angle来确定转向时间从而达到转向

定时发送

驱动电机

驱动电机

 

 

原创粉丝点击