Programa asm o c para pic16f84a para control motor pap

hola a los dos. los que lo habeis logrado sois vosotros. pues no me queda camino por andar a mi.
tengo este viernes los examenes de recuperacion para subir nota y no lo podre poneo lo que se dice hoy. pero que lo hago es seguro.
las dudas del l293, es porque en la simulacion no podia usarlo. tengo que probar porque quizas si que era que al dar valor al power del vs para el motor y no darle valos al power de la logica, este estendia que podria ser o 5v o lo asignado al power del motor pues no estava asignado ninguno. tengo que probarlo, seguro que mas tarde.
cuando me funcione con los 2v del motor y los 2,5 ohmn por bobina le hago el circuito con la cnc que es un plis. los componentes ya los tengo asi como todo el montaje mecanico que esta esperando a la electronica y a hacer videos. jeje



para aprender y debido a que yo hacia mis pinitos con mi zx spectrum en basic y a los 18 hice un curso de 6 meses de C++, que me recomendais para abordar a los pics. ahora lo que hice no lo recuerdo pero seguro que lo recupero relativamente pronto. alguna web, pic16f84.com etc o libros...
 
Última edición:
hola. subo esquema acabado para que lo superviseis. no se si poner los diodos de proteccion que he visto en algunos montajes con bipolares.
esta pensado para ajustar con potenciometro a 2v para el motor y fijo a 5v para la logica.
en el l293 he puesto una resistencia de 10k. porque he visto que en algunos ejemplos la usan ya que es solo el enabled y funciona con menor voltage en el datasheet.
adjunto la imagen y el archivo de proteus.
 

Adjuntos

  • esquema definitivo.jpg
    esquema definitivo.jpg
    134 KB · Visitas: 26
  • acabado bipolar 16f88-fafricacion placa.rar
    18.9 KB · Visitas: 28
Última edición:
Si,pon los diodos de proteccion por seguridad, ellos evitaran la fuerzacontraelectomotriz del motor y descartaran tensiones inversas que puedan dañar el l293

Esperamos los videos (y)

Un saludo
 
Lo dicho. aqui esta el montaje con diodos. si me lo aprobais lo siguiente sera fisico.
al igual que antes, mando la imagen del proteus y el archivo de esquema en el rar. es lo mismo pero el del rar es para poder probarlo.
por cierto meta. si quieres hacer lo del timer interno ok. si no te apetece tranqui que son dos clics entrar el cristal en el circuito.

Edito: se me olvidaba. he puesto 1N4004 porque los que queria no me salian. BY299. que son los que tengo la intencion de montar. pero si me confundo o es innecesario complicarme por si no los tienen o algo decirmelo. dentro de mis alternativas estan los 1n4004 y 1n4007, pero no veo clara la diferencia aparte de los 1000v del segundo porque siguen siendo de 1A.

otra pregunta. las borneras que encontre creo que son de 0.2" entre pines y no encuentro ninguna en proteus. como hago para definir la distancia entre pines? existen las borneras en proteus?
 

Adjuntos

  • acabado bipolar 16f88-fafricacion placa-2.rar
    20.1 KB · Visitas: 24
  • esquema definitivo-2.jpg
    esquema definitivo-2.jpg
    301.2 KB · Visitas: 8
Última edición:
Hola de nuevo. meta. tengo un problemilla pequeño pero desglosado 648 partes complicadas exponencialmente. jo que exagerao que soy. el caso es que mi version de proteus es pobretona y no bienen la mitad de packages para pasar al ares y diseñar la placa fisica. como lo soluciono. mi primer problema el el potenciometro. el miedo que tengo es que veo que circuitos anteriores no me funcionan con la version actual y si le pongo la nueva v7.9 no se si tendre que repetir trabajos. que hago. adjunto el esquema acabado para exportar al ares a ver si en el 7.9 da problemas de packages.
un saludo.
 

Adjuntos

  • acabado bipolar 16f88-fafricacion placa-3.rar
    16.8 KB · Visitas: 18
Me pasa lo mismo. Puedes escoger otros encapsulados que sea muy parecido o igual. Antes de hacer lo del Ares, en el ISIS, con cada objeto, allado puedes encontrar los componentes. Es mejor así.

