Curso de programación de PIC en PICBasic Pro

Que tal amigo emilos para desarrollar tu proyecto te dejo informacion muy clara en cuando a la electronica aplicada al automovil

http://www.salesianosburgos.es/modulos/usuariosFtp/conexion/archivos256A.pdf
http://www.salesianosburgos.es/modulos/usuariosFtp/conexion/archivos257A.pdf
http://www.salesianosburgos.es/modulos/usuariosFtp/conexion/archivos258A.pdf
http://www.salesianosburgos.es/modulos/usuariosFtp/conexion/archivos266A.pdf
http://www.salesianosburgos.es/modulos/usuariosFtp/conexion/archivos317A.pdf

y el uso del osciloscopio para sensores y como es su representacion http://www.salesianosburgos.es/modulos/usuariosFtp/conexion/archivos258A.pdf

Me gustaría saber, como accionar 2 salidas del 16F84A indistintamente con 2 entradas a pulsador N.A. y otras 2 entradas accionadas con sensores N.A. teniendo prioridad las entradas manuales sobre las automáticas.

amigo puedes utilizar las funciones IF, THEN, ELSE te mostrare un pequeño ejemplo:
Código:
@ device xt_osc ; oscilador externo XT 
define osc 4 ; especifica que se va a utilizar uno de 4 Mhz
Define    LOADER_USED    1TRISA = %1100           
TRISB = %11111111           
M0  VAR PORTA.2
M1 VAR PORTA.3
A0  VAR PORTB.0
A1  VAR PORTB.1
Led0 VAR PORTA.0            ' Seleciona PORTA como salida (LEDs) Led1 VAR PORTA.1OPTION_REG = $7f        ' habilita PORTB pull-ups      
mainloop:       
PORTB = 0       ' PORTB para leer los botones
PORTA = 0       ' PORTA para leer los botones y pone todos los LEDs en OFF
TRISB = $f0     ' habilita botones
 
       ' rutinas con se chequea el accionamiento de los pulsadores
       If M0 = 0 Then     ' si cuarto boton esta presinado ...                Led0 = 1     ' enciende primer LED        Endif        If M1 = 0 Then     ' si tercer boton esta presinado ...                Led1 = 1     ' enciende segundo LED        Endif        If A0 = 0 Then     ' si segundo boton esta presinado ...                Led0 = 1     ' enciende segundo LED        Endif        If A1 = 0 Then     ' si primer boton esta presinado ...                Led1 = 1     ' enciende primer LED         Endif        Goto mainloop       ' crea un bucle cerrado        End

