mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik HX711 Module


Autor: Andreas (Gast)
Datum:
Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Hallo,

ich habe mir 2 HX711 Module in China gekauft und möchte diese
am STM32F0 testen.

Ebay-Artikel Nr. 380802908040

Nun habe ich die Module angeschlossen und festgestellt dass die 
Schaltung
von der Referenz abweicht.
Bei den Modulen aus China ist AGND nicht verbunden,
am Anschluss AGND liegen ca. 700mV an.
Wenn man AGND und GND verbindet steigt die Stromaufname auf 5mA,
das ist viel mehr als die im Datenblatt angegebenen 1,5mA.

Beide Module scheinen soweit zu funktionieren.
Sie geben einen 24bit Wert aus, bei dem die oberen 16bit stabil
sind und die restlichen bits sich mehr oder wenige ändern.
Das sieht alles gut aus.

Allerdings liegt der digitale low Pegel auch bei 700mV.
Das sollte sicher nicht so sein.

Zum Testen habe ich am Eingang nur eine Brücke aus 4 gleichen 
Wiederständen angeschlossen.

Merkwürdig ist auch dass am Kollektor des Transistors die vollen 3V
von VCC anliegen, der Transistor kann also gar nichts regeln.

Was mache ich falsch?
Sicher bin ich nicht der Einzige der solche Module gekauft hat,
hat jemand solche Module schon mal benutzt?

Andreas

Autor: Sven Fabricius (mr_sven)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

hab jetzt auch 2 Module.
Bist du da schon weiter gekommen?

Ich würde auf einen Copy&Paste Fehler des Chinesischen Herstellers 
tippen.

Gruß Sven

Autor: Sven Fabricius (mr_sven)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

also ich hab das Modul getestet, mit nachgerüsteter GND Brücke ist alles 
IO.

Meine Vermutung ist, dass der Layouter der die Platine designed hat, 
Geistig keine Verbindung zwischen AGND, GND und dem Ground Symbol 
herstellen konnte.

Und dann die 10 anderen Hersteller, die es in C&P Manier nachgebaut 
haben, auch nicht darüber nachgedacht haben.

Die angesprochene Stromaufnahme könnte ich mir so erklären, dass die im 
Datenblatt angegebenen Werte sich rein auf den Chip beziehen. Dann kommt 
natürlich die ganze Schaltung und die Last-Zelle hinzu.

Ansonsten habe ich es am XMega zu laufen.

Ich wollte jetzt nochmal probieren wie sich die Werte verhalten wenn ich 
von 10SPS auf 80SPS umschalte.

Gruß Sven

Autor: Nihat Parlatan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Sven,

ich möchte die HX711 Module als Messverstärker für Spannungen im µVolt 
Bereich verwenden.
Geht das mit diesen Modulen?
Funktionieren Deine beiden Hx711 inzwischen?
Wer hat Erfahrung mit HX711 als Messvestärker für sehr niedrige 
Spannungen?

Gruß
Nihat

Autor: Sven Fabricius (mr_sven)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

also ich habe die beiden Module an einem ATTiny2313 mit 80SPS laufen.

Ob man damit Spannungen in µVolt Bereich messen kann, weiß ich nicht, 
muss man aus probieren.

Ich habe da jeweils eine 10Kg Messdose dran. Im Gramm Bereich ist er 
auch sehr stabil. Darunter wird es dann ein bisschen wackelig, das liegt 
aber bestimmt an den langen Messleitungen.

Gruß Sven

Autor: Jörg B. (joerg-sh)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Sven Fabricius schrieb:
> Meine Vermutung ist, dass der Layouter der die Platine designed hat,
> Geistig keine Verbindung zwischen AGND, GND und dem Ground Symbol
> herstellen konnte.


Das ist Quatsch, bei 24 Bit AD Wandlung macht es durchaus Sinn die 
Grounds zu trennen und über einen "Filter" zu verbinden. Von daher hat 
der Layouter schon mit gedacht.

Warum sollte der Chip Hersteller sonst wohl 2 verschiedene Grounds an 
einem Chip haben?

Autor: Johannes V. (j-v)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jörg,

kannst Du eventuell einen Hinweis geben, wie man das am besten 
realisiert?
Ich habe es schon mal versucht AGND und DGND mittels eines Ferrits zu 
verbinden, hat aber kein messbares Resultat gehabt.

Besten Dank,

Johannes

