German English
Peripherie

Analoge Werte erfassen

Der verwendete Mikrocontroller auf dem Funkmodul Preon32 stellt eine Vielzahl von internen ADCs (Analog-To-Digital-Convertern) zur Verfügung. Nach einer entsprechenden Konfiguration können analoge Spannungswerte an den Verbindungskontakten des Mikrocontrollers erfasst werden. In diesem Beispiel wird ein Kanal eines ADCs ausgewählt, von dem 100 Werte in einem zeitlichen Abstand von 50ms zueinander erfasst werden. Die Messwerte werden daraufhin anhand der Auflösung von 12-Bit (4096) und dem maximalen Spannungspegel auf eine Spannung von 0.0V bis 3.3V normiert und in einem Speicherbereich abgelegt.
/*
 * Copyright (c) 2011., Virtenio GmbH
 * All rights reserved.
 */
package com.virtenio.webdemo;

import com.virtenio.drivers.adc.NativeADC;
import com.virtenio.drivers.adc.NativeADCChannel;

import java.io.IOException;

public class ADC {

    public static void main() throws IOException, InterruptedException {

        int idADC = 0;
        int idCH = 0;
        long millis = 50;
        int num = 100;

        double[] samples = new double[num];

        NativeADC adc0 = NativeADC.getInstance(idADC);
        NativeADCChannel ch0 = adc0.getChannel(idCH);
        ch0.open();

        for (int i = 0; i < num; i++) {
            //
            int val = ch0.getValue();
            double sample = val * 3.3 / 4096.0;
            samples[i] = sample;
            //
            System.out.println("CH[" + idCH + "]=" + sample + " [V]");
            Thread.sleep(millis);
        }

        ch0.close();
        adc0.close();
    }

}