SI01 Akcelerometr

Kategorie: SI (inteligentní senzor)

Akcelerometer SI01 je I2C senzor merajúci zrýchlenie v troch osiach v rozsahu ±16 g. Hlavnou časťou SI01 je MEMS senzor ADXL326 od AnalogDevices. Analógový výstup senzora ADXL326 je pripojený k jednočipovému mikropočítaču ATmega48PA, ktorý namerané hodnoty spracuje, a posiela po I2C zbernici do riadiaceho modulu.

Micro-Electro-MechanicalSystems, skratka MEMS, označuje mechanické a elektromechanické konštrukcie veľmi malých rozmerov (pod 1 mm), ako aj technológie používané na ich prípravu. Pre ilustráciu rozmerov typických MEMS sa často používa priemer ľudského vlasu (asi 50 μm). Technológia MEMS umožňuje výrobu senzorov (čipov), ako sú gyroskopy, akcelerometre a mikrofóny s veľmi malými rozmermi (rozmery čipu s MEMS sú rádovo v jednotkách milimetrov).

ADXL326 je kompletný trojosí senzor zrýchlenia s meracím rozsahom ±16 g. Senzor obsahuje MEMS štruktúru akcelerometra a obvody pre úpravu výstupného signálu v jednom SMT puzdre s rozmermi 4 mm x 4 mm x 1,5 mm. Výstupným signálom senzora ADXL326 sú tri napätia závislé na nameranom zrýchlení v jednotlivých osiach.

Samotná MEMS štruktúra senzora ADXL326 je tvorená troma pármi kremíkových doštičiek, pre každú os jeden pár. Jedna doštička je pevná a druhá je pripevnená na polykryštalických kremíkových pružinách rovnobežne s pevnou doštičkou. Zmenou zrýchlenia v niektorej z osí dochádza k deformácii pružiny (a teda k pohybu pohyblivej doštičky), a zároveň k zmene kapacity medzi doštičkami. Elektronika pripojená k MEMS štruktúre prevádza diferenciálnu kapacitu na jednosmerné napätie.

Základné parametre senzora SI01 sú zhrnuté v nasledujúcej tabuľke:

Parametr Hodnota Jednotka
Napájecí napětí 5 V
Odběr <20 mA
Měřicí rozsah ±16 g
Pracovní teplota –55 .. 125 °C

Ke stažení

SKP model: 
PDF dokumentace: 

Příklad Java

/*
 * Příklad AccelerometerExample bude v nekonečném cyklu číst zrychlení na ose Y a nastavovat
 * polohu servomotoru připojeného k digitálnímu výstupu OUT1 podle náklonu desky akcelerometru:
 * Pokud je hodnota zrychlení 0, nastaví se výstupní osa do středové polohy, jinak se vychýlí podle
 * velikosti zrychlení. Zrychlení vynásobené číslem 100 (abychom dostali celé číslo) je pak vypsáno
 * do konzole.
 * Hodnota natočení serva metody ServoMotor.setValuePercent(int value) musí být v rozsahu 0-100,
 * proto je potřeba zrychlení přepočítat metodou limitServo(int value).
*/
package jBotBrain2.AccelerometerExample;

import jBotBrain2.hw.*;
import jBotBrain2.sensors.Accelerometer;

public class AccelerometerExampleMain {
    public static int limitServo(int val) {
        if (val < 0) {
            return 0;
        } else if (val > 100) {
            return 100;
        }
        return val;
    }
    public static void main(String[] args) {
        Led.GREEN1.set(Led.MODE_BLINK, 300);
        Accelerometer acc = new Accelerometer();
        ServoMotor servo = new ServoMotor(DigitalOutput.A);
        int val = 0;
        while (true) {
            val = (int)(acc.getY() * 100);
            servo.setValuePercent(limitServo(50 + val / 2));
            System.out.print("Zrychleni: " + val + "          \r");
        }
    }
}