TODOPIC
Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: eseka en 17 de Febrero de 2008, 11:01:28
-
Hola a todos! Antes que nada, pido disculpas si este no es el rincon correcto del foro donde deberia postear esto. Es mi primer intento de acercamiento a los pics y mediante google encontre este foro. Quisiera llegar a hacer un sensor que detecte un dedo o una mano a traves de un cristal de casi un cm de espesor. Encontre un circuito que trabaja con pic12c508 en una revista elektor del 2004. pero leyendo en este foro creo que la opinion general es la de no usarlo porque no se puede borrar. (ya llevo inutilizados cuatro) Tambien encontre una respuesta de migsantiago a pic_aporte (en Tema: sensor táctil a través de un cristal) donde aconseja usar el circuito del cuádruple pulsador touch digital de pablin con 4001 pero es por tacto directo. Por eso se me ocurrio consultar si alguien sabe donde ubicar algun circuito o proyecto de sensor untouch con algun pic que se pueda obtener en Argentina. Gracias desde ya.
eseka
-
Hola
Ya ni me acuerdo de ese tema, ¿tienes su link? :D
-
HOla eseka!!!
Cambia de pic por un 12F508 , tienen memoria flash ya que puedes borrar y grabar muchas veces.
Podrías utilizas un sensor reflectivo,esto es, que el sensor consta de dos parte emisor y receptor.
Un led ir ( infrarrojo) y su fotransistor .
El rayo emidito por el led ir rebotara en la superficie de tu dedo o cualquier otra superficie y sera captada por el foto transistor que a su vez nos dará respuesta,hay varias configuraciones para estos , y asi mismo puedes ajustar la distancia.
Espero haber entendido bien tu mensaje y si es así , pues explicarlo de igual manera.
-
Hola, revisa los sensores capacitivos de analog devices, son creados para desarrollar interfaces tactiles, sin embargo detectan la presencia de los dedos a poca distancia sin necesidad de establecer contacto, revisa esta referencia: AD7148.
Revisa los pdf que te mando.
Suerte.
Andros!.
-
Hola! Respondo primero a migsantiago:
El link en el que encontré el primer comentario del proyecto es el siguiente:
http://www.todopic.com.ar/foros/index.php?topic=803.0
Ahora a AKENAFAB:
Gracias por el dato de la equivalencia del 12c508 con el 12f508. al parecer las patitas irían iguales unas y otras pero la pregunta que no me sé contestar es si el programador que usé para el 12c508 sirve tambien para el 12f508 o si tengo que hacerle algun cambio o si tengo que construirme o comprarme algun otro.
Te agradezco también el dato del sensor reflectivo, pero no sé 1o) si va a detectar un dedo a traves de un vidrio de un centimetro con sol atras y 2o). si no hay circuitos de sensores capacitivos con algun pic mas actualizado. (que se pueda conseguir por estas pampas)
Reitero mi agradecimiento.
-
Respondo a Andros.
Gracias por el dato del AD7148 Si bien no encontré algun ejemplo de uso, me parece adecuado para lo que quiero hacer.
A medida que iba leyendo los datos me engolosinaba porque me parecia todo perfecto hasta la parte en la que dice
que el precio de 1.20 es por cantidad de 1000 en los EEUU y que en el extranjero (es decir acá) puede variar "un poco..." y que ademas, va a estar listo para la venta recien el viernes que viene. Y me sonreia imaginandome a mi señora viendome aparecer con 1000 AD7148 y diciendole que es para una prueba para apoyar un dedo en un vidrio...
Muchisimas gracias Andros, voy a seguir intentando con algun otro componente, porque conociendo la velocidad con la que llegan algunos elementos a estas latitudes, cuando llegue, no se si se va a seguir usando el vidrio.. :D
Datos en http://www.analog.com/en/prod/0%2C2877%2CAD7148%2C00.html
Price $1.20
Packaging (1000 pcs.)
Availability 2/22/2008
The USA list pricing shown is for BUDGETARY USE ONLY, shown in United States dollars (FOB USA per unit for the stated volume), and is subject to change. International prices may differ due to local duties, taxes, fees and exchange rates. For volume-specific price or delivery quotes, please contact your local Analog Devices, Inc. sales office or authorized distributor. Pricing displayed for Evaluation Boards and Kits is based on 1-piece pricing.
-
Que programador utilizas ?
Ve la lista de pics soportados.
Un uC(microcontrolador) actual , pues te recomiendo los pic 12F629/675/683 , cualquiera de ellos 3 , cada uno con diferentes características.
Compatibles pin a pin con el 12c508.Mejor dicho compatible entre los pics de 8 pines
Conversor A-D / PWM / 1 - Comparador Analago , etc..
Claro que el sensor te sirve , debes tener en cuenta que habría que modular la señal y tener un filtro especifico para ella para qu ela luz ambiente no afecte al sensor.
puedes pasar por este link (http://www.todopic.com.ar/foros/index.php?topic=19674.0) donde se muestran varios sensores reflectivos y son faciles de conseguir , checa si alguno te sirve.
Hasta luego!!
Atentamente
Akenafab
-
Analog Devices da muestras gratis de todas las referencias, y te las envían sin gastos de envíos, te lo digo porque tengo varias referencias de procesadores digitales de señales, conversores análogos digitales (12, 16 y 24 bits), potenciometros digitales, multiplexores análogos, conversores digitales analógicos, amplificadores de instrumentación, etc, etc, etc, etc.... Lo otro, esta es solo una de las referencias disponibles para esta aplicación de sensores capacitivos, existen varias referencias, puedes revisar otras. Solo entra a la página inscribete y ellos te envían por correo la mustra de lo que requieras y esto lo hacen porque: !no van a esperar a que alguien les compre 1000 referencias para hacer un diseño 8)!, te lo juro, les conviene (cuando las pedí -Colombia-, demoraron en promedio 1 a 2 semanas).
Aplicaciones: ¿Te suena el control del ipod, aquel que al girar cambia el menú?, bueno, esa es una de sus aplicaciones, estos sensores están dirigidos a electrónica de consumo, en otras notas de aplicación dicen como hacer paneles, barras de desplazamiento con un solo chip.
Suerte en tu proyecto.
Andros.
-
Microchip ha desarrollado un completo sistema de control para sensores capacitivos, llamado mTouch.
Está muy bien explicado aquí:
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2599¶m=en531501&pageId=64
-
Hola eseka!, descuida no hay ningún problema!, de hecho no sabía que existía..
Lo bueno de esta línea es las otras opciones que existen, miraré la puesta por nocturno.
Andros.
-
A todos:
Acabo de hablar con la gente de elemon, que son los distribuidores de Microchip en Argentina
( Distributors
Electronica Elemon S.A.
Franklin D. Roosevelt 5415
Ciudad de Buenos Aires, C1431 BZM
Argentina
Phone: +54-11-4523-5555
Fax: +54-11-4522-7335
Email: ventas@elemon.com.ar
y en cuanto les comento sobre los elementos para el mtouch que me habia comentado nocturno, la respuesta que obtuve fue algo parecido a :
-Uh?
Eso es todo. Después, tras intentar aclarar algo, me comentó que ellos traían los materiales de acuerdo al interés que demostraban los posibles clientes en los productos. Que por el momento no lo tenían , ni sabían de la existencia. Así que le expliqué al vendedor lo que yo había aprendido leyendo la página. Por lo menos uno de los dos terminó sabiendo algo mas. :mrgreen:
Así que, habiendo conseguido unicamente el pic12c508 y el programador que venden en mercado libre Foto del Grabador de pic (http://www.mercadolibre.com.ar/jm/img?s=MLA&f=21979004_5121.jpg&v=P)
voy a tratar de encarar el primer proyecto del sensor de la elektor del 2004 con pic12c508.
http://www.elektor-electronics.co.uk/magazines/2004/february/magazines/2004/february/touch-controlled-switch.56808.lynkx (http://www.elektor-electronics.co.uk/magazines/2004/february/magazines/2004/february/touch-controlled-switch.56808.lynkx)
Explicacion del proyecto:
You don’t need special ICs when a capacitive (or ‘touch’) switch can also be realised with an inexpensive PIC controller. This article shows how it’s done.Over the past few years several manufacturers have come up with special integrated circuits for touch control switches. These ICs usually operate on the principle of capacitive change, work perfectly but are hard to obtain as well as relatively expensive. Fortunately, a capacitive switch may also be realised using ‘traditional’ means, i.e., a little physics and a microcontroller.
Components
Resistors:
R1,R6 = 10kO (SMD shape 0805)
R2,R3,R4 = 100kO (SMD shape 0805)
R5 = 1kO (SMD shape 0805)
R7 = 470Ohm (SMD shape 0805)
Capacitors:
C1 = 470nF(SMD shape 1206)
C2 = 100nF (SMD shape 0805)
Semiconductors:
D1 = Chip LED, red, (SMD shape 0805)
T1 = BC847 (SOT23 case)
IC1 = PIC12C508A04/SO8, programmed, order code 030214-41
Miscellaneous:
K1 = 4-way mini PCB terminal block, lead pitch 2.5mm
PAD = sensor area (see text)
Disk, PIC source code file, order code 030214-11 or Free Download
=====================================
;**********************************************************************
; C_TASTE2.ASM *
; Kapazitive Taste fuer PIC12C50x *
; 25.09.2003 Juergen Wickenhaeuser WWW.WICKENHAEUSER.DE *
; *
; Versioninfo @ Binaries End! *
; *
;**********************************************************************
list p=12c509 ; list directive to define processor
#include <p12c509.inc> ; processor specific variable definitions
__CONFIG _CP_OFF & _WDT_ON & _MCLRE_OFF & _IntRC_OSC
RADIX dec
;***** CONSTANTS
MAXCNTH EQU 42 ; fuer ca. 80 msec, zaehlt max. ADH=MAXCNTH
LEVEL EQU 10 ; Sollwert fuer TRIG=ADH-LEVEL (Ausl. wenn ADH<TRIG)
SVLOOPS EQU 50 ; Anzahl Messungen pro Servo-Korrektur nach unten
;***** VARIABLE DEFINITIONS (start at Adr 7 on PIC12)
CNT EQU 7
ADL EQU 8 ; Messwert Low
ADH EQU 9 ; Messwert High
SIG EQU 10 ; Aktuelle Bit-Werte der OUT-Pins
TRIG EQU 11 ; Trigger-Wert (fuer ADL)
WFB EQU 12 ; Mathematisches Hilfs-W-Register B
SVCNT EQU 13 ; Alle x Scans Servo
;***** PIN DEFINITION
RPORT EQU GPIO ; Make it portable to other devices...
DPIN EQU 0 ; O/T Discharge-Pin
HPIN EQU 1 ; O/T Hold-Pin
CPIN EQU 2 ; O/T Charge-Pin
QPIN EQU 3 ; I Querry (Kollektor-Sensor)
SPIN EQU 4 ; O Signal-Pin
BPIN EQU 5 ; O Bit-Pin Ausgabe der Cnts
; ***** PROGRAM ****
ORG 0x000
; movlw 2
; movwf TRIG ; Triggerschwelle setzen
; movlw 5
; movwf ADH ; Triggerschwelle setzen
; movlw 2
; movwf SVCNT
;x: call servo
; goto x
; *** Initialisieren
movlw 128+64+7+8 ; Disable Pullups, Watchdog slow, No Wake on Pin Change
option
btfss STATUS,NOT_TO
goto main ; skipped if was a power up
clrf SIG ; Power-On-Reset Kein Signal
clrf TRIG ; Unempfindlich am Anfang!
movlw 1
movwf SVCNT ; sofortstart
; *** MAIN-Schleife
main:
clrwdt ; Watchdog ca. 1/sec.
call disch
call load
call trigger ; Vergleichen?
call servo ; Nachfuehren
call pulsel ; Wenig Pulse reichen...
goto main
; *** trigger: Schwelle vergleichen und evtl LED ausloesen, Ausgabe spaeter...
trigger: movf TRIG,W
movwf WFB ; WFB=TRIGER
movlw LEVEL/2 ; Trigger-Schwelle
btfss SIG,SPIN ; Wenn ausgeloest: Trigger hoch!
addwf WFB,F
movf ADH,W
subwf WFB,W
btfsc STATUS,C
goto t1
; * ADH >= TRIG: Led aus
bsf SIG,SPIN
retlw 0
t1: ; * ADH < TRIG: Led an
bcf SIG,SPIN
retlw 0
; *** Servo: fuehrt TRIG alle x Aufrufe nach
servo: movlw LEVEL
addwf TRIG,W
movwf WFB ; W = WFB = TRIG+LEVEL
subwf ADH,W ; ADH-(TRIG+LEVEL); C wenn <0
btfss STATUS,C
goto s2
movf ADH,W
subwf WFB,W ; (TRIG+LEVEL)-ADH: C wenn <0
btfss STATUS,C
goto s1
retlw 0
s1: incf TRIG,F ; Schwelle hoch sofort
retlw 0
s2: decfsz SVCNT,F ; Schwelle runter langsam
retlw 0
movlw SVLOOPS
movwf SVCNT ; Loop neu setzen
decfsz TRIG,W
movwf TRIG
retlw 0
; *** Pulse ausgeben am BPIN (ADH:ADL) (0 ist technisch gesehen nicht moeglich->Fehler in HW?)
; *** Pulse werden per Open-Drain ausgegeben, d. h. ohne Pull-Up gibt es keine Stoerungen!
; *** 1. Version: Alle Pulse ausgeben
;pulseh: movf ADL,F
; btfss STATUS,Z
; incf ADH,F ; Wenn nicht Zero: Incrementieren!
; movf SIG,W ;
; andlw ~(1<<BPIN) ; B-Pin auf 0 (Pull-Down)
; movwf RPORT ; -> Pulse E
;p1: movlw ~((1<<DPIN)|(1<<HPIN)|(1<<CPIN)|(1<<SPIN)) ; Alle Output-Pins ausser BPIN ausgeben
; tris RPORT
; movlw ~((1<<DPIN)|(1<<HPIN)|(1<<CPIN)|(1<<SPIN)|(1<<BPIN)) ; Alle Output-Pins inkl. BPIN ausgeben
; tris RPORT
; decfsz ADL,F
; goto p1
; decfsz ADH,F
; goto p1
; retlw 0
; *** 2. Version: Nur ADH-Pulse+1
pulsel: incf ADH,F ; ADH+=1
movf SIG,W ;
andlw ~(1<<BPIN) ; B-Pin auf 0 (Pull-Down)
movwf RPORT ; -> Pulse E
p2: movlw ~((1<<DPIN)|(1<<HPIN)|(1<<CPIN)|(1<<SPIN)) ; Alle Output-Pins ausser BPIN ausgeben
tris RPORT
movlw ~((1<<DPIN)|(1<<HPIN)|(1<<CPIN)|(1<<SPIN)|(1<<BPIN)) ; Alle Output-Pins inkl. BPIN ausgeben
tris RPORT
decfsz ADH,F
goto p2
retlw 0
; *** Kondensator total entladen und AD-Zaehler loeschen
disch:
; * zur Sicherheit SIG maskieren
movf SIG,W
andlw (1<<SPIN) ; Nur Sigpin ist statisch...
movwf SIG
movwf RPORT
movlw ~((1<<DPIN)|(1<<HPIN)|(1<<CPIN)|(1<<SPIN)|(1<<BPIN)) ; Alle Output-Pins ausgeben
tris RPORT
movlw 250 ; ca. 1 msec: ca. 10 Tau sollten reichen fuer 100 nF/1k
goto delay ; spart return...
; *** Kondensator laden bis Signal an Q-Pin, Preload muss Teiler von 256 sein!
; *** Das Laden erfolgt etwas "verrauscht"
load: ; * Zaehler vorladen
clrf ADL
movlw (-MAXCNTH) ; Offset abziehen (bis 0000)
movwf ADH
movf SIG,W ; Maske der O-Pins holen
iorlw (1<<CPIN) ; CPIN=1, HPIN=0 dazu
movwf RPORT
movlw ~((1<<HPIN)|(1<<CPIN)|(1<<SPIN)|(1<<BPIN)) ; Ausgabepins setzen
load1: tris RPORT ; [1] W an Rport
xorlw (1<<CPIN)|(1<<HPIN) ; [1]
tris RPORT ; [1]
xorlw (1<<CPIN)|(1<<HPIN) ; [1]
btfss RPORT,QPIN ; [2]wenn Signal: Ende!
goto loadx ; [-] 0 addieren
incf ADL,F ; [1]
tris RPORT ; [1] W an Rport
xorlw (1<<CPIN)|(1<<HPIN) ; [1]
tris RPORT ; [1]
xorlw (1<<CPIN)|(1<<HPIN) ; [1]
btfss RPORT,QPIN ; [2]wenn Signal: Ende!
goto loadx ; [-] Ende
incf ADL,F ; [1]
nop
nop
nop
tris RPORT ; [1] W an Rport
xorlw (1<<CPIN)|(1<<HPIN) ; [1]
tris RPORT ; [1]
xorlw (1<<CPIN)|(1<<HPIN) ; [1]
btfss RPORT,QPIN ; [2]wenn Signal: Ende!
goto loadx ; [-] Ende
incf ADL,F ; [1]
nop
tris RPORT ; [1] W an Rport
xorlw (1<<CPIN)|(1<<HPIN) ; [1]
tris RPORT ; [1]
xorlw (1<<CPIN)|(1<<HPIN) ; [1]
btfss RPORT,QPIN ; [2]wenn Signal: Ende!
goto loadx ; [-] Ende
incfsz ADL,F ; [1]
goto load1 ; [2, Summe: 33/4: ca. 120kHz] Low-Byte
incfsz ADH,F ; High-Byte
goto load1 ; Ansonsten kein Signal (0000)
loadx: movlw MAXCNTH
addwf ADH,F ; Offset addieren
retlw 0 ; und Ende...
; *** Delay W * 4 cycles (1 Dig = 4 usec, verwendet CNT)
delay: movwf CNT
del1: clrwdt
nop
decfsz CNT,F ; 4*W pulses
goto del1
retlw 0
; *** Versioninfo ***
info: retlw 'V'
retlw '1'
retlw '.'
retlw '0'
retlw '0'
retlw 0xFF ; END Sentinel
END ; <END>
=====================================
Primera pregunta: Es este el lugar donde postear estos temas o tengo que abrir otro post en algun otro lado?
-
Eso demuestra que la gente de Elemon son distribuidores de Microchip pero ni siquiera conocen las novedades :D
Muevo el hilo al subforo de Proyectos, donde creo que estará mejor que aquí.
-
Pregunta:
En los dos primeros renglones del programa de ELEKTOR encuentro lo siguiente:
list p=12c509 ; list directive to define processor
#include <p12c509.inc> ; processor specific variable definitions
Pregunto: Tiene que ver que el pic que estoy usando sea el 12c508?
Cual es el mejor programa para compilar?
Gracias desde ya
-
saludos, una pregunta, ¿se puede reprogramar el pic12c508, gracias
-
NO, la serie C no se reprograma.
Para usar una serie reprogramable (flash) debers usar la serie F. :mrgreen:
-
saludos, una pregunta, ¿se puede reprogramar el pic12c508, gracias
No, es OTP. Mas datos en Microchip (http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1335&dDocName=en010102)
Saludos!