Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?
27/10/2011 #1421

Avatar de Dario

hola amigos. perdon por desentonar este tema pero les queria compartir la solucion al cronometro de 4 digitos con pic16f628. solo tuve que experimentar un poco con el valor cargado al tmr0 y cambiar el valor de 61 por 65 y listo. a continuacion, el codigo.
saludosss

Código:
@ DEVICE MCLR_ON, XT_OSC, WDT_OFF, LVP_OFF, BOD_OFF, PWRT_ON, PROTECT_OFF
DEFINE OSC 4
  cuenta var byte
  numero2 var word
  numero var word
  unid var byte
  dece var byte
  cent var byte
  mile var byte
  contar var porta.3
  encera var porta.2
  pausa var porta.1
  
  trisb=0
  cmcon=7
  cuenta=0
  numero=0
  numero2=0
     
OPTION_REG = %0000111   ' Configuración del Registro OPTION 
INTCON = %10100000    ' Configuración del Registro INTCON
ON INTERRUPT GOTO interrup
inicio:
cuenta=0
if contar=0 then display
goto display2
      
  display: 
  unid=numero dig 0
  dece=numero dig 1
  cent=numero2 dig 0
  mile=numero2 dig 1 
  portb=224+mile
  pause 2
  portb=208+cent
  pause 2
  portb=176+dece
  pause 2
  portb=112+unid
  pause 2
  gosub teclas
  goto display
  
  display2: 
  unid=numero dig 0
  dece=numero dig 1
  cent=numero2 dig 0
  mile=numero2 dig 1 
  portb=224+mile
  pause 2
  portb=208+cent
  pause 2
  portb=176+dece
  pause 2
  portb=112+unid
  pause 2
  goto inicio
  
  teclas:
      if pausa=0 then inicio
      return
      
    
  
;************** Handler de interrupciones para incrementar contador *************** 
DISABLE                 ;deshabilita interrupciones durante el proceso 
interrup: 
    cuenta = cuenta + 1        
 TMR0=65       
 
        IF cuenta < 20 THEN reset      
        cuenta = 0
        numero = numero + 1 
        IF numero >= 60 THEN 
            numero = 0 
            numero2 = numero2 + 1 
           IF numero2 >= 99 THEN 
            numero2 = 0  
            ENDIF 
            ENDIF
 reset:  
      INTCON.2 = 0           ;resetea la bandera de interrupción del TMR0 
 
      RESUME 
      END
04/11/2011 #1422

Avatar de torres.electronico

D@rio dijo: Ver Mensaje
hola amigos. perdon por desentonar este tema pero les queria compartir la solucion al cronometro de 4 digitos con pic16f628. solo tuve que experimentar un poco con el valor cargado al tmr0 y cambiar el valor de 61 por 65 y listo. a continuacion, el codigo.
Hola Dario, como andas... disculpame por no responder anteriormente, me perdi tu topico.
Che, mira, yo hice exactamente lo mismo con menos recursos y mas sencillo para un sistema experimental de carreras 1/4 milla... osea, con tan solo un 16f877, me arme el cronometro y el resto de los puertos los use para los semaforos y sensores...
Para no tomar muchas lineas de programacion en el ontrol de los display, implemente el CD4026, que es un array-driver de display led 7 segmentos, que funciona por pulsos... Osea, segun la cantidad de pulsos que le das a clock, tenes un numero dado en el display... lastima que no tengo a mano las cosas asi te muestro, pero con la hoja de datos te vas a dar cuenta que es muy basico el manejo, ya que son dos pines de control... uno que es el clock, y el otro que es el reset que lo pone a cero....
el comando que implemente es pulsout
Igualmente, te felicito por tu trabajo
06/11/2011 #1423

Avatar de ferdy575

Por fa' ¿alguien sabe sí es posible controlar 2 LCD 2x16 con un 16f877a? y sí es así como lo puedo hacer como los controlo en el MCS para enviar mensajes distintos a cada uno de ellos? o como envio mensajes independientes a cada una de las 4 lineas? he estado tratando de muchas formas y no me ha sido posible por favor ayudenme con esto, y conseguir en el mercado de mi pais un LCD de 4 lineas es practicamente imposible, les agradezco su ayuda.
06/11/2011 #1424


Cronometro de 4 digitos
D@rio dijo: Ver Mensaje
hola amigos. perdon por desentonar este tema pero les queria compartir la solucion al cronometro de 4 digitos con pic16f628. solo tuve que experimentar un poco con el valor cargado al tmr0 y cambiar el valor de 61 por 65 y listo. a continuacion, el codigo.
saludosss

