OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10434|回复: 23

請問三軸加速度計的零g補償要怎麼作?

[复制链接]

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
发表于 2012-12-21 13:56:58 | 显示全部楼层 |阅读模式
我平放在桌上時 除了z軸有1g之外
X軸和Y軸都有值...

Z軸朝下時(單位為mg)
X= -144 , y=35 , Z=1058

X軸朝下時(單位為mg)
X= -1135 , y=27 , Z=19

y軸朝下時(單位為mg)
X= -90 , y=1053 , Z=7

請問可以直接都加上一個offset
把它三軸的數值 補償到接近 x=0, y=0, z=1024嗎?




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-12-21 14:34:50 | 显示全部楼层
回复【楼主位】civic7366:
---------------------------------
你这个IC,没有自动校准功能么?
ADXL345有自动校准的,自动校准下,效果就好很多了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

15

主题

88

帖子

0

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2012-12-5
在线时间
1 小时
发表于 2012-12-21 15:14:25 | 显示全部楼层
回复【楼主位】civic7366:
---------------------------------
你这些数据是直接从寄存器读出来的么?
回复 支持 反对

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
 楼主| 发表于 2012-12-21 15:37:36 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
我看data sheet 沒看到@@
我再仔細找找看~謝謝
回复 支持 反对

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
 楼主| 发表于 2012-12-21 15:39:49 | 显示全部楼层
回复【3楼】玄心空月:
---------------------------------
是阿~我昨天講錯了... 不是高解析度的問題...
你加速度計千萬不要使能高通濾波器...
它會把重力加速度濾掉....
我就這樣傻傻的卡了2星期= =
回复 支持 反对

使用道具 举报

15

主题

88

帖子

0

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2012-12-5
在线时间
1 小时
发表于 2012-12-21 15:49:34 | 显示全部楼层
回复【5楼】civic7366:
---------------------------------
LSM303DLH的高通滤波设置是CTRL_REG_2,各位如下:

 BOOT         HPM1        HPM0          FDS         HPen2        HPen1       HPCF1        HPCF0 

HPM1和HPM0是设置滤波模式的:

 HPM1                    HPM0                                   High-pass filter mode 

   0                            0             Normal mode (reset reading HP_RESET_FILTER) 

   0                            1             Reference signal for filtering 

   1                           0              Normal mode (reset reading HP_RESET_FILTER)

这个地方我不知道怎么disable高通滤波器啊。。。 
回复 支持 反对

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
 楼主| 发表于 2012-12-21 18:16:27 | 显示全部楼层
回复【6楼】玄心空月:
---------------------------------
就是FDS阿~他原本預設值就是旁路了...
不要去設置他就好了...
你如果MEMS確定是好的 你又沒有像我之前那樣亂設一通的話
應該讀出來是沒問題的= =...

只需要設置CTRL1跟CTRL4就可以有基本功能了... 
回复 支持 反对

使用道具 举报

15

主题

88

帖子

0

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2012-12-5
在线时间
1 小时
发表于 2012-12-21 21:12:45 | 显示全部楼层
回复【7楼】civic7366:
---------------------------------
我现在用陀螺仪测试的时候,量程设置的是±2000°/s,但是我使劲摇晃的时候,得到的数值会超出2000很多,甚至达到了10000,好奇怪哦。。。这个是什么问题呢?
回复 支持 反对

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
 楼主| 发表于 2012-12-21 23:00:50 | 显示全部楼层
回复【8楼】玄心空月:
-------------------------------
你不是跟我用同一個陀螺儀 我用的是L3GD20
我覺得是用(32767~-32768)下去算的~它那個靈敏度讓你右移用的
例如 :加速度 FS 正負2g 時 你整個s16要右移4位(在LSM303DLHC是這樣)
回复 支持 反对

使用道具 举报

15

主题

88

帖子

0

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2012-12-5
在线时间
1 小时
发表于 2012-12-22 15:34:05 | 显示全部楼层
回复【9楼】civic7366:
---------------------------------
你找到校准的办法了吗?我现在数据测的都没啥问题了,也是静止时会有些波动。我看LSM303的应用手册,好像说是用加速度计测出来偏航轴和俯仰轴,再利用罗盘来测横滚轴,意思好像是说用加速度计和罗盘来互相补偿。
回复 支持 反对

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
 楼主| 发表于 2012-12-22 15:54:04 | 显示全部楼层
