COMUNICACIÓN SERIAL PC – PIC USANDO MATLAB Y PIC BASIC PRO

mayo 14, 2009 en 9:39 pm | Publicado en Electrónica, Matlab, Microcontroladores | Deja un comentario

RESUMEN: La comunicación serial entre un dispositivo 16F628A de Microchip con Matlab es sencilla. En este artículo se ensayará el código necesario para la tx de datos desde Matlab para encender un led con el microcontrolador 16F628A. Para esta simulación, se configuran dos puertos virtuales usando el demo del programa Virtual Serial Port Driver v.6.

MATLAB

El código necesario para la inicializar el puerto serial es:

SerPIC = serial(‘COM2’);

set(SerPIC,‘BaudRate’,2400);

set(SerPIC,‘DataBits’,8);

set(SerPIC,‘Parity’,‘none’);

set(SerPIC,‘StopBits’,1);

set(SerPIC,‘FlowControl’,‘none’);

La función serial crea un objeto que contiene todos los parámetros correspondientes al puerto serial como baudios, bits de datos, bit de parada, etc. Estos parámetros se los modifica con la función set.

Una vez establecidos los parámetros de la comunicación, se procede a abrir el puerto con la función fopen:

fopen(SerPIC);

La función para escribir el puerto serial es fprintf:

fprintf(SerPIC,‘%s’,‘A’)

En la línea precedente se escribe en el puerto la letra A en formato string. (También es posible escribir caracteres, reemplazando %s por %c y enviando los datos con la función char.)

Una vez terminada la comunicación, se procede a cerrar el puerto con el siguiente código:

fclose(SerPIC);

delete(SerPIC)

clear SerPIC

MICROCONTROLADOR

En el microcontrolador tenemos el siguiente programa:

include “modedefs.bas”

valor var byte

trisb =000001

portb =000000

inicio:

serin portb.0,T2400,valor

if valor == “E” then high portb.1 ‘E->Encendido

if valor == “A” then low portb.1 ‘A->Apagado

goto inicio

Como se trata de una transmisión serial, siempre va la librería modedefs.bas. No olvidar que la velocidad de envío debe ser la misma que la velocidad de recepción (2400 en este caso).

En este programa si el dato recibido es “E”, enciende el pin 1 del puerto B. Si recibe “A” pone a 0 ese mismo pin.

SIMULACIÓN

Para efectos de simplificar, se usó el demo del programa Virtual Serial Port Driver 6 que crea pares de puertos seriales virtuales en un mismo PC.

virtual serial port

El esquema en Proteus se muestra en la siguiente figura:

proteus comunicacion serial

La configuración del componente COMPIM es como muestra la siguiente figura:

puerto serial

La configuración del VIRTUAL TERMINAL se muestra en la siguiente figura:

virtual terminal

http://www.4shared.com/file/67418588/f1be36e4/TX_DATOS_ENTRE_PC_PIC.html

CONTROL DE LA POSICIÓN DE UN MOTOR SERVO HS-311

mayo 14, 2009 en 9:24 pm | Publicado en Electrónica, Matlab, Microcontroladores | Deja un comentario

Como se conoce, la posición de un servo motor está determinada por el ancho del pulso que se aplica a su pin de control (para el caso de los motores HS-311 el cable amarillo). En el caso del motor HS-311, la posición de 0º se consigue con un pulso de 0.5 ms, la posición central de 90º con un pulso de 1.5 ms y el extremo de 180º con un pulso de 2.5 ms.

Para controlar la posición del motor usaré la función pulsout, cuya sintaxis es:

Pulsout pin, ancho_pulso

La cual genera un ancho de pulso determinado por su segundo parámetro de entrada en el pin determinado. Por ejemplo:

Pulsout portb.0, 150

Generará un pulso de ancho 1.5 ms en el pin 0 de puerto B.

Ahora bien, la frecuencia de envío de este pulso será generada por un ciclo for-next y la función pause.

El ejemplo siguiente posicionará el motor en 90º:

n var byte
trisb=0
portb=0
for n=1 to 25 step 1
pulsout portb.0,150
pause 10
next

Es importante inicializar a 0 el pin por el cual se sacará el pulso, debido a que la función pulsout invierte el estado del pin.

Vamos a ver este programa de inicio en Proteus:

servo1

