Introducción
En este post se muestra cómo utilizar el módulo de pulsos en Tools40 para el PLC basado en Arduino.
Requisitos
Ethernet o 20 I/Os PLC: Ethernet PLC 20 I/Os PLC
Placas de Industrial Shields: Placas de Industrial Shields:
Librería Tools40 : Tools40
Descripción
La librería del módulo Pulses es una librería dentro de Tools40hacen que los desarrolladores de Industrial shields utilicen pulsos o formas de onda cuadradas (SQW) en los pines PWM de Equipos de Industrial Shields.
La función startPulses(Pin, Frequency, Precision) inicia el tren de pulsos a la frecuencia y precisión especificadas. La frecuencia por defecto es 1kHz y la precisión por defecto es 3.
pinMode(3, OUTPUT);
startPulses(3, 2000, 3);
The stopPulses
the function stops the train of pulses.
stopPulses(3);
Ardbox Analógico HF
En ARDBOX Analog es posible utilizar estas funciones en las salidas:
TIMER0: Q0.1 and Q0.6
TIMER1: Q0.2 and Q0.3
TIMER3: Q0.5
M-Duino
En MDUINO-21, MDUINO-42 y MDUINO-58 es posible utilizar estas funciones en las salidas:
TIMER0: Q0.5 and Q2.6
TIMER1: Q2.5 – TIMER2: Q1.5 (Multiply the frequency x2)
TIMER3: PIN2, PIN3 and Q0.6
TIMER4: Q0.7, Q1.6 and Q1.7
TIMER5: Q1.3, Q1.4 and Q2.0
IMPORTANTE: No es posible tener diferentes frecuencias entre los mismos pines del temporizador. Algunas salidas comparten el mismo temporizador, por lo que trabajan a la misma frecuencia.
¡¡¡ATENCIÓN!!! Cuando se utilizan los pines de Timer0, todas las funciones de tiempo cambian su funcionalidad como delay()
, millis()
,micros()
,delayMicroseconds()
y otras.
A continuación se muestra la precisión recomendada entre las diferentes frecuencias:
Precision = 1: from 30Hz to 150Hz
Precision = 2: from 150Hz to 500Hz
Precision = 3: from 500Hz to 4kHz
Precision = 4: from 4kHz to 32kHz
Precision = 5: from 32kHz to 4MHz
Para tener una precisión ALTA en la frecuencia deseada, se recomienda utilizar la precisión más cercana a los valores de la tabla anterior.
Ejemplo
// Pulses library example
//by Industrial Shields
#include <Pulses.h>
//Output pin
//Only pins which an associated timer can be used
//IMPORTANT: when using TIMER0 pins, time related functions (millis, delay...)
//lose their time reference and don't work properly
const int pin=3;
//Frequency in Hz
//Default value: 1000
//NOTE: Use "unsigned long" and "UL" suffix for higher frequencies
const unsigned long frequency = 500UL; //500Hz
//Frequency precision
//Default value: 3
//Recommended usage
//precision=1 from 30Hz to 150Hz
//precision=2 from 150Hz to 500Hz
//precision=3 from 500Hz to 4KHz
//precision=4 from 4KHz to 32KHz
// precision = 5: from 32kHz to 4MHz const int precision = 4;
/////////////////////////////////////////////////////////////
void setup {
//Set pin as OUTPUT
pinMode(pin, OUTPUT);
//Start train pulses
startPulses(pin, frequency, precision);
}
/////////////////////////////////////////////////////////////
void loop {
}
/////////////////////////////////////////////////////////////