Problema de programacion PWM PIC16F877
| #1 Problema de programacion PWM PIC16F877 |
|
Ahona
|
Hola!
Hace poco que he empezado con la programacion de los PIC en C... C ya lo he visto antes, pero para ordenador, asi que no me resulta muy dificil llegar a entender el codigo...lo que no me acabo de enterar es la configuracion para el PIC, es decir, dependiendo las funciones, no me acabo de aclarar que es lo que hace cada una... Quiero hacer un programa que mueva un motor por medio del PWM del PIC16F877, ya he empezado hacerlo, pero hay cosas que no entiendo. El compilador que utilizo es el PIC-C Compiler, pero me da error en acda una de las lineas del programa... Aqui os pongo lo que llevo hasta ahora, seguro que los fallos son por cosas básicas, pero lo estoy aprendiendo por mi cuenta y resulta un poco lioso...
Segun he entendido (seguramente estare equivocado) La funcion SETUP_TIMER_2() establece el ciclo de trabajo que envia el PWM. Los valores que he puesto no los acabo de entender...(les he puesto mas o menos a voleo para ver si funcionaba o no) T2_DIV_BY_16 quiere decir que divide la frecuencia del reloj por 16? El 255 indica el valor al que llegara el timer y reiniciara la cuenta? El 15, mas o menos lo tengo claro, es el numero de resets antes de una interrupcion, no? En la funcion SET_PWM1_DUTY() se indica el ciclo de trabajo del PWM? y eso no se hace ya con la funcion anterior? Se que estas cosas son basicas, pero no acavo de enterarme...me podriais hechar una mano? Muchas gracias a todos! Un saludo! |
|||||||||||
|
|
||||||||||||
| #2 |
|
Paloky
|
Hola.
Creo que te puedo ayudar con tu problema. Prueba con este ejemplo.
Esto te deberia funcionar a la primera. Saludos. |
|||||||||||
|
|
||||||||||||
| #3 |
| #4 |
|
Elvic
|
Que hay de nuevo, aquí te va un ejemplo, con otro compilador; pues el que utilizan se me dificulta bastante pero bien aquí esta:
#include <system.h> void main() { trisc=0; CCP1CON=0x0C; CCP2CON=0x0C; T2CON=0x04; PR2=255;//Para el periodo while(1) { CCPR1L=154; CCPR2L=51; delay_s(10); CCPR1L=230; CCPR2L=128; delay_s(10); } } Lo que esta dentro del while es lo que tienes que cambiar, son los porcentajes de señal, En el primer caso son 60% en una salida y 20% en la otra, luego se espera y cambia a 90% y 50%. sabiendo que 255 son el 100%. Así ya lo puedes cambiar a tu antojo. Sale? el compilador es este: http://www.sourceboost.com/ |
|||||||||||
|
Ultima edición por Elvic el Mie Jun 25, 2008 3:37 am, editado 1 vez |
||||||||||||
| #5 |
|
Paloky
|
Hola Ahona. el "setup_timer_2" le indicas la frecuencia del PWM, y con el "set_pwm1_duty" la anchura del pulso. Tendrías una cosa así:
Saludos. |
|||||||||||||
|
|
||||||||||||||
| #6 |
|
Ahona
|
Coño! ahora si que me ha quedado claro
Muchas gracias Paloky! El compilador que tenia, tenia las librerias corruptas, por lo que me daban errores por todos los lados y Elvic, no he conseguido hacer funcionar ese programa... Muchas gracias de todas formas! Haber si luego me pongo con ello y pongo el programilla por aqui... Un saludo! |
|||||||||||
|
|
||||||||||||
| #7 |
|
Ahona
|
Bueno, poco a poco va tirando palante el proyecto...perdonad por no contestar antes, pero estado de examenes...
El programa va algo avanzado, es mas, el control de direccion del motor, por lo menos simulado en el proteus, ya lo tengo listo. Ahora tengo otro problemilla: mi intencion es que cuando pulse una tecla del ordenador, el motor gire en un sentido, y cuando pulso otra tecla, que cambie de sentido. Como digo, lo estoy simulando en el proteus y posiblemente sea porque no se utilizar bien el terminal virtual...y tambien porque no configuro bien la comunicacion rs232 Aqui hos pongo el programa segun lo tengo ahora y como digo, sin poner lo del rs232, si que me funciona.
Cuando solo dejo uno de los 2 while, el motor gira en un sentido, si dejo el otro, el motor cambia de giro, pero con el rs232 lo queria hacer al pulsar una tecla... Sabeis donde puedo tener el error? Muchas gracias por vuestro tiempo Un saludo! |
|||||||||||
|
|
||||||||||||
| #8 |
|
rodriguis
|
hola. yo igual quiero usar el pwm. estoy haciendo un proyecto para la escuela de una silla de ruedas electrica para controlar 2 motores uno para marcha y otro para el sentido de giro. quiero usar un micro 16f873a, pero la verdad no me acuerdo como usar la funcion pwm. estoy usando microcode studio. si alguien tiene un ejemplo para ayudarme se lo agradecere. saludos
|
|||||||||||
|
|
||||||||||||
| #9 Pwm en microcode studio (PBP) |
|
RAUL R.
|
saludos, necesito hacer una programacion para variar el ciclo util del pwm deacuero al valor que obtenga por el puerto A0 (analogico) del PIC 16F877A, necesito decirle al pwm que ese valor en decimal sera el ciclo util. como puedo hacer? yo intenet
pwm portb.7,dec ao,500 donde ao var porta.0 pero da error al compilar gracias |
|||||||||||
|
|
||||||||||||
|
| Temas de interés | |
|---|---|
| Cuenta revoluciones | |
| temporizador de cuenta atras | |
| Cuenta descendente horas, minutos y segundos. | |
| cuenta revoluciones de leds | |
| Diseño de cuenta vueltas | |
| Foros de Electronica |
| ||
Cuestiones Elementales de Electrónica ||
Fuentes de alimentacion ||
Circuitos de radio ||
Diseño de circuitos en general || || Sistemas de Audio: Preamplificadores, Ecualizadores || Amplificadores || Reparación || Discusión || || Microcontroladores y sistemas embebidos || Circuitos logicos combinacionales y secuenciales || Interfaces y Programacion || Dudas en general || Sistemas de Video || PC Hardware || Telematica y comunicaciones || Tecnologias moviles || Software Electronico || Robotica, Domotica y Mecatronica || Autotrónica || Automatizacion, Electronica industrial y de Potencia || Documentacion, circuitos y esquemas || Donde Las Ideas Convergen... || Tutoriales y Manuales || Proyectos Prácticos || |
Site Map
© Foros de Electrónica
Comunidad Internacional de Electrónicos
Powered by phpBB © 2001, 2005 phpBB Group
Acerca de || Política de privacidad
Generada en = 0.12694 segundos, Consultas = 13
© Foros de Electrónica
Comunidad Internacional de Electrónicos
Powered by phpBB © 2001, 2005 phpBB Group
Acerca de || Política de privacidad
Generada en = 0.12694 segundos, Consultas = 13

