desktop

Curso de programación de PIC en PICBasic Pro

Hola Viggiani, fijate que en el programa que tenes giro basico 6 las entradas de control del servo se activan con 1 y en el circuito de proteus que tenes estas se activan con 0, fijate eso aver si es que funciona. El servo estas seguro que funciona? Otra cosa, eso que aparece en la foto entre tus archivos de .22k que son??? mira que tienen que salir a masa dos capacitores (ceramicos generalmente) de entre 18 Picofaradios y 32 Pf...Saludos

Por otro lado estoy interesado en el codigo fuente de realizaste para el pic 16f887 subelo que me da curiosidad si has declaro algun registro o lo compilaste con otro pic

Hola Mecatrodatos, el codigo que realize para el 16f887 es el simple por ahora ya que recien adquiri este pic, adapte varios programas del 16f628a para ver si funcionaba ,se compilaba bien pero al querer grabar en el pickit me salia ese warning sea cul sea el programa que compile.

1. No heber declarado el tipo de oscilador con el que va ha trabajar el pic Crystal Xt, resistencia condensadores HC o interno como el caso del 16f628A.

2.Haber declarado el tipo de oscilador pero con frecuencia de operacion fuera de rango.

Estas opciones de declaracion ya las habia probado y no son la solucion. Pero de todas formas buscando y rebuscando la encontre y funciona todo muy bien. Muchas gracias de todas formas.
Saludos.
 
Última edición:
Hola, amigo Muessli.
He cambiado los valores en el código y nada, también cambié los capacitores a cerámicos de 15pf y 100.000pf y nada, creo que tendré que comprar otro servo pues no estoy seguro que éste funcione, los único que hace es medio vibrar con los cerámicos de más bajo valor.
 
Bueno y ya has probado usar el pic simulator ide de oshon soft es un buenisimo simulador de pics en basic que te corrige tu codigo mismo por si tenes algun error y pues como dije simula el pic con el codigo que le carges solo tenes que buscar en google alguna version gratuita o con algun crack y ya esta ademas en la pagina oficial dan algunos trucos para poder utilisar un lcd y sus comando en fin espero haberte ayudado saludos!
Para Sonius,

Estuve tratando de instalar el programa que recomiendas pero, aunque descargué varias versiones, ninguna funcionó. Yo tengo Windows 7 y no sé si existe alguna incopatibilidad o simplemente que no he dado con la versión apropiada, agradecería me informaras un poco más.

Gracias.
 
Hola que tal, saludos a todos!

He estado leyendo todo este post, y la verdad es que hay cosas muy buenas.

Necesito un poco de ayuda para un proyecto, el cual consiste en lo siguiente:

Necesito obtener la humedad y temperatura de una habitación y estarla graficando.

Para la temperatura pienso usar el famosísimo LM35 para la húmedad no se que usar (es mi primera consulta)

Tenía pensado usar un pic 16F877A para la interfaz por puerto serial y usar labview 8.5.

He visto en el foro como usar el ADC del pic para la adquisición por serial y también en este post vi como usar el pic para usar con el LM35 y un display para desplegar la temperatura .
Y usando el MAX232, haciendo eso el pic es el q procesa los datos.


Ahora bien puedo usar nada mas un MAX232 o un L293D (o algo así) y un ADC y de ahi jalar los datos al labview graficar etc.


¿Qué me sugieren?¿Cómo sería mejor?
Y finalmente tengo que mostrar la temperatura y humedad en una pagina web dinamica, o sea que se actualice constantemente.

SLDS y gracias de antemano
 
Para el tema de humedad tienes la opcion de un ci que hace esta lectura y que lo puedes conectar facilmente al pic,para la web es mas simple hace un tempo atras realise algo parecido.lo que hacia era montar un servidor (apache) este ya viene configurado con php en el appserver es cosa instalar y ya tenes tu servidor corriendo para la web dinamica utilse swish que es parecido a macromedia flash pero muy simple. En resumen con visual basic leia los datos del pic guarda esta info en archivo de texto cada cierto tiempo y ala ves un scriot en php lei este mismo archivo y desplegaba la info en la web echa en flash ,asi de facil y bonito voy a buscar los archivos para k los veass

eso
y saludosss....
 

Adjuntos

  • humedad.pdf
    331 KB · Visitas: 343
  • web control.rar
    2.4 KB · Visitas: 297
