PIPETA MEJORADA O LASTRE DE SUBMARINO AUTOMÁTICA CASERA.


INTRODUCCIÓN

Este proyecto tiene como fin crear un sistema para dosificar volumen de líquidos, si en el anterior proyecto de pipeta empleábamos un motor paso a paso, en este utilizaremos un simple motor DC, permitiéndome aumentar el volumen de liquido hasta los 60ml, necesarios para los proyectos nuevos que tengo entre mano, como mezcladora de hormigones refractarios inteligente y el lastre de un submarino con cámara de foto incorporada.

COMPONENTES Y CIRCUITO

 



PROGRAMAS:


PROGRAMA PRUEBA PUENTE H
cmcon = 7
trisb=0
derecha var porta.1
izquierda var porta.2
mder var portb.1
mizq var portb.2
ok var portb.3
gosub todobien
inicio:
if derecha = 0 then giraderecha
if izquierda = 0 then giraizquierda
goto inicio
giraderecha:
high mder
pause 500
low mder
gosub todobien
goto inicio
giraizquierda
high mizq
pause 500
low mizq
gosub todobien
goto inicio
todobien:
high ok
pause 1000
low ok
return
end

 

PROGRAMA CUENTA MICROLITROS

INCLUDE "modedefs.bas"
cmcon=7
pulsos var word
define lcd_dreg portb
define lcd_dbit 4
define lcd_rsreg portb
define lcd_rsbit 1
define lcd_ereg portb
define lcd_ebit 2
microlitros var word
cuenta var word
entrada var porta.0
botonmas var porta.1
intro var porta.2
ok var portb.0
cuenta = 0
microlitros =0
low porta.3
inicio:
if intro=0 then goto inicio1
lcdout $fe,1,"nº=",dec cuenta
pause 1000
goto inicio
inicio1:
cuenta=-600
microlitros=0
lcdout $fe,1,"Introduzca nº"
lcdout $fe,$c0,"microlitros"
pause 2000
goto inicio2
inicio2:
if botonmas=0 then
microlitros =microlitros+100
lcdout $fe,1,"ul=",dec microlitros
endif
if intro=0 then goto inyectando
pause 100
goto inicio2
inyectando:
lcdout $fe,1,"Inyectando"
lcdout $fe,$c0,"gracias"                     
serout portb.3,n2400,["1"]
goto arrancar
arrancar:
lcdout $fe,1,"nº=",dec cuenta
if entrada = 1 then contar
goto arrancar
contar:
if entrada = 1 then contar
pause 50           
cuenta = cuenta +100
if cuenta= microlitros then inter
goto arrancar
inter:
high porta.3
pause 1000
low porta.3
goto inicio
end

PROGRAMA CONTROL DEL MOTOR

INCLUDE "modedefs.bas"
cmcon = 7
derecha var porta.1
izquierda var porta.2
mder var portb.1
mizq var portb.2
ok var portb.3
start var byte
high ok
pause 1000
low ok
on interrupt goto esperallenado
intcon=%10010000
option_reg.6=1
disable
inicio:
serin porta.3,n2400,start
if start = "1" then giraderecha
goto inicio
giraderecha:
intcon=%10010000
option_reg.6=1
enable
high mder
pause 1000
low mder
goto giraderecha
disable
esperallenado:
low mder
if portb.6 = 0 then llenando
pause 200
goto esperallenado 
llenando:
if portb.4 = 0 then inicio
high mizq
pause 1000
low mizq
goto llenando
end



EXPLICACIÓN DEL PROYECTO.                                
Para el mecanismo de accionamiento del embolo, se empleo el movimiento rectilíneo de una tuerca sobre un tornillo en giro. O lo que es lo mismo un husillo. Para controlar el volumen se utilizó un optoacoplador colocado sobre un disco dividido en 4 partes para que me diera una resolución de 0,1ml.
 El motor con su engranaje se extrajo del mecanismo de una impresora rota.

Para el proyecto hemos utilizado el PIC 16f628A, un lcd 16x2 y una buena etapa de potencia en formación puente H. En el programa del control de motor hemos habilitado la interrupción, con el cual avisamos al pic de que ya sea alcanzado el volumen. Por lo demás del programa es muy simple. Para la comunicación se utiliza dos pulsadores uno  para poner el valor y el otro actúa como un intro. Una vez seleccionado el volumen se le da intro, aparece el volumen lo seleccionamos e inyectamos.

La calibración es fácil se empleo una probeta se le pidió al motor girar 70 vueltas, se midió el volumen, determinándose el volumen por vuelta para aumentar la resolución se dividió el disco en 4.


FOTOGRAFIAS DEL MONTAJE

 

ver video.


PREGUNTAS Y SUGERENCIAS.

Para cualquier pregunta puedes realizármela al correo joliva68@ono.com master@picpc.es