Curso de programación de PIC en PICBasic Pro

hola cripty, aver si entendi necesitas saber la onda de pulsos solo cuando hay cruce por cero si es asi lo podrias hacer con un puente de diodos, lo cual te rectificaria la onda sinusoidal a 380 onda completa (1N4007 x4),un optotransistor,dos resitencias una de 68-100k para ingreso del opto y la otra resist. de 4,7k a la salida de optotransistor en pull up a 5 vdc esta salida ingresaria al uc.
PD:espero te pueda servir
 
si pudieras postear un diagrama seria buanzo amigo como debo conectar el opto y que opto debo utilizar
 
bien pero la onda de tension real no es perfecta es distorcionada, tengo que hacercarme lo mas al cruce por cero asi enciendo al triac y la bobina de un contactor, esto hara que el triac sea el primero en conducir minimizando el arco en los contactos del contactor (mucha recundancia???); el problema es que si existen muchos cruces por cero (efecto de la deformacion de la onda senoidal) el contactor no sabra si cierra o abre ya que le enviare muchos pulsos (un pulso por cada cruce por cero) y asi no puede trabajar el contactor.

y si seria bueno que postees un diagrama de lo que propusiste asi lo analizamos todos.
gracias por las respuestas amigos. :)
 
Última edición:
alli envio un esquema que podria ayudar, adicionando un optotriac sin cruce y tambien puede ser usar el optotriac con cruce por cero

ueno los diodos deberan ser 1n4007
 

Adjuntos

  • pase por cero.png
    pase por cero.png
    13.8 KB · Visitas: 438
Última edición:
si tienes micha razon pero imagina lo siguiente: mi sistema es trifasico y el cruce por cero es para evitar el arco en los contactores (que lo desgastan) pero teniendo el desfasaje en que momento cierro el contactor ya que al cerrar este se cierran los 3 contactos en una ; los triacs los puedo disparar alternadamente pero no al contactor.adjunto mi esquema para que me ayuden a resolverlo.
 

Adjuntos

  • contactor_triac.JPG
    contactor_triac.JPG
    45.1 KB · Visitas: 500
permiteme entender,estas que utilizas un contactor para las 3 fases(hay que tener en cuenta el retardo propio del contactor que este es los milisegundos) y con un solo contactor seria dificil e inclusive con 3 contactores por separado ya que el interes es eliminar el arco en cada fase(complicado por los retardos propios de cada contactor)
 
ahora que lo pienso basta que una fase este en cruce por cero al momento de cerrar el contactor y ya disminuiria el arco; si a esto se suma que los triac's tienen un retardo menor que el contactor solo seria necesario un cruce por cero de una fase y activar los triacs y el contactor y con un poco de suerte en el tiempo de retardo del contactor este cierre para el cruce por cero de alguna de las otras 2 fases. o en su defecto cerrar los triac's cada uno en el cruce por cero y despues el contactor solo es cuestion de probar cual de las opciones anteriores es la que aplaca mas al arco.
implementare un circuito para povar lo anterior y les comento como va; pero acabo de tener una duda y como mediria el arco en los contactos del contactor?
en fin eso ya lo resolvere, gracias por las luces amigos
 
si se puede con el comando PWM y poniendo un red resistencia capacitor a la salida, modificando el ancho de pulso puedes variar la salida de la patita del micro, pero solo como señal ya que si deseas para alimentar algo mas grande, tienes que hacer algunos arreglos como un seguidor de tension y 2 transistores en totem, por la noche mas tarde posteare un ejemplo y un esquema para que sea mas claro
 
tambien tienes la otra opcion que puedas utlizar aparte del hpwm del pic un dac spi tal como tlc5620 que es de 8 bits de resolucion, es de 4 salidas analogicas, depende para que necesites la aplicacion
 
si se puede mira este esquema, y esta en elmanual original del PBP, es una opcion para convertir una salida digital en una analogica aunque como mencionan arriba, existen conversores digitales a analogicos que tienen mas ventajas que esta solucion que te doy, ya que si no dimensionas bien el capacitor o resistencia podrias inutilizar a la patita de tu micro o pero al micro.
 

Adjuntos

  • PICBASIC9.jpg
    PICBASIC9.jpg
    1.6 KB · Visitas: 143
