成为订阅者(免费)

加入29,000名其他订阅者以获得用户销售折扣和 其他免费资源。
:
:
大学教师'担心 - 您的邮件地址完全是 安全的。我保证使用它 只要 to send you MicroZine.

ADXL345

ADXL345是3轴加速度计,此设备有两个基本用途:

  • 定向:确定使用重力的方式。
  • 瞬时力:检测应用力。

典型应用包括倾斜和运动感测量。自己 调平平台,无人机取向,倾斜度的角度测量,下降 sensing.

它可以测量加速度 高达16克,具有13位分辨率转换为分辨率 3.9mg(G表示9.8M / s的重力2)。

ADXL345在PC上处理视图

要使它更有用,它有几个内置的功能:

  • 门槛。
  • 窃听。
  • 跌倒。
  • 自我测试。

您可以在每个轴上设置阈值以允许检测移动 即,超过某种加速度水平,它将产生一个 打断。您可以使用它来检测一盒敏感设备的内容是否已误报。

ADXL345突破板

ADXL345突破板


您还可以在任何方向上检测单个或双重绑定。其他 内置功能可以检测到跌落感应的自由堕落。

ADXL345规范

  Parameter
价值
  Voltage Supply (Vs)
2v0〜3v6
  数字电源电压(VDD I / O)
1.7V〜与
  Interface
I2C / spi.
  I2C Address (取决于Alt Addr)
0x1d,0x53
  Interface Speed
100khz,400khz / 5MHz
  分辨率(2G到16G)
10〜13位
  LSB(400Hz,2V5)中的噪声[1] [2]
<1.7LSB (typ)
  Shock survival
10,000G.
  Active current (ODR >=100Hz)
〜150ua(170ua max)     
  Active current (ODR <100Hz) ~30uA
  待机模式(漏电流)
0.1uA
  工作温度
-40°C〜85°C
           [1] - 具有较高电源电压的噪声性能。
            [2] - 数据表图51。

ADXL345框图

ADXL345框图来自模拟设备 ADXL345数据表.

突发板规格

如上所述除电源外。这 突发板 has a LDO 3V3稳压器,使输入电压为VCC必须:

 4.0V至6V..

笔记: 这仅适用于突破板 - 实际的芯片vs = 2V0.

还:

  • CS由10K电阻(Active)拉高。一些板可以是4k7。
  • ADDR(SDO)由4K7电阻拉低。
  • SCL.通过4K7电阻将高达3V3拉到3V3。
  • SDA.通过4K7电阻将高达3V3拉到3V3。
  • VDDIO连接到VS,两者都连接到3V3。

由于I2C接口使用开路输出,因此接口是 兼容5V系统。随着Arduino从未驱动则这是真的 输出5V它只能跟踪输出,让电压水平拉到3V3。 要生成零,它会输出也兼容的数字零 使用3V3接口。

警告: 如果在SPI模式下使用芯片,那么您需要级别 转换器(使用5V控制器时)或仅在整个中使用3V3的控制器板。

突发板ICS.


ADXL345突破板芯片(IC)
笔记: 注意:如果使用I2C模式,则添加3V3调节器意味着电路板可以在5V系统中使用。

ADXL345突破板GY-291原理图

ADXL345 Breakut Board原理图

ADXL345接口Arduino

使用ADXL345与Arduino非常简单,如果您使用 I2C接口,因为这允许控制器在5V和5V中运行 ADXL345以3V3运行。

笔记: 在I2C模式下,SDO引脚是输入,选择地址。

I2C地址

对于I2C模式操作,芯片具有地址引脚。在突破板上,这是下拉低给出的I2C地址:

addr / sdo引脚的状态
I2C地址(十六进制)
I2C地址(二进制)
Addr拉高 0x1D
%0001-1101.
Addr拉低 0x53 %0101-0011.


笔记: Alt地址引脚是SPI模式的输出,适用于SDO。

ADXL345输出数据速率

ODR为100Hz,由BW_Rate寄存器中的位设置。在库中使用setRate()和以下定义的值:

 ADXL345_RATE_3200 // Must use SPI mode
 ADXL345_RATE_1600 // Must use SPI mode
 ADXL345_RATE_800  // Must use I2C rate of >=400kHz
 ADXL345_RATE_400  // Must use I2C rate of >=200kHz
 ADXL345_RATE_200  // Must use I2C rate of >=100kHz
 ADXL345_RATE_100 (default)
 ADXL345_RATE_50
 ADXL345_RATE_25
 ADXL345_RATE_12P5
 ADXL345_RATE_6P25
 ADXL345_RATE_3P13
 ADXL345_RATE_1P56
 ADXL345_RATE_0P78
 ADXL345_RATE_0P39
 ADXL345_RATE_0P20

