sensor dixital

Como se monta un circuíto para un sensor dixital no protoboard e como se conecta.

Circuíto para un sensor dixital

Podemos agrupar os sensores, en dous tipos; sensores dixitales e sensores analóxicos.

  • Os sensores diixitales son aqueles que responden tan só a dous estados. Si ou Non, apgado ou encendido, 1 ou 0. A este grupo pertencen os pulsadores, os detectores de presencia, os interruptores, etc…
  • Os sensores analóxicos son aqueles que dan como resposta unha escala de valores, desde x a xn: A este grupo pertencen os potenciómetros, os sensores fotoeléctricos, os sensores de presión, os de temperatura, os de distancia, humedade, etc…

Dependendo do sensor que utilicemos temos que facer un circuíto determinado para cada un, asimismo tamén o código é diferente.

Agora pasaremos a poñer o circuíto e o código que se precisa para comunicar un sensor dixital co ordenador.

CÓDIGO:

" {$STAMP BS2}
" {$PBASIC 2.5}

Btn PIN 7
btnWrk VAR Byte

Main:
PAUSE 5
BUTTON Btn, 0, 200, 20, btnWrk, 0, No_Press
DEBUG "*"

No_Press:
GOTO Main

Definición da instrucción BUTTON, utilizada para os pulsadores.

BUTTON
BUTTON Pin, Downstate, Delay, Rate, Workspace, Targetstate, Etiqueta

La instrucciónBUTTON es utilizada para leer el estado de pulsadoresmomentáneos (Push-Botón), su funcionamiento es similar alde un teclado de una computadora. Incluye retrasos antes de tomar una acción, auto repeticiones yno-auto repeticiones. Cuando un Push-Botón es accionado bajo el dominio la instrucción BUTTON este se dirige a la dirección o etiqueta señalada.

  • Pin puede ser variable/constante/expresión de (0-15), especifica el pin a utilizar. Este pin se declara como entrada automáticamente.
  • Downstate puede ser variable o constante (0-1), especifica el estado lógico cuando se presiona el botón. Ver grafico.
  • Delay puede ser variable o constante (0-255)y especifica cuánto tiempo el botón debe ser presionado antes comenzar la autorepeticiones. Delay se mide en los ciclos de la rutina de BUTTON. Delay tiene dos configuraciones especiales: 0 y 255. Si Delay es 0, no realiza ningún antirebotes o auto-repeticiones. Si Delay el 255, el botón realiza antirebotes, pero no auto-repeticiones.
  • Rate puede ser variable o constante (0-255)y especifica el número de ciclos entre las auto-repeticiones. El Rate se expresa en los ciclos de la rutina de BUTTON.
  • Workspace es una variable de trabajo que la función BUTTON, necesita para operar, Debe ser inicializada antes de utilizarla.
  • Targetstate puede ser variable o constante (0-1) y especifica cual estado debe tomar el botón para que ocurra una acción a la dirección señalada. (0 = no presionado, 1 = presionado).
  • Etiqueta es la dirección de referencia que especifica a donde apuntara el programa si el botón es presionado.

Explicación
Cuando usted presiona unbotón o mueve un interruptor, los contactos producen unapequeña explosión o chispa que puede durar entre (1 a 20-ms), el cambio brusco de un estado a otro provoca un ruido oseñal no deseada. Esta señal de ruido el Microcontroladorla puede interpretar como un tren de pulsos continuos. En 20-ms ElMicrocontrolador es capaz de leer unas 2,500 veces. Este efecto puedeprovocar una lectura errónea o no deseada. Este fenómenotambién se le conoce como rebote. Existen circuitoselectrónicos y pulsadores que ayudan a minimizan este efecto nodeseado, se les llama circuitos antirebotes o (Debounce). Lainstrucción BUTTON evita los rebotes de manera inteligente,puede distinguir entre un ruido y una pulsación verdadera. Lainstrucción BUTTON es muy similar al comportamiento de unteclado de computadora. Cuando usted presiona cualquier tecla en una PCel carácter aparece inmediatamente en la pantalla. Si usted dejala tecla presionada luego de un tiempo prudente comienza lasauto-repeticiones y los caracteres aparecen repetidamente.
La instrucciónBUTTON esta diseñada para ser utilizada dentro de un bucle delprograma. Cada vez a través del bucle, el botón controlael estado del contacto especificado.