bueno gracias.
pude hacer que me funcione el programa :)
ahora , tengo una duda sobre el IF
Caso 1
IF portb.0 = 0 then ...
low porta.0

con esas lineas si Rb0 tiene un 0 logico pondia un 0 logico en RA0 ?

Caso 2

IF portb.0 = 1 then ...
low porta.0

Para considerar que en Rb0 hay un 1 logico tengo que colocar = 1 o > 0 ?

espero que me pueda ayudar con esto
saludos :)
 
no entiendo bien lo que quieres decir me parece que te refieres a que si esta bien la sintaxis que colocaste para saber si tienes un cero ò un 1

Caso 1
IF portb.0 = 0 then ...
low porta.0

para mi no tiene mucho sentido que le des un cero mejor iniciale como cero y ya si es que es necesario porque me parece un desperdicio de codigo si si es parte de un codigo para un proceso anterior pues la linea de codigo esta bien

con esas lineas si Rb0 tiene un 0 logico pondia un 0 logico en RA0 ?

Caso 2

IF portb.0 = 1 then ...
low porta.0

Para considerar que en Rb0 hay un 1 logico tengo que colocar = 1 o > 0 ?

para que haya un uno logico en b0 y te ponga un cero en el puerto a0 esta bien
espero haber ayudado un poco sino pregunta con mas detalles he intentare ayudar si es que me es posible claro esta

saludos
 
hola amigos por favor ayuda como debo usar el loop en microcode por favor necesito saber como usarlo no entiendo nada como hacerlo ojala me puedan ayudar
 
Te puedo ayudar se utiliza cuando se desea ejecutar un programa principal por ejemplo hacer parpadear un led

LED VAR PORTB.0

loop:
HIGH LED
PAUSE 50
LOW LED
GOTO loop

para mayor aclaracion te anexo documento en dpf .suerte amigo mio.

Amigo guillejose aqui esta todo lo necesario para que comiences te adjunto documento.

Entrenador de pic con pic basic pro
 

Adjuntos

  • pbpesp.pdf
    646.9 KB · Visitas: 1,340
  • entrenador para microcontrolador con PBP.zip
    954 KB · Visitas: 1,360
Última edición:
muchas gracias amigo mira estoy realizando un seguidor de linea me encontre este codigo me parece muy interesante porque es corto y me llamo la atensión de como lee los sensores me podrias explicar como realiza la seleccion de case y el loop te pongo el codigo para que lo mire y si puedes me expliques un poco te lo agredeceria...si no estoy mal la seleccion de case se hace por el numero binario que me de las entradas pero lo he probado en proteus pero nada hechame una mano con eso por favor el robot se llama hyperion es de un ing de ecuador y ha subido el codigo yo quisiera usar en lugar de solo dos sensores 6 para tener mas datos y pueda seguir la linea y si pueden alguna sugerencia como debo distribuir mis sensores estoy usando unos QRD1114 MUCHAS GRACIAS


Código:
TRISA=%11111111

cmcon=7

pause 2000

loop:

    select case PORTA
        case 0
            gosub izquierda
        case 1
            gosub adelante
        case 3
            gosub derecha
    end select
    goto loop

    adelante:
        high 0:high 1: low 2
        high 3:high 4: low 5
        return
    atras:
        high 0:low 1: high 2
        high 3:low 4: high 5
        return
    izquierda:
        high 0:low 1: high 2
        high 3:high 4: low 5
        return
    derecha:
        high 0:high 1: low 2
        high 3:low 4: high 5
        return
end
 
Hola mi nombre es Gustavo soy nuevo en el foro y con los pic.
Comento un pequeño problema que marca proteus:
El programa se ejecuta sin problemas pero me advierte "stack overflow executing call instruction / stack overflow executing return instruction" y también me advierte "controller received data whilst busy"
si me pueden ayudar muy agradecido.
Mecatrodatos muy claros los ejemplos y me gusta el foro.
Saludos Gustavo :apreton:
 
alguna vez me marco eso el proteus fue porque el tiempo que estaba corriendo el programa no era real y era muy bajo y no se apreciaban los cambios en forma real talvez eso te ayude
 
Atrás
Arriba