Sensores capacitivos y potenciómetros
Enviado por danyraziel • 20 de Septiembre de 2012 • 1.635 Palabras (7 Páginas) • 510 Visitas
ráctica numero 9 Sensores capacitivos y potenciómetros
1.- Sensores de nivel hecho con varillas:
Para este circuito se hizo un divisor con capacitores, uno fijo y otro el hecho por las varillas. El diagrama del circuito quedo de la siguiente manera:
Las variaciones de voltaje respecto a la altura a la que se introducían las varillas dentro del agua se muestran en la siguiente tabla:
Altura [cm]
Voltaje de salida [v]
4
0.99
10
0.97
15
0.96
19.5
0.93
23
0.92
Podemos ver que las variaciones de voltaje son muy pequeñas, pensamos que se debe a que el estaban muy separadas las varillas y que el aislante era demasiado grueso.
A continuación se muestra la grafica de altura a la que se está introduciendo contra el voltaje de salida:
2.-Sensor capacitivo de toque.
I. Encender un led cuando se toca y cuando se suelta se apaga
II. Encender una carga cuando se toca y se suelta, y cuando lo volvemos a tocar y soltar se apaga la carga.
Para estos dos incisos se diseño y construyo el siguiente circuito:
Utilizamos un microcontrolador ATMEGA8. Y un puente con resistencias y capacitores para usar el sensor capacitivo de toque.
El diseño del sensor capacitivo es de dos círculos concéntricos como se muestra en la siguiente figura:
Se utilizo papel para cubrir el sensor, la capacitancia medida sin tocar el capacitor fue de 7 uF, al momento de tocarlo con el pulgar la capacitancia sube a 10 uF.
Ya en el puente para el acondicionamiento al no tocarlo tenemos un voltaje de 1.5 v, al momento de tocarlo el puente arroja un voltaje de 4.3 v. Que es lo suficiente para que el AVR lo reconozca como un 1 lógico y de esta manera mediante el programa diseñado realicemos las dos acciones solicitadas.
El programa utilizado fue el siguiente:
;Configuracion del AVR a utilizar y declaracion de variables
.include "m8def.inc"
.def temp=r16
.def giro=r17
;Vector de interrupcion de reset
.org 0x00
rjmp reset
reset: ;Configuracion de la pila
ldi temp,low(ramend)
out spl,temp
ldi temp,high(ramend)
out sph,temp
;configuracion del Puerto B y C como salida
ser temp
out ddrb,temp
out ddrc,temp
;Configuracion de Puerto D como entrada
clr temp
out ddrd,temp
;Cargar variable giro con cero
ldi giro,0
begin: ;Mandamos al Puerto C el valor de “giro” que es donde está conectado el motor
out portc,giro
ldi temp,0 ;Cargamos con cero a “temp”
out portb,temp ;Mandamos al Puerto b el valor de “temp”
;Preguntamos si hay un uno en el pin 0 del puerto D que es donde esta la salida del puente de capcitores y resistencias, si hay un uno va a la etiqueta encendido, si hay un cero regresa a la etiqueta begin
sbis pind,0
rjmp begin
encendido:
;En esta parte , cargamos “temp” con 2 y lo mandamos por el puerto b para que de esta manera encendamos el led
ldi temp,2
out portb,temp
;Preguntamos si hay un cero en el pin 0 del Puerto D, que es donde tenemos el touch sensor, si hay un cero significa que se dejo de tocar y vamos hacia la etiqueta inversión, de lo contrario regresamos a la etiqueta encendido
sbic pind,0
rjmp encendido
inversion:
;En esta parte analizamos el valor de “giro” de esta manera sabemos si el motor estaba encendido o apagado,
cpi giro,0 ;Comparamos “giro” con 0 para saber si estaba apagado
breq carga1
rjmp otro
carga1: ;Si estaba apagado mandamos 48 al puerto C para encender el motor
ldi giro,48
rjmp begin
otro:
cpi giro,48;Comparamos “giro” con 48 para saber si estaba encendido
breq carga0
rjmp begin
carga0: ;Cargamos giro con cero para apagar le motor
ldi giro,0
rjmp begin ;regresamos al principio del programa
3.- Sensor de posición resistivo:
I. Potenciómetro para medir en grados la posición con un vástago.
Para este punto se diseño y construyo el siguiente circuito:
Se utilizo un pontenciometro de 1K al cual se le adapto un vástago para poder mover la perilla. Se utilizo un microcontrolador AVR ATEMGA8535 con el cual mediante el convertidor analógico a digital hacemos la lectura del voltaje que da el potenciómetro. El voltaje de referencia utilizado para el ADC del AVR fue de 5v
Se realizaron las mediciones de resistencia y voltaje que arrojaba el potenciómetro a intervalos de 30° de 0° a 300°. Teniendo estos valores en el AVR desplegábamos en displays de 7 segmentos el valor en grados correspondiente al voltaje de entrada en el ADC dado por la posición del potenciómetro.
Como desplegaríamos las posiciones cada 30 grados decidimos dejar un display que siempre indicara cero ya que nunca cambiaria que es el que corresponde a las unidades.
En las siguiente tabla se engloban las mediciones y datos esperados:
Posicion [°]
Resistencia [ohms]
Voltaje [v]
Valor ADC [decimal]
0
43
0
0
30
70
0.17
08
60
157
0.7
35
90
283
1.28
61
120
360
2
100
150
460
2.58
129
180
580
3.12
156
210
720
3.83
192
240
850
4.37
220
270
880
4.9
246
300
918
5.04
253
A continuación se muestra la grafica de variación de posición contra voltaje.
A continuación se muestra el código del programa diseñado para el control de este circuito:
;Configuracion del AVR y de variables
.include "m8535def.inc"
.def temp=r16
.def adc_low=r17
.def adc_high=r18
.def distance=r19
.def decena=r20
.def temp2=r21
.def t1=r22
.def t2=r23
.def t3=r24
;Configuracion de los vectores de interrupcion
.org 0x00
rjmp reset
.org 0x0E ;Configuracion
...