Curso de programación de PIC en PICBasic Pro

De nuevo yo, con un problema! solucionado lo del adc, ya lo puedo usar en pic simulator ide y con eso por ahora me alcanza, mas adelante me voy a meter con el assembler :)
Ahora lo que quiero hacer es recibir 2 bytes y almacenarlos en 2 variables diferentes, mi idea es usar el puerto serie para manejar la intensidad de 6 lamparas. Cada par de variables serian canal-intensidad... si alguien se prende en el proyecto mande un privado, despues lo publicamos por ahi.
Lo que me tiene mal es el comando serin :(
 
Gente el mundo no gira alrededor de los drivers integrados como el L297! conocen los transistores? bueno, esa es la solucion cuando necesitan amperios ;)

Solo una pequena aclaracion fernandoe solo para que no se confundan

L297 Integrado encargado de Generar codigos de bits para control de Mot. PaP.

L298 Integrado encargado de la etapa de Potencia(Puente en H Integrado)

salu2!!
 
hola, hblando del l297 que lo he reutilizado bastantte con motores paso a paso,. me di cuenta que es mucho mas costoso ese par "l297 y L298" que un pic y nos transistores por lo menos aqui en mi pais saldria mas factible un pic que el driver, me gustaria hacer un L297 con un Pic. No creo que la programacion sea gran cosa, bueno quien quiera intentarlo me avisa y nos ponemos con eso saludos...

http://pdf1.alldatasheet.com/datasheet-pdf/view/22436/STMICROELECTRONICS/L297.html
 
lanpu: 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!!

Que tal no te va ha funcionar porque el programa que posteaste es para los pics de la serie 16f87X por lo registros ADCON aqui te dejo un progrma con la utilizacion de los registros del pic 16f88
'****************************************************************
'* Name : utilizacion A/D del pic 16f88 *
'* Author : MECATRODATOS *
'****************************************************************
'------ DESCRIPCION DEL PROGRAMA--------
'Este programa muestra los números con signo en
'PicBasic Pro en un rango de salida de los valores -50,0 a 50,0.
'La entrada es una gama digital de 10-bit de 0 a 1023.
'------------Conexiones-----------
' 16F88 Pin Wiring
' --------- ----------
' RA0 LCD pin 11(DB4)
' RA1 LCD pin 12(DB5)
' RA2 LCD pin 13(DB6)
' RA3 LCD pin 14(DB7)
' RA4 Resistive Input
' RB3 LCD Enable(E)
' RB4 LCD Register Select(RS)
' See schematic for the usual connections
'---------LCD Connexiones---------
' LCD Pin Wiring
' --------- ----------
' 1 Ground(Vss)
' 2 + 5v(Vdd)
' 3 Center of 20K Pot(Contrast)
' 4 RB4(Register Select,RS)
' 5 Ground(Read/Write,R/W)
' 6 RB3(Enable)
' 7 No Connection(DB0)
' 8 No Connection(DB1)
' 9 No Connection(DB2)
' 10 No Connection(DB3)
' 11 RA0(DB4)
' 12 RA1(DB5)
' 13 RA2(DB6)
' 14 RA3(DB7)
'---------Constantes / Definicion --------------------------------
'Para liberar AN4 (Pin RA4) como una entrada analógica, el Registro Default
'LCD de Seleccion (RS) debe ser Eliminado de RA4. Este se traslada a PORTB.4
'Usando las declaraciones LCD DEFINE a continuación. Todos los demás pines
'del LCD por Default y funciones no se cambian.
define LCD_RSREG PORTB ' PORTB - RS port
define LCD_RSBIT 4 ' Bit 4 - RS bit

DEFine ADC_BITS 10 ' Establece el número de bits en
' El resultado que 10
'---------Variables---------
x var word ' BYTE de entrada del potenciómetro
temp_int var word ' Variable para porcion entera
temp_fract var word ' Variable para porcion en fraccion decimal

'---------Initialization--------
ANSEL = %00010000 ' El pin AN4 en modo analógico, pero los otros
' pines en modo digital.
' Vea la tabla siguiente.