你靜止狀態得到的數據是多少 加速度部分?
會跟我一樣嗎? 我的加速度部分
X軸值會將近0.1g  y軸比較正常(0.01g左右跳動) Z軸也正常(1g左右)
我還不曉得要怎麼處裡...我看data sheet沒有看到有自動校正的功能...

我看inemo用的LSM303DLH row data 就很正常 x y軸都在0.01g左右 z軸 1g

回复 支持 反对

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
 楼主| 发表于 2012-12-22 15:55:33 | 显示全部楼层
回复【10楼】玄心空月:
---------------------------------
好像说是用加速度计测出来偏航轴和俯仰轴,再利用罗盘来测横滚轴,意思好像是说用加速度计和罗盘来互相补偿。

請問在第幾頁~我叫我們老師看 他數學很強@@
回复 支持 反对

使用道具 举报

15

主题

88

帖子

0

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2012-12-5
在线时间
1 小时
发表于 2012-12-22 16:31:41 | 显示全部楼层
回复【11楼】civic7366:
---------------------------------
我加速度计Z轴朝下的时候,X、Y轴的值都在0.01g左右,还是蛮正常的感觉
回复 支持 反对

使用道具 举报

15

主题

88

帖子

0

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2012-12-5
在线时间
1 小时
发表于 2012-12-22 16:35:32 | 显示全部楼层
回复【12楼】civic7366:
---------------------------------
AN3192这个文档里,第6页

where the pitch and roll can be measured by a 3-axis accelerometer. Therefore, the magnetic sensor measurements XM, YM, and ZM need to be compensated to obtain Xh and Yh as shown in Equation 2.
回复 支持 反对

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
 楼主| 发表于 2012-12-22 17:25:55 | 显示全部楼层
回复【14楼】玄心空月:
---------------------------------
謝謝@@ 我不知道還有這份檔案
可是我找不到LSM303DLHC的

第6頁那個我知道 它是在講 要計算航向之前 
要先經過pitch跟roll 補償傾角
才能計算羅盤指針

你看一下"加速度感測器與電子羅盤的原理介紹.PDF"
裡面有講...只是我的MEMS角度一開始就很像不是平的
要找一下轉換的矩陣@@
我用原子的教學裡面 求到我平放在桌上 MEMS的角度 X軸有4.5度 Y軸很接近0
所以應該經過座標轉換成平面的就可以用了...還在找公式中...= =
回复 支持 反对

使用道具 举报

15

主题

88

帖子

0

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2012-12-5
在线时间
1 小时
发表于 2012-12-22 18:04:56 | 显示全部楼层
回复【15楼】civic7366:
---------------------------------
我需要把这三个传感器的数据转换成一个四元数,你有办法吗?
回复 支持 反对

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
 楼主| 发表于 2012-12-22 18:40:30 | 显示全部楼层
