sensor analóxico

Como se monta un circuíto para un sensor analóxico no protoboard. Conexións co Basic Stamp.

Circuíto para un sensor analóxico

Tipos de sensores analóxicos:
Luz: Fotoresistores, fototransistores, fotodiodos, infrarrojos.
Sonido: Micrófonos de carbón, capacitor, electret, magnéticos, piezoeléctricos, etc.
Posición: Potenciómetros, FSR, ultrasonido.
Desplazamiento: Sonares, Potenciómetros slide.
Presión: FSR, piezoeléctricos
Inclinación: Acelerómetros.
Aceleración: Acelerómetros.
Temperatura: Termopares, termostatos.
Humedad: Sensores capacitivos.
Magnetismo: Pick ups de guitarras eléctricas, Efecto Hall.

Este é o circuíto para conectar un sensor analóxico.

Donde temos, empezando por abaixo na gráfica a, un sensor analóxico, unha resistencia de 220 ohnios, e un condensador.

E aquí esta o código básico.

 
resultado var word " Variable de tipo word

inicio:
high 6 " Descarga el capacitor/sensor.
pause 1 " pause 1 ms tiempo necesario para descargar.
RCTIME 6,1,resultado " Mide el tiempo de carga del circuito RC.
debug ? resultado " Muestra el valor en pantalla.

goto inicio " vuelve a tomar la medición.

A instrucción RCTIME ten 3 etiquetas:

RCTIME pin, state, resultVariable

  • A primeira, pin, (neste caso o número 6) responde a que pin do basic stamp debe de estar conectado o sensor.
  • A segunda, state, é a variable ou constante que determina o periodo RCTIME (0, 1); dependerá do circuíto que teñamos conectado ó BasicStamp. Probar cos dous valores para ver que pasa.
  • A terceira, resultVariable, é unha varible donde se garda o valor resultante da medición, é decir, o valor dado polo sensor.

…e agora vamos insertar o código para que envíe mensaxes midi:

 
resultado var word

baudmode CON 12
midinoteon CON 144
midiconchange CON 176
midiprogchange CON 192

inicio:
high 6
pause 1
RCTIME 6,1,resultado
SEROUT 0, baudmode, [midinoteon, resultado/25, 120]
debug ? resultado/25

goto inicio

No lugar donde anteriormente, co sensor dixital, poñiamos a altura da nota midi que queriamos dar ó pulsar o botón, aquí poñemos a variable que nos da como resultado da manipulación do sensor, para que nos varie a altura da nota a medida que manipulamos o sensor.
Dividimos a variable resultado por 25 para que os valores vaian de 0 a 127, que é o rango de valor midi. Cada sensor da uns valores diferentes, e incluso un mesmo sensor pode dar diferentes valores dependendo do contexto espacial no que estea, como pasa o sensor fototransistor, que dependendo que luz hai no ambiente, da un rango de valores ou outro. Por eso sempre hai que ter en conta o axuste dos valores de salida dun sensor.

Agora só nos falta un pequeno detalle…
Segundo está o código neste momento o microcontrolador non deixa de mandar o valor actual do potenciometro, tanto si o xiramos como si non. Si queremos que o microcontrolador só mande información unicamente cando xiramos o potenciómetro, debemos incluír o seguinte texto remarcado en azul no código, quedando da seguinte maneira:

 
resultado var word
resultado2 var word
baudmode CON 12
midinoteon CON 144
midiconchange CON 176
midiprogchange CON 192

inicio:
high 6
pause 1
RCTIME 6,1,resultado

IF resultado/25 = resultado2 THEN inicio

SEROUT 0, baudmode, [midinoteon, resultado/25, 120]
resultado2 = resultado/25
debug ? resultado/25

goto inicio

O que ven a decir que si o valor do potenciómetro é igual que o da anterior volta ( é decir, se non se xirou o potenciómetro), non envíe o valor do potenciómetro.

A variable potenciómetro diviuse neste caso por 25 porque o potenciómetro non daba un valor constante, aínda cando non era manipulado. Entón dividiuse por 25 para que se volvese constante, xa que ó dividilo por 25 e estar obrigado a dar un numero enteiro como resultado sempre vai a aproximar e a dar o mesmo número, sempre e canto o resultado non se acerque máis o seguinte ou anterior número.

…fotos do circuíto…