Para el caso del motor HS-311 es necesario cambiar la configuración del motor para la simulación como muestra la siguiente figura:

limites

Vamos a programar una secuencia que mantenga al motor en continuo movimiento de un extremo al otro. Aquí entra el ciclo for-next.

m var byte
n var byte
trisb=0
portb=0
for m=50 to 250 step 1
pulsout portb.0,m
pause 10
next
for m=250 to 50 step -1
pulsout portb.0,m
pause 10
next

Vamos a ir un poco más adelante, y controlaremos la posición del motor con dos pulsadores: uno para girar el motor a una posición y el otro para llevarlo a la posición contraria.

;Only Hardware
cmcon=7
control var portb.1
incrementar var porta.0 ‘Pin de pulsador para incremento
disminuir var porta.1 ‘Pin de pulsador para decremento
x var byte ‘x de tamaño 256
r var byte ‘y de tamaño 256
trisb=0
portb=0
x=150 ; ‘Posición inicial del servo motor
inicio:
pulsout control,x ‘Envía x por el pin portb.1 (control)
gosub timer ‘Subrutina de chequeo del pulsador
goto inicio
timer:
if incrementar=0 then gosub mas ‘Si el p esta a tierra, ir a subr “mas”
if disminuir=0 then gosub menos ‘Si el p esta a tierra, ir a subr “menos”
return
mas: ‘Subrutina de aumento de posición
pause 10
x=x+1 ; ‘Aumento del pulso de salida
if x>200 then x=200 ‘Determina un valor máximo de 200
return
menos: ‘Subrutina de disminución de posición
pause 10
x=x-1 ‘Disminución del pulso de salida
if x

El esquema de este programa se muestra en la siguiente figura:

servo2

El mismo programa modificado para el PIC12F629:

cmcon=7
control var gpio.0 ‘Pin para el servo motor
incrementar var gpio.1 ‘Pin de pulsador para incremento
disminuir var gpio.2 ‘Pin de pulsador para decremento
x var byte ‘x de tamaño 256
r var byte ‘y de tamaño 256
trisio=000110
gpio=0
x=150 ; ‘Posición inicial del servo motor
inicio:
pulsout control,x ‘Envía x por el pin portb.1 (control)
gosub timer ‘Subrutina de chequeo del pulsador
goto inicio
timer:
if incrementar=0 then gosub mas ‘Si el p esta a tierra, ir a subr “mas”
if disminuir=0 then gosub menos ‘Si el p esta a tierra, ir a subr “menos”
return
mas: ‘Subrutina de aumento de posición
pause 10
x=x+1 ; ‘Aumento del pulso de salida
if x>200 then x=200 ‘Determina un valor máximo de 200
return
menos: ‘Subrutina de disminución de posición
pause 10
x=x-1 ‘Disminución del pulso de salida
if x

Diagrama en Proteus:

servo

http://www.4shared.com/file/81611316/85d31591/PIC_12F629_Servo_Motor_Control.html

Uso de la función Radio Button y Panel Group

mayo 14, 2009 en 9:22 pm | Publicado en A.Numerico, Matlab, Programación | Deja un comentario

Para proseguir con el tutorial sobre el uso del programa MatLab ahora a ofrecerles el uso de la función Radio Button y Panle Group, utilizando el programa MatLab.

Uso de las funciones If, Switch, For y While

mayo 14, 2009 en 9:21 pm | Publicado en A.Numerico, Electrónica, Matlab | Deja un comentario

Toca ahora aprender el uso de las funciones If, Switch, For y While en programa MatLab

Nargin en funciones de MatLab

mayo 14, 2009 en 9:21 pm | Publicado en A.Numerico, Electrónica, Matlab | Deja un comentario


continuamos con la presentación de este tutorial en video del uso del programa MatLab. Veremos ahora NARGIN en funciones de MatLab

Importación de datos desde MatLab a Simulink

mayo 14, 2009 en 9:19 pm | Publicado en A.Numerico, Electrónica, Matlab | Deja un comentario

Es ahora la oportunidad de conocer el proceso para la importación de datos desde MATLAB a SIMULINK.

Condiciones iniciales en Simulink

mayo 14, 2009 en 9:17 pm | Publicado en A.Numerico, Control, Electrónica, Matlab | Deja un comentario

Ahora veremos en Simulink, las condiciones iniciales (Callbacks).
Esperamos que este video tutorial esté siendo de ayuda a todos interesados en el tema.

