Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?
02/06/2012 #2081

Avatar de torres.electronico

D@rio dijo: Ver Mensaje
gracias por preocuparte por mi proyecto torres, estoy en eso. saludosss y gracias che!!!
Te gusto la idea nueva? lo ves mas viable Dario?
Darkbyes, joya, descargando, mirando y te comento... Gracias por el aporte
yo tome como ejemplo un par de ejercicios que estaban en el foro, pero los edite y pase al protoboard y no me funciono...estoy convencido que es problemas de fuses y mala config de la interrupcion....
Voy a ver el archivo que me pasas y comento como adelanto en la nueva version del tacometro
Saludos
04/06/2012 #2082

Avatar de torres.electronico

No pude implementar el software de SUKY... Dejo lo que tengo hasta ahora...tengo que modificar el prescaler para que en ves de trabajar cada 16.384 milisegundos, trabaje cada 240ms...
Una pregunta lubeck, Reimy o quien entienda....En ves de count, se podria hacer con la captura del CCP1? Por que si se puede llegr hacer, la captura y o conteo queda en segundo plano y se hace mucho mas agil el programa cuando quiera anexar la comparacion de las rpm obtenidas, con el valor previo fijado apra que me indique que llego a esas RPM...Acá dejo la idea de la implementacion del TMR0 para el tacometro...


Código:
 @ device HS_OSC  
DEFINE OSC 20 
DEFINE ADC_BITS 8 
DEFINE ADC_CLOCK 3 
DEFINE ADC_SAMPLEUS 50 
DEFINE LCD_DREG PORTD 
DEFINE LCD_BITS 4 
DEFINE LCD_DBIT 4 
DEFINE LCD_RSREG PORTD 
DEFINE LCD_RSBIT 2 
DEFINE LCD_EREG PORTD 
DEFINE LCD_EBIT 3 
DEFINE LCD_LINES 2 

revo var byte
ADCON1 = 7      ' PORTA y PORTE digital
Pause 100       
; Set TMR0 to interrupt every 16.384 milliseconds
OPTION_REG = $55        ' Set TMR0 configuration and enable PORTB pullups
INTCON = $a0            ' Enable TMR0 interrupts
On Interrupt Goto tickint

;*********** PROGRAMA ***********************
contador:
     count portc.0, 125, revo
       revo= (revo / 4)/2 * 240 
     GOTO contador 

Disable            ' Disable interrupts during interrupt handler

tickint:
  LCDOUT $FE,1,"RPM=",dec revo
   
tiexit: 
   INTCON.2 = 0    ' Reset timer interrupt flag
   Resume

   End
04/06/2012 #2083


Timer regresivo con display 7 segmentos en PBP
Hola gente, estoy programando un timer en display 7 seg. de cuenta regresiva de tres digitos en segundos con PBP y micro code , lo tengo funcionando pero no logro darle precision, he modificado valores hasta agregue pauseus, pero no doy con la tecla, tambien extrage el fragmento de la interrupcion y junto con la parte para mostrar en el display lo compile y lo simule con Pic simulador ide para ver el tiempo que tomaba en hacer el ciclo y si, se estiran los tiempos anteriormente lo realice en asembler y recuerdo que quedo muy exacto, les adjunto el basic a ver si me pueden dar una mano.

Otra cosa por que cuando quiero configurar los fuses como por ej.
@ DEVICE PIC16F877A
@ DEVICE HS_OSC,PROTECT_OFF,WDT_OFF,PWRT_ON,BOD_OFF,LVP_OFF ,CPD_OFF
me da error ilegal opcode
Archivos Adjuntos
Tipo de Archivo: rar Timer_ver1.rar (1,8 KB (Kilobytes), 82 visitas)
04/06/2012 #2084


mecatrodatos dijo: Ver Mensaje
proyecto 3

Código:
;proyecto display 

;programa que presenta la palabra HOLA en 4 displays pic 16f84A con 
;despalzamiento de derecha a izquierda.

                                
@ device xt_osc  ; oscilador externo XT
define osc 4     ; especifica que se va a utilizar uno de 4 Mhz

trisb=0                      ;puerto b como salidas
trisa=0                      ;puerto a como salidas
x var byte                   ;variable con capacidad de 255

texto:
for x=1 to 20                 ; repeticiones de estye segmento
porta=14:portb=8             ;formacion de la letra A en el dispaly
GOSUB TIEMPO                 ; ir a rutina tiempo
porta=13:portb=71            ;forma la letra L
gosub tiempo                 ; ir a rutina tiempo
porta=11:portb=64            ;forma la letra O
gosub tiempo                  ; ir a rutina tiempo
porta=7:portb=9               ;forma la letra H
gosub tiempo                   ; ir a rutina tiempo
next                          ; siguiente repeticion

