Ağırlık sensörü için hx711 modülü hakkında

Başlatan ziyaretci, 07 Haziran 2015, 01:06:49

ziyaretci

Merhaba:

Yenileme Frekansı: 80 Hz

HX711 modülündeki dijital veri şu şekilde mi alınıyor?

24 defa tekrarla{
-- Clock ucuna high-low
-- DT ucunu oku
}

  Tabi biz bu işlemi tamamlamak için 80Hz(0,0125sn) vaktimiz var. Aksi halde yeni veri ile eski veri karışır. Doğru mudur? Ama bu seferde senkronizasyon sıkıntı oluşturacak gibi.
 
  Bu modül hakkında bilgi verir misiniz?

necati

include <main.h>
#include <stdio.h>
#ZERO_RAM

#define HX711_DO  PIN_B15
#define HX711_CLK PIN_B14

int32 measurement(void);

void main()
{
int1 test=0;
unsigned int32 Count,BUFFER[30],offseeet=0,mied=0;
unsigned int8 i=0;


while(TRUE){

while(i<10){
Count=measurement();
BUFFER=Count;
mied+=BUFFER;
i++;
}
i=0;
mied/=11;

if(test==0){
offseeet=mied;
test=1;
}
//Count=measurement();
mied-=offseeet;
//printf("data=%lu \n\r",Count);
printf("mied=%lu \n\r",mied);
//delay_ms(1);
//printf("\f");
}
}
//********************************************
int32 measurement(void){
unsigned int32 Count;
unsigned int8 i,A_1,A_2,A_3;


output_bit( HX711_DO, 1);
output_bit( HX711_CLK, 0);
Count=0;

while(input(HX711_DO));

for (i=0;i<24;i++){// gain 128
output_bit( HX711_CLK, 1);
Count=Count<<1;
output_bit( HX711_CLK, 0);
if(input(HX711_DO)) Count++;
}
output_bit( HX711_CLK, 1);
Count=Count^0x800000;
output_bit( HX711_CLK, 0);
//************************
A_1=MAKE8(Count, 0);
A_2=MAKE8(Count, 1);
A_3=MAKE8(Count, 2);
A_2=(A_2 & 0b11111000);
Count= MAKE16(A_3, A_2);
return(Count);

}
[email]entegreterbiyecisi@yahoo.com[/email]

universitelim54

1. kanalı okuduk ama kod ile 2. kanal nasıl okunmalı birde Count=Count^0x800000;  ne yapmak ıstenıyor lutfen yardım edın

xytronic

HX711 Modülü ile loadcell uygulaması yaptım. 10 kg kapasiteli bir loadcell bağladım.  Normal olarak ölçüm yapabiliyorum ama çıkışta ara sıra anormal değerler geliyor.  Örnek olarak 500gr bir yük ölçüyorum. Ara ara değerler çok yükseliyor.  Mesela 10 ölçümden biri rastgele çok yüksek bir değer oluyor. Bu neden kaynaklanır?  Bunun dışında ölçümde bir problem yok.

muratgunduz

#4
Alıntı yapılan: necati - 07 Haziran 2015, 06:38:14
include <main.h>
#include <stdio.h>
#ZERO_RAM

#define HX711_DO  PIN_B15
#define HX711_CLK PIN_B14

int32 measurement(void);

void main()
{
int1 test=0;
unsigned int32 Count,BUFFER[30],offseeet=0,mied=0;
unsigned int8 i=0;


while(TRUE){

while(i<10){
Count=measurement();
BUFFER=Count;
mied+=BUFFER;
i++;
}
i=0;
mied/=11;

if(test==0){
offseeet=mied;
test=1;
}
//Count=measurement();
mied-=offseeet;
//printf("data=%lu \n\r",Count);
printf("mied=%lu \n\r",mied);
//delay_ms(1);
//printf("\f");
}
}
//********************************************
int32 measurement(void){
unsigned int32 Count;
unsigned int8 i,A_1,A_2,A_3;


output_bit( HX711_DO, 1);
output_bit( HX711_CLK, 0);
Count=0;

while(input(HX711_DO));

for (i=0;i<24;i++){// gain 128
output_bit( HX711_CLK, 1);
Count=Count<<1;
output_bit( HX711_CLK, 0);
if(input(HX711_DO)) Count++;
}
output_bit( HX711_CLK, 1);
Count=Count^0x800000;
output_bit( HX711_CLK, 0);
//************************
A_1=MAKE8(Count, 0);
A_2=MAKE8(Count, 1);
A_3=MAKE8(Count, 2);
A_2=(A_2 & 0b11111000);
Count= MAKE16(A_3, A_2);
return(Count);

}

necati bey bilgi için teşekkür ederim. bugün ben de denemek  içn aldım bi set fakat fuse ayarları nedir? bir de rs232 mi kullanmam gerekiyor. ben 14-15 yerine 17-18 yaptım. haliyle hata alıyorum. printf komutlarını printf(lcd_putc, ...) olarak değiştirdim cünkü 2x16 kullanıyorum pin ayarlarım tamam lcd gönderilerimi alıyor. main.h dosyasının içeriğini de paylaşabilirseniz daha çok anlayabilirim.

teşekkürler tekrar.

*** Error 167 "18f2550lcd.c" Line 34(8,13): Assignment invalid: lvalue is READ ONLY*** aldığım tek hata bu