Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

27/02/2011 #1


Control de velocidad de un motor desde una PC
Hola, este es el primer tema q creo, el tema lo busqué y no encuentre algun tema relacionada (O no lo busqué bien), bueno el trabajo que quiero realizar es enviar las revoluciones desde la pc (100RPM) y q el motor gire a esa velocidad, y tambien cuando este este girando a esa velocidad se envie datos hacia la PC y que me grafique esa velocidad.
Ha estuve haciendo un codigo que cuenta los pulsos del encoder por RB0 en un cierto tiempo, y asi convertirlo a RPM y enviarlo a la PC para que sea graficado(VB6.0). Lo armé y si funciona hasta frecuencias 1k-1.5Khz.
Este es el codigo que envia los RPM hacia la PC (De seguro q no sea muy bueno)

BUeno el problema es que he intentado recibir(en el pic) los RPM, pero no logro visualizar si realmente ha llegado, como haria esto......... y estoy pensando luego de obtener los rpm, usar PWM

Código PHP:
#include <16F877A.h>
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES HS                       //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected

#use delay(clock=20000000)
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7)
#include <lcd.c>
long contador,pulsos;
Int valor,desborde;
float rpm;

#INT_EXT
ext_isr()
{
Contador=contador+1;
}
#INT_TIMER0
void timer0_isr(void)
{
desborde=desborde+1;
}
void main()
{
  
enable_interrupts(global);
  
enable_interrupts(int_ext);
  
enable_interrupts(int_timer0);
  
setup_counters(rtcc_internal,rtcc_div_128);
  
set_timer0(0);
  
ext_int_edge(h_to_l);
  
lcd_init();
  
contador=0;
  
desborde=0;
      while (
1)
        {
           if(
contador==1)
             {
                
set_timer0(0);
             }   
           if (
desborde<15//38
             
{
               
pulsos=contador;
               
delay_ms(200);
               
set_timer0(0);
               
contador=0;
               
desborde=0;
             }
            
rpm=pulsos/2.33333;//2.8944; //2.345  ultimo dividir por 3.1034
            //putc(rpm);
           
printf("%3.2f\n\r ",rpm);  //\n\r
           
lcd_gotoxy(1,1);
           
printf(lcd_putc,"c=%lu",pulsos);
           
delay_ms(100);
           
lcd_putc("\f");  //aumentado
           
lcd_gotoxy(1,2);
           
printf(lcd_putc,"vel=%frpm",rpm);
           
delay_ms(100);
           }

14/04/2012 #2


saludos jormer.. me preguntaba si ese control de rpm te funciono??... estoy interesado en hacer uno..
gracias
14/04/2012 #3


Que tal espero este link les sirva es muy bueno este modulo que hace masomenos lo que quieres
http://www.ingenieriaenserie.com/index.php/motores-pyc
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.