La alternativa que usan mucho es, ISIS para simular, para hacer placas, usan Eagle.

Saludo.
 
bueno, no se si me sera facil pues estoy mas acostumbrado al proteus, pero siempre se puede rehacer en eagle. mas curro que os habeis pegado vosotros y ni siquiera es vuestro proyecto.
cuando tenga un rato hoy lo miro de terminar en un lado o en otro.
notas parciales de los examenes 7,03 de media. pero tengo dos notas bajas y una suspendida con 4,5 asi que este viernes recuperacion.
 
hola. podria ser una buena configuracion por ner como package del potenciometro el encapsulado o package trimer?
es lo unico que me parece buena idea usar y ademas es el unico conflicto. bueno el unico no. para el esquema tengo que cambiar el encapsulado del 16f88 que smd. a ver si lo hago bien, pero creo que lo que hare sera darle el 16f84a para hacer el esquema que total no se lo diremos que al final monto otro, jeje.
 
Bueno. aqui dejo el mogollon de archivos que se han ido generando. buena parte de ellos son generados por el propio proteus y no se si sirven de algo.
he intentado que solo esten los que sirven para algo. es decir, version de los archivos hex para 16f84a unipolar y bipolar. 16f88 bipolar...etc
he adjuntado los esquemas de diversas maneras. estan los pdf para quien quiera usar fotolitos o transferencias, pero tambien estan los archibos del proteus, en gerber para coppercam y en codigo G para maquinado a dos caras. vamos que si alguien no encuentra lo que busca aqui casi es que no existe. jeje.

Nota. ahora si que necesito la version del hex para 16f88 con oscilador interno, pues tenia pensado diseñarlo con oscilador externo y luego si no hacia falta no lo ponia, pero se me olvido y al menos que haga inventos feos no cabe.
 

Adjuntos

  • plancheta ecuatorial.rar
    1.9 MB · Visitas: 43
meta. he instalado la version 7.9 y hay cosas que no me deja hacer como ver la placa en 3d. te pasa igual o es cosa mia? lo mismo reinstalo la que tenia antes.
 
Buenas:

No he hecho nada en 3D con el 7.9 SP1.

No estoy seguro que lo haya hecho bien, aún así, aquí está el código fuente.
Código:
;********************************************************
;
;    Movimiento de un motor de pasos, 
;    MOTOR DE 48 PASOS POR VUELTA
;    1 PASO CADA 1.25SEG  A 32768KHz
;
;        RB3    RB2    RB1    RB0
;        
;        1    0    1    0
;        1    0    0    1    AVANCE, LOS 1 SON ON        
;        0    1    0    1    SE SUPONE A TRAVÉS DE ULN2003
;        0    1    1    0
;
;*******************************************************

;ZONA DE DATOS *****************************************

    LIST     P=16F88
    INCLUDE    <P16F88.INC>
    __CONFIG    _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_ON & _PWRTE_ON & _WDT_OFF & _INTRC_IO
    __CONFIG    _CONFIG2, _IESO_OFF & _FCMEN_OFF

;   Oscilador cristal externo 4 MHz, con dos condensadores de 22 pF.

; _CP_OFF: Protección de código DESACTIVADO.
; _DEBUG_OFF: Debug en circuito DESACTIVADO.
; _WRT_PROTECT_OFF: Protección a escritura en memoria de programa DESACTIVADO.
; _CPD_OFF: Protección de código de datos DESACTIVADO.
; _LVP_OFF: Programación en baja tensión DESACTIVADO.
; _BODEN_OFF: Reset por Brown-out DESACTIVADO.
; _MCLRE_ON: Reset por pin externo ACTIVADO.
; _PWRTE_ON: Retraso al reset ACTIVADO.
; _WDT_OFF: Watchdog DESACTIVADO.
; _XT_OSC: Oscilador externo del tipo XT.

; _IESO_OFF: Modo de intercambio de externo a interno DESACTIVADO.
; _FCMEN_OFF: Monitor de CLK DESACTIVADO.