for x=1 to 20
porta=14:portb=127            ;apaga el display
GOSUB TIEMPO                   ; ir a rutina tiempo
porta=13:portb=8              ;forma la letra A
gosub tiempo                  ; ir a rutina tiempo
porta=11:portb=71             ;forma la letra L
gosub tiempo                  ; ir a rutina tiempo
porta=7:portb=64               ;forma la letra O
gosub tiempo                  ; ir a rutina tiempo
next

for x=1 to 20
porta=14:portb=9               ;forma la letra H
GOSUB TIEMPO                   ; ir a rutina tiempo
porta=13:portb=127             ;apaga el display
gosub tiempo
porta=11:portb=8                ;forma la letra A
gosub tiempo
porta=7:portb=71                ;forma la letra L
gosub tiempo
next

for x=1 to 20
porta=14:portb=64            ;forma la letra O
GOSUB TIEMPO
porta=13:portb=9              ;forma la letra H
gosub tiempo
porta=11:portb=127             ;apaga el display
gosub tiempo
porta=7:portb=8                 ;forma la letra A
gosub tiempo
next

for x=1 to 20                   ;forma la letra L
porta=14:portb=71
GOSUB TIEMPO
porta=13:portb=64                ;forma la letra O
gosub tiempo
porta=11:portb=9                ;forma la letra H
gosub tiempo
porta=7:portb=127               ;apaga el display
gosub tiempo
next
goto texto                      ;IR A TEXTO

TIEMPO:
PAUSE 5                        ;espera5mls
RETURN                         ;returna al gosub que la llamo 
end                             ;fin deel programa
con este programa de aprende a utilizar el multiplexado para manejar varios displays
Me podrían decir que significa esto y con respecto a la capacidad
, x var byte ;variable con capacidad de 255
04/06/2012 #2085


Una pregunta lubeck, Reimy o quien entienda....En ves de count, se podria hacer con la captura del CCP1?
yo no tengo idea... nunca he echo algo con el capture... ahora mismo estoy intentando ver como funciona... si le entiendo te intento ayudar...
04/06/2012 #2086

Avatar de torres.electronico

lubeck dijo: Ver Mensaje
yo no tengo idea... nunca he echo algo con el capture... ahora mismo estoy intentando ver como funciona... si le entiendo te intento ayudar...
Yo me estoy guiando por el ejemplo de melabs... aca te la adjunto
Archivos Adjuntos
Tipo de Archivo: rar CCP.rar (50,1 KB (Kilobytes), 75 visitas)
04/06/2012 #2087


creo que ya le entendi.... demasiado tarde con el ejemplo

lo que hace esa cosa del capture es que el tmr1 tiene un contador word(16bits), y cada que sucede una caida o subida del RB3, se graba el dato en el registro word del capture.... y se efectua la interrupcion...

entonces que pex... crees que te sirve ... tu ciclo maximo sera de 240ms???
04/06/2012 #2088

Avatar de reyvilla

hola de nuevo por acá, les comento estuve leyendo en una revista y revisando otros archivos, los módulos capture y compare, según entiendo el capture pues como indica el amigo lubeck escanea una frecuencia y con el compare, pues compara otra frecuencia de referencia. Ahora lo noto complicado e incluso mas difícil que por una simple interrupción externa, yo para asegurar incluso usaría un pic eneano solo para el conteo y otro pic para tomar el tiempo del conteo ya que en uno solo me resulta difícil, no digo que no sea posible la cuestión esta en que tan preciso puede llegar hacer y que otras cosas puede hacer el pic aparte de medir las rpm, poniendo que se interrumpe por cada pulso de entrada y por cada desbordamiento del tmr0, los pulsos de entrada son los del motor y seria para el contador, el tmr0 lo utilizaría como temporizador osea cuanto duro cada pulso, tendría que calcular cada pulso en función a eso llevarlo a rpm, algo así mas o menos, tengo una idea pero aun no muy clara, voy a seguir investigando a ver que mas encuentro por alli saludos...
05/06/2012 #2089

Avatar de torres.electronico

lubeck dijo: Ver Mensaje
lo que hace esa cosa del capture es que el tmr1 tiene un contador word(16bits), y cada que sucede una caida o subida del RB3, se graba el dato en el registro word del capture.... y se efectua la interrupcion...
entonces que pex... crees que te sirve ... tu ciclo maximo sera de 240ms???
Excelente, entonces cae como anillo al dedo, ya que al tener en segundo plano el conteo, ya ganamos tiempo de ejecucion de la rutina principal...