我直接給你函式~這我畢業學長寫的~如果有啥不懂得...我也不懂@@
不過他之前用ADIS16405算姿態角 有算出來
void filterUpdate(float w_x, float w_y, float w_z, float a_x, float a_y, float a_z, float m_x, float m_y, float m_z)
{
// local system variables
float norm = 0; // vector norm
float SEqDot_omega_1 , SEqDot_omega_2 , SEqDot_omega_3 , SEqDot_omega_4 ; // quaternion rate from gyroscopes elements
float f_1 , f_2 , f_3 , f_4 , f_5 , f_6 ; // objective function elements
float J_11or24 , J_12or23 , J_13or22 , J_14or21 , J_32 , J_33 , // objective function Jacobian elements
J_41 , J_42 , J_43 , J_44 , J_51 , J_52 , J_53 , J_54 , J_61 , J_62 , J_63 , J_64 ; //
float SEqHatDot_1 , SEqHatDot_2 , SEqHatDot_3 , SEqHatDot_4 ; // estimated direction of the gyroscope error
float w_err_x , w_err_y , w_err_z ; // estimated direction of the gyroscope error (angular)
float h_x , h_y , h_z ; // computed flux in the earth frame
// axulirary variables to avoid reapeated calcualtions
float halfSEq_1 = 0.5f * SEq_1;
float halfSEq_2 = 0.5f * SEq_2;
float halfSEq_3 = 0.5f * SEq_3;
float halfSEq_4 = 0.5f * SEq_4;
float twoSEq_1 = 2.0f * SEq_1;
float twoSEq_2 = 2.0f * SEq_2;
float twoSEq_3 = 2.0f * SEq_3;
float twoSEq_4 = 2.0f * SEq_4;
float twob_x = 2.0f * b_x;
float twob_z = 2.0f * b_z;
float twob_xSEq_1 = 2.0f * b_x * SEq_1;
float twob_xSEq_2 = 2.0f * b_x * SEq_2;
float twob_xSEq_3 = 2.0f * b_x * SEq_3;
float twob_xSEq_4 = 2.0f * b_x * SEq_4;
float twob_zSEq_1 = 2.0f * b_z * SEq_1;
float twob_zSEq_2 = 2.0f * b_z * SEq_2;
float twob_zSEq_3 = 2.0f * b_z * SEq_3;
float twob_zSEq_4 = 2.0f * b_z * SEq_4;
float SEq_1SEq_2;
float SEq_1SEq_3 = SEq_1 * SEq_3;
float SEq_1SEq_4;
float SEq_2SEq_3;
float SEq_2SEq_4 = SEq_2 * SEq_4;
float SEq_3SEq_4;
float twom_x = 2.0f * m_x;
float twom_y = 2.0f * m_y;
float twom_z = 2.0f * m_z;
// normalise the accelerometer measurement
norm = sqrt(a_x * a_x + a_y * a_y + a_z * a_z);
a_x /= norm;
a_y /= norm;
a_z /= norm;
// normalise the magnetometer measurement
norm = sqrt(m_x * m_x + m_y * m_y + m_z * m_z);
m_x /= norm;
m_y /= norm;
m_z /= norm;
// compute the objective function and Jacobian

err_buff = sqrt(f_1_buff*f_1_buff + f_2_buff*f_2_buff + f_3_buff*f_3_buff + f_4_buff*f_4_buff + f_5_buff*f_5_buff + f_6_buff*f_6_buff);

f_1 = (twoSEq_2 * SEq_4 - twoSEq_1 * SEq_3) - a_x;
f_2 = (twoSEq_3 * SEq_4 + twoSEq_1 * SEq_2) - a_y;
f_3 = (1.0f - twoSEq_2 * SEq_2 - twoSEq_3 * SEq_3) - a_z;
f_4 = twob_x * (0.5f - SEq_3 * SEq_3 - SEq_4 * SEq_4) + twob_z * (SEq_2SEq_4 - SEq_1SEq_3) - m_x;
f_5 = twob_x * (SEq_2 * SEq_3 - SEq_1 * SEq_4) + twob_z * (SEq_1 * SEq_2 + SEq_3 * SEq_4) - m_y;
f_6 = twob_x * (SEq_1SEq_3 + SEq_2SEq_4) + twob_z * (0.5f - SEq_2 * SEq_2 - SEq_3 * SEq_3) - m_z;

f_1_buff = f_1;
f_2_buff = f_2;
f_3_buff = f_3;
f_4_buff = f_4;
f_5_buff = f_5;
f_6_buff = f_6;

if((sqrt(f_1*f_1 + f_2*f_2 + f_3*f_3 + f_4*f_4 + f_5*f_5 + f_6*f_6)-err_buff)>0)
{
if(count_2!=0)
{
count_1=0;
count_2=0;
beta=0.01058;//1;
}
count_1++;
if(count_1 >= 2)
beta=0.001058;//0.5;

}
else
{
if(count_1!=0)
{
count_1=0;
count_2=0;
beta=0.01058;//1;
}
count_2++;
if(count_2 >= 4)
beta=0.1058;//1.5;
}
if(count<500)
beta=1;
J_11or24 = twoSEq_3; // J_11 negated in matrix multiplication
J_12or23 = 2.0f * SEq_4;
J_13or22 = twoSEq_1; //J_13 negated in matrix multiplication
J_14or21 = twoSEq_2;
J_32 = 2.0f * J_14or21; // negated in matrix multiplication
J_33 = 2.0f * J_11or24; // negated in matrix multiplication
J_41 = twob_zSEq_3; // negated in matrix multiplication
J_42 = twob_zSEq_4;
J_43 = 2.0f * twob_xSEq_3 + twob_zSEq_1; // negated in matrix multiplication
J_44 = twob_zSEq_2 - 2.0f * twob_xSEq_4; 
J_51 = twob_zSEq_2 - twob_xSEq_4; 
J_52 = twob_xSEq_3 + twob_zSEq_1;
J_53 = twob_xSEq_2 + twob_zSEq_4;
J_54 = twob_zSEq_3 - twob_xSEq_1; 
J_61 = twob_xSEq_3;
J_62 = twob_xSEq_4 - 2.0f * twob_zSEq_2;
J_63 = twob_xSEq_1 - 2.0f * twob_zSEq_3;
J_64 = twob_xSEq_2;
// compute the gradient (matrix multiplication)
SEqHatDot_1 = (-1)*J_11or24 * f_1 + J_14or21 * f_2 - J_41 * f_4 + J_51 * f_5 + J_61 * f_6;
SEqHatDot_2 = J_12or23 * f_1 + J_13or22 * f_2 - J_32 * f_3 + J_42 * f_4 + J_52 * f_5 + J_62 * f_6;
SEqHatDot_3 = (-1)*J_13or22 * f_1 + J_12or23 * f_2 - J_33 * f_3  - J_43 * f_4 + J_53 * f_5 + J_63 * f_6;
SEqHatDot_4 = J_14or21 * f_1 + J_11or24 * f_2 + J_44 * f_4 + J_54 * f_5 + J_64 * f_6;
// normalise the gradient to estimate direction of the gyroscope error
norm = sqrt(SEqHatDot_1 * SEqHatDot_1 + SEqHatDot_2 * SEqHatDot_2 + SEqHatDot_3 * SEqHatDot_3 + SEqHatDot_4 * SEqHatDot_4);
SEqHatDot_1 = SEqHatDot_1 / norm;
SEqHatDot_2 = SEqHatDot_2 / norm;
SEqHatDot_3 = SEqHatDot_3 / norm;
SEqHatDot_4 = SEqHatDot_4 / norm;
// compute angular estimated direction of the gyroscope error
w_err_x = twoSEq_1 * SEqHatDot_2 - twoSEq_2 * SEqHatDot_1 - twoSEq_3 * SEqHatDot_4 + twoSEq_4 * SEqHatDot_3;
w_err_y = twoSEq_1 * SEqHatDot_3 + twoSEq_2 * SEqHatDot_4 - twoSEq_3 * SEqHatDot_1 - twoSEq_4 * SEqHatDot_2;
w_err_z = twoSEq_1 * SEqHatDot_4 - twoSEq_2 * SEqHatDot_3 + twoSEq_3 * SEqHatDot_2 - twoSEq_4 * SEqHatDot_1;
// compute and remove the gyroscope baises
w_bx += w_err_x * deltat * zeta;
w_by += w_err_y * deltat * zeta;
w_bz += w_err_z * deltat * zeta;
w_x -= w_bx;
w_y -= w_by;
w_z -= w_bz;
// compute the quaternion rate measured by gyroscopes
SEqDot_omega_1 = -halfSEq_2 * w_x - halfSEq_3 * w_y - halfSEq_4 * w_z;
SEqDot_omega_2 = halfSEq_1 * w_x + halfSEq_3 * w_z - halfSEq_4 * w_y;
SEqDot_omega_3 = halfSEq_1 * w_y - halfSEq_2 * w_z + halfSEq_4 * w_x;
SEqDot_omega_4 = halfSEq_1 * w_z + halfSEq_2 * w_y - halfSEq_3 * w_x;
// compute then integrate the estimated quaternion rate
SEq_1 += (SEqDot_omega_1 - (beta * SEqHatDot_1)) * deltat;
SEq_2 += (SEqDot_omega_2 - (beta * SEqHatDot_2)) * deltat;
SEq_3 += (SEqDot_omega_3 - (beta * SEqHatDot_3)) * deltat;
SEq_4 += (SEqDot_omega_4 - (beta * SEqHatDot_4)) * deltat;
// normalise quaternion
norm = sqrt(SEq_1 * SEq_1 + SEq_2 * SEq_2 + SEq_3 * SEq_3 + SEq_4 * SEq_4);
SEq_1 /= norm;
SEq_2 /= norm;
SEq_3 /= norm;
SEq_4 /= norm;
// compute flux in the earth frame
SEq_1SEq_2 = SEq_1 * SEq_2; // recompute axulirary variables
SEq_1SEq_3 = SEq_1 * SEq_3;
SEq_1SEq_4 = SEq_1 * SEq_4;
SEq_3SEq_4 = SEq_3 * SEq_4;
SEq_2SEq_3 = SEq_2 * SEq_3;
SEq_2SEq_4 = SEq_2 * SEq_4;
//if(count%1000==999)
//{
h_x = twom_x * (0.5f - SEq_3 * SEq_3 - SEq_4 * SEq_4) + twom_y * (SEq_2SEq_3 - SEq_1SEq_4) + twom_z * (SEq_2SEq_4 + SEq_1SEq_3);
h_y = twom_x * (SEq_2SEq_3 + SEq_1SEq_4) + twom_y * (0.5f - SEq_2 * SEq_2 - SEq_4 * SEq_4) + twom_z * (SEq_3SEq_4 - SEq_1SEq_2);
h_z = twom_x * (SEq_2SEq_4 - SEq_1SEq_3) + twom_y * (SEq_3SEq_4 + SEq_1SEq_2) + twom_z * (0.5f - SEq_2 * SEq_2 - SEq_3 * SEq_3);
// normalise the flux vector to have only components in the x and z
b_x = sqrt((h_x * h_x) + (h_y * h_y));
b_z = h_z;
//}
count++;
}
回复 支持 反对

