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…