reyvilla dijo: Ver Mensaje
...les comento estuve leyendo en una revista y revisando otros archivos, los módulos capture y compare, según entiendo el capture pues como indica el amigo lubeck escanea una frecuencia y con el compare, pues compara otra frecuencia de referencia....
Con este dato, se me esta cerrando la idea mucho mejor formada que la que tenia desde un principio... El tema es ahora sentarme y pesarla bien como armar ...
Miren, y comenten si me entienden y es viable lo que se me pasa por la sabiola (cabeza)...
implementamos el modulo capture para contar los pulsos, seteamos el prescaler del tmr0 en 1/4 de segundo, salta la interrupcion del TMR0 y en la rutina de la interrupcion, tomamos el numero de pulsos que conto el modulo capture, lo dividimos por 4 y ahí tenemos una vuelta del motor en lo que fue 1/4 de segundo.... a ese resultado, lo multiplicamos para sacar un minuto, y ahi obtendriamos las RPM finales...
No entendi muy bien lo del modulo comparador...osea, como trabajarlo... esta seria la herramienta indicada para programar un numero de RPM determinadas, en las cuales nosotros despues querramos encender un LED para avisarnos que llego o paso esas RPM programadas (a esto comunmente se lo llama Shift Light)...
Les comento un detalle extra que es para entender como es el ciclo de las RPM en un motor de 4 tiempos...
cada ciclo finalizado del motor, el distribuidor o en otros casos, el sensor de leva y cigueñal, envia un pulso al tacometro que despues de una cuenta matematica calcula las RPM; Al tratarse de un motor de 4 tiempos, son 4 los pulsos que obtenemos al dar una vuelta completa el cigueñal (osea, al pasar por todos los pasos)


Si bien, gran parte del proyecto se basa en programacion, no hayque dejar de lado el diseño del hardware, ya que si no protegemos la entrada del microcontrolador, esta se podria quemar; Pero el otro gran detalle, es que si aplicamos un supresor cualquiera, corremos el riesgo de que se deformen y o pierdan pulsos a determinadas frecuencias... Entre hoy y mañana, les subo el diagrama del circuito asi ya lo vamos teniendo todo completito
Gracias amigo por la voluntad y la ayuda

05/06/2012 #2090

Avatar de Dario

hola torres, te cuento que estoy un poco mareado con esto del tmr0 y demas siempre me lleve mal con las interrupciones... me voy a poner a repasar el funcionamiento de las interrupciones y eso del modulo capture y compare. saludosss
06/06/2012 #2091

Avatar de Nano24

Hola amigos, la verdad que quiero actualizarme un poco y empezar a hacer las conexiones del PIC a la PC por medio del USB

La cosa es que he estado buscando información por Internet y encontré que el Easy HID genera el código en PBP y VB para empezar a hacer nuestros proyectos, ok hasta ahí todo va bien, la cosa es que no entiendo que mas tengo que hacer con el código generado, hay que compilarlo con PicBasic? Porque hay esta mi duda, cuando le doy compilar me genera un montón de errores y no es exactamente por el MPASM porque eso ya lo resolví.

Vean este es un ejemplo, generando código en Pibasic con MPASM para PIC18F4550 para que vean que no genera error ahi, pero vean la otra imagen que es del codigo Easy HID y me da esos errores para ver que respuesta me pueden dar de como solucionar ese problema.

El codigo generado por Easy HID:

DEFINE OSC 48
DEFINE LOADER_USED 1

USBBufferSizeMax con 8 ' maximum buffer size
USBBufferSizeTX con 8 ' input
USBBufferSizeRX con 8 ' output

' the USB buffer...
USBBuffer Var Byte[USBBufferSizeMax]
USBBufferCount Var Byte

' ************************************************** **********
' * main program loop - remember, you must keep the USB *
' * connection alive with a call to USBService every couple *
' * of milliseconds or so... *
' ************************************************** **********
usbinit ' initialise USB...
ProgramStart:
gosub DoUSBIn
gosub DoUSBOut
goto ProgramStart

' ************************************************** **********
' * receive data from the USB bus *
' ************************************************** **********
DoUSBIn:
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:
USBBufferCount = USBBufferSizeTX ' TX buffer size
USBService ' keep connection alive
USBOut 1, USBBuffer, USBBufferCount, DoUSBOut ' if bus available, transmit data
return

No entiendo cual es el error al compilar
Imágenes Adjuntas
Tipo de Archivo: jpg ejemplo.JPG (72,6 KB (Kilobytes), 24 visitas)
Tipo de Archivo: jpg El_Error.JPG (136,5 KB (Kilobytes), 23 visitas)
06/06/2012 #2092
Moderador

Avatar de D@rkbytes

Nano24 dijo: Ver Mensaje
Hola amigos, la verdad que quiero actualizarme un poco y empezar a hacer las conexiones del PIC a la PC por medio del USB

