Analog datalogger in SD card
18 enero, 2019 por
Analog datalogger in SD card
Bernat Garcia


 Introducción

En este post veremos cómo utilizar un M-Duino 21+ como registrador de datos analógico. Los datos analógicos se recopilarán de un potenciómetro y se almacenarán en la tarjeta SD interna del M-Duino 21+. Aparte de eso, también usaremos la biblioteca Defiltro para filtrar el valor analógico tomando algunas muestras.


Requisitos

Ethernet PLC: Ethernet PLC 

Tools40 Library:  Tools40   

Industrial Shields boards:  Cómo utilizar los pines de mapeo de las placas de Industrial Shields 

An SD card



 Descripción y conexiones 

En primer lugar vamos a insertar la tarjeta SD en el M-Duino y nos aseguraremos de que esté configurado correctamente. Echa un vistazo a este post para asegurarte de que has conectado bien la tarjeta SD y los interruptores M-Duino colocados correctamente:   Cómo conectar una tarjeta SD a un PLC Ethernet de Industrial Shields 

El conmutador SD/Q2.0 debe colocarse en la posición OFF y la arquitectura del sistema de archivos de la tarjeta SD será FAT32 o FAT16.

La conexión es muy simple. El potenciómetro está conectado a la I0.12 y es la alimentación suministrada por 5V.  Por lo tanto, el controlador Arduino recibirá un valor entre 0-5V y será interpretado por ADC como un valor entre 0 a 512. Recuerde que la escala completa de las unidades de la familia M-Duino está entre 0-10V o 0-1024 para el ADC. 


Software

Este còdigo nos permite realizar lecturas analógicas del potenciómetro. La biblioteca Filter.h tomará 5 muestras y hará el promedio aritmético cada 10ms.Estos parámetros se pueden configurar en la inicialización de AnalogFilter. Cada 3 segundos el valor filtrado del potenciómetro se mostrará en el monitor serie y se almacenará en la tarjeta SD.

Echa un vistazo al video que se muestra a continuación para ver los resultados

/*

   Copyright (c) 2018 Boot&Work Corp., S.L. All rights reserved


   This program is free software: you can redistribute it and/or modify

   it under the terms of the GNU Lesser General Public License as published by

   the Free Software Foundation, either version 3 of the License, or

   (at your option) any later version.


   This program is distributed in the hope that it will be useful,

   but WITHOUT ANY WARRANTY; without even the implied warranty of

   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

   GNU Lesser General Public License for more details.


   You should have received a copy of the GNU Lesser General Public License

   along with this program.  If not, see <http://www.gnu.org/licenses/>.

 */


////////////////////////////////////////////////////////////////////////////////////////////////////

#include <Filter.h>

#include <SD.h>


Sd2Card card;

SdVolume volume;


AnalogFilter<5, 2> aFilter;


//In this example, the sample time is 2ms and the number of samples is 5.


void setup() {

    Serial.begin(9600L);

    Serial.println("microsd started");

   

    // since we're just testing if the card is working!

    if (!SD.begin(53)) {

        Serial.println("Card failed, or not present");

        // don't do anything more:

        while (1);

    }

    Serial.println("card initialized.");

}


/////////////////////////////////////////////////////////////////////////////////////////////////


void loop() {

    int input = analogRead(I0_12);

    int filtered = aFilter.update(input);

    static uint32_t lastPrint = millis();

    if (millis() - lastPrint > 3000) {

        Serial.println(filtered);

        logToSd(filtered);

        lastPrint = millis();

    }

}


////////////////////////////////////////////////////////////////////////////////////////////////


void logToSd(int value){

  // open the file. note that only one file can be open at a time,

  // so you have to close this one before opening another.

  File dataFile = SD.open("datalog.txt", FILE_WRITE);


  // if the file is available, write to it:

  if (dataFile) {

        dataFile.println(value);

        dataFile.close();

  }

  

  // if the file isn't open, pop up an error:

  else {

        Serial.println("error opening datalog.txt");

  }

}



Analog datalogger in SD card
Bernat Garcia
18 enero, 2019
Compartir
Archivar

¿En busca de tu PLC ideal?

Echa un vistazo a esta comparativa de producto de varios controladores industriales basados en Arduino.

Comparamos entradas, salidas, comunicaciones y otras especificaciones con las de los equipos de otras marcas destacadas.


Comparativa PLC industrial >>

¿Quieres más información?

¡Rellena el formulario!

¡Cuéntame más!