ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Sensores capacitivos y potenciómetros

danyraziel20 de Septiembre de 2012

1.635 Palabras (7 Páginas)537 Visitas

Página 1 de 7

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 del vector de interrupción del ADC

rjmp adc_complete

.org 0x15

reset: ;Configuracion de la pila

ldi temp,low(ramend)

out spl,temp

ldi temp,high(ramend)

out sph,temp

;Configuración de puertos B, C y D como salida

ser temp

out ddrb,temp

out ddrc,temp

out ddrd,temp

;Configuración de Puerto A como entrada

clr temp

out ddra,temp

;Configuracion del ADC en 8 bits

ldi temp,0x21

out admux,temp

ldi temp,(1<<aden)|(1<<adate)|(1<<adie)|(5<<adps0)

out adcsra,temp

sei;Inicializacion de las interrupciones

;inicializacion del ADC

sbi adcsra,adsc

begin:

;En cada parte que se indica “gX” corresponde a una posición.

;Primero se compara el valor del ADC con el valor decimal esperado que se ha calculado de acuerdo al voltaje medido para esa posicion

;g0

cpi adc_high,0

breq g0

cpi adc_high,1

breq g0

brne s1

;En caso de que el valor coincide se manda a llmar unas subrutinas que cargan a la variable temp con el valor necesario para desplegar en displays los numerous que nos representan en grados la posicion a la cual se encuentra el potenciometro. Si el valor no concide se sigue con la siguiente etiqueta sx, para comparar con otro valor.

g0:

rcall cero

out portc,temp

rcall cero

out portd,temp

rcall delay

rjmp begin

s1:

;g30

cpi adc_high,2

breq g30

cpi adc_high,3

breq g30

cpi adc_high,4

breq g30

cpi adc_high,5

breq g30

brne s2

g30:

rcall cero

out portc,temp

rcall tres

out portd,temp

rcall delay

rjmp begin

s2:

;g60

cpi adc_high,32

breq g60

brne s3

g60:

rcall cero

out portc,temp

rcall seis

out portd,temp

rcall delay

rjmp begin

s3:

;g90

cpi adc_high,61

breq g90

brne s4

g90:

rcall cero

out portc,temp

rcall nueve

out portd,temp

rcall delay

rjmp begin

s4:

;g120

cpi adc_high,97

breq g120

brne s5

g120:

rcall

...

Descargar como (para miembros actualizados) txt (14 Kb)
Leer 6 páginas más »
Disponible sólo en Clubensayos.com