;*******************************
;    DEFINICIÓN DE REGISTROS
;********************************
    CBLOCK 0x20
    POS    ;Aquí va el número de paso de 1 a 4
    CUENTA ;Cuenta cada interrupción de 0.25 segundos, a las 5 dá un paso
    RETARDO
    ENDC



    ORG 0X0000
    GOTO SETEOS ;


    ORG 0X0004
    GOTO INTERR


    ORG 0X0005


SETEOS
    BSF STATUS, RP0 ;TRABAJO BANCO 1
    clrf    ANSEL
    MOVLW B'11110000' ;BITS BAJOS = SALIDA
    MOVWF TRISB
    MOVLW B'11111111'
    MOVWF TRISA
    movlw    b'00000000'
    movwf    OSCCON
    movlw b'00000010'
    movwf OPTION_REG ;Temporizador TMR0 a 1/8 preescala
    BCF STATUS,RP0 ;Banco 0
    movlw b'00100000'
    movwf INTCON ;Interrupcion por TMR0
    MOVLW .1
    MOVWF POS
    CLRF CUENTA

;**************************************ESPERA 1 BOTÓN************************
ESPERA
    BTFSS PORTA,0
    goto ADEL
    BTFSS PORTA,1
    goto ATRAS
    BTFSS PORTA,2
    goto AVANCE
    CLRF PORTB ;APAGA TODO PUES ESTÁ EN REPOSO
    GOTO ESPERA

;****************************************ADELANTE* ***************************
; MUEVE UN PASO Y VUELVE
;************************************************* ***************************
ADEL 
    CALL TIEMPO ;Tiempo para el antirrebote
    BTFSC PORTA,0
    goto    ESPERA    ;return ;RUIDO
    INCF POS,F
    MOVLW .5
    SUBWF POS,W
    BTFSS STATUS, Z
    GOTO NA
    MOVLW .1
    MOVWF POS
NA 
    CALL PULSOS
    CALL TIEMPO ;Tiempo para escitar las bobinas del motor
    CALL TIEMPO ;ESPERA ESTABILIZARSE
    goto    ESPERA    ;return
;****************************************ATRAS**** ************************
; MUEVE UN PASO Y VUELVE
;************************************************* ***************************
ATRAS
    CALL TIEMPO ;Tiempo para el antirrebote
    BTFSC PORTA,1
    goto    ESPERA    ;return ;RUIDO
    DECF POS,F
    movlw .0
    subwf POS,W
    BTFSS STATUS, Z ;controlo no baje de 1, si es 0 va a 4
    GOTO NT
    MOVLW .4
    MOVWF POS
NT 
    CALL PULSOS
    CALL TIEMPO ;ESPERA ESTABILIZARSE
    CALL TIEMPO ;Tiempo para escitar las bobinas del motor
    goto    ESPERA    ;return
;****************************************AVANCE*** *****************************
; SOLO SE SALE CON STOP
;************************************************* *****************************
AVANCE
    CLRF TMR0
    NOP
    NOP
    BCF INTCON, TMR0IF ;Bandera TMR0
    BSF INTCON, GIE ;Interrupcion general
    BSF INTCON, TMR0IE ;Interrupcion por TMR0
QUEDA
    BTFSS PORTA,3
    GOTO PARA    
    GOTO QUEDA

;****************************************PARA***** *****************************
PARA
    CALL TIEMPO ;Tiempo para el antirrebote
    BTFSC PORTA,3
    GOTO QUEDA ;SI FUE UN RUIDO VUELVO
    CLRF PORTB
    BCF INTCON, GIE
    BCF INTCON, TMR0IF
    goto    ESPERA    ;return

;**************************************TIEMPO RETARDO REBOTES*****************************
TIEMPO 
    MOVLW .50 ;Aumentar el tiempo pues no escita las ;bobinas
    MOVWF RETARDO
TI 
    DECFSZ RETARDO,F ;RETARDO PARA REBOTES
    GOTO TI

    RETURN

;***************************************PULSOS**** *********************************

PULSOS 
    MOVLW .1
    SUBWF POS, 0
    BTFSS STATUS, Z
    GOTO SEG
    MOVLW B'00001001' ;1 CODIGO
    MOVWF PORTB
    RETURN

