Autor Tema: HX711  (Leído 1815 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Rseliman

  • PIC16
  • ***
  • Mensajes: 239
HX711
« en: 08 de Diciembre de 2015, 11:08:15 »
Hola a todos

Hace unos dias compre uno de estos modulos con la idea de hacer un banco de pruebas ...

https://www.itead.cc/hx711-dual-channel-weighing-sensor-module.html


el tema es que todo lo que encuentro esta para arduino , y estoy intentando hacer una libreria de 0 para xc8 , por favor si alguien sabe de esto que ya existe , me podria ahorrar mucho trabajo

Muchas gracias

Las Grandes Obras las sueñan los grandes locos , mientras los inutiles las critican !!

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re:HX711
« Respuesta #1 en: 08 de Diciembre de 2015, 14:55:18 »
Podrías poner lo que has encontrado??
De esa forma sera mas fácil ayudarte.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Rseliman

  • PIC16
  • ***
  • Mensajes: 239
Re:HX711
« Respuesta #2 en: 08 de Diciembre de 2015, 22:17:17 »
Hola Gracias por contestar

Encontre esto ...que es lo mas parecido


Código: [Seleccionar]
#include "HX711.h"


//****************************************************
//ÑÓʱº¯Êý
//****************************************************
void Delay__hx711_us(void)
{
_nop_();
_nop_();
}

//****************************************************
//¶ÁÈ¡HX711
//****************************************************
unsigned long HX711_Read(void) //ÔöÒæ128
{
unsigned long count;
unsigned char i;
  HX711_DOUT=1;
Delay__hx711_us();
  HX711_SCK=0;
  count=0;
EA = 1;
  while(HX711_DOUT);
EA = 0;
  for(i=0;i<24;i++)
{
  HX711_SCK=1;
  count=count<<1;
HX711_SCK=0;
  if(HX711_DOUT)
count++;
}
  HX711_SCK=1;
    count=count^0x800000;//µÚ25¸öÂö³åϽµÑØÀ´Ê±£¬×ª»»Êý¾Ý
Delay__hx711_us();
HX711_SCK=0; 
return(count);
}








Código: [Seleccionar]
#ifndef __HX711_H__
#define __HX711_H__


#include <reg52.h>
#include <intrins.h>

//IOÉèÖÃ
sbit HX711_DOUT=P3^6;
sbit HX711_SCK=P3^7;

//º¯Êý»òÕß±äÁ¿ÉùÃ÷
extern void Delay__hx711_us(void);
extern unsigned long HX711_Read(void);

#endif

Código: [Seleccionar]
/**********************************************************************
----------------1.┐¬Àó╗À¥│:Keil v4    ----------------
----------------2.╩╣Ë├ÁÑã¼╗·ð═║┼ú║STC89C52RC    ----------------
----------------3.ÁÑã¼╗·╩╣Ë├¥ºı±ú║11.0592M    ----------------
----------------4.ÁÛã╠├¹│ãú║┤¾Ðº╔·ÁþÎË╔╠ã╠/ðíÃ┐ÁþÎË╔Þ╝ã----------------
----------------5.╠È▒ª═°ÍÀú║    ----------------
---------------- 1║┼ÁÛã╠http://Ilovemcu.taobao.com  ----------------
---------------- 2║┼ÁÛã╠http://52dpj.taobao.com    ----------------
---------------- 3║┼ÁÛã╠http://epic-mcu.taobao.com  ----------------
----------------6.θı▀ú║╔±├Ï▓Ï▒ª╩Ê    ----------------
***********************************************************************/
#include "main.h"
#include "HX711.h"

unsigned long HX711_Buffer = 0;
long Weight_Maopi = 0,Weight_Shiwu = 0;

unsigned int Temp_Buffer = 0;
//code unsigned char table[]={ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0x00}; //0,1,2,3,4,5,6,7,8,9,╚½░Áú¼╚½┴┴ //╣▓ж
code unsigned char table[] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0X00,0XFF,0x6f,0x79,0x77,0x3f,0x76,0x38}; //0,1,2,3,4,5,6,7,8,9,╚½░Áú¼╚½┴┴,g,e,r,o,h,l //╣▓ʧ
unsigned char COM1_DATA = 0,COM2_DATA = 0,COM3_DATA = 0,COM4_DATA = 0,COM5_DATA = 0,COM6_DATA = 0;
unsigned char flag = 0;
bit Flag_ERROR = 0;


//****************************************************
//͸║»╩²
//****************************************************
void main()
{
Init_Timer0();

COM1_DATA = 16; //H
COM2_DATA = 13; //E
COM3_DATA = 17; //L
COM4_DATA = 17; //L
COM5_DATA = 15; //0
COM6_DATA = 10; //┐ı

Delay_ms(3000); //ÐË╩▒,Á╚┤²┤½©ðã¸╬╚¿

Get_Maopi(); //│ã├½ãñÍÏ┴┐

while(1)
{
EA = 0;
Get_Weight(); //│ãÍÏ
EA = 1;

Scan_Key();

//¤È╩¥Á▒Ã░ÍÏ┴┐
if( Weight_Shiwu > 3000 || Flag_ERROR == 1)
{
COM1_DATA = 13; //E
COM2_DATA = 14; //R
COM3_DATA = 14; //R
COM4_DATA = 15; //O
COM5_DATA = 14; //R
COM6_DATA = 10; //┐ı
}

if( Weight_Shiwu <= 3000 && Flag_ERROR == 0)
{
COM1_DATA = Weight_Shiwu/1000;
COM2_DATA = Weight_Shiwu%1000/100;
COM3_DATA = Weight_Shiwu%100/10;
COM4_DATA = Weight_Shiwu%10;
COM5_DATA = 10; //┐ı
COM6_DATA = 12; //g
}

}
}