Procedimiento para eliminar código excesivo en una Gui

mayo 14, 2009 en 9:17 pm | Publicado en A.Numerico, Electrónica, Matlab | Deja un comentario

Procedemos ahora a conocer como se elimina el código excesivo en una Gui de MATLAB.

Uso del depurador de MatLab

mayo 14, 2009 en 9:16 pm | Publicado en A.Numerico, Electrónica, Matlab | Deja un comentario

Veamos en este video el uso del depurador, para el análisis de los programas de MATLAB.

Creación de menús en una gui

mayo 14, 2009 en 9:12 pm | Publicado en A.Numerico, Electrónica, Matlab | Deja un comentario

Ahora veremos como crear menús en una GUI de MATLABl.

Y con este video damos por terminado este tutorial, espero que lo hayan aprovechado y que en adelante pueda ser un medio de consulta para despejar dudas sobre el programa MATLAB.

A Diego Barragán Guerrero, gracias por compartir este interesante video tutorial que sin lugar a dudas, a muchos nos ha servido enormemente.

Manejo de Simulink desde Matlab

mayo 14, 2009 en 9:09 pm | Publicado en A.Numerico, Electrónica, Matlab | Deja un comentario


Ahora les ofrecemos el manejo de Simulink desde el programa MATLAB.

Uso de Handles en una gui de MatLab

mayo 14, 2009 en 9:06 pm | Publicado en A.Numerico, Electrónica, Matlab, Microcontroladores | Deja un comentario

Seguimos con este tutorial sobre el programa MatLab, ahora les ofrecemos el video que enseña el uso de la función Handles.

MATLAB R2009a Windows [x32-x64]

mayo 6, 2009 en 9:20 pm | Publicado en A.Numerico, Matlab, Programación | Deja un comentario


MATLAB 7.8: R2009a

MATLAB es un lenguaje de computación técnica de alto nivel y un entorno interactivo para desarrollo de algoritmos, visualización de datos, análisis de datos y cálculo numérico. Con MATLAB, podrá resolver problemas de cálculo técnico más rápidamente que con lenguajes de programación tradicionales, tales como C, C++ y FORTRAN.

Puede usar MATLAB en una amplia gama de aplicaciones que incluyen procesamiento de señales e imágenes, comunicaciones, diseño de sistemas de control, sistemas de prueba y medición, modelado y análisis financiero y biología computacional. Los conjuntos de herramientas complementarios (colecciones de funciones de MATLAB para propósitos especiales, que están disponibles por separado) amplían el entorno de MATLAB permitiendo resolver problemas especiales en estas áreas de aplicación.

Además, MATLAB contiene una serie de funciones para documentar y compartir su trabajo. Puede integrar su código de MATLAB con otros lenguajes y aplicaciones, y distribuir los algoritmos y aplicaciones que desarrollo usando MATLAB.

Características principales:

Lenguaje de alto nivel para cálculo técnico
Entorno de desarrollo para la gestión de código, archivos y datos
Herramientas interactivas para exploración, diseño y resolución de problemas iterativos
Funciones matemáticas para álgebra lineal, estadística, análisis de Fourier, filtraje, optimización e integración numérica
Funciones gráficas bidimensionales y tridimensionales para visualización de datos
Herramientas para crear interfaces gráficas de usuario personalizadas
Funciones para integrar los algoritmos basados en MATLAB con aplicaciones y lenguajes externos, tales como C/C++, FORTRAN, Java, COM y Microsoft Excel.

Datos:
MATLAB R2009a Windows Imagen ISO 4.04 GB
Comprimido 3.84 GB (39 x 100MB + 1 x 41.81MB)
Crack incluido y probado, excelente


Archivos:

Descargar los links para rapidshare ->Aquí<-

An introduction to numerical analysis for electrical and computer engineers

marzo 29, 2009 en 9:07 pm | Publicado en A.Numerico, Matlab | Deja un comentario


Descarga Megaupload

Guia de Sist. Ec. No Lineales

marzo 17, 2009 en 10:00 pm | Publicado en A.Numerico, Matlab | Deja un comentario

Guia de Sistemas de Ec. No Lineales
de la Prof. E. Vargas, descargar para ultimo examen.

Descarga Aqui

Página siguiente »


Entries y comentarios feeds.