Lectura del osciloscopio no es lo que espero

0

Tuve mi primera vez muy emocionante y exitosa en un osciloscopio hoy. La pregunta que surgió al final de mi primera experiencia tiene que ver con la precisión que esperaba. Mi microcontrolador estaba programado para emitir señales como una señal ALTA para 80us, LOW para 50us, HIGH para 25ms, etc. Usé un cristal de 16MHz con mi ATMega8.

Cuando registré la salida con el alcance, noté que las mediciones no eran exactas. Por ejemplo, cuando esperaría una señal ALTA 80us en el alcance, se vería algo así como 77us. Las señales que duraron más tiempo (es decir, 25 ms) parecían más precisas.

Mi pregunta es simple: ¿es esto lo que debería esperar? Quiero decir, el dispositivo que conecté a mi microcontrolador requiere señales específicas por períodos de tiempo específicos, y programé mi microcontrolador para entregarle esas señales durante el tiempo que requiere. Todo funciona bien, parece que no entiendo por qué existe esta discrepancia. Para referencia, el sensor es el sensor de temperatura DHT-11 . Si el microcontrolador no está entregando las señales precisas, ¿por qué mi sensor responde correctamente?

Estas son algunas de mis conjeturas:

  1. El sensor puede tolerar cierta cantidad de error, por lo que funciona. Parece que no puedo identificar y poner ese error en perspectiva según la hoja de datos.
  2. El cristal no es perfectamente exacto. Estamos tratando con la resolución de microsegundos aquí, por lo que es posible.
  3. Otros componentes como resistencias y condensadores introducen errores.
  4. El reloj en el osciloscopio tampoco es perfecto, aunque es mucho mejor que el cristal utilizado para mi microcontrolador

Quizás haya algo más de lo que no estoy enterado.

Tenga en cuenta que los horarios que usé anteriormente son solo ejemplos, y pueden diferir de la hoja de datos y de lo que realmente usé en mi código.

    
pregunta capcom

2 respuestas

1

Es difícil ser específico sin ver tu código, pero lo intentaré.

Tu suposición # 1 es definitivamente cierta; cualquier protocolo de bus de un solo cable debe tener mucha tolerancia para las variaciones de tiempo, ya que depende en parte de la resistencia resistiva de un cable con una capacidad impredecible.

Sus conjeturas # 2 - # 4 son improbables; los cristales tanto en el microcontrolador como en el osciloscopio están bien.

Lo que probablemente esté sucediendo es que los impulsos que estás generando con tu firmware no son exactamente los anchos que pretendías. Un desplazamiento de unos pocos ciclos de instrucción podría ascender fácilmente a 3 µs. Y este error no se escalará con el intervalo de tiempo, por lo que los intervalos más largos parecerán más precisos, como observó.

Si publica el código que está utilizando para generar los pulsos, podríamos darle un consejo más específico.

    
respondido por el Dave Tweed
1

Por favor, proporcione información (o imágenes) de su alcance. Muchos ámbitos tienen la opción de entrar en un modo "no calibrado", que le permite ajustar arbitrariamente la sincronización del eje X (esto puede ser muy útil para ciertas mediciones). Es posible que hayas puesto accidentalmente tu alcance en este modo. Además, si este es un nuevo ámbito para usted (especialmente si es un ámbito de uso anterior), es posible que necesite una calibración.

Además, ¿cómo estás derivando tu tiempo? ¿Está utilizando una función de retardo preescrito? ¿Estás seguro de que no estás en el límite de su rango? Sé que la función arduino DelayUS() comienza a comportarse de manera extraña cuando los valores que se le pasan son < ~ 5. Algo similar puede estar pasando aquí.

Por último, la razón por la que está viendo datos válidos de su sensor es simplemente que el sensor utiliza un protocolo de bus que es extremadamente tolerante con las variaciones de tiempo, y se encuentra dentro del rango de error de tiempo que puede acomodar.

De todos modos, si publica más información (ya sea su código, las imágenes / la descripción de su configuración), podemos intentar ayudarlo más.

    
respondido por el Connor Wolf

Lea otras preguntas en las etiquetas