' Analog Bit Analog or Digital PIC16F88 Pin
' ------------ ------------------ --------------
' AN0 Digital RA0
' AN1 Digital RA1
' AN2 Digital RA2
' AN3 Digital RA3
' AN4 Analog RA4
' AN5 Digital RB6
' AN6 Digital RB7
ADCON1 = %10000000 ' Justifica valor de 10-bit a la variable x
' hacia la derecha
' En 16-bit WORD. Agrega "0" en La mayoría de
' 6 bits significativos de la Palabra,
' Desplazando el valor de 10-bits de x para
' la derecha.

OSCCON = $60 ' Establece el oscilador interno en el
' 16F88 a 4 MHz
'--------Codigo rincipal--------
loop:
pause 1000 ' Pausas de 1 segundo para permitir la
' configuracion del LCD

adcin 4, x ' Leer el voltaje analógico y AN4
' Convertir a valor digital de 10-bit
' Y guarda en variable x.

lcdout $FE,1,dec x ' En primera línea, pantalla de 10-bit
' Valor de x

x = x * 44/45 ' Comenzar la conversión de 10-bit rango de
' entrada,(0 - 1023), la gama de salida de LCD
' -50.0 A 50.0).
' Rango de salida / entrada Rango = 100/1023
' = 0,09775. Se debe utilizar un número entero
' Numerador para el cálculo. Numerador
' Debe ser inferior a 65, puesto que
' 65 * 1023> 65535, el límite para la Variable
' WORD. se encontró que 44/45 = 0,9777
' Se aproxima a la razon de 0,09775.
' El cambio en el punto decimal se hace
' En la fórmula siguiente.

temp_int = x/10 - 50 ' Obtener parte entera. Dividido por 10 a
' Cambio de punto decimal de 0,9777 a
' 0,09777. Resta 50 a cambio de 0 a 100
' Rango de salida de -50,0 a 50,0.

temp_fract = x//10 'Obtener el resto porción

lcdout $FE,$c0,sDEC temp_int, ".", DEC1 temp_fract
' En la segunda línea de LCD, pantalla del entero
' Parte de x, temp_int, como un decimal firmado
'(SDEC) y la porción restante de x,
' Temp_fract, como un decimal.

pause 250 ' Pausa de 250 ms

goto loop ' Saltar a la etiqueta de bucle

end
 
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
'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
'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
' 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
 

Adjuntos

  • servo1.rar
    9.1 KB · Visitas: 405
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
	   		 
'----------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 

'*******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******
 

Adjuntos

  • servo2.rar
    3.1 KB · Visitas: 302
Hola....

Estoy aprendiendo a usar el adc del pic16f877

pero tengo una duda en las lineas que pongo---

que estoy haciendo mal????
Código:
@ device xt_osc 
define adc_bits 8
define osc 4 
DEFINE LCD_DREG PORTC 
DEFINE LCD_DBIT 4     
DEFINE LCD_RSREG PORTC
DEFINE LCD_RSBIT 1    
DEFINE LCD_EREG PORTC 
DEFINE LCD_EBIT 2     

TRISC=1  ;--------------->>>> solo portc.0 es de entrada
adcon0=  ;----------------->>>>  ?????? 

led1 var portb.2              
led2 var portb.3             
led3 var portb.4             
p1 var portb.0               
p2 var portb.1               
x var byte                   

LCDOUT $FE, 1
LCDOUT $FE, 1, "Lubeck: Boton " 
LCDOUT $FE, $C0, "Ninguno" 

inicio
 adcin 0, x   ;--------------->>>>> es correcto??????
 LCDOUT  $FE,$c0,"TEMPERATURA:", DEC x  ;--------------?????
 if (p1=1) AND (p2=1) then 
  LCDOUT $FE, $C0, "Ninguno    " 
  goto apagar
 endif 
 if (p1=0) AND (p2=0) then 
  LCDOUT $FE, $C0, "Emergencia    " 
  goto encender2             
 endif  
 if p1=0 then 
  LCDOUT $FE, $C0, "Primero    " 
  goto encender  
 endif  
 if p2=0 then
  LCDOUT $FE, $C0, "Segundo    "  
  goto encender1  
 endif 
goto inicio       

Apagar:
 Low led1
 low led2
 goto inicio
 