`para el caso de priorizacion creas una condicional. mira si es asi para poderte seguir ayudando
 

Adjuntos

  • osciloscopio-para-electromecanicos.pdf
    689.5 KB · Visitas: 493
Última edición:
listo perdona para ayudarte mejor visita primero el Entrenador de pic con pic basic pro que poste y el manual hay ejemplo y estan en español espero que esto te sirva de base no dudes en preguntar
Archivos Adjuntos
pdf.gif
pbpesp.pdf (646,9 KB (Kilobytes), 33 visitas)
zip.gif
entrenador para microcontrolador con PBP.zip (954,0 KB (Kilobytes), 34 visitas

Andres111 manejo comunicacion serial entre PICS con los comandos serin y serout , vere como te puedo ayudar con la comunicacion SPI apartir de Hardware, por otro lado para los proyectos que vienen necesitamos saber un poco de Visual basic por lo que facilito un documento para empezar a conocer este programa y saberlo utilizar
 

Adjuntos

  • Aprenda_Visual_Basic_6_Como_Si_Estuviera_En_Primero_-_Aprendergratis_-_(Libros_Tutorial_Manual_C.pdf
    1 MB · Visitas: 654
Última edición:
Gracias mecatrodatos por tu atencion pero no me sirve la comunicacion SPI a partir de hardware lo que necesito son unas bases para realizar el programa te agradesco si me puedes ayudar.

Saludos
 
Para Ayudarte realizaremos un programa por hardware con los registros del puerto C del Pic 16f877a.

El puerto C consta de 8 líneas bidireccionales y tiene asociados los registros:

Registro PORTC (07H).-Es el registro de datos cuyos 8 bits RC7,RC6,...,RC0 reflejan directamente el valor lógico de las líneas físicas del puerto C.

Registro TRISC(87H).-Registro de control de dirección de las líneas del puerto C.

Poniendo un 1 en un bit del registro TRISC se configura la línea correspondiente como entrada y poniendo un 0 se configura la línea correspondiente como salida.

Las líneas del puerto C se encuentran multiplexadas con varias lineas controladas por otros periféricos, cuando se habilita la línea del periférico respectivo puede ser ignorada la configuración de TRISC, de hecho, algunos periféricos configuran la línea como salida mientras que otros la configuran como entrada.


Cada entrada del puerto C posee un buffer con disparador Schmitt. Además, cuando se selecciona la función I2C, las patitas PORTC<4,3> pueden ser configuradas con niveles I2C o con niveles SMBus mediante el bit CKE del registro SSPSTAT<6>.

En la siguiente tabla se resumen las líneas del puerto C y las de los periféricos que
están multiplexadas con ellas.
Nombre Función multiplexada​
RC0/T1OSO/T1CKI Salida oscilatoria del Timer1/reloj de entrada del Timer 1
RC1/T1OSI/CCP2 Entrada oscilatoria del Timer1/entrada de captura2 o salida de
comparación2 o salida PWM2
RC2/CCP1 Entrada de captura1 o salida de comparación1 o salida PWM1
RC3/SCK/SCL Reloj para los modos de comunicación serie síncrona SPI e I​
2C
RC4/SDI/SDA Dato de entrada (en modo SPI)/ Dato de entrada-salida (modo I2C)
RC5/SDO Dato de salida (en modo SPI)
RC6/TX/CK Linea de transmisión asíncrona de la USART/reloj síncrono
RC7/RX/DT Linea de recepción asíncrona de la USART/dato síncrono

Tambien te adjunto documento donde explico el manejo de registros del pic 16ff877a para realizar el programa.​



Que tal vamos a poner el siguiente codigo de comunicacion spi a traves de Hardware (manipulacion de registros del puerto C) con dos pic 16f877A como proyecto.

este el programa para el pic maestro:

Código:
' Programa protocolo SPI entre dos Pic 16f877A usando Comunicación serial 
' sincrónica por medio de hardware a través del puerto C.
'
' El pic 16f877a maestro muestra valor del estado de un potenciómetro conectado 
' en RAO del pic 16f877a esclavo en una pantalla LCD a través de caracteres en 
' string.
'DEFINICION OSCILADOR EXTERNO 
 
@ device xt_osc ; oscilador externo XT 
define osc 4 ; especifica que se va a utilizar uno de 4 Mhz
 
'Se definen registros del pic 16f877a maestro para conectar display
DEFINE LCD_DREG PORTD
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTE
DEFINE LCD_RSBIT 0
DEFINE LCD_EREG PORTE
DEFINE LCD_EBIT 1
SSPEN VAR SSPCON.5 'Habilita bit SSP 
CKP VAR SSPCON.4 'SELECCIONA POLARIDAD DE RELOJ
SMP VAR SSPSTAT.7 'Seleccionar la muestra de datos de entrada de fase
CKE VAR SSPSTAT.6 'Selecciona bit de reloj
SSPIF VAR PIR1.3 'SPI indicador de interrupción
 
i VAR BYTE 'contador del bucle
a VAR BYTE[6] 'Con capacidad para 6 caracteres leídos de esclavo
 
ADCON1 = 7 'Selección PORTA y PORTE como digital
Low PORTE.2 'LCD R/W linea a cero lógico 
Pause 100 'espera paras inicializar el LCD
TRISC = 0 'puerto c como salida
 
SSPEN = 1 'pines activados SPI
CKP = 0 'reloj en funcionamiento bajo 
CKE = 0 'transmitir a la transición inactivo a activo
SSPIF = 0 'Buffer de estado completo
SMP = 0 'muestra en medio de los datos
 
 
mainloop:
GoSub getdata 'iniciar la conversión de datos y recibir
 
LCDOut $fe,1 'Indicar recibió de cadena en lcd
LCDOut $fe,$80,"Conversor A/D "
LCDOut $fe,$c0, STR a\5, DEC a[5]
Pause 100
 
GoTo mainloop 'hacerlo de nuevo
 
getdata: 
 
SSPBUF = "?" 'enviar? para iniciar la conversión
GoSub letclear 'esperar dato para eliminar
IF SSPBUF<>"!" Then getdata 'esperar para la respuesta (!)
For i = 0 to 5 'bucle de 6 caracteres
SSPBUF = 0 'escribir a SSPBUF para iniciar el reloj
GoSub letclear 'esperar para la recepción 
a[i] = SSPBUF 'recibió en carácter de matriz
Next i 'recibe el siguiente carácter
Return
 
letclear:
IF SSPIF = 0 Then letclear 'esperar a SPI indicador de interrupción
PauseUs 25 ' pausa de 25uS 
SSPIF = 0 'resetiar flag
Return
Este es le programa para el pic esclavo
Código:
'DEFINICIÓN OSCILADOR EXTERNO 
 
@ device xt_osc ; oscilador externo XT 
define osc 4 ; especifica que se va a utilizar uno de 4 Mhz 
'Asignar memoria RAM
 
dataout VAR BYTE[8] 'Salida de datos serie 
SSPEN VAR SSPCON.5 'Habilitar bit SSP
CKP VAR SSPCON.4 'selección de polaridad
SMP VAR SSPSTAT.7 'Datos de entrada de fase
CKE VAR SSPSTAT.6 'Selecciona bit de reloj
SSPIF VAR PIR1.3 'indicador de interrupción - último bit seleccionado
i VAR BYTE 'contador del bucle
a VAR BYTE[6] 'Con capacidad para 6 caracteres de datos
 
TRISC = %11011111 'configuración trisc 
SSPCON = %00000101 'configurar SPI esclavo, no SS
 
CKP = 0 'reloj al ralentí bajo
CKE = 0 'transmitir a la transición inactivo a activo
SSPIF = 0 'limpiar interrupción SPI
SMP = 0 'muestra en medio de los datos
ADCON1 = $0e 'PORTA.0 análogo, el reto
' PORTA y PORTE como pines digitales
dataout[0] = "P" 'La salida de datos predefinidos a "POT ="
dataout[1] = "O"
dataout[2] = "T"
dataout[3] = "=" 
dataout[4] = " " 
mainloop:
SSPEN = 0 'desactivar / activar la SSP para restablecer el puerto
SSPEN = 1
GoSub letclear ''esperar a byte recibido
IF (SSPBUF <> "?") Then mainloop 'esperar? para iniciar la conversión
 
ADCIN 0, dataout[5] 'Leer canal ADC 0, la 6 ª posición de la cadena de caracteres
 
GoSub senddata 'senviar"! " y la cadena de datos 
 
GoTo mainloop 'volver a realizar
 
senddata:
GoSub letclear 'esperar 
SSPBUF = "!" 'Enviar respuesta
For i = 0 to 5 'bucle 
GoSub letclear '
SSPBUF = dataout[i] 'enviar variable de matriz
Next i 'próxima localización
 
Return
 
letclear:
IF SSPIF = 0 Then letclear 'esperar a indicador de interrupción
SSPIF = 0 'resetiar bandera 
Return
por ultimo dejo simulación en proteus 7.6 , programa en pic basic pro y esquemático
 

Adjuntos

  • Comunicación SPI PIC 16F877A.pdf
    307 KB · Visitas: 534
  • spi.zip
    75.8 KB · Visitas: 495
Última edición por un moderador:
Subo programas para utilizacion del conversor A /D del pic 16f877a de 8bits y 10 bitis , la simulacion sirve para todos los casos para aquellos que tenian dudas de como utilizarlo y la extencion del valor es visualizado en LDC. La simulacion esta en proteus 7.6
 

Adjuntos

  • PC A D.zip
    46 KB · Visitas: 540
disculpen la demora, amigo mecatrodatos lo que deseo es hacer un control pid en general, yo se que tiene 3 partes proporcional, diferencial e integral pero como programo eso en un micro con pbp, ahora si hablamor de un ejemplo que te parece un control de temperatura donde ingreso la temperatura a fijar por un potenciometro y como sensor uso un lm35 o lm34 y para digitalizar la sailda de los sensores uso un adc
con eso tengo el set point, y la señal de retroalimentacion pero como hago pa parte difencial e integral????'
 
listo nos pondremos con ese proyecto te parece si utilizamos uno de la serie 18f para configurar los registros y trabajar con el modulo A/D ya qu ela idea es trabajar con estos pics, me comentas y empezamos con el programa , el esquematico y la simulacion en proteus ,nos llevara un poco de tiempo.
 
hola amigo mecatrodatos, sabes se lo basico del pic 16f84 asi q bueno estoy de vacaciones y q

quiero hacer un temporizador para cortar el paso de la corriente 220v, bueno la idea es que tengo q apagar y encender un equipo todos los dias, y bueno quiesiera automatizarlo, lei q con el pic se puede hacer, pero solo encuentro para temporizarlo x minutos u horas nomas, pero yo quiero q se haga para todos los dias, osea algo asi como un bucle, q encienda a la 5am y se apague a las 12pm, ojala me podrias ayudar te lo agradeceria o a cuqluier amigo de este foro , gracias
 
Última edición:
claro que se puede realizar en las pags 2 y 5 hay programas relacionados con tu proyecto consulta y si tenes dudas preguntad

Bien vamos con proyectos interesantes Antes de empezar los programas, hay que aclarar algunos conceptos nuevos:​

Encoder: Codificador óptico que proporciona dos señales de fase que podemos usar para determinar hasta qué punto el motor se ha movido y la dirección en la que se está moviendo.
La información recibida también nos permite determinar la velocidad del motor. En nuestro caso particular, vamos a usar un codificador con 42 ranuras. Todos nuestros programas estarán basados en el conteo del codificador, en comparación con las revoluciones por minuto, de modo que no se tiene que realizar ninguna conversión.​

Servo: Motor eléctrico que puede ser programado para seguir una señal, en nuestro caso el motor está en calidad de un funcionario de la señal de error que se introduce en el sistema. La señal de error en sí es la diferencia en el recuento de codificador entre el motor y donde queremos que este se ubique .Se controlara el funcionamiento del motor mediante la constante añadiendo y sustrayendo de la señal de error para crear el perfil de movimiento que deseamos.​

Matemáticas con enteros: el microprocesador y el lenguaje que estamos utilizando son
limitados al uso de 8 y 16-bit y variables matemáticas enteras. No tenemos una manera de resolver una ecuación algebraica y utilizar los resultados dentro de nuestro control algorítmico. Sin embargo, las relaciones simples se pueden hacer para servir en algunos de nuestras necesidades, y la construcción de SELECT CASE se puede utilizar para aportar de forma efectiva al tipo de relaciones que ofrece una ecuación algebraica. Se demostrara el uso de esta construcción para controlar la velocidad del motor según lo determinado por el error de la señal en un número de maneras.​

El lazo PID: la ecuación de control PID y Sus componentes

El régimen habitual utilizado para controlar un motor de corriente continuo codificado se denomina un bucle PID. En la ecuación que representa la ganancia / movimiento del motor, el P, I y D representan las tres componentes básicos del circuito de retroalimentación. Una constante, K, se necesita para cuidar de la fricción en general en el sistema. En términos sencillos estas variables se definen de la siguiente manera:​

K :(cuando se usa) es una constante necesaria para representar a la fricción total del sistema.
P: representa la parte proporcional del bucle de control.
I: representa la función de integración en el bucle de control
D: representa la parte derivada de la ecuación de votos.​

Antes de seguir adelante, vamos a tener una comprensión de lo que estamos hablando cuandopodemos decir que el motor está controlado por un "lazo PID" o la ecuación. El lazo PID define ¿cuánta energía va a alimentar al motor en cualquier instante durante una rotación. Esto se basa en la ubicación del motor. Como se acaba de decir, hay cuatro partes de la ecuación que determina esta carga. Los tres componentes principales se refieren como el P, I y D, y el componente de menor fricción se conoce como K. Si estos cuatro componentes se describen correctamente en el algoritmo de control, y si un codificador correcto ha sido seleccionado, se mejora mucho el control del motor.​

El esquema de control que desarrollamos no tiene que ser matemáticamente
perfecto para darnos un buen rendimiento. De hecho, con PBP un sistema matemáticamente perfecto no puede ser alcanzado. Sin embargo, podemos acercarnos lo suficiente para tener el funcionamiento aceptable.​

El componente de fricción K: Debido a que el motor no comenzará a moverse hasta que haya superar la fricción en el sistema, una cierta cantidad de poder tiene que ser añadido al​
sistema antes de que el motor empieza a moverse. Esta es la constante K. K es a menudo ignorado porque es un componente menor, y la función de integración se hará cargo en las primeras veces a través del bucle de control. En cualquier sistema con partes móviles habrá algunas fricciones. En el caso de un motor, incluso uno sin nada conectado y sin carga, habrá fricción en los dos rodamientos del eje, las escobillas conmutadoras, y una pequeño tensión aplicada al motor no lo moverá. Como se aumenta el voltaje, el motor comenzará a moverse. La tensión en la que el motor empieza a moverse es la tensión necesaria para superar la fricción. Para nuestros propósitos, se puede considerar constante, aunque aumenta a medida que aumenta la velocidad del motor. En la mayoría de los casos, podemos ignorar este aumento y utilizar una constante para representar a la carga de fricción. Matemáticamente esto se expresa como:
K = pequeño, el valor fijo
El componente de Proporción P: El componente en que poder de giro del motor será proporcional a la carga que el motor soporte. Esto tampoco es exactamente exacto, pero puede ser definido de esa manera, a efectos prácticos. Cuanto más rápido que queremos que el motor gire, mayor será la carga y mayor la componente P. En términos matemáticos, la energía que puede expresar como:

P = carga multiplicado por una constante

Si se está utilizando un motor con una carga variable, la velocidad que alcanza el motor
será aproximadamente proporcional a la carga que se encuentra en el motor. En nuestro sistema la ganancia puede variar de 0 a 255. Tenemos que seleccionar la ganancia para estar bien dentro de estos límites en todas las condiciones. Vamos a utilizar un multiplicador adecuado y entonces, una prueba condicional para asegurar esto.

El componente de integración I: Si no hay cambios de carga y el sistema de respuesta
es lineal (es decir, el doble de la velocidad que exige el doble de potencia), la componente proporcionales todo lo que necesitamos para hacer girar el motor. Sin embargo, si el sistema no es lineal, o si el de carga está cambiando, tenemos que añadir o restar de la ganancia para mantener el motor en velocidad constante. Tenemos que hacer esto cada vez a través del control bucle hasta que el motor llega a la velocidad deseada. Este es la integración de componentes, en la ecuación. Debido a que es necesaria sólo cuando hay un error en la posición del motor, se tiene en una función de este error. Cuanto mayor es el error de posición, más tenemos que añadir o restar el ajuste de potencia para la velocidad del motor hacia arriba o disminuir su velocidad para el caso que necesitamos. Como se mencionó anteriormente, esto se hace cada vez que vamos a través del bucle de control. En términos matemáticos, la energía puede ser expresada como:

I= (posición ordenada-posición real) multiplicada por unfactor conveniente

El componente derivado D: Este componente es una medida de la diferencia
entre posición actual del motor y donde se espera ubicar el motor que en cualquier momento.
Este valor se calcula en cada iteración del bucle de control. Si hay una gran diferencia
entre los dos números, no podemos esperar a integrar la potencia en pocos
incrementos, pero se necesita hacer un mayor ajuste de inmediato para obtener del motor
parámetros aceptables lo más rápidamente posible.

Para determinar D, tenemos que saber la posición del motor y donde realmente debe estar. La diferencia es el error. Queremos que este error sea lo más pequeño posible, y nuestra respuesta se basa en lo pequeño que este error debe ser. Si está ejecutando una muy precisa sistema posicional tendremos que mirar este muchos cientos de veces por segundo y hacer que adaptación constante a la carga. Un codificador de alto conteo es deseable cuando los ajustes rápidos tienen que hacerse. Los recuentos de alta nos permiten obtener un "cambio en la posición de" lectura más a menudo.

D= (posición prevista - posición real) * (constante o variable de algún tipo)

Una cosa que esto significa en términos simples es que no hay necesidad de un cambio en la
entrada de potencia si el motor se ubica y se mueve a la velocidad deseada.

Simulación de una ecuación con Select Case

Supongamos que tenemos que conocer todos los números entre 0 y 4 en nuestro esquema de control, y nuestro sistema operativo no es compatible con funciones matemáticas. Podemos resolver el problema con la instrucción SELECT CASE. Cada caso del número entre 0 y 4 tiene un valor correspondiente. Estos valores se pueden poner en una construcción SELECT CASE de la siguiente manera para resolver la ecuación y = x ^ 2:
SELECT CASE X
CASE 0
Y=0
CASE 1
Y=1
CASE 2
Y=4
CASE 3
Y=9
CASE 4
Y=16
CASE ELSE
END SELECT


Dado que el sistema PBP usa 8 / 16 de matemáticas sin la aplicación del signo menos, o el punto decimal, tenemos que evitar estas desventajas también. En primer lugar, vamos a evitar el signo menos. Supongamos que estamos tratando de conseguir una posición designada al motor y nuestro pseudo-código para hacerlo es la siguiente:

Si no está ahí todavía tenemos que seguir adelante.
Si está en la posición que tiene que parar.
Si pasa por que la posición que tenemos que invertir esta tendencia.

Si vamos a tomar una decisión sobre la base de la posición del motor, tenemos que poner en práctica el proceso de decisión de la siguiente manera, porque no podemos utilizar un valor negativo. En el número entero, 128-129 no es -1, es 255. Esto nos obliga a utilizar las comparaciones entre los valores. Si tenemos la diferencia, primero tenemos que determinar qué valor es mayor, entonces determinar la diferencia y, a continuación del signo. El signo, en este caso nos da sentido de giro del motor. En el siguiente código, podemos determinar si va o no a correr el motor , vamos a ejecutarlo:.
TARGET = 128
POSITION =read from position register
SELECT CASE POSITION
CASE IS < TARGET
MOTOR DIRECTION = 1
TURN MOTOR BRAKE OFF
CASE IS = TARGET
TURN MOTOR BRAKE ON
CASE IS > TARGET
MOTOR DIRECTION = 0
TURN MOTOR BRAKE OFF
END SELECT


Entonces tenemos que determinar cuánto tensión debemos conceder el motor basado en
hasta qué punto el motor esta de donde se debe ubicar. La ganancia será una función de la
de error de posición.
Con la información podemos aplicar la ecuación para encontrar los beneficios que necesitamos en la siguiente construcción SELECT CASE. No todas las columnas se deben aplicar para obtener una aproximación útil de la ecuación.
SELECT CASE DISTANCE ;
CASE IS >120 ;
GAIN = 127 ; lo general, usamos sólo la mitad de la potencia
; Y guardar el resto
CASE IS >100 ; para su uso cuando la aceleración es más
; Necesarios
GAIN = 60 ;
CASE IS >50 ;
GAIN = 42 ;
CASE IS >20 ;
GAIN = 20 ;
CASE IS >10 ;
GAIN = 15 ;
CASE IS >5 ;
GAIN = 10 ;
END SELECT ;

Los valores que hemos seleccionado pueden ser ajustado por ensayo y error. Podemos utilizar técnicas de esta y similares siempre que tenemos que aplicar una ecuación dentro de un control de algoritmo.
Vamos a proceder con el control de un motor de codificación un paso en un momento por la inclusión de los programas expuestos anteriormente anteriormente.
 
Última edición:
Una duda que a pesar de que me han dicho que esta no he encontrado :¿con que se pueden programar estos pic? ¿hay que hacer el ciecuito o se puede comprar una base con puerto usb o algo para programarla?
 
Para realizar el programa necesitas un compilador ya sea el Mplab para asembler, microcode estudio ( pic basic), mikro c o feed c ( para programarlos en lenguaje C ), una vez realizado el programa y compilado de producen el codigo fuente y .hex va en pic que se utilizara, para transmitir esa informacion se necesita de un programador los cuales son de puerto serie ( JMD) de puerto papalelo y el de USB que se encuentra en la Version Pic kit 2 clon y esta expuesto en el foro de microcontroladores como destacado o de Enigma , los cuales necesitan un Hardware o plaqueta donde se ubica el pic a programar, un firware y un software donde se carga el .hex para la posterior programacion.
 
Algun modelo de programador en concreto para comprar? que me sirva para los pic basicos, no muy avanzados pero tampoco lo peor del mercado, algo intermedio, semiprofesional
algun modelo cocreto
¿cual es el mejor programa para programarlos,? que sea facil y muy completo ¿y el mejor de todos?por dificil que sea.
Voy a consultar en una tienda de electronica pero me gustaria tener vuestra opinion
 
Para empezar te recomiendo este programdor de puerto serie muy facil de hacer y super economico por sus componentes funciona 100% fue el primero que arme cuando empece con los micros.

http://213.97.130.124/progs/pipo2/pipo2.htm

Para programar te recomiendo el Pic Basic en Google encuetras el compilador free y el mas avanzado el Mikro basic o El CCs compiler.Al igual en este foro hay demasiada informacion solamente dedes tener la hoja de caracteristicas del pic a utilizar que la puedes obtener de la pagina del fabricante lo demas es facil y practicando.
 
Soy nuevo en el Foro y les deseo a todos un buen año 2010.
Ya que veo que estás muy enterado de la programacion de los PIC me atrevo a pedirte lo siguiente:
En www.xbot.es/microplans/tacometro.htm he visto un tacómetro para torno que me interesa pues yo tengo un torno al que le he puesto un motor trifásico gobernado con un convertidor de frecuencia.
Tengo todos los componentes, entre los cuales hay un PIC16F873 que debe de ser programado.
En la web dicen que el programa no está disponible pero que lo pueden suministrar y resulta que les pongo un correo pidiendoles el precio y no me contestan.
¿Tu tienes ese programa?
Muchas gracias
 
hola chicos feliz 2010!!!
les cuento que estoy tratando de hacer una especie de servomotor con un pic 16f84 y un potenciometro como sensor de posision. el funcionamiento es muy simple: se trata de comparar la variable de pulsin con la variable de pot y en funcion de la diferencia o igualdad de ambos valores, ( < > = ) obtener tres posibles estados en dos salidas para controlar el driver del motor. segun mi poco conocimiento en pbasic me parece que el programa que escribi deberia funcionar sin problemas, pero aqui es donde se complica. si pulsin es menor que pot, anda bien, si pulsin es mayor que pot anda bien. pero si pulsin es igual a pot las dos salidas de control empiezan a oscilar entre igual o menor y no logro que este estable ni en proteus ni en la practica real. solo me preguntaba si ustedes podrian darme una manito ya que me arde la cabeza pensando en que estoy haciendo mal :cabezon:
aca adjunto un zip con el proyecto para ver que opinan ustedes... agradecere cualquier tipo de consejo.
saludosss y feliz 2010.
 

Adjuntos

  • Servomotor.rar
    99.2 KB · Visitas: 545
Alejandro vere como te puedo ayudar con el diseño del programa con el sensor CYN 70 y el pic 16f873 amigo dario lo imsmo feliz 2010 le hechare un vistazo al codigo para ver en que estas pecando.
 
en el post #227 he mirado el circuito y veo que vcc pone que usa 12v y no se si el puerto serie los puede dar o necesito una fuente externa, ademas el circuito vcc que hay debajo no se si va solo en la salida del puerto serie o en los dos vcc del circuito¿¿??
 
Atrás
Arriba