mma7361角速度传感器实验
三轴加速度传感器mma7361程序成功!!!

三轴加速度传感器mma7361程序成功#include "STC12C5410AD.H"sbit MMA7260sleep=P1^0; //MMA7260休眠与否,0-休眠;1-正常工作//---------------------------------------//名称: 延时约1毫秒函数//日期:20081111//-----------------------------------------void delay1ms(){word k;for(k=0;k<12000;k++);}void delayms(word ms){word k,j;for(j=0;j<ms;j++)for(k=0;k<12000;k++);}//---------------------------------------//名称: 串口数据发送函数//日期:20081111//----------------------------------------- void uart_putchar(byte ch){TI=0;if (ch == '\n'){SBUF= 0x0d; //output'CR'while(!TI);return;}SBUF=ch;while(!TI);}//--------------------------------------- //名称: 串口数据接收函数//日期:20081111//----------------------------------------- byte uart_getchar(void){if(RI){RI=0;return SBUF; //有数据接收到,返回1}else{return 0; //无数据接收到,返回0}}void putstr(char ch[]){byte ptr=0;while(ch[ptr]){uart_putchar((byte)ch[ptr++]);}}//---------------------------------------//名称: 模数转换函数(8位)//日期:20081111//-----------------------------------------byte ReadAD(byte ch){ADC_DATA = 0; //清A/D转换结果寄存器ADC_CONTR = 0xF8|ch; //0000,1000ADCS = 1,启动转换delay1ms();do{;}while((ADC_CONTR&0x10)==0); //0001,0000等待A/D转换结束ADC_CONTR = ADC_CONTR&0xE7; //1110,0111清ADC_FLAG位,停止A/D转换return ADC_DATA;}/*************************************************** 把0--255的数值转化为3位字符串格式****************************************************/ void Byte2Str3(char zifu[],byte val,byte StartPtr) {char characters[11]="0123456789";byte tv=0;tv=val/100;zifu[StartPtr++] = characters[tv];tv=(val%100)/10;zifu[StartPtr++] = characters[tv];tv=val%10;zifu[StartPtr] = characters[tv];//zifu[3] = '\0';return;}//---------------------------------------//名称: 初始化函数函数//日期:20081111//-----------------------------------------void init_ad(void){P1M0=0x07; //设置P1.012为高阻输入,以准备ADP1M1=0x00;ADC_CONTR = 0xf8; //1000,0000打开A/D转换电源delay1ms();ADC_CONTR = ADC_CONTR&0xe0; //1110,0000 清ADC_FLAG,ADC_START位和低3位}void init_uart(void) //P3.0,3.1{TMOD=0x20; //TH1=256-INT(22118400/32/12/baud+0.5) TH1=0xfa; //0xfa,9600TL1=0xfd; //0xff,57600PCON=0x00;TR1=1;SCON=0xd0;}void init_dev(void){init_ad();init_uart();}//---------------------------------------//名称: 主函数//日期:20081111//---------------------------------------</ms;j++)--void main(){char txtbuf[17]="\n ADC Val: ";byte adbuf;init_dev();putstr("\n MMA7260 starts working!\n"); MMA7260sleep=1;//MMA7260开始工作while(1){//ADCadbuf=ReadAD(0); //X AXISByte2Str3(txtbuf,adbuf,11);putstr(txtbuf);adbuf=ReadAD(1); //Y AXISByte2Str3(txtbuf,adbuf,11);putstr(txtbuf);adbuf=ReadAD(2); //Z AXISByte2Str3(txtbuf,adbuf,11);putstr(txtbuf);delayms(300);}}。
基于MMA7361加速度传感器的重力感应遥控小车设计