encender:         
 HIGH led1
 goto inicio      

encender1:
 HIGH LED2
 goto inicio 

encender2:
 Low led1
 low led2 
  high led3       
  pause 300       
  low led3        
  pause 300
 goto inicio 
end

saludos y gracias de antemano

Ya lo solucione....

las entradas analogas solo son permitidas en el puerto A....mmm .... perdon .....
 
Última edición:
HERRAMIENTAS DE PROGRAMACIÓN

En la elaboración de proyectos electrónicos con microcontroladores PIC, resulta muy importante considerar una serie de herramientas, las cuales vamos a describir a continuación:

PICBASIC PRO Compiler 2.60

El compilador PICBASIC PRO es la manera más fácil para programar los microcontroladores PIC de Microchip. PICBASIC PRO convierte sus programas de lenguaje BASIC en archivos que pueden ser programados directamente en un microcontrolador PIC.

PBP es compatible con Windows 98/Me/NT/2000/XP/Vista/7. Soporta más de 300 de los microcontroladores PIC de Microchip, incluyendo los lanzamientos más recientes. PBP le permite elegir el microcontrolador que mejor se adapte a su aplicación.

Utilizado por miles de ingenieros, estudiantes y aficionados de más de una década, el PICBASIC PRO Compiler es una de las herramientas de desarrollo más populares jamás creadas para el microcontrolador PIC.

Ahora con 32-bits

Una nueva versión de 32-BIT de PBP (PBPL) ofrece BIT, BYTE, WORD, y LONG (32-BIT,) tipos variables. Esta versión está diseñada para trabajar con los dispositivos PIC18. Cuando se trabaja con Long, los operadores matemáticos confirman resultados en 32-bits, en complemento de dos formatos. Esto permite el cálculo de almacenamiento, y la pantalla de los valores entre -2.147.483.648 y 2.147.483.647.

La versión Word de 16-BIT se ha mantenido como una aplicación independiente que apoya los microchip: PIC10, Pic12, PIC14, PIC16, PIC17, y microcontroladores PIC18. Esto asegura que PBP seguirá siendo completamente compatible con los programas existentes. También le permite producir código que es mejor optimizado para los dispositivos más pequeños con menos recursos.

El software PICBASIC PRO cuenta con el editor estándar Microcóde Studio de interfaz para Windows. Este entorno de desarrollo contiene potentes funciones de sintaxis con código de colores.

Una versión de línea de comandos de PBP se incluye para la integración en su elección de software de edición (incluyendo MPLAB) o para su utilización en una ventana del símbolo del sistema.

PICBASIC PRO le da acceso directo a todos los registros de MCU PIC - puertos I / O, convertidores A / D, puertos de hardware de serie, etc. de forma sencilla ya en BASIC. Automáticamente se encarga de los límites de página y los bancos de memoria RAM. Incluso incluye comandos integrados para el control inteligente de los módulos LCD. Cálculos de punto flotante son posibles con las rutinas de descarga.

El conjunto de instrucciones del compilador es compatible con el BASIC Stamp II y utiliza sintaxis Pro BS2. Los programas pueden ser compilados y programados directamente en un microcontrolador PIC, eliminando la necesidad de un módulo BASIC Stamp. Estos programas se ejecutan mucho más rápido. También pueden ser protegidas para que nadie pueda copiar su código.

El compilador PICBASIC PRO puede crear programas para la mayoría de los microcontroladores PIC de Microchip y trabaja con la mayoría de los programadores PIC MCU.

El compilador PICBASIC PRO también se puede utilizar dentro de MPLAB IDE de Microchip .Esto le permite utilizar las herramientas de Microchip para la depuración a nivel fuente.

VENTAJAS:

1. Compatible con Windows 98/Me/NT/2000/XP/Vista/7
2. Soporta microchip: PIC10, Pic12, PIC14, PIC16, PIC17 y microcontroladores PIC18.
3. Proporciona una ejecución más rápida de programas más largos que los intérpretes de BASIC.
4. Acceso directo a cualquier pin o registro interno en un MCU PIC y gestión de banco RAM- BIT, BYTE, WORD, LONG * y variables individuales o conjuntos de 32-BIT para PIC18 *, 16-bits sin signo para otras familias de microcontroladores PIC.
5. Integra funciones condicionales: If...Then...Else...Endif, Select Case.
6. Manejo de la expresión jerárquica con la agrupación de paréntesis
7. Las interrupciones en BASIC y el lenguaje ensamblador
8. Bibliotecas de BASIC Stamp I y II
9. Sistema de apoyo oscilador de reloj de 3.58MHz a 64MHz
10. Inserción de lenguaje Asembler y llamadas de apoyo.
11. Compatible con la depuración a nivel fuente de MPLAB / MPASM / ICD2 / ICD3 /ICE

Microcóde Studio

Microcóde Studio es un poderoso entorno de desarrollo integrado Visual (IDE) con la depuración en el Circuito (ICD) diseñado específicamente para la capacidad de PICBASIC PRO compiler.

El editor principal proporciona sintaxis completa resaltada de código con la palabra clave de contexto de ayuda sensible y sugerencias de sintaxis. El explorador de código le permite saltar automáticamente para incluir los archivos, define, constantes, variables, alias y modificadores, los símbolos y etiquetas, que están contenidos dentro de su código fuente. Formatos de cortar, copiar, pegar y deshacer se proporcionan, junto con características de búsqueda y reemplazo.

VENTAJAS:

1. Contiene resaltado de sintaxis del código fuente.
2. Proporciona e incluye rápidamente archivos, símbolos, define, variables y etiquetas usando la ventana del explorador de código.
3. Identifica y corrige la compilación y el ensamblador errores.
4. Contiene editor serie de salida a su microcontrolador.
5. Palabra clave basada en ayuda sensible al contexto.
6. Soporte para MPASM

Es fácil de configurar su compilador, ensamblador y las opciones de programador o puede dejar que Microcóde Studio lo haga por usted con su función incorporada de búsqueda automática.
Compilación y errores cuando se ensambla pueden ser fácilmente identificados y corregidos mediante la ventana de error. Simplemente haga clic en un error de compilación y Microcóde Studio automáticamente le llevará a la línea de error. Microcóde Studio viene con una ventana de comunicaciones serie, lo que le permite ver la salida de depuración y de serie de su microcontrolador.
 
Buena info PBP2.6 soporta para Win7 y junto al MicroCode Studio 4 hacen una buen pareja.

Por cierto, perdón por salir del tema pero alguien en el foro conoce al "Swordfish IDE" para programar PIC18, ya que en el foro no hablan nada de el, aunque sea primo del PicBasicPro y Proton IDE, no le dan mucha importancia.

Saludos.
 
Que tal es de la misma casa de pbp

he trabajado con el y he realizado varias proyectos muy interesantes

"Swordfish IDE"(también conocido como SF) ofrece una verdadera estructura y el enfoque hacia el desarrollo modular del programa - muy similar en algunos aspectos de la programación con Visual Basic.

"Swordfish IDE" produce extremadamente eficiente y estable código. Limitaciones de la versión libre, 200 variables de compilación, no hay restricciones para la duración del programa.
 
Última edición:
Si lo conocía pero el lenguaje es algo confuso al principio ya que parece una mezcla del C y el Basic, pero
dime si es potente ya que solo es para los PIC18, que de bueno y deferencia trae el Swordfish IDE.

Un saludo.
 
Saludo a todos,

Empecè a utilizar unos modulos rf bien baratos que comprè pero no he podido realizar una buena transmisiòn de datos, sè que funcionan pues veo parpadear los leds tanto en transmisor como en receptor, sinembargo, basàndome en un ejemplo que utiliza serin-serout con un lcd en el receptor, no logra pasar del primer mensaje y me gustarìa probar eficientemente la transmisiòn, el programa aparentemente està bien aunque me gustarìa saber si alguien tiene un ejemplo en pic basic pro para el control de un motor que ya halla probado.

De nuevo mil gracias, especialmente a Mecatrodatos por sus aportes.
 
Sube las referencias de los módulos rf , el código , el esquemático y si tenes algo en proteus mejor aunque se que proteus no contiene elementos de simulación de rf que yo conozca.