Autor: Jörg B. (joerg-sh)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Ich denke mal mit den Modulen wird man da kaum messbare Resultate 
erzielen. Da wirst du schon ein eigenes Layout machen müssen. AGnd und 
GND mit separaten Groundflächen versehen... Dafür studieren andere um 
das zu lernen. Dazu dann noch viel Berufserfahrung usw....

Du kannst mal nach Reference Layouts von anderen 24 bit adc suchen...

: Bearbeitet durch User
Autor: Sven Fabricius (mr_sven)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
ich will euch ja net die Stimmung versauen, aber vieleicht ist es euch 
noch nicht auf gefallen, der Chip hat nur einen Ground.

Gruß Sven

Autor: Jörg B. (joerg-sh)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Da hast du recht Sven, ich arbeite mit anderen ADCs von TI, die haben 2 
Grounds.

Trotzdem ist es Sinnvoll die GNDs zu trennen. Der Chip wird ja digital 
angesprochen....

Autor: Sven Fabricius (mr_sven)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, das stimmt, mir ist auch nicht klar wiso man bei dem Chip darauf 
verzichtet hat.

Autor: Jörg B. (joerg-sh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man könnte sagen Low Cost Chip oder auf Deutsch... billig chip

: Bearbeitet durch User
Autor: Jörg B. (joerg-sh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
By the way... hat jemand code für STM32 zufällig dafür, scheint ja nicht 
besonders aufwendig zu sein.... Das Arduino LIB kommt ja mit recht wenig 
Zeilen aus.

Autor: Wolfgang A. (oszillofant)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, bin neu hier.
Ich habe nirgends etwas darüber gefunden, ob man mit dem HX711 eine 
Wägezelle auch mit dem PC auslesen kann. Es heißt zwar überall "einfache 
serielle Kommunikation", aber kann ich den HX711 auch an eine RS232 
anschließen, oder kann der nur mit µC seriell kommunizieren?

Autor: dfd (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Wolfgang A. schrieb:
> Es heißt zwar überall "einfache
> serielle Kommunikation", aber kann ich den HX711 auch an eine RS232
> anschließen, oder kann der nur mit µC seriell kommunizieren?

seriell heißt hier SPI 
(http://de.wikipedia.org/wiki/Serial_Peripheral_Interface)

Autor: Wolfgang A. (oszillofant)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok - besten Dank!
Ich biete mein gestern im Kaufrausch bestelltes HX711-Modul dann gegen 
Portokosten als verspätetes Weihnachtsgeschenk an und betrachte meine 
Ausgaben für das Teil dann als Lehrgeld.

Autor: Sven Fabricius (mr_sven)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, nunmal net gleich die Flinte ins Korn werfen.
Zum Einen ist das noch nicht mal SPI sondern einfaches Bit-Banging.
Zum Anderen ist das eine sehr gute und einfache Aufgabe um in die µC 
Welt ein zu tauchen.
Nen kleiner MAX232 und ein ATTiny2313 oder ähnliches auf ein Lochraster 
gelötet, noch 2-3 Zeilen Programmieren, fertig ist der Serial HX711 
Wandler.


Gruß Sven

Autor: Jörg B. (joerg-sh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einfacher geht es mit einem Arduino...da bekommst du die Anwendung quasi 
dazu...

Autor: Wolfgang A. (oszillofant)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klingt wie "Mut zum Microcontroller" - dabei wollte ich doch nur meine 
Schafe wiegen und habe für 3 Euro das falsche Teil bestellt....
Meine Elektronikkenntnisse sind auf dem Stand der 80er-Jahre. Es gab da 
Transistoren und auch schon ICs, sogar schon das erste Digitaluhr-Chip, 
aber noch keine Microcontroller und keine (privaten) Computer.
Ich bitte also um Verständnis, dass ich mich da erst mal bisschen schlau 
mache, bevor ich eine neue unabsehbare Baustelle eröffne.
Aber danke!

Autor: Jörg B. (joerg-sh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schafe Wiegen mit einer Wägezelle??? Das wird wohl eher nichts.  Da 
musst du dann schon 4 Stück nehmen. An jeder Ecke der Plattform eine!

Oder hängst du die Schafe an einen Strick? ;)

Autor: Wolfgang A. (oszillofant)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jörg B. schrieb:
> Schafe Wiegen mit einer Wägezelle??? Das wird wohl eher nichts.  Da
> musst du dann schon 4 Stück nehmen. An jeder Ecke der Plattform eine!
>
> Oder hängst du die Schafe an einen Strick? ;)

Zur Waage an sich habe ich ja noch nichts geschrieben, weil das vom 
Forumsthema wegführen würde. Hier also nur in Kürze und mit 
Entschuldigung:
Ich habe eine alte Dezimalwaage (http://www.themt.de/org-1360-49.html) 
so umgebaut, dass ein Schaf draufpasst. Über die Genauigkeit, mit der 
das Ding nach wie vor läuft, war ich selber baff; von allen digitalen 
Alternativen können da wohl nur die Profigeräte mithalten, schätze ich. 
Nur: Man muss eben Gegengewichte auflegen und dann einen Schieber 
schieben, so dass ein Zehntel des gewogenen Gewichts gegenhält. Mit der 
Ziege klappte das nach einigem Zureden ganz gut, aber Schafe sind 
unruhiger und lassen einem kaum die Zeit zum Austarieren, wenn sie denn 
überhaupt die Waage betreten. (offtopic: Wie man die Viecher da 
draufkriegt, gehört nun wirklich nicht hier her; dazu braucht es nämlich 
keinen Microcontroller, sondern ich betätige mich am besten selbst als 
Makrocontroller).
So kam mir die Idee, das Gegengewicht durch einen digitalen Aufnehmer zu 
ersetzen, um schneller ablesen zu können. Danach hatte ich noch die 
Idee, den Verlauf am besten gleich zu speichern und in aller Ruhe später 
auszuwerten.
Ich bin günstig an eine 50-Kilo-Wägezelle (YZC-516) gekommen und 
probiere nun mit dieser herum; die könnte ich wohl so reinschnallen, 
dass sie einen Messbereich bis 150kg oder 250kg abdeckt. Im Moment bin 
ich dabei, die Auslesbarkeit der Wägezelle direkt mit der Soundkarte des 
Messrechners zu testen (16 Bit, passender Spannungsbereich, geht aber 
wegen Hochpassfilter allenfalls mit gepulstem Betrieb). Dann bin ich 
eben zwischendurch über diese HX711 gestolpert.... Ich bin auch für 
einfachere Varianten offen, aber die Viecher einfach auf eine Plattform 
mit 4 Wägezellen zu stellen (gerne einer an jeder Ecke!), das kommt mir 
bislang einfach ein wenig zu banal vor - es erinnert mich zu sehr an 
diese dämlichen schrottigen Personenwaagen, die überall rumstehen ;-)

Autor: Jörg B. (joerg-sh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist halt das gängige, 4 Wägezellen

So geht es natürlich auch, aus Ülatzgründen würde so etwas heute aber 
schon niemand mehr bauen. Ich würde an deiner Stelle mir ein Arduino 
Mega besorgen.
Dazu noch ein 2 oder 4 Zeilen Display. Wenn du die Daten speichern 
willst noch einen sd card adapter und du hast alles was du brauchst. 
Arduino ist relativ simple und es gibt gute Unterstützung in Foren dazu.

Autor: Wolfgang A. (oszillofant)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke. Ich werde mich mal schlau machen, wie das mit dem Arduino laufen 
würde. Keine schlechte Idee, die Weihnachtsferien zu nutzen, um ein 
neues Kapitel der Elektronik aufzuschlagen ;-)

Autor: Tom Weber (limpbiz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin, das ist ja mal ein interessanter Thread. Weiß jemand zufällig, wie 
man den HX711 mit ethersex auslesen kann ?

Autor: Wolfgang A. (oszillofant)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Also Leute, abschließender Bericht:
Die rein mechanische Variante mit Gegengewichten hat inzwischen so gut 
funktioniert (Schafe haben ohne größere Probleme die Waage betreten, auf 
Wunsch auch einzeln, und ausreichend lange stillgehalten), dass ich nun 
doch nicht an der elektronischen Variante weiterarbeite.

Inzwischen habe ich also nicht nur das HX711 herumliegen, sondern auch 
eine niegelnagelneue Wägezelle (50 kg, S-Form, sieht aus wie im Bild). 
Schade drum, aber vielleicht finde ich ja noch einen Abnehmer, oder ich 
finde später mal noch Verwendung.

In jedem Fall danke für alle Forumstips!

Autor: Jörg B. (joerg-sh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was soll die Wägezelle denn kosten?

Schreib mal ne mail über das mailsystem des frorums

Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hat jemand vielleicht C-Beispielcode für mich für einen AVR?

Möchte das ganze ohne SPI betreiben.

Gruß
Johannes

Autor: Sven Fabricius (mr_sven)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

bitteschön, ist aber nur der erste Modus, ggf. musst du wenn du den 
anderen Input einlesen möchtest, den BitCount anpassen.

Gruß Sven
#define sbi(reg, flag) reg |= (flag)
#define cbi(reg, flag) reg &= ~(flag)

#define PIN3_bm       0x08
#define PIN4_bm       0x10

#define HX711_DIR     DDRD
#define HX711_OUT     PORTD
#define HX711_IN      PIND
#define HX711_SCK     PIN3_bm
#define HX711_DT      PIN4_bm

#define HX711_READY   (!(HX711_IN & HX711_DT))

volatile uint32_t chandata;

void hx711_init(void)
{
  // Config HX711 Pins
  sbi(HX711_DIR, HX711_SCK); // SCK OUT
  cbi(HX711_DIR, HX711_DT);  // DT  IN
  cbi(HX711_OUT, HX711_SCK); // SCK Low
  sbi(HX711_OUT, HX711_DT);  // Pull-up
}

void hx711_read(void)
{
  // wait until HX is Ready
  while (!HX711_READY);

  chandata = 0;
  
  // pulse the clock pin 24 times to read the data
  for (uint8_t i = 0; i < 24; i++)
  {
    sbi(HX711_OUT, HX711_SCK);
    _delay_us(0.5);
    if (HX711_IN & HX711_DT)
    {
      chandata += 1;
    }
    chandata <<= 1;
    
    cbi(HX711_OUT, HX711_SCK);
    _delay_us(0.5);
  }
  chandata >>= 1;
  
  sbi(HX711_OUT, HX711_SCK);
  _delay_us(0.5);
  cbi(HX711_OUT, HX711_SCK);
  _delay_us(0.5);
}

Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke,

kannst du mir den Teil evtl noch erklären?

    if (HX711_IN & HX711_DT)
    {
      chandata += 1;
    }
    chandata <<= 1;

    cbi(HX711_OUT, HX711_SCK);
    _delay_us(0.5);
  }
  chandata >>= 1;

Ich kenne die Operation <<= und >>= nicht, konnte mit Google auch nichts 
finden, was passiert dort genau?

und was macht chandata+=1 ? Müsste normalerweise nicht +1 sondern das 
bit an Pos x gesetzen werden?

Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habs mittlerweile verstanden, hat sich erledigt :-)

Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

kann mir jemand noch sagen, wie ich die 24bit Zahl als Zweierkomplement 
in eine echte int32_t bekomme?

Da bin ich mir noch nicht sicher wie ich es machen kann.

Autor: Henrik Haftmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
value=value<<8>>8;

Sieht kryptisch aus. Ein Compiler kann daraus machen:
 mov r27,r26  ;2. Byte zum MSB kopieren
 add r27,r27  ;Bit 7 nach Carry
 sbc r27,r27  ;Carry achtfach = korrekte Vorzeichenerweiterung
Oder auch:
 clr r27    ;MSB Null
 sbrc r26,7 ;bleibt Null wenn positiv
  dec r27   ;wird 0xFF wenn negativ

Autor: werbung (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen, ist zwar schon ein älterer Thread aber ich hatte mit dem 
HX711 gerade ein Aha-Erlebnis, das ich nicht vorenthalten will:

Durch die 0,7V Ground-Offset wird der Datapin vom HX711 nur auf ca 1 V 
runtergezogen. Bei 3V UCs reicht das u.U. nicht aus um "low" sicher zu 
erkennen.
Mit 2,7Kohm Pullups hats jedenfalls nicht mehr funktioniert. Habe dann 
den Pullup auf 10KOhm vergrössert, dann ging es gerade so. : Lowpegel 
ist immer noch um ca 1V.

Oszi ist mein Freund !

Danke für die Aufmerksamkeit

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
werbung schrieb:
> Mit 2,7Kohm Pullups hats jedenfalls nicht mehr funktioniert. Habe dann
> den Pullup auf 10KOhm vergrössert, dann ging es gerade so.

Warum Pullups bei SPI?

MfG Klaus

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, ich verstehe das Problem nicht ganz.
Wie oben schon geschrieben haben die Layouter vergessen das Ground zu 
verbinden, deswegen habe ich bei mir überall ein Ferit drinne und gut 
ist.

Gruß Sven

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.