Balanza Digital

BALANZA DIGITAL (Avance)

Integrantes


Armando Quiñones
Camilo Minota

Descripción del proyecto


Crearemos una balanza digital que permita identificar el peso y calcular el precio por unidad del producto, implementando un microcontrolador; es un producto muy útil y funcional, que nos puede ayudar muchísimo cuando lo necesitemos, ya que, permitirá al usuario identificar los precios de ciertos artículos por su peso, seleccionando el producto deseado.
Alcances y limitaciones: La balanza tendrá un peso máximo a soportar, y, además, un número limitado de productos que pueda almacenar.

Pantalla LCD


Los módulos LCD (Display de Cristal Líquido), son utilizados para mostrar mensajes que indican al operario el estado de la maquina, o para dar instrucciones de manejo, mostrar valores, etc. El LCD permite la comunicación entre las máquinas y los humanos, este puede mostrar cualquier carácter ASCII, y consumen mucho menos que los displays de 7 segmentos. Visualizaremos el peso del producto en una pantalla LCD 2x16

2x16_LCD_kit.jpg

Uso del ADC


El uso del ADC en un microcontrolador es escencial, cuando existe la necesidad de digitalizar señales analógicas, pueden ser por ejemplo datos de temperatura, presión, humedad, movimiento, etc. en nuestro caso, lo usaremos para mostrar el peso de los artículos.

Un ADC convierte y mide el voltaje V en un pin (que tendrá que estar declarado como entrada con el correspondiente registro) y lo convierte en un número. El voltaje se mide en referencia a un voltaje mínimo, Vref(-) , y a un voltaje máximo, Vref (+)

ATmega16%20pin%20configuration.JPG62d0953126.jpg

Programación

#include <avr/io.h>
#include <math.h>
 
#include <avr/interrupt.h>
#include "D:\micros\lcd.h"
 
int voltios;
int conversion;
int um,uc,ud,un,p,e,s,x,o;
int y;
 
int main(void)
{
    sei();
    DDRD=0b11111111; //puerto D bits mas significativos
    DDRA=0b00000001; //puerto c bits menos significativos
    ADCSRA=(1<<ADEN)| (1<<ADSC)|(1<<ADPS2)|(1<<ADPS1); // HABILITO EL ADC CON ADEN,CONVERSION CON ADSC Y PREESCALADO DE 64
    ADMUX=(1<<REFS0)|(1<<ADLAR) ;// VOLTAJE DE REFERENCIA AVCC,ADCH tiene los bits mas significativos
 
    LCD_init();
 
    while(1)
    {
        ADCSRA |=(1<<ADSC) ; //INICIAR LA CONVERSION
        while(!(ADCSRA&(1<<ADIF))); // para que se espere hasta que termine la conversion
        ADCSRA |=(1<<ADIF); //LIMPIAR LA BANDERA DIF
 
        voltios=ADCH;// almacena los 8 bits en voltios
        conversion=voltios*(4900/256)+20;
        um=conversion/1000;
        conversion=conversion%1000;
        uc=conversion/100;
        conversion=conversion%100;
        ud=conversion/10;
        conversion=conversion%10;
        un=conversion;
        x=(100*uc)+(10*ud)+(un);
        y=((0.13089)*x);
        p=y/10;
        y=y%10;
        e=y/1;
 
        LCD_wait();
        LCD_command(0x80);
        LCD_wait();
        LCD_putchar('B');
        LCD_wait();
        LCD_putchar('A');
        LCD_wait();
        LCD_putchar('L');
        LCD_wait();
        LCD_putchar('A');
        LCD_wait();
        LCD_putchar('N');
        LCD_wait();
        LCD_putchar('Z');
        LCD_wait();
        LCD_putchar('A');
        LCD_wait();
        LCD_putchar(' ');
        LCD_wait();
        LCD_putchar('D');
        LCD_wait();
        LCD_putchar('I');
        LCD_wait();
        LCD_putchar('G');
        LCD_wait();
        LCD_putchar('I');
        LCD_wait();
        LCD_putchar('T');
        LCD_wait();
        LCD_putchar('A');
        LCD_wait();
        LCD_putchar('L');
        LCD_wait();
 
        LCD_command(0xC0);
 
        LCD_wait();
        LCD_putchar(p+0x30);
        LCD_wait();
        LCD_putchar('.');
        LCD_wait();
        LCD_putchar(e+0x30);
 
        LCD_wait();
        LCD_putchar('K');
        LCD_wait();
        LCD_putchar('g');
}
 
}
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License