Código:
@ DEVICE MCLR_ON, XT_OSC, WDT_OFF, LVP_OFF, BOD_OFF, PWRT_ON, PROTECT_OFF
DEFINE OSC 4
  cuenta var byte
  numero2 var word
  numero var word
  unid var byte
  dece var byte
  cent var byte
  mile var byte
  contar var porta.3
  encera var porta.2
  pausa var porta.1
 
  trisb=0
  cmcon=7
  cuenta=0
  numero=0
  numero2=0
 
OPTION_REG = %0000111   ' Configuración del Registro OPTION 
INTCON = %10100000    ' Configuración del Registro INTCON
ON INTERRUPT GOTO interrup
inicio:
cuenta=0
if contar=0 then display
goto display2
 
  display: 
  unid=numero dig 0
  dece=numero dig 1
  cent=numero2 dig 0
  mile=numero2 dig 1 
  portb=224+mile
  pause 2
  portb=208+cent
  pause 2
  portb=176+dece
  pause 2
  portb=112+unid
  pause 2
  gosub teclas
  goto display
 
  display2: 
  unid=numero dig 0
  dece=numero dig 1
  cent=numero2 dig 0
  mile=numero2 dig 1 
  portb=224+mile
  pause 2
  portb=208+cent
  pause 2
  portb=176+dece
  pause 2
  portb=112+unid
  pause 2
  goto inicio
 
  teclas:
      if pausa=0 then inicio
      return
 
 
 
;************** Handler de interrupciones para incrementar contador *************** 
DISABLE                 ;deshabilita interrupciones durante el proceso 
interrup: 
    cuenta = cuenta + 1        
 TMR0=65       
 
        IF cuenta < 20 THEN reset      
        cuenta = 0
        numero = numero + 1 
        IF numero >= 60 THEN 
            numero = 0 
            numero2 = numero2 + 1 
           IF numero2 >= 99 THEN 
            numero2 = 0  
            ENDIF 
            ENDIF
 reset:  
      INTCON.2 = 0           ;resetea la bandera de interrupción del TMR0 
 
      RESUME 
      END
Hola Dario,he cargado ese codigo y no me funciona.
Un saludo.
06/11/2011 #1425


ferdy575 dijo: Ver Mensaje
Por fa' ¿alguien sabe sí es posible controlar 2 LCD 2x16 con un 16f877a? y sí es así como lo puedo hacer como los controlo en el MCS para enviar mensajes distintos a cada uno de ellos? o como envio mensajes independientes a cada una de las 4 lineas? he estado tratando de muchas formas y no me ha sido posible por favor ayudenme con esto, y conseguir en el mercado de mi pais un LCD de 4 lineas es practicamente imposible, les agradezco su ayuda.
mi opinion es que trates de conseguir un lcd de 4 lineas, si de plano no puedes... entonces te sugiero que utilices 2 pic esclavos que controlen cada lcd(puede ser serial USART o I2C), porque otra alternativa con un solo pic seria utilizando ensamblador(el cual puede ser echo desde picbasic) ¿dificil?... Siiiii. creo
espero te sirva mi consejo...
06/11/2011 #1426

Avatar de Dario

Trinquete dijo: Ver Mensaje
Hola Dario,he cargado ese codigo y no me funciona.
Un saludo.
¿que problema tenes? ¿que hace?
saludos
07/11/2011 #1427

Avatar de Nano24

Hola amigos pues por aca traigo un programita que estaba diseñando, se trata de un teclado alfabetico aunque tengo un problema que no puedo resolver, el programa se compone de 9 teclas para escribrir el abecedario completo funciona parecido al sistema de los celulares, bueno ahora el problema es que nose como hacer para que escriba en cualquier parte de la pantalla, me podrian ayudar amigos?
Archivos Adjuntos
Tipo de Archivo: rar TECLADO ALFABETICO.rar (23,8 KB (Kilobytes), 99 visitas)
08/11/2011 #1428

Avatar de reyvilla

