پاسخ : راه اندازی ماژول جدید لودسل HX711 LOADCELL
با سلام خدمت دوستان عزیز
بنده با کمک برنامه یکی از دوستان که نمیدونم برنامشون رو از کدوم سایت دانلود کردم برنامه HX711 رو کاملش کردم با زبان C برای میکروکنترلر AVR atmega8
با سلام خدمت دوستان عزیز
بنده با کمک برنامه یکی از دوستان که نمیدونم برنامشون رو از کدوم سایت دانلود کردم برنامه HX711 رو کاملش کردم با زبان C برای میکروکنترلر AVR atmega8
#include <mega8.h>
#include <delay.h>
#include <stdio.h>
#define HX711_DOUT PINB.0
#define HX711_SCK PORTB.1
int i;
char ch1[10];
float a;
void Delay__hx711_us(void)
{
#asm("nop")
#asm("nop")
}
unsigned long HX711_Read(void)
{
unsigned long count;
unsigned char i;
HX711_DOUT=1;
Delay__hx711_us();
HX711_SCK=0;
count=0;
while(HX711_DOUT);
for(i=0;i<24;i++) //gain --> 128
{
HX711_SCK=1;
count=count<<1;
HX711_SCK=0;
if(HX711_DOUT)
count++;
}
HX711_SCK=1;
count=count & 0xffffff; // taeen deghat
Delay__hx711_us();
HX711_SCK=0;
return(count);
}
void main(void)
{
char buffer[10];
UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM);
UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) | (1<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);
UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);
UBRRH=0x00;
UBRRL=0x33;
DDRB = 1<<DDB1 ;
printf(" Hello ");
delay_ms(2000);
while(1)
{
( ()sprintf(buffer,"a= %ld",HX711_Read
for (i=0;buffer[i]!=NULL;i++)
{
if (buffer[i]<58 && buffer[i]>47)
{
a=a*10;
a =a+( buffer[i]-48);
}
}
a=(a*(-0.04586))+768133.7;
sprintf(ch1,"%f\r\n", a);
puts(ch1);
a=0;
}
}
#include <delay.h>
#include <stdio.h>
#define HX711_DOUT PINB.0
#define HX711_SCK PORTB.1
int i;
char ch1[10];
float a;
void Delay__hx711_us(void)
{
#asm("nop")
#asm("nop")
}
unsigned long HX711_Read(void)
{
unsigned long count;
unsigned char i;
HX711_DOUT=1;
Delay__hx711_us();
HX711_SCK=0;
count=0;
while(HX711_DOUT);
for(i=0;i<24;i++) //gain --> 128
{
HX711_SCK=1;
count=count<<1;
HX711_SCK=0;
if(HX711_DOUT)
count++;
}
HX711_SCK=1;
count=count & 0xffffff; // taeen deghat
Delay__hx711_us();
HX711_SCK=0;
return(count);
}
void main(void)
{
char buffer[10];
UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM);
UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) | (1<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);
UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);
UBRRH=0x00;
UBRRL=0x33;
DDRB = 1<<DDB1 ;
printf(" Hello ");
delay_ms(2000);
while(1)
{
( ()sprintf(buffer,"a= %ld",HX711_Read
for (i=0;buffer[i]!=NULL;i++)
{
if (buffer[i]<58 && buffer[i]>47)
{
a=a*10;
a =a+( buffer[i]-48);
}
}
a=(a*(-0.04586))+768133.7;
sprintf(ch1,"%f\r\n", a);
puts(ch1);
a=0;
}
}
حلقه for برای تبدیل کد اسکی به دسیمال هستش و جایی که متغییر a ضرب چند عدد شده واسه کالیبره شدنش هست y=mx+b که میتونید با مراجعه به سایت http://hivetool.org/w/index.php?titl...ll_Calibration با نحوه محاسبات آشنا شوید
شاد باشید
شاد باشید
دیدگاه