//╔¿├Þ░┤╝³
void Scan_Key()
{
if(KEY1 == 0)
{
Delay_ms(5);
if(KEY1 == 0)
{
while(KEY1 == 0);
Get_Maopi(); //╚Ñãñ
}
}
}

//****************************************************
//│ãÍÏ
//****************************************************
void Get_Weight()
{
HX711_Buffer = HX711_Read();
HX711_Buffer = HX711_Buffer/100;
if(HX711_Buffer >= Weight_Maopi)
{
Weight_Shiwu = HX711_Buffer;
Weight_Shiwu = Weight_Shiwu - Weight_Maopi; //╗±╚í╩Á╬´Á─AD▓╔Ш╩²ÍÁíú

Weight_Shiwu = (unsigned int)((float)Weight_Shiwu/7.41+0.05); //╝ã╦Ò╩Á╬´Á─╩Á╝╩ÍÏ┴┐
//Ê‗╬¬▓╗═¼Á─┤½©ðã¸╠ÏðÈ÷¤▀▓╗Ê╗Шú¼Ê‗┤╦ú¼├┐Ê╗©÷┤½©ðã¸ðÞʬ¢├ı²ıÔ└´Á─7.16ıÔ©÷│²╩²íú
//Á▒Àó¤Í▓Ô╩È│÷└┤Á─ÍÏ┴┐ã½┤¾╩▒ú¼È÷╝Ë©├╩²ÍÁíú
//╚þ╣¹▓Ô╩È│÷└┤Á─ÍÏ┴┐ã½ðí╩▒ú¼╝§ðí©─╩²ÍÁíú
//©├╩²ÍÁÊ╗░ÒÈ┌7.16©¢¢³Á¸ı¹Í«╝õíúÊ‗┤½©ðã¸▓╗═¼Â°Â¿íú
//+0.05╩Ã╬¬┴╦╦─╔ß╬Õ╚Ù░┘ÀÍ╬╗
Flag_ERROR = 0;
}
else if(HX711_Buffer < Weight_Maopi - 30)
{
Flag_ERROR = 1; //©║ÍÏ┴┐▒¿¥»
}
}

//****************************************************
//╗±╚í├½ãñÍÏ┴┐
//****************************************************
void Get_Maopi()
{
unsigned char i = 0;
unsigned int Temp_Weight = 0;

Weight_Maopi = 0;

for( i = 0 ; i < 10 ; i++)
{
HX711_Buffer = HX711_Read();
Weight_Maopi = HX711_Buffer/100;
}
}

//****************************************************
//│§╩╝╗»Â¿╩▒ã¸0
//****************************************************
void Init_Timer0()
{
TMOD = 0X01; //T0, ╣ñθ─ú╩¢1

TH0 = (65536 - 2000)/256;
TL0 = (65536 - 2000)%256;

TR0 = 1; //┐¬ã¶Â¿╩▒ã¸
ET0 = 1;     //┐¬ã¶Â¿╩▒ã¸Íð¤
EA = 1; //┐¬ã¶Î▄Íð¤
}


//Íð¤║»╩²
//****************************************************
void Timer0() interrupt 1
{
TH0 = (65536 - 2000)/256;
TL0 = (65536 - 2000)%256;

TF0 = 0;

flag++;
if(flag >= 6)
{
flag = 0;
}


switch(flag)
{
case 0:
COM1 = 0;
COM2 = 1;
COM3 = 1;
COM4 = 1;
COM5 = 1;
COM6 = 1;

// if(COM1_DATA < 10)
// {
// SEG_DATA = table[COM1_DATA]|0x80; ////¤È╩¥Á┌Ê╗╬╗ÍÁ╝Ëðí╩²ÁÒ
// }
// else
// {
SEG_DATA = table[COM1_DATA];
// }

break;

case 1:
COM1 = 1;
COM2 = 0;
COM3 = 1;
COM4 = 1;
COM5 = 1;
COM6 = 1;
SEG_DATA = table[COM2_DATA]; //¤È╩¥Á┌Â■╬╗ÍÁ

break;

 
case 2:
COM1 = 1;
COM2 = 1;
COM3 = 0;
COM4 = 1;
COM5 = 1;
COM6 = 1;
SEG_DATA = table[COM3_DATA]; ////¤È╩¥Á┌╚²╬╗ÍÁ

break;


case 3:
COM1 = 1;
COM2 = 1;
COM3 = 1;
COM4 = 0;
COM5 = 1;
COM6 = 1;
SEG_DATA = table[COM4_DATA];   //¤È╩¥Á┌╦─╬╗ÍÁ
break;

case 4:
COM1 = 1;
COM2 = 1;
COM3 = 1;
COM4 = 1;
COM5 = 0;
COM6 = 1;
SEG_DATA = table[COM5_DATA];   //¤È╩¥Á┌╦─╬╗ÍÁ
break;

case 5:
COM1 = 1;
COM2 = 1;
COM3 = 1;
COM4 = 1;
COM5 = 1;
COM6 = 0;
SEG_DATA = table[COM6_DATA];   //¤È╩¥Á┌╦─╬╗ÍÁ
break;

default : break;
}

}

//****************************************************
//MSÐË╩▒║»╩²(12M¥ºı±¤┬▓Ô╩È)
//****************************************************
void Delay_ms(unsigned int n)
{
unsigned int  i,j;
for(i=0;i<n;i++)
for(j=0;j<123;j++);
}

Podrías poner lo que has encontrado??
De esa forma sera mas fácil ayudarte.
Las Grandes Obras las sueñan los grandes locos , mientras los inutiles las critican !!


 

anything