10/6/2017
Cur so de pr ogr am aci ón de PIC en PIC Basi c Pr o
Curso de programación de PIC en PICBasic Pro Temas similares
Aqui esta el diagrama diagr ama de los proyectos proye ctos que manejarem mane jaremos os con lcd es el mismo de los anteriores anter iores ( mensaje y desplazamiento) en formato dibujo , archivo comprimido si por el caso cambiaremos al pic 16f877A perola configuracion segura siendo la misma pines pic pines LCD 2x16 RB0 D4 RB1 D5 RB2 D6 RB3 D7 RB4 RS RB5 E RW a tierra estoy son los pines que aparecen en proteus al seleccionar el pic y el LCD 2x16 se tiene que realizar la conexion antes descrita. Archivos Adjuntos
perdonaran la ortografia pero vamos con un proyecto interesante visualizacion de caracteres especiales en LCD 2X16,para ello aclaremos lo siguiente:
Un dispositivo LCD dispone de dos tipos de memorias ambas independientes. Estas memorias se denominan DD RAM y CG RAM. -DD RAM (Display Data Ram) Es la memoria encargada de almacenar los caracteres de la pantalla que se esten visualizando en ese momento, o bien, que esten en una posición no visible. El display tiene una capacidad de 2 lineas horizontales por 40 caracteres cada una, de los cuales solo seran visibles 2 lineas de 16 caracteres cada una. La DDRAM tiene un tamaño de 2x40=80 bytes.
http://www.for os osdeelectr on oni ca ca.com /f/f24/cur so so- pr pr og ogr am am ac aci on on- pi pi cc- pi pi cb cbasic- pr pr oo- 20 20658/i nd ndex2.htm l
1/53
10/6/2017
Cur so de pr ogr am aci ón de PIC en PIC Basi c Pr o
CG RAM (carácter generator RAM) La CG RAM contiene los caracteres que pueden ser definidos por el usuario, es decir que pueden ser personalizados. Está formada por 64 posiciones, con direcciones $00-$3F. Cada posición es de 5 bits. La memoria esta dividida en 8 bloques que corresponden a los posibles caracteres creados por el usuario que van del 0 al 7. Cada carácter esta constituido por una matriz de 5 columnas por 8 filas. De este modo un 1 indica un punto de la matriz encendido, y un 0 apagado.
Programa generacion de caracteres pic basic pro utilizando un pic 16f877A un LCD 2x16 con comunicacion a 4 bits: Código:
@ device xt_osc ; oscilador externo XT define osc 4 ; especifica que se va a utilizar uno de 4 Mhz ' DEFINICIÓN DE REGISTROS PARA EL LCD Define LCD_DREG PORTB 'Utilizar 4 bits del puerto B para tx de datos Define LCD_DBIT 4
'Desde el Bit B.4 al Bit B.7
Define LCD_RSREG PORTB'Selección del puerto del registro Define LCD_RSBIT 3
'En el bit B.1
Define LCD_EREG PORTB 'Utilizar el enable en el puerto B Define LCD_EBIT 2
'En el bit B.2
' Establecer el puerto B como salida TRISB=0 M var byte
;creacion de variable
Pause 500 ' tiempo para inicializar LCD RUTINA: LCDOUT $FE,64 ' COMIENZA DEFINICION LCDOUT $0,$E,$A,$1F,$1B,$1F,$1F,$0 ' 3 candado cerrado LCDOUT $0,$E,$8,$1F,$1B,$1F,$1F,$0 ' 4 CANDAdO ABIERTO LCDOUT $E,$A,$4,$1F,$4,$E,$A,$0 ' 5 MONITO LCDOUT $A,$A,$0,$4,$11,$E,$0,$0 ' 6 cara feliz http://www.for os osdeelectr on oni ca ca.com /f/f24/cur so so- pr pr og ogr am am ac aci on on- pi pi cc- pi pi cb cbasic- pr pr oo- 20 20658/i nd ndex2.htm l
2/53
10/6/2017
Cur so de pr ogr am aci ón de PIC en PIC Basi c Pr o
CG RAM (carácter generator RAM) La CG RAM contiene los caracteres que pueden ser definidos por el usuario, es decir que pueden ser personalizados. Está formada por 64 posiciones, con direcciones $00-$3F. Cada posición es de 5 bits. La memoria esta dividida en 8 bloques que corresponden a los posibles caracteres creados por el usuario que van del 0 al 7. Cada carácter esta constituido por una matriz de 5 columnas por 8 filas. De este modo un 1 indica un punto de la matriz encendido, y un 0 apagado.
Programa generacion de caracteres pic basic pro utilizando un pic 16f877A un LCD 2x16 con comunicacion a 4 bits: Código:
@ device xt_osc ; oscilador externo XT define osc 4 ; especifica que se va a utilizar uno de 4 Mhz ' DEFINICIÓN DE REGISTROS PARA EL LCD Define LCD_DREG PORTB 'Utilizar 4 bits del puerto B para tx de datos Define LCD_DBIT 4
'Desde el Bit B.4 al Bit B.7
Define LCD_RSREG PORTB'Selección del puerto del registro Define LCD_RSBIT 3
'En el bit B.1
Define LCD_EREG PORTB 'Utilizar el enable en el puerto B Define LCD_EBIT 2
'En el bit B.2
' Establecer el puerto B como salida TRISB=0 M var byte
;creacion de variable
Pause 500 ' tiempo para inicializar LCD RUTINA: LCDOUT $FE,64 ' COMIENZA DEFINICION LCDOUT $0,$E,$A,$1F,$1B,$1F,$1F,$0 ' 3 candado cerrado LCDOUT $0,$E,$8,$1F,$1B,$1F,$1F,$0 ' 4 CANDAdO ABIERTO LCDOUT $E,$A,$4,$1F,$4,$E,$A,$0 ' 5 MONITO LCDOUT $A,$A,$0,$4,$11,$E,$0,$0 ' 6 cara feliz http://www.for os osdeelectr on oni ca ca.com /f/f24/cur so so- pr pr og ogr am am ac aci on on- pi pi cc- pi pi cb cbasic- pr pr oo- 20 20658/i nd ndex2.htm l
2/53
10/6/2017
Cur so de pr ogr am aci ón de PIC en PIC Basi c Pr o
LCDOUT $A,$A,$0,$4,$11,$E,$6,$0 $A,$A,$0,$4,$1 1,$E,$6,$0 '7 cara lengua LCDOut $FE, 1 ' LIMPIA EL DISPLAY LCDOUT $FE,$84,"CARACTERES"; mensaje en la primera linea LCD LCDOUT $FE,$C0
;caracteres personalizados personalizado s segunda linea LCD 2X16
; las siguientes lineas del programa sirven para visualizar en la segunda linea del LCD 2X 16 los caracteres especiales FOR M = 0 TO 4 LCDOUT M PAUSE 300 NEXT M PAUSE 1500 LCDOut $FE, 1 ' LIMPIA EL DISPLAY LCDOUT $FE,$81,"PERSONALIZADOS" $FE,$81,"PERSO NALIZADOS"
;mensaje
la primera linea LCD 2X16
LCDOUT $FE,64 'COMIENZA DEFINICION
LCDOUT $1F,$11,$A,$4,$A,$11,$1F,$0 ' 2 RELOJ ARENA LCDOUT $11,$1F,$1F,$15,$1F,$1B,$E,$0 ' 3 DIABLO LCDOUT $E,$1F,$15,$1F,$1F,$E,$E,$0 ' 4 CALAVERA LCDOUT $4,$2,$4,$0,$1F,$11,$E,$0 ' 5 TAZA LCDOUT $0,$E,$11,$1F,$4,$14,$8,$0 ' sombrilla ; las siguientes lineas del programa sirven para visualizar en la segunda linea del LCD 2X 16 los caracteres especiales LCDOUT $FE,$C0 FOR M = 0 TO 4 LCDOUT M PAUSE 300 NEXT M PAUSE 1500 LCDOUT $FE, 1 ' LIMPIA EL DISPLAY GOTO RUTINA http://www.for os osdeelectr on oni ca ca.com /f/f24/cur so so- pr pr og ogr am am ac aci on on- pi pi cc- pi pi cb cbasic- pr pr oo- 20 20658/i nd ndex2.htm l
3/53
10/6/2017
Cur so de pr ogr am aci ón de PIC en PIC Basi c Pr o
Por ultimo anexo simulacion en proteus 7.4 , codigo fuente, .hex .la carpeta esta en formato comprimido Archivos Adjuntos
Que tal siguiendo con los proyectos de lcd un frecuenciometro con el pic 16f84A , ldc 2x16 y un generador de señales cuadradas ubicado por el puertoA2, en donde se capta los pulsos y se visualizan el LCD; con alarmas de activacion condicionales ubicadas en el puert A 0,1 respectivamente, sin mas el codigo fuente: Código:
@ device xt_osc ; oscilador externo XT define osc 4 ; especifica que se va a utilizar uno de 4 Mhz ' DEFINICIÓN DE REGISTROS PARA EL LCD Define LCD_DREG PORTB 'Utilizar 4 bits del puerto B para tx de datos Define LCD_DBIT 0
'Desde el Bit B.4 al Bit B.7
Define LCD_RSREG PORTB'Selección del puerto del registro Define LCD_RSBIT 4
'En el bit B.1
Define LCD_EREG PORTB 'Utilizar el enable en el puerto B Define LCD_EBIT 5
'En el bit B.2
' Establecer el puerto B como salida TRISB=0 ; configuracionde pines del PIc 16f84A Alarma0 var porta.0 Alarma1 var porta.1 ; definicion de variables pulsos var word
; variable con capacidad de 65535
loop: count porta.2,1000,pulsos porta.2,1000 ,pulsos lcdout $fe,1
; CONTAR LOS PULSOS POR EL PUERTO A2
;LIMPIA lcd
lcdout $fe,$82,"fecuencia:" $fe,$82,"fecue ncia:" lcdout $fe,$c5,dec pulsos,"hz"
; ENVIAR MENSAJE AL LCD ; MOSTRAR PULSOS EN LCD SEGUNDA LINEA
http://www.for os osdeelectr on oni ca ca.com /f/f24/cur so so- pr pr og ogr am am ac aci on on- pi pi cc- pi pi cb cbasic- pr pr oo- 20 20658/i nd ndex2.htm l
4/53
10/6/2017
Cur so de pr ogr am aci ón de PIC en PIC Basi c Pr o
;condicionales para alarmas if pulsos>750 then EMER1 if pulsos<320 then EMER2
;SI PULSOS EXCEDE 750 IR A EMER1 ; SI PULSOS DECIENDE
320 IR A EMER2
LOW ALARMA0:LOW ALARMA1 GOTO LOOP EMER1:
; RUTINA EMER1
HIGH ALARMA0 LOW ALARMA1 GOTO LOOP EMER2: ;RUNITA EMER2 LOW ALARMA0 HIGH ALARMA1 GOTO LOOP Archivos Adjuntos
frecuencimetro_135.zip (31,9 frecuencimetro_135.zip (31,9 KB (Kilobytes), 895 visitas)
ldc_frecuen_127.zip (30,7 ldc_frecuen_127.zip (30,7 KB (Kilobytes), 812 visitas) Robot seguidor de luz con pbp Bueno amigos quiero compartir con ustedes el desarrollo de un robot seguidor de luz bajo la programacion en pic basic pro,utilice un pic 16f84a, driver l293b,fotoceldas y como estructura del robot un carro viejo de rf que tenia,adaptando en un pequeño protoboard el circuto para controlar los dos motores que componen el carrito. No coloque los testigos (leds) por el espacio en la proto para controlar el motor 1 utilice el comando PWM. Este es dodigo fuente: Código:
@ device xt_osc ; oscilador externo XT define osc 4 ; especifica que se va a utilizar uno de 4 Mhz
;ROBOT SEGUIDOR DE LUZ b0 var byte
;VARIABLE PARA GUARDAR EL VALOR DE LDR1
http://www.for os osdeelectr on oni ca ca.com /f/f24/cur so so- pr pr og ogr am am ac aci on on- pi pi cc- pi pi cb cbasic- pr pr oo- 20 20658/i nd ndex2.htm l
5/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
b1 var byte
;VARIABLE PARA GUARDAR VALOR DE LDR2
b2 var byte
;VARIABLE DE COMPARACION DE LDR1 Y LDR2
p2 var portb.0
;SALIDA MOTOR1
p3 var portb.1
;SALIDA MOTOR2
p4 var portb.2
;SALIA MOTOR2
EN1 var portb.3
; habilitador inversor giro MOTOR 2
EN2 VAR PORTB.4
;HABILITADOR MOTOR UNO
LED1 VAR PORTA.0 LED2 VAR PORTA.1 LED3 VAR PORTA.2 start:
;INICIO
pot portb.5,255,b0
;LEE LDR1 Y GUARDA VALOR EN BO
pot portb.6,255,b1
;LEE LDR2 Y GUARDA VALOR EN B1
If b0 = b1 then straight
;SI BO =B1 ENTONCER IR
if b0 > b1 then left
;SI BO ES MAYOR A B1 IR A IZQUIERDA
if b1 > b0 then right
;SI B1 ES MAYOR QUE BO ENTONCES IR A DERECHA
straight:
;RUTINA COMIENZO
ALA RUTINA STRAIGHT
pwm EN2,125,30:HIGH p2 LOW EN1: low p3:low p4
; HABILITA MOTOR 1
high led1 goto start
;IR A INICIO
left:
;RUTINA IZQUIERDA
b2 = b0‐b1
;RESTE EL VALOR DE BOY B1 Y GUARDELO EN LA ;VARIABLE B2
if b2 > 15 then left1
;SIB2 ES MAYOR QUE 15 ENTONCES IR A RUTINA ;IZQUIERDA 1
goto straight left1:
;IR A INICIO ;RUTINA IZQUIERDA 1
pwm EN2,125,30:HIGH p2 HIGH EN1: LOW P3:high p4 ;ACTIVA SALIDA P3 Y DESACTIVA SALIDA P4 HIGH LED2 goto start
;ENCIENDE TESTIGO ;IR A INICIO
right:
;RUTINA DERECHA
b2 = b1‐b0
;RESTE EL VALOR DE B1 CON B0 Y GUARDE EL ;VALOR EN B2
http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
6/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
if b2 > 15 then right1
;SI B2 ES MAYOR QUE 15 ENTONCES IR A RUTINA ;DERECHA 1
goto straight
;IR A INICIO
right1:
;RUTINA DERECHA 1
pwm EN2,125,30:high p2 HIGH EN1:HIGH P3:low p4 ;ACTIVA SALIDA P4 Y DESACTIVA SALIDA P3 HIGH LED3
;ENCIENDE TESTIGO
goto start
;IR A INICIO
end
;FIN DE PROGRAMA
Archivos Adjuntos
Amigos vamos con un proyecto interesante control de acceso son clave utilizando un teclado matrixal de 4x4,pic 16f84a y testigos de operatividad, al ingresar los cuatro digitos correctamente se energiza un rele durante tres segundos ubicado en el pin door del pic ,si la clave es incorrecta se emite tres activaciones en bip y led ubicados en el puerto A0 y A1 respectivamente, la activacion de cada tecla va acompañado de la visualizacion del led ubicado en pin 18 del pic 16f84a. codigo fuente en pic basic pro Código:
@ device xt_osc ; oscilador externo XT define osc 4 ; especifica que se va a utilizar uno de 4 Mhz ;creacion de variables tecla var byte
;donde se guarada tecla pulsada
repit var byte
;para hacer repeticiones
;configuracion de pines del pic 16f84a bip var porta.0 led var porta.1 door var porta.2 a var portb.0
;donde se conecta la chicharra ;donde se conecta el led ;donde se conecta rele para la puerta ;pines de las filas
b var portb.1 c var portb.2 d var portb.3 http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
7/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
uno var portb.4 dos var portb.5 tres var portb.6 cuatro var portb.7 iniciando:
;incica funcionamiento del sistema
high led:high bip pause 1000 low led:low bip goto teclauno
; comparar clave
barrido: low a
;sensar fila a
if uno=0 then tecla=1:return if dos=0 then tecla=2:return if tres=0 then tecla=3:return if cuatro=0 then tecla=10:return high a low b if uno=0 then tecla=4:return if dos=0 then tecla=5:return if tres=0 then tecla=6:return if cuatro=0 then tecla=11:return high b low c if uno=0 then tecla=7:return if dos =0 then tecla=8:return if tres=0 then tecla=9:return if cuatro=0 then tecla=12:return high c low d if uno=0 then tecla=14:return if dos=0 then tecla=0:return if tres=0 then tecla=15:return if cuatro=0 then tecla=13:return high d pause 10 goto barrido ;rutina antirrebote de teclas http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
8/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
ptecla: high led:low bip pause 100 low led :low bip espacio: if uno=0 then espacio if dos=0 then espacio if tres=0 then espacio if cuatro=0 then espacio pause 25 return ;rutina para comparar claves teclauno: gosub barrido gosub ptecla if tecla=1then teclados goto falso teclados: gosub barrido:gosub ptecla if tecla=2 then teclatres goto falso1 teclatres: gosub barrido:gosub ptecla if tecla=3 then teclacuatro goto falso2 teclacuatro gosub barrido:gosub ptecla if tecla=4 then open goto falso3 open: for repit=1 to 2 pause 100 high led:high bip pause 100 low led:low bip next http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
9/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
high door pause 3000 low door goto teclauno ;rutina teclas erroneas falso: gosub barrido:gosub ptecla falso1: gosub barrido:gosub ptecla falso2: gosub barrido:gosub ptecla falso3: for repit=1 to 3 pause 100 high led:high bip pause 100 low led: low bip next goto teclauno end Archivos Adjuntos
bien amigo patico, vayamos por partes, primero el 16f877a no tiene oscilador interno, pero es mucho mas completo que el 16f628 en otras areas, mas memoria eeprom, 33 in/out, etc, debes conserguirte un cristal de 4 mhz que es lo mas comun, y dos condensadores de 22 picofaradios, con esto haces el oscilador, es indispensable contar con el datasheet u hoja de datos del mencionado pic, de otra forma no sabes con que estas trabajando, debes si o si conocer la disposicion de las patas del pic... ahora para el lcd debes tener en cuenta un par de cosas, un lcd por ejemplo de 2x16 (muy comun) trabajan de dos modos con 8 bits o con 4 bits, que es esto? la cantidad de patas que vas a conectar al pic, si es de 4 bits conectas 4 patas del pic al lcd, si es de 8 conectas 8 patas del lcd al pic, que se gana con esto, una mayor velocidad de transferencia de datos del pic al lcd...ahora bien ademas de las 4 u 8 patas debes conectar tambien otras dos que son "E" (enable), el pic lo pone a 1 para que el lcd se active y luego tienes otra que es "RS" (register select) que sirve para que el lcd sepa si recibe un comando, por ejepmlo: (limpiar la pantalla) o si recibe un caracter, por ahora debes poder armar el soft, y debes ser paciente para poder entender como funciona el sistema, es maravilloso pero no debes desesperarte, busca información en google que hay mucha...saludos te adjunto un esquema de http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
10/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
conexion del lcd, saludos Imágenes Adjuntas
Temas similares
Bien vamos con proyecto interesante aqui os dejo el codigo fuente comentado: Código:
;Programa en donde se mueve un servo motor de tres lineas con el pic 16f877A, ;se utiliza LCD 2X16 que muestra la posicion de giro dada por tres botones ;conectados al puerto B, los cuales dan las posiciones: giro derecha ,centro y ;giro izquierda referenciado de 0 a 1000, donde posicion de centro es 500. ; deficion de Oscilador Externo @ device xt_osc ; oscilador externo XT define osc 4 ; especifica que se va a utilizar uno de 4 Mhz ' Libreria para la operacion del programa Define
LOADER_USED
1
; Definicion de conexiónes del LCD Define
LCD_DREG
PORTD
Define
LCD_DBIT
4
Define
LCD_RSREG
PORTA
Define
LCD_RSBIT
0
Define
LCD_EREG
PORTA
Define
LCD_EBIT
1
pos
var
word
servo1
var
PORTC.1 'pin donde se conecta el servo
' Posicion del servo
ADCON1 = 7
' PORTA y PORTE digitales
Low PORTA.2
' LCD R/W low = escritura
Pause 100
' retardo para inicializar el LCD
OPTION_REG = $7f Low servo1
;portc.1 como salida para controlar el servo
http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
11/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
Gosub center
'ir a centro
' progrma principal LOOP: PORTB = 0
' PORTB lineas a cero logico para leer botones
TRISB = $fe
'Rutinas para el chequeo de botones y posiciones del servo If PORTB.4 = 0 Then Gosub left Endif If PORTB.5 = 0 Then Gosub center Endif If PORTB.6 = 0 Then Gosub right Endif ;Rutina para mostrar mensaje y valor decimal de la posicion del servo Lcdout $fe,1 Lcdout $fe,2,"Position = ", #pos servo1 = 1
' iniciar pulso hacia el servo
Pauseus 1000 + pos servo1 = 0
' termine pulso
Pause 16
' retardo
Goto LOOP
' Crea un bucle cerrado
' giro hacia la izquierda left:
If pos < 1000 Then pos = pos + 1 Endif Return
http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
12/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
' giro hacia la derecha right:
If pos != 0 Then pos = pos ‐ 1 Endif Return
' posicion de centro center: pos = 500 Return End Archivos Adjuntos
Visualizacion de sensor temperatura ds18s20 en lcd con pic 16f84A Que tal para mi amigo electroandres el hecho de recomendarte un sensor digital para tu proyecto es que el pic que vas a utilizar no tiene conversores A/D como el pic 16f877A por ello debes selecionar uno que pueda leer tu pic y adjuntar la medida obtenida en 8 byte para que posteriormente sea enviado el valor en decimal al lcd por comunicacion de 4 bits revisa este codigo espero sea de utilidad Código:
'DEFINICION OSCILADOR EXTERNO @ device xt_osc ; oscilador externo XT define osc 4 ; especifica que se va a utilizar uno de 4 Mhz
' DEFINICION DE LIBRERIA PARA COMUNICACION Define
LOADER_USED
1
'DEFINICION DE PINES PARA CONECTAR EL LCD Define
LCD_DREG
PORTB
Define
LCD_DBIT
0
Define
LCD_RSREG
PORTB
Define
LCD_RSBIT
4
Define
LCD_EREG
PORTB
Define
LCD_EBIT
5
http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
13/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
' CREACION DE VARIABLES command var
byte
' VARIABLE PARA COMANDO
i
var
byte
' VARIABLE PARA CONTEO
temp
var
word
' PARA GUARDAR VALOR TEMP
' DETERMINACION DE PIN SENSOR DS 18S20 CONECTADO AL PIC 16F84a DQ
var
PORTB.7
' PIN DEL SENSOR DS18S20 CONECTADO A PORTB.7
DQ_DIR
var
TRISB.7
' DEL PIC 16F84a
Low PORTB.6
' LCD R/W A CERO LOGIGO POR EL PIC 16F84a
Pause 100
' 100 MS PARA INICIALIZAR LCD
Lcdout $fe, 1 Lcdout $fe,$80, "Temp:"
'MOSTRAR MENSAJE
'PROGRAMA PARA LECTURA DE TEMPERATURA EN EL LCD INICIO: Gosub init18S20
' IR A RUTINA DE INICIALIZACION DEL LCD
command = $cc Gosub write18S20 command = $44
' EMPIEZE CONVERCION DE TEMPERATURA
Gosub write18S20 Pause 2000
' ESPERO 2S EG HASTA QUE FINALICE LA CONVERSION
Gosub init18S20 command = $cc Gosub write18S20 command = $be
' LEER TEMPERATURA
Gosub write18S20 Gosub read18S20 http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
14/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
'RUTINA PARA MOSTRAR VALOR DE TEMPERATURA EN EL LCD Lcdout $fe,$86, dec (temp >> 1),".",dec (temp.0 * 5), "oC" Goto INICIO
' INICIALIZA
' CREA UN BUCLE CERRADO
DS18S20 Y CHEQUEA PRESENCIA
init18S20: Low DQ Pauseus 500 DQ_DIR = 1 Pauseus 100 If DQ = 1 Then Lcdout $fe, 1 Lcdout $fe,$83,"SENSOR DS18S20" Lcdout $fe,$C2,"NO CONECTADO" Pause 500 Goto INICIO Endif Pauseus 400 Return
' RUTINA PARA COMUNICACION DEL PIC CON SENSOR DS1820 A 8 BYTE write18S20: For i = 1 to 8 If command.0 = 0 Then Gosub write0 Else Gosub write1 Endif command = command >> 1 Next i Return ' RUTINA PARA DESHABILITAR DS18S20 A TRAVES DE UN BIT http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
15/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
write0: Low DQ Pauseus 60 DQ_DIR = 1 Return ' RUTINA PARA HABILITAR DS18S20 A TRAVES DE UN BIT write1: Low DQ @
nop
' RETARDO DE 1us CON UN OSCILADOR EXTERNO DE 4MHz
DQ_DIR = 1 Pauseus 60 Return
' RUTINA PARA LEER DS18S20 read18S20: For i = 1 to 16 temp = temp >> 1 Gosub readbit Next i Return ' RUTINA PARA LEER BIT DS18S20 readbit: temp.15 = 1 Low DQ @
nop
' RETARDO DE 1us CON UN OSCILADOR EXTERNO DE 4MHz
DQ_DIR = 1 If DQ = 0 Then temp.15 = 0 Endif Pauseus 60 Return End Archivos Adjuntos
Temas similares http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
16/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
Archivos Adjuntos
Avances proyecto temperatura RSR 232 y labview Que amigos he simulado el proyecto en proteus 7.5 con excelentes resultados , corre muy bien y se logra mostrar la tempetura que sensa el LM 35 con buena precision al igual que los mensajes que he enviado a traves de la comunicacion RS 232, me recibe y recepciona datos, sin mas preambulos les anexo lo que llevo ahora me dedicare a que se muestre en la PC la temperatura por medio grafico utilizando LABVIEW, he conseguido buena información para ello. Archivos Adjuntos
Reloj En LcD con igualador y alarma... Hola! Encontré este foro muy interesante sobre microcontroladores PIC en Basic... Quisiera aportar con el proyecto que se solicitaba de reloj digital con LCD... En el archivo adjunto está la simulación y el programa... Solo falta la parte de la alarma [solo unas 5 ó 6 lineas de codigo más].... una breve explicación del funcionamiento: Al encender el circuito, se carga una hora/fecha al RTC (DS1307), que después puede ser configurada en cualquier monento con los pulsadores (MODO NORMAL). Para esto, har que mantener presionado el pulsador "SET" por un momento (ENTRAS AL MODO CONFIGURACION), y comenzará a parpadear en el display el campo a ser modificado: hora, pulsando otras vez, el cursor cambia a minutos, pulsando otra vez cambia a dia... Con los botones UP o DOWN_MODE, se cambia el valor del campo seleccionado. Ya cuando se modifican todos los campos, el Reloj sigue normalmente con el último puslo en SET. Para acceder al modo de la alarma, debes presionar DOWN_MODE en el MODO NORMAL, .... bueno, hasta aqui va el código. Como dije anteriormente, solo falta unas lineas (variables de almacenamiento de la hora de la alarma, configuración...)
Cualquier cosa, duda del codigo, posteala y veremos como solucionamos... Si encuentras algun bug tambien avisamelo, o si logras hacer el programa mas corto tambien! Adjunto un screencapt y el modelo con la simulación. Cabe destacar que la simulacion está en proteus 7.4sp3, con un PIC 16F877A, para migrar a 16F628/A o algun otro, deben revisar los pinouts, y la capacidad de memoria. Recomendaría usar un 628A... http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
17/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
En unos dias subo ya el proyecto completo... Imágenes Adjuntas
Que tal amigo lectroandres interprete mal su proyecto creo que no deseas utilizar el integrado DS 1370 por lo que te anexo un proyecto con alarmas un reloj de clases. El proyecto consiste en visualizar jornadas de estudio de 6:00 AM a 12:00 AM hora en que empieza y culmina la jornada mañana con sus respectivos mensajes visualizados en el LDC activandose una alarma durante tres segundos el mismo procedimiemto se repite para la jornada tarde. Al activar el boton comienzo se da inicio a la jornada mañana, se puede incrementar los minutos en el boton minus , los mensajes apareceran siempre que se ejecute el cambio de jornadas programas: 6:00 am ini. clases j.m 12:00 pm ter. calses j.m 12:300 pm ini. clases j.t 6:30 pm ter. clase j.t Lo habia reralizado para un evidencia de estudio te anexo todo lo necesario espero que esto sea lo que necesites o te ayude a realizarlo. Archivos Adjuntos
Para mi amigo cripty te anexo documento de utilizacion de los registros del pic 16f628A para la operacion del pwm por hardware sin la utilizacion del comando PWM en el entorno de microcode studio aqui esta el codigo Código:
; Programa PWM con Hardware con el pic 16f628A con un ciclo util del 50% ;y frecuencia de 38 KHZ aproximadamente @ device xt_osc ; oscilador externo XT define osc 4 ; especifica que se va a utilizar uno de 4 Mhz CMCON
= 7
' PUERTO A DIGIAL
VRCON
= 0
' A/D Voltage referencia deshabilitado
TRISB
= %11110000
' B.3=PWM,B.0,B.1,B.2 LEDs
http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
18/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
PR2
= 25
' Seleecion PWM para aproximadamente 38KHz
CCPR1L
= 13
' PWM Duty‐Cycle a 50%
CCP1CON
= %00001100
' modo de seleccion = PWM
T2CON
= %00000100
' Timer2 ON + 1:1 prescaler
LOOP: high PortB.0 pause 50 low PortB.0 pause 50 high PortB.1 pause 50 low PortB.1 pause 50 high PortB.2 pause 50 low PortB.2 pause 50 goto LOOP Por ultimo es conveniente tener la hoja de caracteristicas del pic que se va ha utilizar y aprovechar mejor su memoria por lo que se conoce mejor la estructura interna del micro, en el caso de los micros que no poseen registro PWM es conveniente utilizar el comando PWM que nos facilita PBP para realizar la modulacion de ancho de pulso que necesitemos como en el caso del pic 16f84A por ejemplo: Código:
; Programa PWM con el pic 16f84A con un ciclo util del 50% @ device xt_osc ; oscilador externo XT define osc 4 ; especifica que se va a utilizar uno de 4 Mhz PWM portB.3,127,30 ; Sacar 30 pulsos PWM por el puerto b3 con un ciclo util del 50% Archivos Adjuntos
Temas similares
hola gracias por responder mira en un manual o algo asi de PBP mire que << es para desplazamientos izquierdo y >> para desplazamiento derecho eso no se la verdad para que sirve me podrias explicar y http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
19/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
eso de los decimales mas o menos me di cuenta pero como puedo hacer para que la los decimales aparezcan al mover mi potenciometro un poco aparezca 0.1 y a medida que vaya moviendo pueda verlo 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1....ahora tengo otra duda talvez bien torpe peron no entiendo por ejemplo tengo mi potenciometro que lo lee de 0 a 255 pero para mi conveniencia lo quiero transformar a otra escala es decir de 0 a 500 lo mas facil que se me ocurrio era (P1*500/255) p1 es mi variable pero al mirar en el LCD en 0 era 0 estaba bien en la mitad del potenciometro meda 256 pero sigo abanzando se baja a 4 y al final me da 255 y eso me tiene muy confundido...ahora tambien quiero restarle a mi variable p1-10 me comienza en 6225 o algo asi y al seguir avanzando sigue la escala no entiendo puedes darme una mano con eso por favor con lo de los decimales para que lo mires te adjunto la simulacion y el programa. Archivos Adjuntos
proyecto de lectura teclado 4X4 con letras con pic 16f877A que tal vamos con otro proyecto de teclado matrixal pero de visualizacion de letras (A;B;C;D;*;#) he aqui el codigo : Código:
; programa de visualizacion de teclado '
1 2 3 A
'
4 5 6 B
'
7 8 9 C
'
* 0 # D
' con pic 16f877A y lcd 2x16 en donde muestra la tecla presionada en la pantalla ' del LCD utilizando operandos matematicos del PBP.
'Definir libreria Define
LOADER_USED
1
'definir oscilador externo @ device xt_osc define osc 4 ' Define LCD connections Define
LCD_DREG
PORTD
Define
LCD_DBIT
4
Define
LCD_RSREG
PORTD
Define
LCD_RSBIT
3
http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
20/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
Define
LCD_EREG
PORTD
Define
LCD_EBIT
2
' Definicion de variables col
Var
Byte
'
columnas
fila
Var
Byte
' filas
B
Var
Byte
' numero
A
Var
Byte
' tecla a visualizar
OPTION_REG.7 = 0
' Activa resistencias internas PORTB
ADCON1 = 7
' PORTA y PORTE digital
Low PORTD.1
' LCD R/W low (escritura)
Pause 100
' tiempo para inicializar el LCD
Lcdout $fe, 1, "PRESIONE TECLA"
' mensaje
inicio: Gosub leer Lookup A, ["0123456789*#ABCD"],B Lcdout $fe,1,B
' mostrar tecla primida
Goto inicio
' Subrutina para leer tecla pulsada leer: Pause 50
' esperer 50ms
leer0: PORTB = 0
' puerto B como salida
TRISB = $f0 If ((PORTB >> 4) != $f) Then leer0 Pause 50 leer1: For col = 0 To 3 PORTB = 0 TRISB = (dcd col) ^ $ff fila = PORTB >> 4
'leer filas
If fila != $f Then tecla http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
21/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
Next col Goto
leer1
tecla: B = (col * 4) + (ncd (fila ^ $f)) ‐ 1 ' transformadorrmacion de tecla activada ' 10 = * ' 11 = # ' 12 = A ' 13 = B ' 14 = C ' 15 = D Lookup B, [1,2,3,12,4,5,6,13,7,8,9,14,10,0,11,15],A Return
' retornar
End Como siempre dejo la simulacion en proteus , codigo fuente y esquematico "comentar es agradecer" Archivos Adjuntos
TCLEDO -LCD.zip (86,1 KB (Kilobytes), 809 visitas)
lcdtecla.zip (56,4 KB (Kilobytes), 724 visitas) Temas similares
Respuesta: Curso programacion de pic en bsic pro 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 Imágenes Adjuntas
Respuesta: Curso programacion de pic en bsic pro 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. Imágenes Adjuntas http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
22/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
Temas similares
Respuesta: Curso programacion de pic en bsic pro saludos mecatrodatos
he estado leyendo este post y veo que eres muy bueno con el pbasic. por eso, queria pedirte si puedes ayudarme a comprender como utilizar el serin y serout del pbasic. te explico un poco lo que quiero hacer. mi idea es implementar un control remoto basado en el pic16f84A pero la verdad que no entiendo muy bien como utilizar estas dos instrucciones
. una idea basica seria por ejemplo que si yo presiono un boton en el transmisor, en el receptor se encienda el led que corresponde al mismo. te paso un dibujo del circuito basico espero que se entienda
. solo necesito un par de lineas de codigo como para guiarme. un saludo y espero puedas ayudarme gracias
Imágenes Adjuntas
Temas similares
Respuesta: Curso programacion de pic en bsic pro claro... probalo vos mismo. aca te dejo la simulacion en proteus
Archivos Adjuntos
leds en paralelo !! Hola a todos !! soy nuevo en este foro
y tengo una pregunta sobre los led : Bueno estoy usando el pic 16F84A para hacer una secuencia de luces, y tengo una duda !! Use todo el puerto B para formar una secuencia http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
23/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
de luces. Mi pregunta es: si no solo quisiera conectar un solo led a cada salida, si quisiera conectar 20 leds en paralelo en cada salida del puerto B, entonces el problema radicaria en saber cuanta corriente proporciona cada salida del puerto B del pic!!! y creo que no va a ser la sufiente. Ahora como podria hacer para que cada led tenga la suficiente corriente que necesite para billar con toda su intencidad!???? Tendria que usar un transistor como amplificador de corriente o que es lo que deberia hacer ????? adjunto el diagrama del cto en proteus i el codigo en HEX, para cargar al pic!! Espero puedan ayudarme !! =D !! Gracias de antemano!!
Archivos Adjuntos
Temas similares
Respuesta: Curso programacion de pic en bsic pro 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
pbpesp.pdf (646,9 KB (Kilobytes), 33 visitas)
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 Archivos Adjuntos
Respuesta: Curso programacion de pic en bsic pro Para Ayudarte realizaremos un programa por hardware con los registros del puerto C del Pic 16f877a. http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
24/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
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 I 2 C) 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.
http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
25/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
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 http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
26/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
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 http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
27/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
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 http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
28/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
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 Archivos Adjuntos
Comunicación SPI PIC 16F877A.pdf (307,0 KB (Kilobytes), 494 visitas)
spi.zip (75,8 KB (Kilobytes), 461 visitas) Respuesta: Curso programacion de pic en bsic pro 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
aca adjunto un zip con el proyecto para ver que opinan ustedes... agradecere cualquier tipo de consejo. saludosss y feliz 2010. Archivos Adjuntos
Temas similares
Respuesta: Curso programacion de pic en bsic pro Buenas a todos, Primero felicitar a mi compatriota Mecatrodatos por este tutorial,
http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
29/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
que te lleva directo al grano a diferencia de muchos otros que simplemente te sacan canas :enfadado: Amigo Meca antes habia hecho pruebillas con leds y todo bien pero llegaron las fiestas navideñas, la construccion de la casa, y mi hija....eh?. Bueno has manejado varios temas importantes pero y los 7 segmentos?, tenemos muy poca por no decir nada sobre manejar estos dispocitivos con el pic basic pro. Tengo un proyectos en mente y aprovechando este post podemos realizarlo en conjunto y que quede la información aqui en el foro ademas del avalioso aprendizaje que dejaría en muchos foristas. Se trata de un reloj con 7 segmentos, con pic16f628a un nuevo pic relacionado...eh, que lea los datos del bus i2c del ds1307,pues, siguiendo la relacion de distrubucion de energia de mi pueblo, por cada 2 dias de luz electrica 3 horas no y hasta si puede cerrar la relacion a diario, en fin lo que no se querria es perder la hora, y definitivamente una bateria back up no daria chicle. y por ultimo manejaria una carga "x", es decir un relé, con un ajuste de on y off, este ciclo deberia ser diario, en mi caso para manejar la nevera por las noches...pero puede ser usado por ejemplo para sistemas de riego, iluminacion perimetral etc.
dejo la semilla...y por supeusto el plano esquematico de lo que sería tentativamente el circuito y por supuesto como me gustaría que quedara.
claro...podriamos ir manejando el tema de los siete segmentos primero de modo de ir avanzando apropiadamente Saludos y exitos a todos, cheyo28
Imágenes Adjuntas
pic_reloj2.PNG (101,6 KB (Kilobytes), 600 visitas)
http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
30/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
microcontroller-based-digital-blue-clock.jpg (82,5 KB (Kilobytes), 396 visitas) Respuesta: Curso
programacion de pic en bsic pro Amigo atricio te dejo programa y simulacion para control de posicionamiento sin margen de error, simulacion en proteus 7.6, codigo fuente , .hex y esquematico para ayuda en tu proyecto. solamente aconcicionas el codigo a tus necesidades. Que tal amigo Cheyo interesante tu propuesta pero empezamos con utilizacion de multiplexado de display para realizar el cogido ? o vamos de una con el proyecto ... Archivos Adjuntos
programacion de pic en bsic pro_reloj rtc 7 segmentos buenas, Amigo Meca, creo que debemos iniciar con las caracteristicas del pic16f628a, actualmente leo el libro de porgrmacion en basic, lo recomeindo (y lo encuentran en google)...seria bueno contrastarlo con el modo de programacion de tu post. dejo est...me parece muy importante
-oscilador interno RC de 4Mhz +/- 1% -mclr programable -mayor capacidad de corriente, sus puerto A y B entregan un total de 200mA cada uno, es decir 25mA cada pin. lo mismo para el modo sumidero. Gracias a un forista Lucas22, me ayodo a seleccionar los puertos adecuados para hacer este proyectos y aprendí de él muchas cosas importantes. él maneja el basic tambien...seria bueno que hiciera parte de este post. Amigo meca, no estoy muy avansado en esto del PBP, espero me disculpe mis horrores de programacion y mis dudas...de los errores se aprende. 1-Definamos primero si las puertos estan bien asignados acoplandose al circuito 2-Este pic no usa oscilador externo, en Basic, ¿el no comandarle el oscilador externo el toma por defecto que vamos a usar oscilador interno del pic?. fuera del proyecto: aclarame esta rutina que usaste en el reloj con lcd y ds1307...para asignar los http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
31/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
meses y dias en el lcd Código:
'CPNFIGURACION MESES,DIAS Data @0,74,97,110,70,101,98,77,97,114,65,112,114 ' Jan Feb Mar Apr Data 77,97,121,74,117,110,74,117,108,65,117,103 ' May Jun Jul Aug Data 83,101,112,79,99,116,78,111,118,68,101,99 ' Sep Oct Nov Dec Data 84,117,101,87,101,100,84,104,117,70,114,105 ' Tue Wed Thu Fri Data 83,97,116,83,117,110,77,111,110 ' Sat Sun Mon noté que esos numeros corresponden a una letra...y hasta si esta en mayusculas...como detrminas el numero?...y ese @0 que asigna? que hace el DIM en basic? cuando llegue la rutina de los multiplexados podemos primero hacer un contador con la misma caracteristica y así otros ejemplos para entender las rutinas Saludos y exitos....por la tarde voy mostrando lo que seria la rutina...eh. Cheyo28
Imágenes Adjuntas
pines 16f528a.PNG (337,8 KB (Kilobytes), 215 visitas)
contador.PNG (238,8 KB (Kilobytes), 289 visitas) Amigo Cheyo realiza las siguientes configuracioens a tu programa: @ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT ' Opción del Osc Interno @ DEVICE pic16F628A, WDT_ON ' Watchdog Timer ON @ DEVICE pic16F628A, PWRT_ON ' Power-On Timer @ DEVICE pic16F628A, BOD_ON http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
32/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
@ 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 led var portb.0 ;nombre del pin 6 inicio: ;nombre de subrutina de inicio HIGH led ;enciende el led que esta conectado en el pin6 pause 1000 ;Espera un segundo low led ;apaga el led pause 1000 ;espera un segundo goto inicio ;continua el programa para siempre end ;fin del programa Como te comentaba lo mismo ocurre con el Asm se debe incluir unas lieas para configurar el oscilador con el cual va ha trabajar el PIC ya que el progrmador que poseee no tiene la opcion de configurarlo como el Epiwin 800 te anexo programa en pic basic , simulacion y .hex Archivos Adjuntos
Temas similares
Respuesta: Curso programacion de pic en bsic pro bien dejame ver realizare uno multiplexado en estos dias subo el codigo y el programa suerte amigo con tu aprendizaje En la imagen que te anexo asi quedaria el circuito pero tendrias que cambiar de pic a 16f877a si le conectamos los botones de configuracion o realizarlo con el pic 16f628A pero solamenta con los botones de configuracion de horas y minutos ya que se nos va de pines. o podriamos utilizar el circuito que posteaste pero el multiplexado no lo realizaria el pic sino el integrado conectado a los display estoy presto a tus comentarios Archivos Adjuntos
RELOJ.pdf (143,6 KB (Kilobytes), 548 visitas)
RELOJ1.pdf (133,9 KB (Kilobytes), 418 visitas) Temas similares http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
33/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
Respuesta: Reloj digital (PIC-Decodificadores Parte 1) BIen para no olvidar el tema y proyecto de nuestro amigo Cheyo la primera parte para el desarrollo del REloj digital con se explica el multiplexado y coneccion de display al PIC 16f628A como progrmas en Basic para activar los pines de I/O del PIC. Archivos Adjuntos
Respuesta: Curso programacion de pic en bsic pro hola chicos. yo por aqui de nuevo. bueno, primero le queria dar las gracias a mecatrodatos por ayudarme con lo del servo casero pero, no pude hacer que funcione... tal ves sea que no se como adaptar el programa a mi circuito... en fin... gracias de todas formas
en este caso, les queria dejar un control remoto serie proporcional de pic a pic que diseñe. es de un solo canal pero con algunas modificaciones al programa se pueden lograr varios canales. lo que tiene de bueno este circuito, es que a diferencia del que postie anteriormente, cuando el receptor deja de recibir señal, los servos de sus salidas vuelven a cero. espero les sea de utilidad. saludosss. Archivos Adjuntos
Temas similares
Temas similares
Respuesta: Curso programacion de pic en bsic pro 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.... Archivos Adjuntos
humedad.pdf (331,0 KB (Kilobytes), 299 visitas) http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
34/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
web control.rar (2,4 KB (Kilobytes), 270 visitas) Respuesta: Curso programacion de pic en bsic pro 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.
Ya me dirás si funciona. Saludos! Imágenes Adjuntas
Temas similares
Respuesta: Curso programacion de pic en bsic pro La funcion de autocalibracion de los potes es asi... despues usas la variable "escala". Imágenes Adjuntas
Respuesta: Curso programacion de pic en bsic pro primero es obligatorio el uso de servos, puedes usar servos trucados es una alternativa mira he intentado eso en microcode pero no logre exito depende del micro que vayas a usar puede que te ayude este documento te da una idea bastante buena de lo que se vaya a hacer pudes usar un L293D para activar los motores y atravez de un micro receptor activar las salidas necesarias para un L293D y hacer que vaya adelante atras izquierda derecha yo lo logre en Proton pero talvez tu puedas hacerlo asi porque aqui en mi pais no se puede encontrar con facilidad el 16F84A es muy caro aqui Archivos Adjuntos
http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
35/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
Respuesta: Curso programacion de pic en bsic pro hola amigos, estoy usando un pic16f88, y me ha sido imposible utilizar el conversor A/D, simulo en proteus y no me funciona les adjunto los archivos para ver si alguien me puede ayudar, la idea es que el led rojo encienda al comenzar el programa, el azul cuando la luz es baja y el verde cuando es alta. saludos!!
Código:
define osc 20 DEFINE ADC_BITS 8 DEFINE ADC_CLOCK 3
' USE A/D INTERNAL RC CLOCK
DEFINE ADC_SAMPLEUS 50
'SET SAMPLING TIME IN uS
'VARIABLES RES VAR WORD
'A/D CONVERTER RESULT
VOLTS1 VAR WORD VOLTS2 VAR WORD
'FIRST PART OF RESULT IN mV 'SECOND PART OF RESULT IN mV
'CONSTANTS CONV1 CON 19 '5000/256=19.53, THIS IS THE DECIMAL PART CONV2 CON 53
'THIS IS THE FRACTIONAL PART
TRISA=1
'RA0 (AN0) IS INPUT
TRISB=0
'PORTB IS OUTPUT
'INIATIALIZE THE A/D CONVERTER ADCON1=0
'MAKE AN0 TO AN4 AS ANALOG INPUTS, MAKE REFERENCE VOLTAGE=VDD
ADCON0=%11000001
'A/D CLOCK IS INTERNAL RC, SELECT CHANNEL AN0, TURN ON A/D
CONVERTER HIGH PORTB.2 PAUSE 3000 AGAIN: 'START A/D CONVERSION ADCIN 0,RES
'READ CHANNEL 0 DATA
VOLTS1=RES*CONV1
'MULTIPLY BY 19
VOLTS2=RES*CONV2
'MULTIPLY 53
http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
36/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
VOLTS2=VOLTS2/100 VOLTS1=VOLTS1+VOLTS2
'RESULT IN mV
IF VOLTS1 < 2500 THEN HIGH PORTB.0 ELSE HIGH PORTB.1 ENDIF PAUSE 2000 GOTO AGAIN END Aqui adjunto el archivo para el proteus.
GRACIAS! Archivos Adjuntos
Temas similares
Curso programacion de pic en bsic pro PROYECTOS CON MOTORES comparto una serie de programas para manejos de motores, totalmente comentados con su respectiva simulacion en proteus como codigo fuente con el pic 16f88 en el cual algunos tienen dudas sobre su utilizacion. '---------------Titulo -------------'************************************************* *************** '* Name : Proyecto con motores ......servo1.pbp * '* Author : MECATRODATOS * '* Date : 13/06/2010 * '************************************************* *************** '--------Descripcion del programa-------'Programa básico servo con el formato para el control de 'Pulsos del servo con PicBasic Pro comando PULSOUT. 'Servo ciclos entre la izquierda y 'Las posiciones de las agujas del reloj. '------------Comentario-------------'CON EL PIC16F88, asegúrese de tener alimentacion por separado 'SUMINISTROS PARA el PIC Y el SERVO. Usar 9V de http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
37/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
'La batería y dos reguladores de voltaje 78L05. 'También, inicializar el estado de PORTB, (PORTB = 0), lo más bajo 'Ya que establecerá la polaridad de la declaración PULSOUT . 'Servos "podrá ser modificado o hackeado para permitir 'la rotación continua y puedan ser utilizados 'Como motores de pequeños robots. El libro 'Amphibionics por Karl Williams da un 'En el tratamiento a fondo sobre cómo modificar los servos. '----- Comandos PicBasic Pro -------'PULSOUT pin, período 'Este comando envía un pulso a la clavija para el período definido. ' 'Por ejemplo: ' 'PULSOUT 0.200 Envía un pulso a cabo en RB0 pines para 2,0 ms. 'El período, (200), se multiplica por el 'Incremento para un oscilador de 4 MHz (10 us) 'Para obtener un pulso de tiempo de espera de 2,0 ms. ' 'Mira a tu alrededor en la página 121 PicBasic Pro Manual del compilador ' 'Otro comando PBP que podrá ser sustituido por PULSOUT'Es PAUSEUS. '---------PIC Connecciones---------' PIC16F88 Pin Wiring ' --------- ---------' RB0 Servo Control Wire ' Vdd +5 V ' Vss Ground ' MCLR 4.7K Resistor to +5 V '------------Variables------------i VAR BYTE 'BYTE para la variable contador, i '----------Initialization---------PORTB = %00000000 'Eqivalent a: PORTB = 0 'Establece todos los pines PORTB a BAJO (0 voltios) 'Asegúrese de incluir este 'Inicialización que establece la http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
38/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
'Correcta polaridad de los pulsos en el comando 'PULSOUT . 'Para establecer un solo pin RB0 como, a 'LOW, introduzca PORTB.0 = 0. ANSEL = 0 'Configure todos los pines a la digital 'Operación ya que no utiliza ADC '(Convertidor analógico a digital) OSCCON = $60 'Establece el oscilador interno en el '16F88 a 4 MHz '------------ -Codigo Principal-----------loop: For i = 1 TO 40 ' posición:Hacia la izquierda ' Enviar la señal 40 veces. Para cambiar el sentido ' El servo se mantiene en una posición, el cambio ' De 40 a otro valor. PulsOut 0,100 ' Ancho de pulso: ' Envía un pulso a cabo en RB0 pines para 1,0 ms. ' El período, (100), se multiplica por el ' Incremento para un oscilador de 4 MHz (10 us) ' Para obtener un pulso de tiempo de espera de 1,0 ms. Pause 20 - 1 ' Intervalo de pulso : ' Una pausa de 20 ms de pulso menor ancho (1,0 m) ' Esta ecuación mantiene el período de ' El pulso del servo uconstante de 20 ms, HIGH ' Por 1 ms y ms de 19 BAJO = 20 ms. Next i ' Volver a la declaración ' Siguiente cuenta For i = 1 TO 40 ' Enviar la señal para el giro manecillas del reloj ' 40 veces PulsOut 0,200 ' Ancho de pulso: ' Envía un pulso a cabo en RB0 pines para 2,0 ms. ' El período, (200), se multiplica por el http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
39/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
' Incremento para un oscilador de 4 MHz (10 us) ' Para obtener un pulso de tiempo de espera de 2,0 ms. Pause 20 - 2 ' Intervalo de Pulso: ' Una pausa de 20 ms de pulso menor ancho (2,0 m) ' Esta ecuación mantiene el período de ' El pulso del servo constante de 20 ms, HIGH ' Durante 2 ms y 18 ms para BAJO = 20 ms. Next i ' Volver a la declaración ' Siguiente cuenta goto loop ' Hace que el programa se ejecute siempre end Archivos Adjuntos
Código:
'**************************************************************** '*
Name
: SERVO 2.BAS
*
'*
Author
: MECATRODATOS
*
'**************************************************************** '‐‐‐‐‐‐‐‐Descripcion del programa‐‐‐‐‐‐‐‐ 'Girar servos en las rotaciones de las agujas del reloj y en sentido antihorario ' '‐‐‐‐‐‐‐‐‐‐‐ConnecCIONES‐‐‐‐‐‐‐‐‐‐‐ '
PIC16F88 Pin
'
‐‐‐‐‐‐‐‐‐
Wiring ‐‐‐‐‐‐‐‐‐‐
'
RB0
Servo Control Wire
'
Vdd
+5 V
'
Vss
Ground
'
MCLR
4.7K Resistor to +5 V
'‐‐‐‐‐‐‐‐‐‐‐‐Variables‐‐‐‐‐‐‐‐‐‐‐‐‐ p0
VAR
BYTE
' Byte para almacenar la posición del servo
http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
40/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
'‐‐‐‐‐‐‐‐‐‐Initialization‐‐‐‐‐‐‐‐‐‐ PORTB = %00000000
'Eqivalent a: PORTB = 0 'Establece todos los pines PORTB a BAJO (0 voltios) 'Asegúrese de incluir esta 'Inicialización que establece la 'Correcta polaridad de los pulsos en 'El comando PULSOUT .
OSCCON = $60
'Establece el oscilador interno en el '16F88 a 4 MHz
'‐‐‐‐‐‐‐‐‐‐‐‐‐codigo principal‐‐‐‐‐‐‐‐‐‐‐‐ loop: ' ************Giro a la izquierda *********************************** For p0 = 200 TO 100 STEP ‐1
' Modificar el valor del pulso de 2
ms y ' 1 ms en pasos de 10. ' Ver siguiente Comando PulsOut 0,p0
' Envía un pulso, p0, sobre
pin RB0. ' El período, p0, se multiplica por el ' Incremento para un oscilador de 4 MHz ' (10 us) para obtener un pulso de tiempo de espera. ' Por ejemplo, si p0 = 200, ' 200 * 10 = nosotros nos 2000 = 2 ms Pause 20 ‐ p0/100
' Una pausa de 20 ms menos
ancho de pulso (p0/100) ' Si p0 = 200, = 200/100 = p0/100 2 ms. ' Esta ecuación mantiene el período de ' El pulso del servo una constante de 20 ms. Next p0
' Volver a la declaración del ' Siguiente valor de p0
http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
41/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
'*******Rotación hacia la derecha
**************************
For p0 = 100 TO 200
' Modificar el valor del pulso de 1
ms y '2 ms en pasos de 10. PulsOut 0,p0
' Envía un pulso, p0, sobre RB0
alfiler. ' Tiempo de espera varía de un pulso ms 1,0 ' A 2,0 ms. Pause 20 ‐ p0/100
'Una pausa de 20 ms menos
ancho de pulso (p0/100) Next p0
' Volver a la declaración del ' Siguiente valor de p0
goto loop
' Hace que el programa se ejecute siempre
end '****Nota: el mismo diagrama utilizado en el primer proyecto sirve para la simulación****** Archivos Adjuntos
Respuesta: Curso programacion de pic en bsic pro Mira te anexo una guía esta en ingles pero te da ejemplos de como trabajar con el software Archivos Adjuntos
Proyectos con motores AMPLIFICADOR PARA MOTORES
Antes de empezar nuestra discusión sobre el control de motores, vamos a echar un vistazo a algunos pequeños amplificadores que podemos utilizar para controlar nuestros motores. Todos los amplificadores que he seleccionado son baratos y fáciles de usar. Sin embargo, no debería haber ningún problema con el uso de otros amplificadores. Si desea para http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
42/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
controlar un motor más grande, todo lo que necesita es un amplificador más grande. Los tres amplificadores se que utilizan en los proyectos son económicos y fácil de realizar para ejecutar el control de motores de 2 ejes o motores paso a paso. El amplificador L298 es más barato, pero también se ocupa de menos amperios. El amplificador que he usado para todos los experimentos es el amplificador LMD 18200T. Los tres amplificadores toman señales TTL directamente desde el microcontrolador y el control la alimentación del motor. Cada motor requiere una fuente de alimentación compatible con la alimentación que necesita el motor y la capacidad del amplificador. La fuente de alimentación del microcontrolador y la fuente de alimentación del motor debe mantenerse separada en todas las circunstancias con sólo una conexión a tierra común. Si no se hace esto, el ruido del motor contaminará el poder para el microprocesador y provocara problemas graves. Todos los motores son muy ruidosos por lo que se refiere a electrónica deL PIC y debe ser aislado. El ruido del motor proviene de los conmutadores de motor y de la rápida desactivación de las bobinas del motor. A pesar de la adición de pequeños condensadores a tierra desde cada Terminal del motor y ayuda a través de las terminales, no funciona tan bien como un diseño bien aislado. Puesto que tenemos una opción, vamos a utilizar fuentes de alimentación independientes en todos nuestros experimentos. Cada uno de los amplificadores utiliza uno o dos circuitos integrados como componentes de su amplificador, y algunos auxiliares equipados con indicadores LED para anunciar las condiciones internas. Sin embargo, otros dispositivos permiten la interconexión a las señales que el microcontrolador proporciona sin la necesidad de dispositivos intermedios.
Notas sobre el hecho en casa Amplificador de construcción Aunque usted puede hacer su propio amplificador, no recomiendo que haga otro. Los amplificadores que es probable que hayan (una serie de los diseños están disponibles en Internet) es probable que sean puentes H bastante sencillo. A menos que un circuito mucho más sofisticados, se añade al circuito amplificador básico, es muy fácil de volar un puente H mediante la activación de ambos transistores en cualquier lado del puente, al mismo tiempo. Por otra parte, si utilizamos circuitos integrados para construir nuestros amplificadores, estos circuitos es casi seguro que tienen circuitos dentro de ellos para evitar daños en cortocircuito, cierre de sesión en el sobrecalentamiento, y otras características útiles. Cuanto más sofisticado sea el circuito también proporciona la capacidad de detectar el apagado térmico y para mirar el flujo de corriente a través de http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
43/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
cada amplificador. Puesto que hay una serie de proveedores que venden barato, los componentes a utilizar para el desarrollo de los amplificadores, no hay ninguna buena razón en esta etapa de nuestro proceso de aprendizaje de no utilizar estos recursos para realizar estos amplificadores y controlar nuestros motores.
El amplificador LMD 18200T. El amplificador que he usado para todos los experimentos .Las conexiones que utiliza este amplificador se identifican en Figura 1. Cada uno de los dos amplificadores puede manejar hasta 3 amperios a 55 VDC. Pulsos cortos de 6 amperios son tolerados. La polaridad de la alimentación del amplificador es crítica auque se puede colocar una protección a través de diodo 4148. Para nuestros propósitos los pines 1, 2 y 3 se puede utilizar para controlar la bobina / del motor 1, y los pines 6, 7, y 8 control de la bobina / el motor 2.
El Amplificador 33886 Si usted necesita un amplificador de un solo eje, el amplificador 33866 de eje único que se muestra en la figura 2 es adecuado para motores pequeños que necesitan menos de 5 amperios a 40 V. He utilizado este amplificador para los pequeños experimentos con el motor de CC. Las conexiones de cableado de este amplificador son sencillas. Una característica de seguridad de este amplificador proporciona un diodo de protección contra la conexión accidental de polaridad inversa al conector de alimentación.
CARACTERÍSTICAS: - poder en la potencia del motor se conecta a estos dos terminales. Aunque un diodo de protección se incluye, la polaridad de la conexión debe ser observada. - motor de corriente continua Aquí es donde el motor está conectado. La polaridad de esta conexión no es importante. Las operaciones de motor se pueden invertir en software. http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
44/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
- LEDs Los tres LED en la tarjeta de indicar la operación de la tarjeta como el poder y señales de control se aplican a la tarjeta.
El Amplificador L298 2-Ejes El amplificador L298 de control de doble eje se muestra en la Figura 3 con sus conexiones de cableado identificadas. Este circuito permitirá el control de dos motores. El amplificador L298 tiene un problema con las señales PWM en determinadas condiciones y no deben ser utilizados en los experimentos sofisticados con muchos cambios de PWM ambos ejes simultáneamente. Hay algunas interferencias y problemas de incumplimiento. La condición no inhibe el uso de este amplificador de bajo costo para el funcionamiento de pequeños motores. Se trata del más barato amplificador integrado de 2 ejes que usted puede considerar para armar. Archivos Adjuntos
figura 1.rar (20,4 KB (Kilobytes), 288 visitas)
figura 3.rar (160,9 KB (Kilobytes), 251 visitas) Temas similares
Respuesta: Curso programacion de pic en bsic pro jeje disculpa por las multiples dudas!!! pero aun tengo demasiadas... Estoy equivocado en cuanto a el control del motor pap quiza no soy muy bueno explicandome jejej lo que quiero hacer es que con pulsos varie la velocidad del motor o el numero de pasos dados. Tengo una idea de como, corrigeme si estoy mal de favor El motor pap que utilizo tiene 6 hilos, 2 son comunes y los otros 4 pertencen a las bobinas, si mando voltaje a una bobina da ciertos pasos, si le mando voltaje a otra bobina camina otros ciertos pasos. Lo que tengo que controlar es eso. jejeje no soy muy bueno en esto apenas empiezo. se que se hace con if..then ( lo de antirrebote afecta esto?) espero ahora si haberme eplicado bien Por cierto aqui un video de lo que quiero hacer
Motor paso a paso (PAP) con PIC (2) http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
45/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
salu2 Temas similares
Respuesta: Curso programacion de pic en bsic pro hola, buenas quisiera dar un pequeño aporte y ver si me pueden dar sus criticas constructivas al respecto y por supuesto si hay alguna mejora. se trata de un minutero programable muy parecido al de un microhondas, me lo mandaron como un proyecto de la univ. con compuertas y demas pero quise no enrollarme y hable con el profe y me permitio utilizar un pic siempre y cuando cumpliera el cometido osea programar un tiempo en minutos y que al culminar osea llegar a cero este envie una alarma pues como ven es bien sencillo mas el programita me salio algo largo y me costo ya que a pesar de tener conosiendo al pic mas de un año a penas he logrado utilizar unos 30 comandos del pbp de los mas de 50 que se pueden usar. mas que todo debido a que no he tenido tiempo para ponerme mas de lleno con el pbp. en fin el programa, me gustaria saber si esta bien o se puede mejorar utilizando otras instrucciones...de atemano muchas gracias... Archivos Adjuntos
Temas similares
Respuesta: Curso programacion de pic en bsic pro Buenas del minutero gracias por verlo aui les traigo una pequeña modificacion con un efecto animado y el logo del instituto a ver que les parece me avisan cualquier cosa. Archivos Adjuntos
http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
46/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
Respuesta: Curso programacion de pic en bsic pro Este me marca un error que nunca habia visto.... que sera??? Imágenes Adjuntas
lubeck dijo: Este me marca un error que nunca habia visto.... que sera??? Es el Proteus. Tenés declarados los fuentes (ver imagen) y antes de ejecutar los quiere compilar. Salta el error porque no encuentra al PBP. Eliminás esas dos líneas desde Source->Add/Remove Source files y desaparece el problema. (la otra es configurar el camino y los argumentos para compilar desde el Proteus) Bueno... desaparece ese y aparece otro
. Después que terminan los mensajes iniciales empieza a dar "Stack Overflow" Imágenes Adjuntas
Respuesta: Curso programacion de pic en bsic pro por cierto este programita me ayudo bastante con los caracteres y figuras de la lcd Archivos Adjuntos
Respuesta: Curso programacion de pic en bsic pro hola gente
les cuento que estoy intentando hacer un variador brushless con pic, ya hice uno con componentes dicretos que funciona aqui pueden verlo andando. es un poco voluminoso y complicado asi que, ahora quiero hacerlo con un pic utilizando pbasic para programar el micro pero, tengo un problema, basandome en el funcionamiento del bldc discreto, he creado una rutina en pbasic que a segun mis calculos, deberia funcionar igual pero no funciona. aca subo el rar con el diseño completo y su codigo fuente en basic para ver si me pueden dar una mano y asi saber que estoy haciendo mal para corregirlo. lo que hace el circuito, es detectar una secuencia de numeros binarios del 1 al 6 y a segun el numero que entre, sera el estado en sus salidas. http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
47/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
saludosss a todos... Archivos Adjuntos
Respuesta: Curso programacion de pic en bsic pro hola lubek. aca te dejo los archivos livewire del bldc discreto. no se si habras simulado el circuito en proteus, si asi fue, debes haber notado que al potenciometro lo lee bien y que la variacion del pwm es correcta. el problema que tiene mi circuito, es que los puertos RB0 a RB2 no funcionan como el programa lo indica. cuando en el programa dice: paso4: pwm 2,b0,5 high 4 goto loop empieza el problema de que el puerto B no responde como debiera. veras, el circuito que estoy intentando hacer, es una especie de decodificador binario que en funcion del numero binario que detecta conmuta dos salidas del pic enviando por una, un pulso pwm y pr la otra, un uno logico simultaneamente. con esto, consigo conmutar los mosfets del inversor trifacico segun la señal de zerocrossing que obtengo del circuito con lm324. tengo la impresion de que se puede detectar numeros binarios de otra manera con picbasic pero no se me ocurre mas que lo anterior... aca dejo el codigo pbp. ah lubeck, el cmcon=7, es para desactivar los comparadores del puerto A y convertirlos en en E/S digitales y esto me sirve porque lo que estoy intentando detectar, son 1 y 0´s saludosss Código:
CMCON=7 TRISA=%00000000 porta=%00000000 trisb=%01110000 portb=%01110000 frec var byte loop: pot portb.3,137,frec if portb.4=1 then paso1 low porta.0 low portb.1 if portb.5=1 then paso2 http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
48/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
low porta.0 low portb.2 if portb.4 and portb.5=1 then paso3 low porta.1 low portb.2 if portb.6=1 then paso4 low porta.1 low portb.0 if portb.4 and portb.6=1 then paso5 low porta.2 low portb.0 if portb.5 and portb.6=1 then paso6 low porta.2 low portb.1 goto loop paso1: PWM porta.0,frec,5 high portb.1 goto loop paso2: PWM porta.0,frec,5 high portb.2 goto loop paso3: pwm porta.1,frec,5 high portb.2 goto loop paso4: pwm porta.1,frec,5 high portb.0 goto loop paso5: pwm porta.2,frec,5 high portb.0 goto loop paso6: pwm porta.2,frec,5 high portb.1 goto loop end
http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
49/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
Archivos Adjuntos
Temas similares
erick percy dijo: gracia reyvilla por responder ;pero trate de compilar lo que me pusiste en el foro y me salen estos errores Hola: Disculpa voy a dar mi opinión. El Microcode que supongo es que están usando tiene dos opciones para usar un determinado compilador que lo ven en "View" > "Compile and Program Options"; por lo que se, es cuando se usan Fuses y el compilador asociado es el MPASM te genera errores como los que te han salido. Para arreglar eso debes usar el compilador del PicBasic que está en "C:\PBP", entonces los asocias por medio del botón que está en la imagen; luego de eso te debe aparecer al costado la dirección del compilador "C:\PBP". Intenta eso. Saludos. Imágenes Adjuntas
Temas similares
mecatrodatos dijo: Bien amigo ByAxel por cierto, una vez preguntaste en este hilo sobre el compilador y editor para PIC de la serie 18F "Swordfish IDE", tengo varios ejemplos y una tutoría totalmente terminada como el caso del PROTON IDE que solamente me falta subir las partes restantes que será cuando termine de arreglar el computador y pasar algunos artículos a PDF. Por lo que en este foro quedara todo lo de PIC Basic para microcontroladores, en el hilo de PBP, PROTON y un nuevo HILO Swordfish IDE para aquellos que deseen escoger. Impresionante
, realmente quiero hacer cosas con el "Swordfish IDE"... muy bien recibida la info
http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
50/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
, en cuanto me libere de algunos trabajos le pongo pilas al Swordfish para colaborar con ejemplos en el respectivo hilo. ----------------------------------------------------------------------------------------Sobre los Fuses para los P18 en el PBP me he encontrado con varios detalles y los que pusiste no me funcionó, bueno investigue un poco más y lo aplique otra forma usando PBP 2.60L + Microcode 4 para aquellos que quieran modificar los Fuses para los P18: 1) En mi caso use el MPASM de la carpeta "C:\MCC18\mpasm" porque tengo el C18 instalado (el PBP no me vino con el MPASM integrado); abrir el archivo P18Fxxxx.INC, en la ultima parte del archivo están los Fuses. 2) Ubicar el archivo 18Fxxxx.INC, en la carpeta del PBP; en caso del PIC18F2550 es: Código:
NOLIST ifdef PM_USED LIST "Error: PM does not support this device.
Use MPASM."
NOLIST else LIST LIST p = 18F2550, r = dec, w = ‐311, w = ‐230, f = inhx32 INCLUDE "P18F2550.INC"
; MPASM
Header
__CONFIG
_CONFIG1L, _PLLDIV_5_1L & _CPUDIV_OSC1_PLL2_1L & _USBDIV_2_1L
__CONFIG
_CONFIG1H, _FOSC_HSPLL_HS_1H & _FCMEN_OFF_1H & _IESO_OFF_1H
__CONFIG
_CONFIG2L, _PWRT_OFF_2L & _BOR_ON_2L & _BORV_3_2L &
_VREGEN_ON_2L __CONFIG
_CONFIG2H, _WDT_ON_2H & _WDTPS_512_2H
;__CONFIG
_CONFIG3H, _CCP2MX_ON_3H & _PBADEN_OFF_3H & _LPT1OSC_OFF_3H &
_MCLRE_ON_3H ;__CONFIG
_CONFIG4L, _STVREN_ON_4L & _LVP_OFF_4L & _XINST_OFF_4L
NOLIST endif LIST EEPROM_START
EQU
0F00000h
BLOCK_SIZE
EQU
32
Donde se puede reemplazar directamente las líneas que empiezan con "__CONFIG" con la configuración que se quiera del archivo P18Fxxxx.INC del PIC respectivo (en este caso, PIC18F2550). 3) O comentar las líneas __CONFIG con ';' para evitar que salga errores al declarar los fuses en el http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
51/53
10/6/2017
Curso de programación de PIC en PICBasic Pro
mismo archivo del programa (.bas, .pbp) y de ese modo recién el compilador acepta la declaración como: Código:
@ __CONFIG
_CONFIG1L, _PLLDIV_5_1L & _CPUDIV_OSC1_PLL2_1L & _USBDIV_2_1L
@ __CONFIG
_CONFIG1H, _FOSC_HS_1H
@ __CONFIG
_CONFIG2H, _WDT_ON_2H & _WDTPS_128_2H
@ __CONFIG
_CONFIG3H, _PBADEN_OFF_3H
@ __CONFIG
_CONFIG4L, _LVP_OFF_4L & _ICPRT_OFF_4L & _XINST_OFF_4L
o como pongo en la prueba que realicé para PBP: Código:
'**************************************************************** ' PIC18F2550, prueba generador de media onda '**************************************************************** @ CONFIG PLLDIV = 5, CPUDIV = OSC1_PLL2, USBDIV = 2 @ CONFIG FOSC = HS @ CONFIG BOR = ON, BORV = 1 @ CONFIG WDT = OFF, WDTPS = 32768 @ CONFIG MCLRE = OFF @ CONFIG STVREN = ON, LVP = OFF, XINST = OFF, DEBUG = OFF define OSC 20 CNT var byte clear ADCON1 = 15 TRISB = 0 LATB = 0 Main: for cnt = 0 to 127 LATB = sin cnt pause 1 next cnt goto main end Me avisan si me equivoque en algo
http://www.for osdeelectr oni ca.com /f24/cur so- pr ogr am aci on- pi c- pi cbasic- pr o- 20658/i ndex2.htm l
52/53