¿Cuál es la característica del transductor piezoeléctrico?

0

Quiero detectar el grifo / sonido, estoy usando un transductor piezoeléctrico (circular) y lo conecté a la frambuesa pi mediante ADC (MCP3008, comunicación SPI). Cuando toco en el transductor, el valor de salida debería aumentar en algún lugar entre 0 y 1023 dependiendo de las vibraciones de la toma. Pero estoy obteniendo valores de salida inversos, el valor de salida leído es 1023 cuando no hago tapping y cuando lo toco continuamente, el valor de salida llega a 0 (cero). ¿Alguien podría decirme la razón de esto? He conectado el cable rojo (+ ve) del transductor al CH0 (canal 0) del ADC y el cable negro del transductor a la GND de la frambuesa pi. Creo que la conexión es perfecta. ¿Es esa característica del transductor piezoeléctrico, enviar una señal de salida baja cuando se detecta una toma y una señal alta cuando no hay una toma? A continuación se muestra el código

#!/usr/bin/python

import spidev
import time
import os

# Open SPI bus
spi = spidev.SpiDev()
spi.open(0,0)

# Function to read SPI data from MCP3008 chip
# Channel must be an integer 0-7
def ReadChannel(channel):
  adc = spi.xfer2([1,(8+channel)<<4,0])
  data = ((adc[1]&3) << 8) + adc[2]
  return data

# Function to convert data to voltage level,
# rounded to specified number of decimal places.
def ConvertVolts(data,places):
  volts = (data * 3.3) / float(1023)
  volts = round(volts,places)
  return volts

# Define sensor channels
piezo_channel = 0
piezo_level = ReadChannel(light_channel)
piezo_volts = ConvertVolts(light_level,2)


  # Print out results
  print "--------------------------------------------"
  print("Light: {} ({}V)".format(piezo_level ,piezo_volts ))

  # Wait before repeating loop
  time.sleep(delay)'
    
pregunta pradeep

2 respuestas

2

Transductores piezoeléctricos aproximados, a un análisis de primer orden, a capacitor .

Suponiendo que haya conectado el dispositivo de esta manera:

simular este circuito : esquema creado usando CircuitLab

Como un transductor de este tipo no tiene flujo de corriente en una situación estática, entonces sin vibración en el transductor, el voltaje leído en el ADC es, de hecho, el voltaje en el lado positivo del transductor.

El motivo por el que incluso ve otras lecturas cuando toca el dispositivo es el circuito de entrada del ADC que está utilizando:

Enlaprimeramedición(sintocar)elcondensadordemuestreodeentradasecargaráhastaVpos;cuandotocaeltransductor(suponiendoqueelcanalestáconectadoparaelmuestreo),unapequeñacorrienteCAfluirádesdeVposyelcondensadordemuestreoenelADC,cambiandoelvoltajeenelcondensadordemuestreo,porloqueleeunValordistintodelaescalacompleta.

Tengaencuentaquelasensibilidaddelaentradadependerádelafrecuenciademuestreo(quenosé);elcondensadordemuestreoestáencircuitodurante1.5ciclosdereloj.

Toqueconlafrecuenciasuficienteyelcondensadordemuestreosedescargarácompletamente(dondeleerá0enelresultadodelADC).

Paraleerlocorrectamente,deberíasconectarloasí:

simular este circuito

El valor de la resistencia aquí no es necesariamente preciso; Solo hay pequeñas corrientes inducidas en la mayoría de estos dispositivos.

    
respondido por el Peter Smith
0

Está utilizando un transductor piezoeléctrico que está diseñado para ser un zumbador de 6,5 KHz. Al tocarlo, can puede generar una serie de pulsos decadentes, no solo un pulso. Además, el revestimiento de estaño se corroerá rápidamente si no está recubierto con un spray de poliuretano.

En cuanto a la lectura inversa, use 'piezo_buff' para almacenar el valor inverso, luego tome ese valor y restarlo de 1023 y eso sería sea su salida a 'piezo_volts' (asegúrese de iniciar primero 'piezo_volts' a '0'). Si su código funciona correctamente con solo una salida invertida, fíjelo en la etapa de salida para que no tenga que manipular su código principal.
Por cierto, ¿inició las variables correctamente antes de usarlas? ?

    
respondido por el Sparky256

Lea otras preguntas en las etiquetas