HX711 ve Load Cell ile Ağırlık Ölçümü
Load cell (yük hücresi), üzerine uygulanan kuvveti elektriksel sinyale çeviren bir sensördür. HX711 ise bu çok zayıf sinyali okunabilir hale getiren 24 bitlik bir yükselteç ve ADC entegresidir.
İkisi birlikte, dijital tartıdan doluluk takibine, kuvvet ölçümünden akıllı arı kovanına kadar pek çok projede kullanılır.
Load Cell Nasıl Çalışır?
Load cell’in gövdesine strain gauge (gerinim ölçer) adı verilen ince metal folyolar yapıştırılmıştır.
- Load cell’e ağırlık bindiğinde metal gövde mikroskobik ölçüde bükülür.
- Üzerindeki strain gauge de bükülür.
- Gerilen bir iletkenin uzunluğu artar, kesiti azalır → direnci artar.
- Sıkışan tarafta ise direnç azalır.
Dört adet strain gauge, Wheatstone köprüsü adı verilen bir düzende bağlanır. Köprü dengede iken çıkış sıfırdır; ağırlık bindiğinde çok küçük bir gerilim farkı oluşur.
Bu fark milivolt’un binde biri mertebesindedir — bu yüzden doğrudan Arduino’nun analog girişiyle okunamaz. HX711’in görevi tam olarak budur.
Load Cell Tipleri
| Tip | Kapasite | Kullanım |
|---|---|---|
| Bar (çubuk) tip | 1, 5, 10, 20, 50 kg | Mutfak tartısı, küçük platform |
| S tipi | 100 kg – 5 ton | Asılı yük, çekme kuvveti |
| Disk / pancake | 500 kg + | Endüstriyel platform |
| Yarım köprü (half bridge) | 50 kg | Banyo terazisi (4 adet birlikte) |
Kapasite seçimi önemlidir. Ölçeceğiniz maksimum ağırlığın biraz üzerinde bir kapasite seçin. 5 kg ölçmek için 200 kg’lık hücre kullanırsanız çözünürlük kaybedersiniz. Tersine, kapasitesinin üzerinde yüklenen load cell kalıcı olarak deforme olur ve bir daha doğru ölçmez.
Kablo Renkleri
Tam köprü (4 telli) load cell’lerde standart renk kodu:
| Renk | İşlev | HX711 pini |
|---|---|---|
| Kırmızı | E+ (uyarma +) | E+ |
| Siyah | E− (uyarma −) | E− |
| Yeşil | A+ (sinyal +) | A+ |
| Beyaz | A− (sinyal −) | A− |
Bazı üreticilerde beyaz yerine mavi kullanılır. Yeşil ve beyazı ters bağlarsanız ağırlık negatif okunur — bu zarar vermez, sadece iki kabloyu değiştirin veya kodda işareti çevirin.
HX711 – Arduino Bağlantısı
| HX711 | Arduino |
|---|---|
| VCC | 5V |
| GND | GND |
| DT (DOUT) | D3 (herhangi bir dijital pin) |
| SCK | D2 (herhangi bir dijital pin) |
HX711 standart bir protokol (I2C/SPI) kullanmaz; kendine özgü iki telli bir seri iletişimi vardır. Bu yüzden herhangi iki dijital pin kullanılabilir.
Kazanç (gain) ve kanallar
HX711’in iki giriş kanalı vardır:
- Kanal A: 128 veya 64 kazanç — load cell buraya bağlanır
- Kanal B: sabit 32 kazanç — ikinci, daha az hassas ölçüm için
Varsayılan kazanç 128’dir ve load cell için doğru olan budur.
Örnekleme hızı
HX711 kartı üzerindeki RATE pini örnekleme hızını belirler:
- GND’ye bağlı (varsayılan): 10 SPS (saniyede 10 örnek) — daha az gürültü
- VCC’ye bağlı: 80 SPS — daha hızlı, daha gürültülü
Tartı uygulamaları için 10 SPS uygundur. Dinamik kuvvet ölçümü yapıyorsanız 80 SPS’e geçmek için kart üzerindeki dirençte küçük bir değişiklik gerekir.
Kütüphane
Araçlar → Kütüphaneleri Yönet menüsünden HX711 Arduino Library (bogde) veya HX711_ADC (olkal) kütüphanesini yükleyin. Aşağıdaki örnekler bogde sürümüne göredir.
Kalibrasyon — En Kritik Adım
Load cell ham bir sayı üretir. Bu sayıyı grama çevirmek için bir kalibrasyon faktörü bulmanız gerekir.
Adım 1: Ham değeri okuyun
#include "HX711.h"
const int DT_PIN = 3;
const int SCK_PIN = 2;
HX711 tarti;
void setup() {
Serial.begin(9600);
tarti.begin(DT_PIN, SCK_PIN);
Serial.println("Tarti bos olsun, dara aliniyor...");
delay(2000);
tarti.tare(); // sifirla
Serial.println("Hazir. Bilinen bir agirlik koyun.");
}
void loop() {
Serial.print("Ham deger: ");
Serial.println(tarti.get_units(10), 2);
delay(500);
}Adım 2: Faktörü hesaplayın
- Tartı boşken ham değerin 0 civarında olduğunu görün.
- Ağırlığını kesin olarak bildiğiniz bir nesne koyun (örneğin kapalı bir 500 g’lık paket veya kalibre bir ağırlık).
- Okunan ham değeri not edin.
Kalibrasyon faktörü = Ham değer / Gerçek ağırlıkÖrnek: 500 g için ham değer 107.350 okundu.
- Faktör = 107350 / 500 = 214,7
Adım 3: Faktörü koda yazın
#include "HX711.h"
const int DT_PIN = 3;
const int SCK_PIN = 2;
const float KALIBRASYON_FAKTORU = 214.7; // kendi degerinizi yazin
HX711 tarti;
void setup() {
Serial.begin(9600);
tarti.begin(DT_PIN, SCK_PIN);
tarti.set_scale(KALIBRASYON_FAKTORU);
Serial.println("Tarti bos olsun...");
delay(2000);
tarti.tare();
Serial.println("Hazir.");
}
void loop() {
float agirlik = tarti.get_units(10); // 10 okumanin ortalamasi
Serial.print("Agirlik: ");
Serial.print(agirlik, 1);
Serial.println(" g");
delay(500);
}get_units(10) on okumanın ortalamasını alır. Sayıyı artırmak okumayı yumuşatır ama yavaşlatır.
Dara (Tare) İşlevi
tare() fonksiyonu o anki değeri yeni sıfır noktası olarak kabul eder. Kap, tabak veya platformun kendi ağırlığını çıkarmak için kullanılır.
Butonla dara alma:
const int DARA_BUTONU = 4;
void setup() {
pinMode(DARA_BUTONU, INPUT_PULLUP);
// ...
}
void loop() {
if (digitalRead(DARA_BUTONU) == LOW) {
delay(50); // debounce
if (digitalRead(DARA_BUTONU) == LOW) {
tarti.tare();
Serial.println("Dara alindi");
while (digitalRead(DARA_BUTONU) == LOW) delay(10);
}
}
Serial.println(tarti.get_units(10), 1);
delay(300);
}Mekanik Montaj — Ölçümün Yarısı
Load cell projelerinde okumanın bozulmasının en büyük nedeni elektronik değil, mekaniktir.
Bar tipi load cell’in üzerinde genellikle bir ok veya yazı vardır; kuvvetin uygulanması gereken yönü gösterir.
Doğru montaj:
- Bir uç sabit tabana vidalanır.
- Diğer uç platforma vidalanır.
- İki uç arasında boşluk olmalıdır — load cell’in bükülebilmesi gerekir.
- Bu yüzden vidalarken ara pul (spacer) kullanılır.
Sık yapılan hatalar:
- Her iki ucu da aynı düz yüzeye vidalamak. Load cell bükülemez, hiç okuma alamazsınız.
- Platformun tabana sürtmesi. Kuvvetin bir kısmı sürtünmeye gider, okuma tutarsızlaşır.
- Yükün merkez dışına binmesi. Bar tipi load cell’ler merkezi yükleme için tasarlanmıştır; köşeye konan ağırlık farklı okunur. Dört köşeli platformlarda dört load cell veya merkezi bir yük aktarıcı kullanılır.
- Kabloların gergin olması. Kablo platformu çekerse ölçüme karışır. Kabloyu gevşek bırakın ve sabitleyin.
- Aşırı yükleme. Kapasitenin üzerinde yük kalıcı hasar verir. Mekanik bir durdurucu (yükün belli bir noktadan sonra tabana oturması) koymak iyi bir korumadır.
Gürültü ve Kararsızlık
| Belirti | Neden ve çözüm |
|---|---|
| Değer sürekli oynuyor | Besleme gürültülü — HX711’i ayrı, temiz 5V’tan besleyin; USB yerine adaptör deneyin |
| Değer yavaşça kayıyor | Sıcaklık değişimi — ısınma bekleyin, ani sıcaklık değişiminden kaçının |
| Titreşimde bozuluyor | Platformu titreşimden yalıtın, get_units() örnek sayısını artırın |
| Ağırlık kaldırılınca sıfıra dönmüyor | Mekanik sürtünme veya load cell aşırı yüklenmiş |
| Hep aynı sabit sayı | DT/SCK ters bağlı veya load cell kablosu kopuk |
| Negatif okuyor | Yeşil/beyaz kablolar ters — değiştirin veya faktörü negatif yapın |
Sıcaklık Etkisi
Load cell’ler sıcaklıktan etkilenir. İki ayrı etki vardır:
- Sıfır kayması (zero drift): Yük yokken okunan değer sıcaklıkla kayar.
- Duyarlılık kayması (span drift): Aynı ağırlık farklı sıcaklıkta farklı okunur.
Kaliteli load cell’lerde sıcaklık telafisi dahilidir; ucuz modüllerde yoktur.
Pratik önlemler:
- Sistemi çalıştırdıktan sonra 10–15 dakika ısınmasını bekleyin.
- Load cell’i doğrudan güneş, kalorifer veya soğuk hava akımından uzak tutun.
- Uzun süreli ölçümlerde periyodik olarak otomatik dara alın (ağırlık yokken).
Hassasiyet Beklentisi
HX711 24 bitlik bir ADC’dir, ancak bu 24 bitlik kullanılabilir çözünürlük anlamına gelmez. Gürültü tabanı yüzünden pratikte elde edeceğiniz kararlı çözünürlük çok daha düşüktür.
Kaba bir beklenti: iyi bir montajla load cell kapasitesinin yaklaşık 1/2000 – 1/5000’i kadar kararlı okuma alabilirsiniz.
- 5 kg’lık hücrede: 1–2 gram civarı
- 50 kg’lık hücrede: 10–25 gram civarı
Bunun ötesinde bir hassasiyet iddiası (5 kg hücreyle 0,1 g ölçmek gibi) gerçekçi değildir.
Özet
Load cell, strain gauge’lerden oluşan bir Wheatstone köprüsüyle kuvveti çok küçük bir gerilim farkına çevirir. HX711 bu sinyali 24 bit çözünürlükle yükselterek okunabilir hale getirir.
Bu derste şunları öğrendik:
- Strain gauge ve Wheatstone köprüsü prensibini
- Load cell kablo renk kodunu ve HX711 bağlantısını
- Kalibrasyon faktörünün nasıl hesaplandığını
tare()ile dara almayı- Mekanik montajın neden ölçümün yarısı olduğunu
- Sıcaklık kaymasını ve gürültü kaynaklarını
- Gerçekçi hassasiyet beklentisini