Contador programable para Bobinadora

Saludos comunidad de Foros de electroncia. Les comparto un proyecto el cual esta enfocado a una maquina de rebobinaje para transformadores (motores o cosas similares) . Lo realice en un pic18f2550 usando un lcd 16x2 y haciendo uso de interrupciones del pin Rb0. Además modifique la libreria lcd.c para trabajar con puerto A y C. He aprendido tanto en esta comunidad y ahora comparto a un estudiante o alguien que le resulte util. En si es poder saber cuantas vueltas se van dando al momento de rebobinar. proyecto.JPG
 

Adjuntos

  • Programa v1.1-Economica.rar
    23.6 KB · Visitas: 40
Gracias por el aporte pero estuve viendo el código, el cual tiene errores y algunos detalles.
El error más grave es declarar una variable de 8 bits (int) y usarla como una variable de 16 bits.
C:
int vueltas, aux;
La declaración int en PIC C Compiler es igual a int8 y es de 8 bits.
PIC C Compiler Basic Types.jpg

El segundo error no tan grave es incluir una ruta de archivo que únicamente se encuentra en tu PC:
#include "D:\Proyectos\Contador Vueltas\Programa v1.1-Economica\Contador_Vueltas_v1.1.h"
Si el archivo "Contador_Vueltas_v1.1.h" se encuentra en la carpeta del proyecto, basta con incluirlo sin ruta:
#include "Contador_Vueltas_v1.1.h"

El tercer error es algo grave y está en la palabra de configuración.
Siempre les he dicho que un PIC de este tipo tiene una configuración especial, que si no se establece bien, el microcontrolador no funcionará correctamente.
Todo lo que se encuentra en el archivo "Contador_Vueltas_v1.1.h" no sirve para usar una frecuencia de reloj con cristal de 20 MHz.
Tampoco sirve configurar el ADC a 8 bits porque ese es el valor por defecto, aparte de que no se está usando el conversor AD.
También tiene declarado el uso de RS-232 por software que tampoco se está usando.

Si declaras lo siguiente en la cabecera del programa, te evitas todo el código inservible en ella:
C:
#include <18F2550.h>
#fuses NOFCMEN, NOIESO, NOVREGEN
#use delay(CRYSTAL = 20 MHz)

Los varios detalles en el programa:
#use fast_io(B) No tiene sentido su uso en tu programa.
ext_isr() debe precederse con void
Así: void ext_isr (void) y el segundo void es opcional porque en este caso es un servicio de interrupción y no tiene parámetros.

vueltas=vueltas+1; Es del lenguaje Basic y en C es más cómodo así: vueltas += 1;

set_tris_B(0x01);
Resulta irrelevante porque por defecto todos los pines son entradas.

port_b_pullups(TRUE); No tiene sentido usarlo porque únicamente tienes a RB0 como entrada y RB6 y RB7 como salidas.
Aparte, ya estás colocando una resistencia pull-up en RB0 que está en el colector del transistor.

Esta parte de código para hacer parpadear un LED, la puedes hacer con uno de los timers del microcontrolador:
C:
      if(aux==1000)
      {
         output_toggle(pin_B6);
         aux=0;
      }
      else aux++;
Aquí es precisamente donde comparas 1000 con una variable de 8 bits que nada más sirve hasta 255.
Y si también usas la variable "vueltas" para el conteo, se tendrá un límite de 255 vueltas.
Además modifiqué la librería lcd.c para trabajar con los puertos A y C
No es necesario modificar la librería lcd.c nativa porque con unos cuantos agregados antes de incluirla, se logra que funcione con los pines que uno quiera.
En el caso de tu programa y que no incluiste la librería que modificaste, quedaría así:
C:
#define LCD_ENABLE_PIN  PIN_A0
#define LCD_RS_PIN      PIN_A1
#define LCD_RW_PIN      PIN_A2
#define LCD_DATA4       PIN_A3
#define LCD_DATA5       PIN_A4
#define LCD_DATA6       PIN_A5
#define LCD_DATA7       PIN_C0
#include <lcd.c>
Con el agregado de esas definiciones ya no es necesario modificar la librería.

Podría ser que en tu caso la tengas que modificar porque estás usando una versión muy antigua de PIC C Compiler (v4.104) y no recuerdo si en esa versión aún no se realizan mejoras en la librería lcd.c

Bueno, como dijo Cortana: Como introducción, creo que ya es suficiente.
Saludos y a seguir estudiando.
 
Hola otra vez. Aquì les proongo un Cuenta Vueltas de cuatro dìgitos realizado con PIC 16F628 (ver archivo adjunto) en lenguaje PBPRO con el MCS y grabado con PK2, que està probado y funcionando. Es un ejemplo sencillo del uso de las sentencias ON INTERRUPT, LOOKUP, DIG y del MULTIPLEXADO, necesarios para el manejo de un display. Espero que les sea de utilidad, cualquier duda me consultan. Bye
 

Adjuntos

  • CuentaVueltasBobinadora.pdf
    150.7 KB · Visitas: 40
Hola...Gracias por el aporte, creo haber visto en el foro un tema al respecto(cuenta vueltas para bobinadora) e incluso haber participado activamente en alguno.

Lo que noto en la gran mayoría de diseños es que no contemplan en caso de que se pueda descontar vueltas según el sentido en que se gire.

Es común cuando se bobina que una vuelta no este en su lugar y se deba dar marcha a tras y los esquemas que he visto, siempre cuentan hacia adelante sumando una vuelta sea en el sentido que sea.

Saludos.
 
Aquí les propongo un Cuenta Vueltas de cuatro dígitos realizado con PIC16F628
Post unificado al ya existente. (Normas del Foro 04)
Lo que noto en la gran mayoría de diseños es que no contemplan en caso de que se pueda descontar vueltas según el sentido en que se gire.
Los diseños que he subido sí lo tienen contemplado y con detección de corte eléctrico.
Llegué a escribir un programa usando un encoder incremental que creo ya no publiqué.
 
Post unificado al ya existente. (Normas del Foro 04)

Los diseños que he subido sí lo tienen contemplado y con detección de corte eléctrico.
Llegué a escribir un programa usando un encoder incremental que creo ya no publiqué.
Por eso aclare lo de la "gran mayoría"(siendo este el caso que no lo contempla), no es difícil inclusive colocando un opto ranurado que sea doble y trabajar como si fuera un encoder incremental y actuar en consecuencia según el sentido que se le va a dar al giro(10 o 01) e incrementar o decrementar según corresponda.

Es algo que muy útil cuando uno bobina a mano o con pequeños motores ya que indefectiblemente será usado salvo teniendo mucha suerte y que no pase ningún "percance"; nunca me paso hasta ahora.

Saludos.
 
Última edición:
Atrás
Arriba