基于MMA7361加速度传感器的重力感应遥控小车设计唐海玲;赵春雨;宋家友
【期刊名称】《传感器世界》
【年(卷),期】2013(019)006
【摘要】系统由重力感应遥控板和被控小车两部分构成.遥控板部分通过
MMA7361加速度传感器感知遥控板的倾斜方向和倾斜角度,通过ATmega8单片机内置A/D转换器获取传感器采集到的信息,经编码后,通过无线串口发送出去;被控小车通过无线接收模块接收到遥控板发送来的编码信息,由ATmega8单片机完成相应的解码工作,获取遥控板发出的控制信息,通过电机驱动模块对小车左右电机进行驱动,从而完成相应动作.经实际制作和检验,小车运动姿态与遥控板控制姿态高度协调,反应灵敏,满足设计要求.
【总页数】4页(P9-12)
【作者】唐海玲;赵春雨;宋家友
【作者单位】黄河科技学院信息工程学院河南郑州450063;黄河科技学院信息工程学院河南郑州450063;郑州大学信息工程学院河南郑州450001
【正文语种】中文
【中图分类】TP23
【相关文献】
1.采用数字加速度传感器的重力感应无线小车设计 [J], 杨晓多;刘述喜;李山
2.采用数字加速度传感器的重力感应无线小车设计 [J], 杨晓多;刘述喜;李山;
3.基于Andriod重力感应控制的小车设计与研究 [J], 陈锦儒;彭昕昀
4.基于STM32的重力感应无线智能遥控小车设计 [J], 李志瑞;申庆超
5.基于STM32的无线重力感应遥控系统设计 [J], 李志瑞;申庆超
因版权原因,仅展示原文概要,查看原文内容请购买。
电子设计方案大赛设计方案报告

2012年福建省大学生电子设计竞赛指导教师:林惠君吴建宁连桂仁姓名学院专业年级联系方式陈建平数学与计算机科学学院电子信息科学与技术10黄健数学与计算机科学学院电子信息科学与技术10黄志鹏数学与计算机科学学院电子信息科学与技术10自平衡小车系统摘要我们采用模块化设计的方法,设计了一款基于STC12C5A60S2单片机的自平衡小车系统,实现了题目中的基本要求和发挥部分的全部内容。
本系统基于STC12C5A60S2单片机为核心处理器,用软件实现直流电机PWM调速,为了实现控制小车直立行走,我们对小车的平衡控制和速度控制进行了建模分析,设计出一套合理的控制方案。
本系统设计了相关的硬件电路和相关应用程序,硬件电路主要包括STC12C5A60S2单片机最小系统、循迹探测模块、速度检测模块、倾角检测模块、转向角速度检测模块、电机驱动模块等单元电路模块;系统程序主要包括循迹探测程序、直立运行程序、PWM调速程序等。
关键词:STC12C5A60S2单片机循迹 PWM调速平衡1.系统方案的比较与选择根据设计要求,可以有多种方法来实现系统的功能。
我们采用模块化思想,从各个单元电路选择入手进行整体方案的论证、比较与选择。
1.1 控制器方案的比较与选择方案一:采用FPGA或CPLD作为系统的控制器,可以实现复杂逻辑功能,规模大,速度快,密度高,体积小,稳定性高,容易实现仿真、调试和功能扩展。
但成本高,引脚多,PCB布线复杂。
方案二:采用增强型51系列STC12C5A60S2单片机,运算速度快,软件编程灵活,自由度大,技术成熟,体积小,成本低,容易实现仿真、调试和功能扩展。
方案三:采用嵌入式处理器(ARM),运算功能强大,速度较快,编程灵活,自由度大,外围器件少,成本适中,容易实现仿真、调试和功能扩展。
但PCB设计及焊接技术要求高。
综合考虑系统设计的需要,我们选择了方案二。
1.2 循迹探测方案的比较与选择方案一:采用热探测器,电路简单,但易受外界干扰,不灵敏。
野火平衡组站立调试指南(初级篇)