Última edición:
De acuerdo muchas gracias djxero!!!(y):aplauso::aplauso::aplauso:

Espero tus archivos, y q me digas el CI para húmedad y algunos detalles más para realizar.


SAlds y grax de nuevo!
 
te subi los archivos Kaymar cual es tu experiencia con las web para saver ,que aportarte ,por lo del CI de humedad no lo e utilizado nunca pero veremos que podemos hacer para ayudarte en la programacion(puede servir para proyectos futuros)
 
Última edición:
Mira con lo q me dices, la verdad no tengo experiencia con web.

Gracias por tus archivos, pero lo de control pues la verdad no tengo con que abrirlos ya que no conozco la extensión.

Y respecto a la programación del pic aun me falta

GRACIAS y saludos
 
alguien me puede ayudar como debo controlar la velocidad de un motor DC con HPWM del microcontrolador mi duda es puedo usar el L293D o de ley debo usar un transistor
pueden ayudarme por favor
 
Hola a todos! Alguien sabe como hacer en pic basic para indicar que una entrada analógica es el vref? Es decir, que coja en vez del vref interno, un vRef externo, como por ejemplo 2.5 volts.
 
hola amigo fernandoe mi motor es uno pequeño de esos que van a los jueguetes de radio control es de 6 volts y 43mA lo que quiero es manejarle la velocidad para poder usar el HPWM ya que tengo una curiosidad si puedo usar el L293D o usar transistores muchas gracias por responder
 
Usa el L293, no hay problema.

Hola a todos! Alguien sabe como hacer en pic basic para indicar que una entrada analógica es el vref? Es decir, que coja en vez del vref interno, un vRef externo, como por ejemplo 2.5 volts.
Pudiste hacer funcionar los comparadores? yo quiero hacerlo con el 12F629 pero no hay caso...
 
Hola fernando, después de muchas horas investigando (y de poner preguntas en todos los foros que conozco) he dado con la que creo que es la respuesta.

Hay que usar el ADCON1 de la siguiente manera.

Pon 1000, en el adresh, (por lo del ADFM) y los 4 bits siguientes dependen de las entradas analógicas que vayas a usar.

En la tabla que adjunto te salen los adresl.

Yo todabía no lo he podido probar porque estoy esperando a que me lleguen 2 16f877, en cuanto los tenga en mi poder, me lío con ello. :unsure:

Ya me dirás si funciona.

Saludos!
 

Adjuntos

  • Dibujo.jpg
    Dibujo.jpg
    71 KB · Visitas: 117
Pequeño detalle... el 12F629 tiene comparador, no ADC :) en todos lados veo como desactivarlo pero no explican como se usa... habra que seguir leyendo. Mi duda es como configurar los registros adecuados, para no quemar el micro metiendole tensiones inadecuadas :D
 
Hola a todos los foreros...

Tengo un servo futaba s3003 y me gustaría controlar los giros izquierda, derecha y el centrado con pulsadores, he probado varios códigos en basic y hasta ahora solo uno me ha medio funcionado pues hace a medias uno de los giros y lo logro centrarlo, es por ese motivo que acudo a ustedes con este código a ver si pueden darme un empujón y mirar que falla. El código es el siguiente:

PHP:
define osc 4
 @ DEVICE pic16F628A, WDT_ON ' Watchdog Timer ON
 @ DEVICE pic16F628A, PWRT_ON ' Power-On Timer
 @ DEVICE pic16F628A, BOD_ON
 @ DEVICE pic16F628A, MCLR_OFF ' Master Clear Opción interno
 @ DEVICE pic16F628A, LVP_OFF ' Bajo voltaje de programación
 @ DEVICE pic16F628A, CPD_OFF ' Protección del código de memoria OFF
 @ DEVICE pic16F628A, PROTECT_OFF' protección de código OFF

r var byte
pulso var word 
CMCON = 7

pulso = 1520

inicio:
'high portb.0
pauseus pulso
'low portb.0
pause 15

IF porta.0 = 0  THEN CALL SUMA
IF porta.1 = 0  THEN CALL RESTA 

GOTO INICIO

SUMA:
 for r=1 to 250 step 1
 high portb.0 
pauseus 1300 
low portb.0 
pause 20  
next
return


RESTA:
for r=250 to 1 step -1
high portb.0
pauseus 1300
low portb.0 
next
return

END
 
Última edición por un moderador:
SERVO

