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:
Pulses library: Pulses
Descripción
Pulses module library is a library made by Industrial Shields developers to use pulses or square waveforms (SQW) on the PWM Pins of 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 {
}
/////////////////////////////////////////////////////////////
Librería de módulos de pulsos en Tools40 para PLCs basados en Arduino