Autor Tema: sensor untouch con pic12c508  (Leído 8333 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado eseka

  • PIC10
  • *
  • Mensajes: 5
sensor untouch con pic12c508
« 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

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: sensor untouch con pic12c508
« Respuesta #1 en: 17 de Febrero de 2008, 20:34:46 »
Hola

Ya ni me acuerdo de ese tema, ¿tienes su link?  :D

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: sensor untouch con pic12c508
« Respuesta #2 en: 17 de Febrero de 2008, 21:34:31 »

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.


Desconectado andros

  • PIC16
  • ***
  • Mensajes: 111
Re: sensor untouch con pic12c508
« Respuesta #3 en: 17 de Febrero de 2008, 21:57:26 »
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!.
Andros!

Desconectado eseka

  • PIC10
  • *
  • Mensajes: 5
Re: sensor untouch con pic12c508
« Respuesta #4 en: 17 de Febrero de 2008, 22:14:02 »
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.




Desconectado eseka

  • PIC10
  • *
  • Mensajes: 5
Re: sensor untouch con pic12c508
« Respuesta #5 en: 17 de Febrero de 2008, 22:40:14 »
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.

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: sensor untouch con pic12c508
« Respuesta #6 en: 17 de Febrero de 2008, 23:21:10 »

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 donde se muestran varios sensores reflectivos y son faciles de conseguir , checa si alguno te sirve.

Hasta luego!!

Atentamente
 Akenafab

Desconectado andros

  • PIC16
  • ***
  • Mensajes: 111
Re: sensor untouch con pic12c508
« Respuesta #7 en: 18 de Febrero de 2008, 00:22:33 »
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.
« Última modificación: 18 de Febrero de 2008, 00:32:55 por andros »
Andros!

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: sensor untouch con pic12c508
« Respuesta #8 en: 18 de Febrero de 2008, 07:46:08 »
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&param=en531501&pageId=64

Desconectado andros

  • PIC16
  • ***
  • Mensajes: 111
Re: sensor untouch con pic12c508
« Respuesta #9 en: 18 de Febrero de 2008, 13:50:54 »
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.
Andros!

Desconectado eseka

  • PIC10
  • *
  • Mensajes: 5
Re: sensor untouch con pic12c508
« Respuesta #10 en: 18 de Febrero de 2008, 15:17:42 »
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

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


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?

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: sensor untouch con pic12c508
« Respuesta #11 en: 18 de Febrero de 2008, 15:20:37 »
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í.

Desconectado eseka

  • PIC10
  • *
  • Mensajes: 5
Re: sensor untouch con pic12c508
« Respuesta #12 en: 18 de Febrero de 2008, 18:18:24 »
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

Desconectado tareco

  • PIC10
  • *
  • Mensajes: 1
Re: sensor untouch con pic12c508
« Respuesta #13 en: 17 de Mayo de 2008, 10:44:11 »
saludos, una pregunta, ¿se puede reprogramar el pic12c508, gracias
« Última modificación: 17 de Mayo de 2008, 10:51:51 por tareco »

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: sensor untouch con pic12c508
« Respuesta #14 en: 17 de Mayo de 2008, 12:18:09 »
NO, la serie C no se reprograma.
Para usar una serie reprogramable (flash) debers usar la serie F. :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.


 

anything