Syntax
SERVO Pin , Rotation Value

Overview
Control a remote control type servo motor.

Operators
Pin is a Port.Pin constant that specifies the I/O pin for the attachment of the motor's control terminal.
Rotation Value is a 16-bit (0-65535) constant or WORD variable that dictates the position of the motor. A value of approx 500 being a rotation to the farthest position in a direction and approx 2500 being the farthest rotation in the opposite direction. A value of 1500 would normally centre the servo but this depends on the motor type.


Example

' Control a servo motor attached to pin 3 of PORTA

DEVICE 16F628 ' We'll use the new PICmicro
DIM Pos as WORD ' Servo Position
SYMBOL Pin = PORTA.3 ' Alias the servo pin
CMCON = 7 ' PORTA to digital
CLS ' Clear the LCD
Pos = 1500 ' Centre the servo
PORTA = 0 ' PORTA lines low to read buttons

TRISA = %00000111 ' Enable the button pins as inputs

' ** Check any button pressed to move servo **
Main:
IF PORTA.0 = 0 Then IF Pos < 3000 Then Pos = Pos + 1 ' Move servo left
IF PORTA.1 = 0 Then Pos = 1500 ' Centre servo
IF PORTA.2 = 0 Then IF Pos > 0 Then Pos = Pos - 1 ' Move servo right

SERVO Pin , Pos
DELAYMS 5 ' Servo update rate
PRINT AT 1 , 1 , "Position=" , @Pos , " "
GOTO Main

Notes
Servos of the sort used in radio-controlled models are finding increasing applications in this robotics age we live in. They simplify the job of moving objects in the real world by eliminating much of the mechanical design. For a given signal input, you get a predictable amount of motion as an output.


To enable a servo to move it must be connected to a 5 Volt power supply capable of delivering an ampere or more of peak current. It then needs to be supplied with a positioning signal. The signal is normally a 5 Volt, positive-going pulse between 1 and 2 milliseconds (ms) long, repeated approximately 50 times per second.

The width of the pulse determines the position of the servo. Since a servo's travel can vary from model to model, there is not a definite correspondence between a given pulse width and a particular servo angle, however most servos will move to the centre of their travel when receiving 1.5ms pulses.


Servos are closed-loop devices. This means that they are constantly comparing their commanded position (proportional to the pulse width) to their actual position (proportional to the resistance of an internal potentiometer mechanically linked to the shaft). If there is more than a small difference between the two, the servo's electronics will turn on the motor to eliminate the error. In addition to moving in response to changing input signals, this active error correction means that servos will resist mechanical forces that try to move them away from a commanded position. When the servo is unpowered or not receiving positioning pulses, the output shaft may be easily turned by hand. However, when the servo is powered and receiving signals, it won't move from its position.


Driving servos with PROTON+ is extremely easy. The SERVO command generates a pulse in 1microsecond (µs) units, so the following code would command a servo to its centred position and hold it there: -

Again:
SERVO PORTA.0 , 1500
DELAYMS 20
GOTO Again

The 20ms delay ensures that the program sends the pulse at the standard 50 pulse-per-second rate. However, this may be lengthened or shortened depending on individual motor characteristics.


The SERVO command is oscillator independent and will always produce 1us pulses regardless of the crystal frequency used.

Extraido de la ayuda el PICBASIC PLUS 2.00, espero que te sirva.
 
Última edición:
Hola amigos...
no se si sera muy avanzado para lo que tienen, pero podriamos ver la comunicación usb???

o si alguien sabe como es que postee algo, estoy trabajando con un 18f4550 y logre hacer con el EasyHID -Wizard de microcode que el pc me reconociera la placa como un Dispositivo de interfaz humana.. ahora el problema que tengo es con el programa en Visual Basic que me genera... trato de pasar este código a Visual Basic 2008 o 2010 y no puedo =( al hacer la conversión quedan algunas cosas con errores, los cuales no e podido solucionar.. Voy a seguir tratando de solucionar en este problema y también estoy probando el USBCDC ya que es mas fácil para el código en visual, dado que genera un puerto serie y se trabaja igual que este, por lo tanto mas fácil para enviar y recibir datos.. pero no e podido compilar el código.. así que ahí estoy.. cualquier cosa que logre lo pondré aquí.. si alguien tiene algo que me pueda ayudar se lo agradeceré...

Saludos!!
 
Atrás
Arriba