La cosa es que he estado buscando información por Internet y encontré que el Easy HID genera el código en PBP y VB para empezar a hacer nuestros proyectos, ok hasta ahí todo va bien, la cosa es que no entiendo que mas tengo que hacer con el código generado, hay que compilarlo con PicBasic? Porque hay esta mi duda, cuando le doy compilar me genera un montón de errores y no es exactamente por el MPASM porque eso ya lo resolví.

Vean este es un ejemplo, generando código en Pibasic con MPASM para PIC18F4550 para que vean que no genera error ahi, pero vean la otra imagen que es del codigo Easy HID y me da esos errores para ver que respuesta me pueden dar de como solucionar ese problema.

No entiendo cual es el error al compilar
Saludos Nano24
Por acá resolvimos ese problema hace poco.

Suerte.
06/06/2012 #2093

Avatar de Nano24

mil gracias amigo, sin dudas me funciono pudo generar el archivo hex, pero aun soy novato en esto y quisiera saber que hacer cuando genero el archivo hex como puedo empezar desde algo sencillo como encender un LED por USB desde la pc?
06/06/2012 #2094

Avatar de megatecpower

triac disprado por 16f627a
hola al mandar 5V el triac se dispara y enciende la carga pero cuando se pone en 0V el triac sige conduciendo ¿alguien puede darme una idea de como lo hago funcionar como interruptor?
Imágenes Adjuntas
Tipo de Archivo: jpg 01-06-12_123201.jpg (53,8 KB (Kilobytes), 58 visitas)
06/06/2012 #2095

Avatar de torres.electronico

megatecpower dijo: Ver Mensaje
hola al mandar 5V el triac se dispara y enciende la carga pero cuando se pone en 0V el triac sige conduciendo ¿alguien puede darme una idea de como lo hago funcionar como interruptor?
Para arrancar, eso no es un triac, eso es un scr
Pero suponiendo que lo estas haciendo en un PCb con un verdadero TRIAC, seria bueno ver cual estas implementando, ya que hay dos tipos de triac y si bien son similares, algunas cosas cmabian ... Saludos
06/06/2012 #2096

Avatar de megatecpower

hola lo hize en protoboard pero con una lampara tal como se muestra en el esquema con un bt139 pero como puedo hacer que funcione como interruptor
06/06/2012 #2097
Moderador

Avatar de D@rkbytes

Nano24 dijo: Ver Mensaje
mil gracias amigo, sin dudas me funciono pudo generar el archivo hex, pero aun soy novato en esto y quisiera saber que hacer cuando genero el archivo hex como puedo empezar desde algo sencillo como encender un LED por USB desde la pc?
En el ejemplo USB_Test.rar que adjunte viene como hacer eso.
El programa que se adjunta en VB6 es la interfaz, y el diseño de prueba es el *.DSN de PROTEUS.

Suerte.
06/06/2012 #2098

Avatar de J2C

torres.electronico dijo: Ver Mensaje
.... Pero suponiendo que lo estas haciendo en un PCb con un verdadero TRIAC, seria bueno ver cual estas implementando, ya que hay dos tipos de triac y si bien son similares, algunas cosas cmabian ... Saludos
Interesante, observare para informarme.



Saludos, JuanKa.-
06/06/2012 #2099

Avatar de torres.electronico

J2C dijo: Ver Mensaje
Interesante, observare para informarme.
Saludos, JuanKa.-
tenes el triac que hace un par de topic atras distes catedra... y Tenes con deteccion por cruce de cero automatico, que si miras la hoja de datos, te das cuenta que tenemos algunas caracteristicas nuevas ideales para estos proyectos...
Los bugs que vi en el diseño del hardware son que no tienes una R limitadora de corriente para ingresar en el puerto del pic que sera el encargado de saber cuando se produce el pasaje por cero, sintetizando, directamente no estas haciendo eso por que no se ve en el diagrama que subiste... El otro error, es que no esta desacoplado correctamente el pic, de la seccion de control de potencia... Posibles soluciones... sencillo, para no tener que requerir del sensado por pasaje por cero, podes implementar en la salida un triac activo (no pasivo como el BT139) y solo con una señal puedes controlarlo... la otra, es la implementacion de un opto triac (con modulo deteccion por pasaje de cero) como auxiliar de disparo en tu BT139... con esta ultima, desacoplas micro con etapa de potencia y te olvidas de dolores de cabezas...
06/06/2012 #2100

Avatar de megatecpower

perdon pero lo que busco es que desde el pic active el triac sin ningun opto, pense que con ponerlo en alto se encenderia el foco y en cero se apagaria eso es lo que busco, pero tengo dudas sobre como puedo detectar el cruce por cero mediante el pic, ademas es cierto cuando apagaba el foco por un interruptor separado, se reinicia el pic; la cuestion es que como podria hacer que prenda y apague una carga sin opto y que no me reinicie el pic

por cierto como es eso de triac activo
¿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.