野火平衡组站立调试指南——初级篇一.整体思路采集ENC-03陀螺仪角速度,和模块硬件积分之后的角度,利用PD 算法实现直立。
*教程适合新手利用模块快速入上手,实现车模直立。
注:此方法不能用在智能车比赛上,而是给大家练习使用(中级篇的方法可用在智能车比赛上,但难度比这个高,因此先用这个入门)。
二.模块引脚此例程需要用到的 模块管脚有:ENC03角速度, 角度 ,Z 轴三.搭建调试环境要实现直立,必须把单片机采集的参数发送到上位机,观察变化的趋势,才能更好的调节整个动态过程。
串口通信工具可通过无线蓝牙,或者TTL 转串口线来把单片机数据发送给电脑上位机,从而在上位机NCGyro2 Gyro1 Ang GNDNCNC X Y Z SEL 5VGyro1 为此陀螺仪输出角速度 需要加装水平陀螺仪,才可以读取Gyro2,为水平陀螺仪输出角速度MMA7361三轴加速度模块输出:X/Y/Z 轴加速度上进行处理。
A .无线蓝牙分为发送端和接收端。
可采用2个主从蓝牙模块搭配,也可通过主从模块和蓝牙适配器组合使用。
使用方法相当于“无线”的串口,分为主机和从机。
引脚接法:5v GND RXD TXD 注意:蓝牙的RXD 和单片机的TXD 对应链接,蓝牙的TXD 和单片机的RXD 对应链接。
B .USB 转UART通过USB 转TTL ,直接把单片机的数据发送给上位机。
核心板上可供使用的串口接口:UART4 的PTC14、PTC15USB转TTL,接口一般都是排针当然,也可以采用USB转RS232,但RS232信号不是单片机能识别的,因此还需要MAX3232 芯片把RS232 信号转为TTL。
MAX3232 芯片:RS232信号转TTL USB转串口线:USB转RS232通过带USB接口的RS232模块,把单片机的TTL信号(0-5v)发送电脑串口端,通过上位机程序显示和接收。
上位机调试工具Serial_Digital_Scope V2我们采用的上位机是Serial_Digital_Scope V2 。
MMA7361的加速度传感器模块

基于MMA7361的加速度传感器模块
(龙丘 MMA7361 模块)
MMA7361QR 3轴小量程加速传感器是检测物件运动和方向的传感器,它根据物件运动和方向改变输出信号的电压值。
后面的图片示出了它们的关系。
各轴的信号在不运动或不被重力作用的状态下(0g ),其输出为1.65V 。
如果沿着某一个方向活动,或者受到重力作用,输出电压就会根据其运动方向以及设定的传感器灵敏度而改变其输出电压。
用单片机的A/D 转换器读取此输出信号,就可以检测其运动和方向。
1.接线端定义:
pin1、3.3V :输入电压,同时可以接到单片机AD 参考电压端; pin2、(可选)5V 电源; pin3、GND :电源地;
pin4、Xout :x 轴方向电压输出; pin5、Yout :y 轴方向电压输出; pin6、Zout :z 轴方向电压输出;
pin7、sleep :芯片休眠控制(0:休眠,1:工作);如果不接,默认为正常工作。
pin8、10、12、NC :悬空管脚; pin9、0g_dectect :0g 信号检测;
pin11、Self_test :芯片自我测试与初始化;
注:R1与R2不能同时接上,只能接其中一个,阻值可以选择1-3.3k Ω。
1g=9.8m/s 2
Z 轴输出 Y 轴输出 X 轴输出 GND 5V 电源
3.3V 电源(V REF )
sleep NC
0g_dectect
NC Self_test
NC
3.模块尺寸:
22mm
16.5m
18mm
4.运动、方向与各轴(1.5g 模式下)的输出关系:。
基于MMA7361三轴加速度计传感器与LPA550陀螺仪的融合姿态检测