Hola nano realice unas pruebas con tu circuito y lo mejore y modifique un tanto, ya puedes escribir en cualquier parte que te desplaces en la lcd, puedes bajar, subir, ir a la izquierda o la derecha y en cualquier punto que estes colocado puedes empezar a escribir, el teclado que coloque es uno matricial para simplificar el código un poco, aunque el teclado tiene las teclas A,B,C Y D , puedes seleccionar cualquier letra del abecedario con las teclas de arriba y abajo, dejándola pulsada por un tiempo se empiezan a desplazar todas las letras y los caracteres son 50 pueden ser mas con una pequeña modificacion en el comando LOOKUP, y el contador del mismo, dejo esto como aporte al foro en caso de que alguien mas lo necesite espero sirva como ejemplo aunque aun le falta bastante es un buen comienzo...saludosss
Archivos Adjuntos
Tipo de Archivo: rar escribir2.rar (49,0 KB (Kilobytes), 111 visitas)
08/11/2011 #1429

Avatar de Nano24

reyvilla dijo: Ver Mensaje
Hola nano realice unas pruebas con tu circuito y lo mejore y modifique un tanto, ya puedes escribir en cualquier parte que te desplaces en la lcd, puedes bajar, subir, ir a la izquierda o la derecha y en cualquier punto que estes colocado puedes empezar a escribir, el teclado que coloque es uno matricial para simplificar el código un poco, aunque el teclado tiene las teclas A,B,C Y D , puedes seleccionar cualquier letra del abecedario con las teclas de arriba y abajo, dejándola pulsada por un tiempo se empiezan a desplazar todas las letras y los caracteres son 50 pueden ser mas con una pequeña modificacion en el comando LOOKUP, y el contador del mismo, dejo esto como aporte al foro en caso de que alguien mas lo necesite espero sirva como ejemplo aunque aun le falta bastante es un buen comienzo...saludosss
Muchas gracias amigo eso me va a ayudar mucho en otras ideas, te quedo super bien lo que pasa es que quiero guardar una serie de nombres en la memoria del PIC y al escribirlas el determine si es correcto y la muestre en la LCD
09/11/2011 #1430


Ayuda usb pic
hola espere que me puedan ayudar

actualmente estoy usando en PBP y el pic18f4550

y cuando uso el envio de datos buffetout todo me va de maravilla

el problema es que cuando quiero recibir datos bufferin ya funciona bien

este es el codigo que tengo:

Código PHP:
USBBufferSizeMax   con 8  ' maximum buffer size
USBBufferSizeTX    con 8  ' 
input 
USBBufferSizeRX    con 8  
' output