Este código envíaun asterisco cada vez que se apreta un pulsador ó terminaldebug, e funciona da seguinte maneira:

  • Primeiro crea unha constante chamada Btn que indica a quepin do basic stamp está conectado o pulsador, neste caso aconstante vale 7, o que quere decir que o pulsador ten que estarconectado ó pin número 7
  • .Logo crease unha variable de tipo byte chamada btnWrk, daque só imos decir que é necesaria que estea sempredeclarada como se mostra no exemplo.
  • Logo fai unha pausa de 5 milisegundos e pregunta si opulsadro está apretado. Si é así fai o debug “*”,é decir, imprime un asterisco no terminal do Basic Stampsoftware. Si non está apretado o pulsador, o código saltaa orde de debug e vai directamente ó campo de No_press, donde seindica que a lectura volva a Main, é decir ó comezo docódigo outra vez, xenerando así un bucle. …Volvea facer unha pausa de 5 milisegundos e volve a preguntar si o pulsadorestá pulsado, e así continuamente.

Agora, imos poñerlle ó código que acabamos dever, as liñas necesarias para mandar a información comomidi, marcado en vermello.

CÓDIGO CON MIDI:

" {$STAMP BS2}
" {$PBASIC 2.5}

Btn PIN 7

btnWrk VAR Byte

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

Main:
PAUSE 5
BUTTON
Btn, 0, 200, 20, btnWrk, 0, No_Press
SEROUT 0, baudmode, [midiconchange, 1, 120]
DEBUG "*"

No_Press:
GOTO Main

Para unha explicación máis detallada sobre o significadodeste código, acudir á seguinte ligazón:
apuntes interfaces físicas_midi :: Jose Lozano
Somentes diremos que as constantes “baudmode”, “midinoteon”,”midiconchange”e “midiprogchange”, deben de estar sempre que se queiraenviar datos via midi, xa que son números dados porconvención, e que si non están non funciona.

  • midinoteon: utilizamolo si queremos enviar unha mensaxe de note on, de nota.
  • midiconchange: utilizamolo si queremos enviar unha mensaxe de control.
  • midiprogchange: utilizamolo si queremos enviar unha mensaxe de cambio de programa midi.

Ó chegar á orde de SEROUT lévanse a cabo as etiquetas dadas no código:

SEROUT 0, baudmode, [midiconchange, 1, 120]
  • Así o número 0 indica ó pin do basic stamp polo que vai saír ainformación midi, polo que debemos conectar o cable midi a este pin.
  • baundmode ten un valor de 12, que sempre debe de ser o mesmo por convención.
  • midiconchange ten un valor de 176 por convención, e indica que a mensaxe que se manda é de tipo de control.
  • o número 1 que segue, indica o número do controlador midi, que neste caso e 1.
  • onúmero 120, indica o valor que ten o controlador, neste caso,diriamos que o controlador número 1 ten un valor de 120.

No caso de querer mandar unha mensaxe de nota no lugar da de control, teriamos que cambiar midiconchange por midinoteon, e os valores seguintes:

SEROUT 0, baudmode, [midiconchange, 1, 120]

por

SEROUT 0, baudmode, [midinoteon, 60, 120]

Neste último caso estamos enviando unha mensaxe de nota, cunha altura de 60 e unha intensidade de 120.

Rematamos coas fotos do protoboard co circuíto montado para os exemplos que acabamos de ver.

Na última foto aparecen uns números que nos sirven para ver como vai conectado o cable midi no protoboard.

  • O cable número un é o cable que vai á terra.
  • O cable número dous, é o cable que vai conectado ó pin do microcontrolador.
  • O cable número tres, é o cable que vai conectado á carga de +5V.