Tengo ejemplos funcionales pero no corren en Proteus ya que no he encontrado el componente emisor y receptor en sus librerias.
 
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 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 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.

- 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.
 

Adjuntos

  • figura 1.rar
    20.4 KB · Visitas: 306
  • figura 3.rar
    160.9 KB · Visitas: 268
que tal vamos con el primer proyecto de manejo de teclado matrixal utilizando operandos matematico de pic basic pro:

Código:
    ; lectura de un teclado de 16 posiciones  con pic 16f84A
 
 ; CONFIGURACION PARA LA PROGRAMACION DEL PIC   
@ device xt_osc ; oscilador externo XT 
define osc 4 ; especifica que se va a utilizar uno de 4 Mhz 

;  DETERMINACION DE VARIABLES
fila VAR BYTE
columna  VAR BYTE
tecla VAR BYTE
TRISA=0

LOOP1:

PORTB=0
TRISB=%11110000
IF ((PORTB>>4)!=%1111) THEN LOOP1

LOOP2:
FOR FILA=0 TO 3
PORTB=0
TRISB=(DCD FILA)^%11111111
COLUMNA=PORTB>>4
IF COLUMNA!=%1111 then numtecla
NEXT FILA
GOTO LOOP2

NUMTECLA:
TECLA=(FILA*4)+(NCD(COLUMNA^%1111))
PORTA=TECLA
GOTO LOOP1
END

amigo por que es que no puedo abrir el proteus en mi pc yo tengo el proteus 6.9 que version necesito para abrir estos circuitos
 
la versión 7.7 de proteus para los proyectos con motores y anteriores temas con el 7.6

MUCHAS GRACIAS AMIGO POR TU PRONTA RESPUESTA SABES QUISIERA CONTAR CON TU AYUDA A MI PROGRAM
lo que pasa es que tengo una duda con respecto a mi programa echo en pic basicpro utilizo el pic628 mira cuando presiono p1 enciende led 1
por 1 seg, si presiono p2 me enciende led 2 por 1 seg y si presiono los dos pulsadors ala vez enciende led 3 parpadee 5 veces pero quiero agregarle un led4 que se inicie desde que se activa el circuito osea que encienda despues de cada 10 min por 20 min prendido en realidad echo una prueba con un tiempo mas corto pero no me funciona y quisera saber si tu me podrias ayudar con respecto ami dudas no se mucho de interrupciones solo aprendo por los temas que tocan ustedes y un libro que me comprado pero la lucho por favor espero tu ayuda amigo
led1 var portb.2
led2 var portb.3
led3 var portb.4
led4 var portb.5
p1 var portb.0
p2 var portb.1
x var byte
i var word

option_reg = $05
on interrupt goto isr
intcon = $A0

inicio
if (p1=0) AND (p2=0) then encender2
PAUSE 200
if p1=0 then encender
PAUSE 200
if p2=0 then encender1
PAUSE 200
goto inicio

encender:
high led1
pause 1000
toggle led1
pause 1000
goto inicio

encender1:
high led2
pause 1000
toggle led2
pause 1000
goto inicio

encender2:
for x=0 TO 4
high led3
pause 300
low led3
pause 300
NEXT
goto inicio

DISABLE
ISR:
HIGH LED4
PAUSE 300
LOW LED4
PAUSE 300

end
 
Saludos a los foreros,
Posteo este código que he tratado de probar con modulos rf (fsi000a-cdr03a) para transmitir datos y no me ha funcionado, agradeceré la colaboración que puedan darme pues lo que quiero es usarlo para controlar un par de servos que tengo y construirme un carro a control, lastimosamente la transmisión presenta problemas, sé que los módulos funcionan pues le coloco un led a pin del receptor y este parpadea a la par del código enviado pero en cuanto a la prueba con un código más amplio... se queda.
Código:
'CODIGO PARA EL TRANSMISOR BASICO CON PIC16F628A
 