the USB buffer...
USBBuffer        Var Byte[USBBufferSizeMax
USBBufferCount   Var Byte 
Symbol USBON 
PORTC.6 
Symbol USBOFF 
PORTC.7  
Temp 
var word
DEFINE  ADC_BITS        8 

TRISD
0
PORTD
0
TRISC.7
0
TRISC.6
0
USBON
=0
USBOFF
=0
TRISA
=1
ADCON0
=%00100011
ADCON1
=%00000000
ADCON2
=%00001000 
' ************************************************************
main program loop rememberyou must keep the USB      *
' * connection alive with a call to USBService every couple  *
of milliseconds or so...                                 *
' ************************************************************
usbinit
ProgramStart: 
 
   USBOFF = 0
   USBON = 1
   ADCIN 0,Temp
   usbservice
   USBBuffer[7]=Temp 
   gosub DoUSBOut
   gosub dousbin
   PORTD= USBBuffer[1]
   goto ProgramStart  
************************************************************
' * receive data from the USB bus                            *
************************************************************
DoUSBIn:
  If 
PORTC.0 0 Then FUERA2 'CONTROLO SI SE DESCONECTÓ DE USB
   USBBufferCount = USBBufferSizeRX              ' 
RX buffer size
   USBService                                    
' keep connection alive
   USBIn 1, USBBuffer, USBBufferCount, DoUSBIn   ' 
read data, if available
   
return
    
' ************************************************************
wait for USB interface to attach                         *
' ************************************************************
DoUSBOut:
  If PORTC.0 = 0 Then FUERA2 '
CONTROLO SI SE DESCONECTÓ DE USB
   USBBufferCount 
USBBufferSizeTX              ' TX buffer size
   USBService                                    ' 
keep connection alive
   USBOut 1
USBBufferUSBBufferCountDoUSBOut ' if bus available, transmit data
   return
   
'
sin usb 
   FUERA2
:                               'COMIENZO LAZO CERRADO HASTA                                        'VOLVER A CONECTAR A USB
   USBOFF 
1
   USBON 
0


   
If PORTC.0 1 Then programStart     'CONTROLO SI SE CONECTÓ A USB
   GoTo FUERA2                             '
CIERRO EL LAZO EJEMPLO DE ACTIVIDADES QUE 
Gracias
10/11/2011 #1431

Avatar de arturouc

mecatrodatos dijo: Ver Mensaje
Que tal les anexo parte del libro que estoy realizando desde la utilizacion de pic 12 f hasta el 18f, espero sea de su agrado esta en formato pdf
Gracias Mecatrodatos
pregunta alguien
ha manejado el modulo QEI del 18f2431
10/11/2011 #1432


pregunta alguien
ha manejado el modulo QEI del 18f2431
Quien pregunto???

suena interesante ese modulo

va de lujo para este tipo de encoders no?
10/11/2011 #1433

Avatar de arturouc

lubeck dijo: Ver Mensaje
Quien pregunto???

suena interesante ese modulo
Que tal Lubeck
estoy manejando un encoder incremental de un servomotor industrial
con el 16f877 y PIC Basic Pro pero me quiero cambiar al
18f2431 que tiene un modulo especial para los encoders

es un driver para controlar servomotores de un robot industrial
este es el prototipo que tengo

TRAYECTORIA LINEAL
10/11/2011 #1434


Esta muy bueno el proyecto, me encanta ver esos robots...

con respecto al 18f2431... estoy tratando de simularlo pero hasta ahorita no lo logro lo estaba haciendo en el simulator ide pero no me incrementa el registro de la posicion ni la interrupcion... lo voy a intentar con el proteus....

si me sale algo te paso lo que he conseguido... hasta pronto...
10/11/2011 #1435

Avatar de arturouc

lubeck dijo: Ver Mensaje
Esta muy bueno el proyecto, me encanta ver esos robots...

con respecto al 18f2431... estoy tratando de simularlo pero hasta ahorita no lo logro lo estaba haciendo en el simulator ide pero no me incrementa el registro de la posicion ni la interrupcion... lo voy a intentar con el proteus....

si me sale algo te paso lo que he conseguido... hasta pronto...
este es un ejemplo que publico autotronico en la pag. 55 post #1096

ejemplo de autotronico

es el 18f4331
10/11/2011 #1436


ya no entendi...


lo que tu buscas es saber si alguien ha tenido una experiencia fisica con el QEI,?
porque en ese ejemplo esta como se configura... no?

pd.. por cierto yo no puedo simular el ejemplo de proteus tu si?
10/11/2011 #1437

Avatar de reyvilla

logre programar una eeprom externa en el proteus generando un archivo tipo .bin binario les dejo otro video mas para que vean de que se trata se seguro les ayudara a unos cuantos...saludoss

10/11/2011 #1438

Avatar de arturouc

lubeck dijo: Ver Mensaje
ya no entendi...


lo que tu buscas es saber si alguien ha tenido una experiencia fisica con el QEI,?
siii, no he tenido tiempo para entrarle a un 18F

lubeck dijo: Ver Mensaje
porque en ese ejemplo esta como se configura... no?
creo que si.


lubeck dijo: Ver Mensaje
pd.. por cierto yo no puedo simular el ejemplo de proteus tu si?
Si lo puedo simular
pero puedo variar el PWM y en el display cambia
per la posicion no cambia...

espero dentro de 2 semanas poder empezar a trabajar con un 18F2431
lo que avances para controlar un servomotor con encoder incremental de 2 canales
seria excelente lubeck...

del video anterior donde el robot es de acrilico, ya tenemos la mayor parte de aluminio
faltan algunas bases, pero lo mejor es que ya tengo unos motores de 24v con un
reductor de velocidad de 1:25 y tambien unos encoder de 500 pulsos/rev
para armar ese mismo robot pero ahora mas rapido, rigido, preciso, fuerte, etc., etc., etc.
por eso me interesa mucho hacer el driver con el micro adecuado y no con el 16f877
que actualmente tengo...
11/11/2011 #1439


Si lo puedo simular
pero puedo variar el PWM y en el display cambia
per la posicion no cambia...
ya tambien lo pude simular tenia un problema mi proteus

si tu encoder es incremental y genera un patron como el siguiente....

(el index si lo tiene puedes o no usarlo)

entonces es asi para simularlo y el codigo del amigo autotronico es correcto...
en el video estoy incrementándolo y decrementandolo según las pulsaciones...

lo que no entendi es porque con el pic simulator IDE no se puede, pero bueno, quizas es un error de ese simulador... ya que tengas el pic no olvides comentar los avances...

pd..Revisando las cualidades de este pic me doy cuenta que tiene conversores AD simultaneos , en un tema alguien necesitaba uno de estos, pero no me acuerdo donde...
12/11/2011 #1440


que tal volvieron a retomar el manejo de motores con encoders con el pic 18f2431 estare atento.
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.