SEG 
    MOVLW .2
    SUBWF POS, 0
    BTFSS STATUS, Z
    GOTO TER
    MOVLW B'00001010' ;2 CODIGO
    MOVWF PORTB
    RETURN

TER 
    MOVLW .3
    SUBWF POS, 0
    BTFSS STATUS, Z
    GOTO CUAT
    MOVLW B'00000110' ;3 CODIGO
    MOVWF PORTB
    return

CUAT 
    MOVLW .4
    SUBWF POS, 0
    BTFSS STATUS, Z
    goto    FINAL    ;return
    MOVLW B'00000101' ;4 CODIGO
    MOVWF PORTB

FINAL 
    RETURN

;************************************INTERR******* ****************************
; CADA .25 DE SEGUNDO VIENE AQUÍ
;************************************************* ****************************
INTERR 
    INCF CUENTA,F
    MOVLW .5
    SUBWF CUENTA,W
    BTFSS STATUS, Z
    GOTO VOLVER ; SI NO LLEGÓ A 5
    CLRF CUENTA ; SI LLEGÓ A 5/4 AVANZO
    INCF POS,F
    MOVLW .5
    SUBWF POS,W
    BTFSS STATUS, Z
    GOTO NIN
    MOVLW .1
    MOVWF POS
NIN 
    CALL PULSOS
    CALL TIEMPO
VOLVER 
    BCF INTCON, TMR0IF ;BOORO BANDERA
    RETFIE


    END

Me guié por la hoja de datos 16F88.
http://ww1.microchip.com/downloads/en/DeviceDoc/30487c.pdf

Saludo.
 
Muchas gracias de nuevo. dentro de una hora aprox. freso la placa, sueldo y pruevo. cualquier cosa te digo y si me retraso es cosa de los examenes de mañana.
me da que si le hecha un ojo juan nos sacara de dudas. pero no es preocupante, cuando tenga la placa lo pruevo yo.



Que bueno, si asta lo he podido compilar yo, al final no podre batir mi recor de torpe. jeje
bueno, parece que funciona al menos en el proteus. solo queda currarse la placa y montarla.
ya hos cuento.
 
Última edición:
Hola. Pues en proteus funciona "todo". Pero si es verdad que el osciloscopio hace un extraño. Al ir rápido la señal es mas cuadrada pero al ir lento la señal hace un pico cuando da el pulso y en vez de mantenerse desciende despacio hasta menos de la mitad. Después el pulso se invierte haciendo lo mismo del revés.
De Momento no se si es configuración de los parámetros del proteus. Motor etc. O es que le falta algo.
 
La mejor manera es probarlo físicamente, ya que simuladores son simuladores, te haces una idea aproximada de la realidad y no siempre funcionan.
 
bueno. pues tengo una placa terminada pero no me funciona. creo que tiene algun cruce o algo pero no lo acavo de ver. el tema que es que la parte de alimentacion va, le da corriente a los componentes, las salidas 1 y 2 del pic estan en 5v pero las 17 y 18 estan a 3,4v creo que debe de aver una deriva a masa tras una resistencia o algo asi ya que asta la regulacion a 2v funciona pero no veo que se active el programa al dar a ningun boton. creo que es la placa que tiene un corto pues se calientan al cabo de un minuto o dos el 7805 y el lm317. llegan a quemar pero lo apago antes de que sufran daño.
sogerencias?
 
bueno, como el circuito que diseñe quedaba dificil de producir porque tenia vias debajo de los chips y pistas a soldar por la cara top debajo de los chips, suerte que con un soldador mini he conseguido hacer las soldaduras, pero como heran casi a cegas tube un corto y una falsa soldadura ademas de una soldadura fria en un punto comun de las resistencias de las patillas 17 y 18. el caso es que ahora llegan los 5v a todas las partes requeridas y los 2v tambien, pero no da señales al motor.
puede ser que no funcione el tema del oscilador interno? que otra cosa puede ser?
podriais mandarme un programa que no requiera pulsar botones para dar señal a una patilla, no se por ejemplo intermitente para verificar con un led si da señales el chip sin el oscilador.
me vale cualquiera que ya este echo de algun ejemplo. yo adaptare la salida adecuada para que le llegue al led.
 
Atrás
Arriba