使用道具 举报

15

主题

88

帖子

0

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2012-12-5
在线时间
1 小时
发表于 2012-12-22 19:17:55 | 显示全部楼层
回复【17楼】civic7366:
---------------------------------
额。。。这个代码。。。看的头疼。。。
回复 支持 反对

使用道具 举报

15

主题

88

帖子

0

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2012-12-5
在线时间
1 小时
发表于 2012-12-22 20:20:19 | 显示全部楼层
回复【17楼】civic7366:
---------------------------------

陀螺儀測的是三個軸的旋轉角度,這三個角度是不是就對應著Pitch、Roll、Heading?
是不是只用陀螺儀就能確定MEMS的姿態?
加速度計和羅盤只是用來補償陀螺儀的誤差的?
回复 支持 反对

使用道具 举报

58

主题

288

帖子

1

精华

高级会员

Rank: 4

积分
814
金钱
814
注册时间
2012-3-29
在线时间
81 小时
发表于 2013-1-17 17:18:15 | 显示全部楼层
回复【9楼】civic7366:
---------------------------------
可以交流一下吗?QQ:1024549573 我也在用L3Gd20和LSM303DLHC
回复 支持 反对

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
 楼主| 发表于 2013-1-19 01:32:02 | 显示全部楼层
回复【20楼】业未央:
---------------------------------
我沒有QQ....
你也是要算姿態角嗎?
我目前也只是把那9軸資料抓出來而已...
演算法還不確定要用哪個...
回复 支持 反对

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
 楼主| 发表于 2013-1-19 01:51:16 | 显示全部楼层