d i r f t p h e n o me n o n ma k e s me a s u in r g a t t i t u d e a n g l e a c c u r a c y i s n o t h i g h , a n d i mp r o v e t h e s t a b i l i y t o f t h e s y s t e m.
其中 A d c G y r o X Z , A d e G y r o Y Z 由A D C 读取 , 分别表示矢量 R 在x z , Y z 平面 内的转角 , V r e f 为A D C 的参 考电压 , V z e r o R a t e 为零变 化率电压 , S e n s i t i v i t y 为陀螺仪灵敏度 。
C o mp u  ̄r K n o w l e d g e a n d T e c h n o l o g y电脑 知 识 与技术
基于 MMA 7 3 6 1 三轴加速度计传感器与 L P A 5 5 0 陀螺仪 的融合姿态检测
吕 维 , 赵 万 欣, 陈 思 屹
( 西南科技大学 信息 [程学院 , 四川 绵 阳 6 2 1 0 0 0 )
LV W e i , ZH AO W a n—xi n,CH EN S i —yi
( I n f o r ma t i o n E n g i n e e r i n g , S o u t h we s t Un i v e r s i t y o f S c i e n c e a n d T e c h n o l o g y , Mi a n y a n g 6 2 1 0 0 0 , C h i n a ) Ab s t r a c t : B a s e d o n t h e a t t i t u d e a n g l e MM A 7 3 6 1 t r i a x i a l a c c e l e r o me t e r a n d yr g o s c o p e L P A5 5 0 me a s u r e d o b j e c t , t h e u s e o f b o t h
MMA7361自己总结

MMA7361自己总结MMA7361三轴加速度传感器概述MMA7361三轴加速度传感器是替代停产的MMA7260三轴加速度传感器,三轴加速度传感器是一种可以对物体运动过程中的加速度进行测量的电子设备,典型互动应用中的加速度传感器可以用来对物体的姿态或者运动方向进行检测,比如WII游戏机和iPhone手机中的经典应用。
MMA7361三轴加速度传感器芯片,对于普通的互动应用来讲应该是种不错的选择,可以应用到摩托车和汽车放倒报警、遥控航模、游戏手柄、人形机器人跌倒检测、硬盘冲击保护、倾斜度测量等场合。
MMA7361和MMA7260一样采用信号调理、单极低通滤波器和温度补偿技术,但只提供±1.5g /6g两个量程,用户可通过开关选择这2个灵敏度。
该器件带有低通滤波并已做0g补偿,提供休眠模式,因而是电池供电的无线数据采集的理想之选。
性能描述1. 供电电压:3.3-8V2. 可选灵敏度,±1.5g/6g;通过拨码开关选择。
3. 低功耗,工作时电流为400μA,休眠模式下为3μA;4. 高灵敏度,在1.5g量程下为800 mV/g;5. 低通滤波器具有内部信号调理功能;6. 设计稳定,防震能力强。
7. 模块尺寸:23X26mm用户指南我们已经为你提供了可供选择的示例程序用来处理这三轴加速度计陀螺仪。
我们可以测量装置和重力方向的三轴之间的角度。
平面的位置是在三维空间中唯一地描述。
模拟输出程度根据以上操作你可以按照自身的需求来设置重量监测的范围,和灵敏度。
1. 模拟值读取analog_x我们设置MMA的工作电压5v,通过在1024的串口监测下显示出来,所以我们应该将模拟电压,转换为数字量。
vol_x=analog_x*5/1024.connection diagram for Romeoconnection diagram for Romeo2. vol_x-->add_x(v)当X轴是水平的,它是1.65v.so我们需要减去这个量得到增加add_x=vol_x-1.65重量。
电赛控制类风力摆论文

2015年全国大学生电子设计竞赛风力摆控制系统(B题)【本科组】2015年8月15日摘要本设计由MC9S12XS128MAL单片机控制模块、角度检测模块、人机交互系统以及风力摆机械结构组成的闭环控制系统。
由BTN7971驱动12V、1.2A的直流风机作为风力摆的动力源,MMA7361采集风力状态角,单片机处理状态角数据后通过PID调节直流风机控制风力摆,实现在直流风机作为动力控制下快速起摆、画线、恢复静止,画圆的功能。
为了使测控系统控制更为精确,在采集数据的过程中采用了非线性误差校正以及卡尔曼滤波等数据处理方法。
同时设计中考虑到可能存在的各种干扰因素,采用软硬件结合的抗干扰方法提高系统控制的稳定性。
经过反复的测验,该方案完全能够实现题目要求!关键字:单片机闭环风力摆控制系统卡尔曼滤波目录1.1.系统主控芯片选择 (1)1.2.风力摆动力系统方案选择 (1)1.3.角度检测方案的选择与论证 (2)1.4.电机驱动模块的选择与论证 (2)1.5.算法选择 (2)2.系统设计 (3)2.1.系统总体设计 (3)2.2.模块电路设计 (3)3.系统理论分析与计算 (5)3.1.风力摆的运动控制分析 (5)3.2.系统算法的分析 (5)4.软件设计 (6)4.1.程序功能描述与设计思路 (6)4.2.程序流程图 (6)5.系统调试与测试 (7)5.1.系统调试 (7)5.2.系统测试 (7)6.结束语 (8)7.附录 (9)7.1.附录1:参考文献 (9)7.2.附录2:主要元器件清单 (9)7.3.附录3:电路原理图 (10)7.4.附录4:部分源程序 (11)方案论证与比较系统主控芯片选择方案一:采用AT89C51系列单片机作为控制的核心。
51单片机价格便宜,应用广泛,I/O 口的设置和使用操作简单。
但是51单片机的运行速度过慢,抗静电抗干扰能力弱,内部资源和存储器功能较少,而且无ADC,还需要用外接电路实现AD转换,使硬件电路变得复杂。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include <STC12C5A60S2.h>
#include <math.h>
#define lcd P0
sbit sl=P1^0;
sbit og=P1^1;
sbit st=P1^2;
sbit gs=P1^3;
sbit adcs=P2^0;
sbit adclk=P2^1;
sbit addo=P2^2;
sbit addi=P2^2;
sbit lcdrs=P1^5;
sbit lcdrw=P1^6;
sbit lcden=P1^7;
void delay(int n)
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<1000;j++);
}
void lcdwr_com(unsigned char com) //дָÁÊý
{
lcdrs=0;
delay(1);
lcd=com;
lcden=1;
lcden=0;
}
void lcdwr_data(unsigned char date) //дÊý¾Ý
{
lcdrs=1;
delay(1);
lcd=date;
lcden=1;
lcden=0;
}
void lcdinit()
//³õʼ»¯º¯Êý
{
lcdrw=0;
lcden=0;
lcdwr_com(0x38);
lcdwr_com(0x0c);
lcdwr_com(0x06);
lcdwr_com(0x01);
lcdwr_com(0x80);
}
int rd_ad(unsigned char *date,int SGL,int ODD) //¶ÁÈ¡adÊý¾Ý {
unsigned char data0=0,data1=0;
int i,j;
adcs=1;
adcs=0;
addi=1;
adclk=0;
adclk=1;
adclk=0; //µÚÒ»¸öÂö³å
addi=SGL; //ģʽѡÔñ
adclk=1;
adclk=0; //µÚ¶þ¸öÂö³å
addi=ODD;
adclk=1;
adclk=0; //µÚÈý¸öÂö³å
addo=1; //ÊÍ·ÅÊý¾Ý¶Ë¿Ú
for(i=0;i<8;i++){
data0<<=1;
adclk=1;
adclk=0;
j++;j++;j++;j++;j++;
j++;j++;j++;j++;j++; //ÑÓʱ5us
if(addo) data0|=0x01;
}
if(addo==1) data1|=0x80;
for(i=0;i<7;i++){
data1>>=1;
adclk=1;
adclk=0;
j++;j++;j++;j++;j++;
j++;j++;j++;j++;j++;
if(addo==1)data1|=0x80;
}
adcs=1;
addo=1;
adclk=1; //ÊÍ·Å×ÜÏß
if(data0==data1){
*date=data1; //ת»»³É¹¦±£´æÊý¾Ý
return 1;
}
else return 0;
}
void main()
{
unsigned char date;
double disp;
unsigned char BUF[6];
int pm; //·ûºÅλ
int i;
unsigned int angle; //½Ç¶È
sl=1;
og=1;
gs=1;
st=1;
lcdinit();
while(1){
if(rd_ad(&date,1,0)){
disp=date;
disp*=195;
if(disp>=16500){
pm=1; //Ϊ¸º
angle=5730*asin((disp-16500)/8000);//»¡¶Èת»»Îª½Ç¶È
if(angle%10>=5) angle=angle/10+1;
else angle/=10; //ËÄÉáÎåÈëËãһλСÊý
}
else {
pm=0; //ΪÕý
angle=5730*asin((16500-disp)/8000);//»¡¶Èת»»Îª½Ç¶È
if(angle%10>=5) angle=angle/10+1;
else angle/=10; //ËÄÉáÎåÈëËãһλСÊý
}
BUF[0]=angle/100%10+'0';
BUF[1]=angle/10%10+'0';
BUF[2]='.';
BUF[3]=angle%10+'0';
i=0;
while(BUF[i]=='0'&&BUF[i+1]!='.'){
BUF[i]='#';
i++;
}
lcdwr_com(0x80);
if(pm==1){
lcdwr_data('-');
delay(1);
}
for(i=0;i<4;i++)
if(BUF[i]!='#'){
lcdwr_data(BUF[i]);
delay(1);
}
lcdwr_data(0xdf);//ÏÔʾ¶È·ûºÅ
delay(1);
lcdwr_data(' ');//²¹Æë³¤¶È²î
delay(1);
lcdwr_data(' ');
}
delay(300);
}
}。