更改数据速率对于省电(通过慢速)很有用。

在100Hz和高于目前的消耗量是140UA(数据表P14) - 除1600Hz(90UA)之外。最小值 您可以获得0.39Hz(以下),使用23UA。

ADXL345分辨率

您可以从以下值中选择加速度范围:

   2g, 4g, 8g, 16g.

所有分辨率都使用相同的缩放因子,因为 内部DAC分辨率从10位变为13位 分辨率被选中。所以每一位总是值3.9mg:

计算G / LSB
结果
2 / POW(2,10-1)
0.003906
4 / POW(2,11-1) 0.003906
8 / POW(2,12-1)
0.003906
16 / POW(2,13-1)
0.003906

注意'-1'允许标志位给出正面或负面结果。  

使用16g模式可提供最大动态范围。

然而,来自数据表的提取物显示了与上述理想值的实际偏差(来自理想的敏感性偏差):

从每个LSB的理想MG偏差偏差
如果将ADXL345的范围限制为10bits,那么它变得更少 敏感(相当明显)。对于全方位,你得到典型的 灵敏度为3.9mg / lsb和3.5〜4.3mg / lsb min〜最大偏差(这 使用full_res位设置。为什么你会限制为10bits是 something I don'理解 - 似乎没有意义。

为什么不±90°?

为什么可以'ADXL345加速度计表示±90°?

如果您在下面运行该程序,则会看到加速度计是 非常擅长在低角度(在平坦表面上)表示倾斜 大约70°,但没有达到±90°。事实上它可以'似乎达到了魔法数字±90°!

起初,我以为加速度计有问题 因为没有人似乎谈论这个。为什么不可能 measure all angles?

如果你想拿着一块木头 - 最大的力量 是水平持有它的。你越多,向上,到了 垂直位置,重力较少会影响它,因此 - 加速度计变得不那么敏感。

事实证明,加速度计的灵敏度随着速度降低 增加角度并遵循近窦响应,精度降低倾斜的近90°。

"该传感器是基于多晶硅表面 - 微机械结构 顶部硅晶片。多晶硅弹簧暂停结构 晶片的表面并为引起的抗力提供抗力 应用加速度。"  [datasheet]

您可以想象传感器作为悬挂在弹簧上的光束,随着 梁和支撑基座之间的电容 加速度测量。当光束垂直于 加速场小倾斜变化将具有大的效果作为重力 行动在更大的区域。

当梁垂直倾斜时,传感器变成 较少敏感(与重力载体的相互作用)直到,全面 垂直方向,它不能返回自重力以来的读数 矢量对梁没有影响。

在C Fisher中的模拟设备应用笔记AN-1057中的加速度计灵敏度非常好讨论 这里。下图来自该应用程序注意:

加速度计倾斜角灵敏度1度步骤

该图表明,大约0°〜23°倾斜,您只需要一个 16mg / LSB的灵敏度来解析1°步,约为60°倾斜,您需要8mg,周围 80°你需要4毫克。这就是为什么ADXL345无法显示90° 它的灵敏度太粗糙,无法在该角度(3.8mg)上倾斜。所以 ADXL345对于倾斜倾斜至约±80°,良好。这是案件 在哪里,您希望将倾斜测量值解析为1°。

提示: 通过过采样来提高分辨率以解决较小的角度。

为什么可以't I measure yaw?

偏航是Z轴的旋转 - 或指南针标题。您可能认为ADXL345 Z轴不起作用,但它是!

当您绕X或Y轴旋转加速度计时,传感器 经历或多或少的重力矢量,因此输出 加速度的不同价值。

当您绕Z轴旋转加速度计时,传感器 体验重力矢量的相同值,以便您可以't measure yaw.

这就是加速度计与用于测量偏航值的陀螺仪或磁力计结合使用的原因。

什么是z加速度计适用于?

所以那么问题就是为什么你需要一个Z-Accelerometer measurement?

z轴 加速度计表明偏离垂直。与任何一个x结合 或者y加速度计值您可以计算间距和滚动(偏差 从垂直于x或y方向)。

ADXL345数据表

下载 这里.

硬件连接:

您可以使用Arduino Uno或Nano(纳米方便 无焊接面包板使用,因为它非常适合一个人。这里是ADXL345. 用于I2C模式下的Arduino,因此只需连接SDA,SCL,电源和地面:

arduino. Uno / Nano连接
ADXL345连接
A4
SDA.
A5
SCL.
GND.
GND.
5V
vcc.

与Arduino接口的ADXL345简单地以上面连接I2C接口。

软件

I2CDEV库

i2cdevlib具有adxl345库代码以及许多其他设备的代码。

//github.com/jrowberg/i2cdevlib

此库具有许多功能,支持芯片,并可以操作 在多个处理器上,但它有点涉及安装和 您无法使用自动Arduino Zip文件安装程序。

解压缩文件(ic2devlib-master)然后导航到arduino IC2devlib-master中的目录。复制目录ADXL345和 i2cdev到arduino图书馆目录,通常在这里找到(开 windows):

    C:\Users\<User name>\ documents \ arduino \图书馆

ADXL345自检草图

因为设备是机械系统,ADXL345包括自我 测试电路在物理上施加静电场 测量元素。这些对引力具有类似的效果 加速添加到现有的加速元素。

注意:数据表第31页更多使用自检。

以下程序在3.3V下测试芯片(电源电压 更改测试参数)。该程序将结果输出到 串行监视器并为您提供通行证/失败指示。你也可以 观察原始g值,卷和间距。


如果您的方法,请使用此草图,即AXL345无法正常工作。

// By John Main © best-microcontroller-projects.com
// ADXL345 Self Test, show g and roll pitch values
#include "math.h"
#include "Wire.h"
#include "I2Cdev.h" // Has MIT license.
#include "ADXL345.h"

ADXL345 accel;

#define LED_PIN LED_BUILTIN // (Arduino is 13, Teensy is 6, nano? so use LED_BUILTIN)
bool toggleLED = false;
static byte showAngles = 0; // Display operation

void setup() {
    Wire.begin();
    Serial.begin(115200);

    // initialize device
    Serial.println( F("启动I2C设备......") );
    accel.在itialize();

    Serial.println( F("Checking ADXL345...") );
    if(accel.testConnection())
      Serial.println( F("ADXL345 comms Ok.") );
    else {
       Serial.println( F("ADXL345 comms failed.") );
       while(1); // Hang on error.
    }
    Serial.println(F("输入T  - 自检,S  - 显示角度"));

    accel.setFullResolution(1); // 0 => 10 bit mode.
    accel.setRate(ADXL345_RATE_100);  // This is default but shows the value.
    accel.setLowPowerEnabled(0);
    accel.setRange(3); // 0 => 2g, 3 => 16g

    pinMode(LED_PIN, OUTPUT);
}

// Get readings for self test - A set of n averaged results.
void ADXL345GetAvgN(在t16_t *xi,在t16_t *yi,在t16_t *zi,uint8_t n) {
在t16_t x,y,z;
在t32_t ax,ay,az;
uint8_t i;

    ax=0; ay=0; az=0;
    for(i=0;i<n;i++) {
      accel.getAcceleration(&x, &y, &z);
      ax += x; ay += y; az +=z;
      delay(100); // Don't read faster than 100Hz: (10*100ms=1s 1s/10=100ms)
    }
    *xi = ax/n; *yi = ay/n; *zi = az/n;
}

void print_minmax(在t vmin,在t vmax) {
  Serial.print('(');Serial.print(vmin);Serial.print(" ~ ");Serial.print(vmax);Serial.print(')');
}

// This function setsup the relevant parameters while preserving them e.g. range
void ADXL345SelfTest(void) {
uint16_t fr,st,rt,lp,ra;
    fr = accel.getFullResolution();
    rt = accel.getRate();
    lp = accel.getLowPowerEnabled();
    ra = accel.getRange();

    在t16_t avg_x=0, avg_y=0, avg_z=0;
    在t16_t avg_stx=0, avg_sty=0, avg_stz=0;
    在t16_t ax,ay,az;
    在t16_t x,y,z;
    uint8_t i;

    // Setup operating mode required for self test.
    accel.setFullResolution(0); // 0 => 10 bit mode.
    accel.setRate(ADXL345_RATE_100);
    accel.setLowPowerEnabled(0);
    accel.setRange(3); // 3 => 16g

    ADXL345GetAvgN(&avg_x, &avg_y, &avg_z, 10);

    accel.setSelfTestEnabled(1);
    ADXL345GetAvgN(&avg_stx,&avg_sty,&avg_stz,5);    // Let device settle for >=4 samples.
    ADXL345GetAvgN(&avg_stx, &avg_sty, &avg_stz, 10);
    accel.setSelfTestEnabled(0);

    // Display results
    x = avg_stx-avg_x; y = avg_sty-avg_y; z = avg_stz-avg_z;
    Serial.print("\nstx-x\t");Serial.print(x);Serial.print("\t");
    Serial.print("sty-y\t");Serial.print(y);Serial.print("\t");
    Serial.print("stz-z\t");Serial.print(z);Serial.print("\t");

    // 3V3 error limit scale factors.
    #define scale_factor_xy  1.77;
    #define scale_factor_z   1.47;
    float vmin,vmax;

    Serial.print('\n');

    //Value limits are from ADXL345 datasheet - Tables 14 and 18.
    vmin = 6 * scale_factor_xy; vmax = 67 * scale_factor_xy;
    Serial.print( (x>=vmin && x <vmax) ? "X PASS " : "X FAIL " );
    print_minmax(vmin,vmax); Serial.print('\n');

    vmin = -67 * scale_factor_xy; vmax = -6 * scale_factor_xy;
    Serial.print( (y>=vmin && y <vmax) ? "Y PASS " : "Y FAIL " );
    print_minmax(vmin,vmax); Serial.print('\n');

    vmin = 10 * scale_factor_z; vmax = 110 * scale_factor_z;
    Serial.print( (z>=vmin && z <vmax) ? "Z PASS " : "Z FAIL " );
    print_minmax(vmin,vmax);Serial.print('\n');

    accel.setFullResolution(fr);
    accel.setRate(rt);
    accel.setLowPowerEnabled(lp);
    accel.setRange(ra);
}

void showAccelAngles(void) {
  float x,y,z;
  在t16_t ax,ay,az;
   // Show angles
   // Datasheet: OPERATION AT VOLTAGES OTHER THAN 2.5 V
   // 3v3 X,Y 25mg too high, z 20mg too low
   // 3V3 lsb value 265/g   (g/265)=0.03698
   // 2V5 lsb value 256/g   (g/256)=0.03828 z axis unaffected by voltage supply.
   #define ADXL345_LSBVAL_3V3 3.698E-3
   #define ADXL345_LSBVAL_2V5 3.828E-3

   accel.getAcceleration(&ax, &ay, &az);
   x = ax*ADXL345_LSBVAL_3V3 - 25E-3;
   y = ay*ADXL345_LSBVAL_3V3 - 25E-3;
   z = az*ADXL345_LSBVAL_2V5 + 20e-3;

   float fNum;
   Serial.print(F("g values: "));
   fNum=x;Serial.print(fNum); Serial.print("\t");
   fNum=y;Serial.print(fNum); Serial.print("\t");
   fNum=z;Serial.print(fNum); Serial.print("\t");

   float r = sqrt(x*x + y*y + z*z);

   // Angle from x,y axis to gravity vector.
   在t roll   = 180/M_PI * ( M_PI/2 - (acos(y/r) ) );
   在t pitch  = 180/M_PI * ( M_PI/2 - (acos(x/r) ) );

   Serial.print(F("Roll ")); Serial.print(roll); Serial.print(' ');
   Serial.print(F("Pitch "));Serial.print(pitch);Serial.print(' ');
   Serial.print('\n');
}

void loop() {
float x,y,z;
static byte ch;

   if(Serial.available()) {
     ch=Serial.read();
   }

   if(ch=='t') {
      Serial.println(F("Testing..."));
      ADXL345SelfTest();
      showAngles = 0;
   }
   else if(ch=='s')
      showAngles = 1;

   if (showAngles) showAccelAngles();

   toggleLED = !toggleLED;
   digitalWrite(LED_PIN, toggleLED);
   delay(200);
}


[文件:adxl345_self_test.ino]

自检程序输出

类型't'开始自检和's输出g,卷和俯仰值。

以下显示了程序的典型输出:

启动I2C设备......
检查ADXL345 ...
ADXL345 Comms Ok。
输入T - 自检,S - 显示角度
测试......

stx-x 59 sty-y    -18    stz-z    88   
x通过(10〜118)
Y通过(-118〜-10)
Z通过(14〜161)
G值:-0.17 -0.02 1.05卷0间距-9
G值:-0.21 0.00 1.08卷0间距-11
G值:-0.18 -0.01 1.03卷0间距-9
G值:-0.17 -0.02 1.07卷-1间距-9
G值:-0.17 -0.02 1.07卷0间距-8
G值:-0.01 -0.03 1.00卷-1间距0
G值:-0.69 -0.06 0.77卷-3间距-41
G值:-1.30 -0.15 0.36卷-6间距-73
G值:0.24 -0.21 0.95辊-12间距13
G值:0.22 -0.42 0.96辊-23间距11
G值:-0.06 -0.82 0.87辊-43间距-2
G值:-0.01 0.05 1.01卷2间距0

剪影例2.

该程序仅输出滚动和音高值 - 这些用于显示 加速度计方向的处理模拟。这个 是Arduino的处理代码产生的视图类型 sketch below:

ADXL345在PC上处理视图



// By John Main © best-microcontroller-projects.com
// This sketch outputs serial data as 2 parameters (roll and pitch)
// for display in processing code on PC.

#include "math.h"
#include "Wire.h"
#include "I2Cdev.h"
#include "ADXL345.h"

#define LED_PIN LED_BUILTIN
// Macros to allow 0 ~ 180 mapped to -90 to 90

ADXL345 accel;

bool blinkState = false;

void setup() {

    Wire.begin();
    Serial.begin(115200);

    accel.在itialize();

    accel.setRate(ADXL345_RATE_100);  // This is default but shows the value.
    accel.setFullResolution(1); // 0 => 10 bit mode.
    accel.setLowPowerEnabled(0);
    accel.setRange(0); // 0 => 2g, 3 => 16g

    pinMode(LED_PIN, OUTPUT);
}

void loop() {
float r,x,y,z;
在t16_t ax, ay, az;

  // Datasheet: OPERATION AT VOLTAGES OTHER THAN 2.5 V
  // 3v3 X,Y 25mg too high, z 20mg too low
  // 3V3 lsb value 265/g c  (g/265)=0.03698
  // 2V5 lsb value 256/g   (g/256)=0.03828 z axis unaffected by voltage supply.
  #define ADXL345_LSBVAL_3V3 3.698E-3
  #define ADXL345_LSBVAL_2V5 3.828E-3

  accel.getAcceleration(&ax, &ay, &az);
  x = ax*ADXL345_LSBVAL_3V3 - 25E-3;
  y = ay*ADXL345_LSBVAL_3V3 - 25E-3;
  z = az*ADXL345_LSBVAL_2V5 + 20e-3;

  r = sqrt(x*x+y*y+z*z);
  // Angle from x,y axis to gravity vector.
  在t roll   = 180/M_PI * ( M_PI/2 - (acos(y/r) ) );
  在t pitch  = 180/M_PI * ( M_PI/2 - (acos(x/r) ) );

  Serial.print(roll); Serial.print(' ');
  Serial.print(pitch);Serial.print(' ');
  Serial.print('\n');

  // blink LED to indicate activity
  blinkState = !blinkState;
  digitalWrite(LED_PIN, blinkState);
  delay(50);
}


[文件:deples-lort-pitch.ino]

处理草图

这显示了加速度计作为3D的方向 屏幕上的图像 - 它模仿加速度计的方向 real time.

在此下载处理.

笔记: 将串行端口更改为您自己的端口。当您运行该程序时 输出文本屏幕下方将显示可用的串行端口。 更改com19以匹配您的。


// By John Main © best-microcontroller-projects.com
// This sketch accepts serial data as 2 parameters (roll and pitch)
// and displays a 3d representation of the accelerometer.
import processing.serial.*;

Serial myPort;
String 在String;  // Input string from serial port
在t lf = 10;      // ASCII linefeed
float rx,ry,rz;
float mouseZoom;

float RAD_TO_DEGREE = 180/PI;
float DEGREE_TO_RAD = PI/180;


void setup() {
  size(400,400,P3D);

  print("-----------------------------");
  print("START");
  print("--------------------\n");
  // List all the available serial ports:
  printArray(Serial.list());

  // Open the port you are using at the rate you want:
  // Replace COMP19 with whatever port you want to use.
  myPort = new Serial(this, "COM19", 115200);
  myPort.bufferUntil(ENTER);

  mouseZoom= width/2;
}

void mouseWheel(MouseEvent event) {
  float e = event.getCount();
  mouseZoom += e*10;
}

void draw() {
  在t x,y=70,ysep=20;
  background(80);
  fill(#ffffff);
  translate(100,180);

  if (在String!=null) {
    在String =  trim(在String);
    text("received: " + 在String, 10,y);y+=ysep;//50
    在t[] nums = 在t( split(在String,' ') );
    text("roll " + nums[0],10,y);y+=ysep; // 70
    text("pitch " + nums[1],10,y);y+=ysep;
    rx = nums[0];
    ry = nums[1];
  }

  pushMatrix();
  // FOV START
  float fov = 0.6086836; float aspect=1; float cameraZ=636.74;
  perspective(fov, aspect, cameraZ/10.0, cameraZ*10.0);
  // END FOV

  // Angle camera view to left and above (1st 2 params).
  camera((width/2)*0.4, height/2*0.05, (height/2) / tan(PI/6), width/2, height/2, 0.5, 0, 1, 0);

  translate(200,200);

  stroke(#F4F52F); // Axes
  box(170,1,1);
  box(1,1,60);
  stroke(0);
  // Axes - processing    : y down x right z out of page
  // Axes - accelerometer : y - into page, x right, z up.
  rotateX(-rx * DEGREE_TO_RAD);
  rotateZ(-ry * DEGREE_TO_RAD); // Different z axis for accelerometer.

  fill(#6598C9,100);
  box(150,10,40);
  fill(#F52FF2,100);
  translate(0,10,0);
  box(150,10,40);

  popMatrix();

}

void serialEvent(Serial myPort) {
      在String = myPort.readString();
}


[文件:roll_pitch.pde]


什么's next:
   
       如何制作数字罗盘 (必需的加速度计确保精度)。

深入潜入mems

这是一个尖端的大学层面教程和MEMS和 具有特定振荡器覆盖的微机械结构 applications.

这提供了令人迷人的外观来自微孔的世界 1989年至今之间创建的结构(2019年2月发布的视频)。 教程是2018年。

它开始显示使用晶体管创建结构的方式 蚀刻技术。谈话是给予Clark Nguyen教授的谈话 - 他是 Bill Tang'S MEMS发明的本科研究员。

这是一个很棒的视频,可以看到切削边缘技术 - 它非常 先进但开始缓慢开始,描述早期设计 - 非常好 dip into.



新的! Comments

让你说到你刚刚阅读的东西!留下下面的框中的评论。



隐私政策 | 接触 | 关于我

网站地图 | 使用条款


ezoic.报告此广告

访问我们的Facebook页面:

   点击这里



最近的文章

  1. 如何使用ADS1115

    使用ADS1115精度16位ADC进行教程进行低功耗。

    阅读更多

  2. arduino.模拟输出...易模拟输出生成

    arduino.模拟输出:如何创建最精确的PWM模拟输出以及如何创建模拟PWM正弦波。

    阅读更多

  3. 数号和等效的快速宏。加快代码!

    了解DigitalWrite()的工作原理......现在使用17倍宏宏!

    阅读更多

  4. TCS230颜色传感芯片:如何运作以及如何使用它。

    如何使用TCS230(/ TCS3200)彩色检测器芯片并轻松将其添加到您的任何项目中。

    阅读更多

  5. 如何使用ADXL345进行运动感测等。

    使用ADXL345 Acellerometer,您可以检测到16G!您还可以了解如何使用它来点击检测等。

    阅读更多

  6. HMC5883L 3轴数字MAGENTOMTER如何运作

    HMC5883L - 如何制作数字罗盘,了解HMC5883L和QMC5883L之间的差异以及它们是否兼容。

    阅读更多



读者 Comments

"I wanted to thank
你这么好
对于所有信息
你已经提供了
你的网站's

高超极好的."

- 逃亡Potthath.

"This site really is
最好的和我最喜欢的。
我发现这里有很多很有用
项目和提示。"

- 米兰

Bursach.<at>gmail.com<

"Awesome site,
非常,非常容易和好
导航!"


-
镭_tr.<at>
wolf359.cjb.net.


学习微控制器

"Interested in
微控制器?"

注册
免费7天指南:

自由 GUIDE : CLICK HERE


"I am a newbie to PIC
我想说
 how great your
网站一直在为我。"


- 戴夫

de_scott.<at>bellsouth.net

"Your site is a great
和完美的工作。
恭喜。"


- SURESH.

IntegratedInfosys.<at>
Yahoo.com.

"I couldn't find the correct
要定义的词语
你的网页。

非常有用,揭开,
诚实明确。

非常感谢
你的时间和作品。
问候。"


- Anon.

回到顶部

/