回复【19楼】玄心空月:
---------------------------------

1.是阿...如果你定義的方向跟你實際MEMS擺放的有一樣就是...
2.不是...是有加速度計可以知道Pitch、Roll 原子的實驗裡有....
   前提是你那的東西不可以作位移運動...
   因為是從重力加速度的分量求得傾角...只要你有其它外力加入就不準了...
   
   只要有磁方位計就可以知道Heading 前提是Pitch、Roll不可以有值
   不然就需要作傾角補償...所以磁方位計+加速度計就是電子羅盤
   這裡也一樣...因為Pitch、Roll是由重力加速度的分量求得
   只要在位移運動中就不準了...

   所以要得到運動中的物體的姿態角 
   我只知道最少需要作四元數然後再尤拉角轉換 
   
 
回复 支持 反对

使用道具 举报

58

主题

288

帖子

1

精华

高级会员

Rank: 4

积分
814
金钱
814
注册时间
2012-3-29
在线时间
81 小时
发表于 2013-1-19 08:33:19 | 显示全部楼层
回复【21楼】civic7366:
---------------------------------
嗯,我打算先做静态物体的姿态然后再做动态的。你是直接用从寄存器里读出来的值还是经过处理了?
回复 支持 反对

使用道具 举报

58

主题

288

帖子

1

精华

高级会员

Rank: 4

积分
814
金钱
814
注册时间
2012-3-29
在线时间
81 小时
发表于 2013-1-19 08:38:03 | 显示全部楼层
回复【10楼】玄心空月:
---------------------------------
你用的是F3 Discovery 还是?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-21 21:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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