¿Limitaciones de Arduino Voltage Pulse? (TTL)

3

Soy nuevo en este foro y tengo una pregunta con respecto a los tableros basados en EE y Arduino.

¿Las tarjetas basadas en Arduino son capaces de producir pulsos en el rango de MICROsegundos (usecs)? Por ejemplo, me gustaría generar 1 pulso (por ejemplo, 5 voltios para 200usecs) dado un comando arbitrario que envío al microcontrolador. Este pulso se usaría para activar un dispositivo al que está conectado. ¿Es esto posible?

Tengo una placa Azteeg X3 Pro (ATMEGA2560 y RAMPS 1.4 base).

Idealmente, esta imagen es lo que estoy tratando de hacer.

    
pregunta Jseung321

2 respuestas

4
  

¿Las placas basadas en Arduino son capaces de producir pulsos en el rango de MICROsegundos (usecs)?

Esto se puede lograr de varias maneras

Algunos ejemplos:

  1. Usar la función micros () .
    Esto devuelve el valor de un contador que está en unidades de microsegundos y que se incrementa cada 4 u 8 microsegundos (ver más abajo)

Dicen

  

Devuelve el número de microsegundos desde que la placa Arduino comenzó a ejecutar el programa actual. Este número se desbordará (volverá a cero), después de aproximadamente 70 minutos. En las placas Arduino de 16 MHz (por ejemplo, Duemilanove y Nano), esta función tiene una resolución de cuatro microsegundos (es decir, el valor devuelto siempre es un múltiplo de cuatro). En las placas Arduino de 8 MHz (por ejemplo, la LilyPad), esta función tiene una resolución de ocho microsegundos.

  1. Aquí hay una pregunta de SE EE 2011 que debería ser útil: Arduino: ¿mejor resolución de microsegundos que micros ()? Las respuestas cubren el uso directo de los temporizadores de hardware.
  1. Puede utilizar la función delayMicroseconds () que retrasa todas las acciones durante el período definido. Aunque limitar esto puede ser útil en algunas aplicaciones simples.

  2. Puede escribir su propio bucle con un tiempo conocido por bucle. Esto le permitiría realizar varias funciones simples mientras espera.

respondido por el Russell McMahon
2

Sí, Arduino es capaz de producir pulsos.

Este código funcionará para usted.

Código:

const int kPinPulse = 8; // You can select any pin of arduino
const int kPinSW = 9;    //This switch will work as command

void setup()
{
   pinMode(kPinPulse, OUTPUT);
   pinMode(kPinSW, INPUT);      
}

void loop()
{
   if(digitalRead(kPinSW) == LOW) //When Switch pressed Command Sent
   {
      digitalWrite(kPinPulse, HIGH); // start your pulse
      delayMicroseconds(200);        // It's provide your time interval of 200 microseconds
      digitalWrite(kPinPulse, LOW);  // end your pulse
      while(digitalRead(kPinSW) == LOW); 
   }     
}

NOTA: Aquí, tomé un Switch en el Pin número 9, esto funcionará como un comando para enviar un pulso de 200 microsegundos, es decir, cuando se presiona el interruptor 200uS pulse se generará.

    
respondido por el karanrp

Lea otras preguntas en las etiquetas