' @ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT ' Opción del Osc Interno
 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
 
 CMCON=7  


   R VAR BYTE
   Y VAR BYTE
   TRISB=%0
   
   INICIO:
   
     FOR R=1 TO 10 
     PORTB=1
     GOSUB TIMER
     PORTB=0
     GOSUB TIMER
     NEXT
     PAUSE 5000
     
     FOR Y=1 TO 10
      FOR R=1 TO 100
      PORTB=1
      GOSUB TIMER
      PORTB=0
      GOSUB TIMER
      NEXT
      PAUSE 2000
      NEXT
      GOTO INICIO
      
     TIMER:
       PAUSE 10
     RETURN
    END 

'CODIGO PARA EL RECEPTOR BASICO CON PIC16F628A
 
 '@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT ' Opción del Osc Interno
 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
 
CMCON=7  
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'UTILIZAR EL REGISTRO  DE CONTROL/DATOS EN EL PUERTO B
DEFINE LCD_RSBIT 1    'EN EL BIT B.1
DEFINE LCD_EREG PORTB 'UTILIZAR EL ENABLE EN EL PUERTO B
DEFINE LCD_EBIT 3     'EN EL BIT B.3

 DATOS VAR BYTE
 
 INICIO:
   LCDOUT $FE,1,"ESPERA..."
   LCDOUT $FE,$C0,"TOMA DE DATOS"
   COUNT PORTB.0,200,DATOS
   IF DATOS=10 THEN PAUSE 500:GOTO INGRESO
   GOTO INICIO
   
 INGRESO:
 
   COUNT PORTB.0,2000,DATOS
   IF DATOS=100 THEN GOTO VISUALIZAR
   GOTO INGRESO
   
 VISUALIZAR:
  LCDOUT $FE,1,"DATOS INGRESADOS:" 
  LCDOUT $FE,$C0,DEC DATOS
  PAUSE 5000
  GOTO INICIO
  END

Hola nuevamente,

Respecto al código expuesto anteriormente por nuestro amigo Mecatrodatos para el control de servos, me gustaría decirles que tuve que modificarlo pues el recorrido era parcial, me gustaría saber por qué, tengo un futaba s3003 y lo hice funcionar con el 16f628, el funcionamiento es casi perfecto, el recorrido del servo hacia izquierda y derecha llega al tope en uno y hacia el lado contrario, le queda faltando un pequeño tramo, publico el código para cualquier comentario que puedan hacer.
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT ' Opción del Osc Interno
'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

CMCON=7

p0 VAR BYTE ' Byte para almacenar la posición del servo
SALIDA VAR PORTB.0
B_IZQUIERDA VAR PORTA.1
B_DERECHA VAR PORTA.2
INICIO2:

PORTB.0=%0



INICIO:
IF B_IZQUIERDA=0 THEN IZQUIERDA
IF B_DERECHA =0 THEN DERECHA
GOTO INICIO2


IZQUIERDA:
For p0 = 3000 TO 1 STEP -1 ' Modificar el valor del pulso de 2 ms y
' 1 ms en pasos de 10.
' Ver siguiente Comando

PulsOut SALIDA,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 = 2 ms

Pause 20 - p0/1500 ' 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
GOTO INICIO2



DERECHA:
For p0 = 1 TO 3000 ' Modificar el valor del pulso de 1 ms y
' 2 ms en pasos de 10.

PulsOut SALIDA,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/1500 ' Una pausa de 20 ms menos ancho de pulso (p0/100)

Next p0 ' Volver a la declaración del
' Siguiente valor de p0

GOTO INICIO2

end
 
Última edición:
viggiani1975:

Respecto al código expuesto anteriormente por nuestro amigo Mecatrodatos para el control de servos, me gustaría decirles que tuve que modificarlo pues el recorrido era parcial, me gustaría saber por qué, tengo un futaba s3003 y lo hice funcionar con el 16f628, el funcionamiento es casi perfecto, el recorrido del servo hacia izquierda y derecha llega al tope en uno y hacia el lado contrario, le queda faltando un pequeño tramo, publico el código para cualquier comentario que puedan hacer.

Amigo la razón es que utilizo un servo Multiplex , para despegarte las dudas te anexo documento de servos con sus características técnicas y un tutorial Servomotor.pdf:
http://www.servomotor.cc/wp-content/uploads/2010/03/Tutorial-Servomotor.pdf
 

Adjuntos

  • servos.pdf
    363 KB · Visitas: 268
Atrás
Arriba