Hallo, ich habe mir 2 HX711 Module in China gekauft und möchte diese am STM32F0 testen. http://www.ebay.de/itm/380802908040?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1439.l2649 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
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
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
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
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
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?
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
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
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
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....
Ja, das stimmt, mir ist auch nicht klar wiso man bei dem Chip darauf verzichtet hat.
Man könnte sagen Low Cost Chip oder auf Deutsch... billig chip
:
Bearbeitet durch User
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.
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?
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)
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.
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
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!
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? ;)
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 ;-)
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.
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 ;-)
Moin, das ist ja mal ein interessanter Thread. Weiß jemand zufällig, wie man den HX711 mit ethersex auslesen kann ?
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!
Was soll die Wägezelle denn kosten? Schreib mal ne mail über das mailsystem des frorums
Hallo, hat jemand vielleicht C-Beispielcode für mich für einen AVR? Möchte das ganze ohne SPI betreiben. Gruß Johannes
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
1 | #define sbi(reg, flag) reg |= (flag)
|
2 | #define cbi(reg, flag) reg &= ~(flag)
|
3 | |
4 | #define PIN3_bm 0x08
|
5 | #define PIN4_bm 0x10
|
6 | |
7 | #define HX711_DIR DDRD
|
8 | #define HX711_OUT PORTD
|
9 | #define HX711_IN PIND
|
10 | #define HX711_SCK PIN3_bm
|
11 | #define HX711_DT PIN4_bm
|
12 | |
13 | #define HX711_READY (!(HX711_IN & HX711_DT))
|
14 | |
15 | volatile uint32_t chandata; |
16 | |
17 | void hx711_init(void) |
18 | {
|
19 | // Config HX711 Pins
|
20 | sbi(HX711_DIR, HX711_SCK); // SCK OUT |
21 | cbi(HX711_DIR, HX711_DT); // DT IN |
22 | cbi(HX711_OUT, HX711_SCK); // SCK Low |
23 | sbi(HX711_OUT, HX711_DT); // Pull-up |
24 | }
|
25 | |
26 | void hx711_read(void) |
27 | {
|
28 | // wait until HX is Ready
|
29 | while (!HX711_READY); |
30 | |
31 | chandata = 0; |
32 | |
33 | // pulse the clock pin 24 times to read the data
|
34 | for (uint8_t i = 0; i < 24; i++) |
35 | {
|
36 | sbi(HX711_OUT, HX711_SCK); |
37 | _delay_us(0.5); |
38 | if (HX711_IN & HX711_DT) |
39 | {
|
40 | chandata += 1; |
41 | }
|
42 | chandata <<= 1; |
43 | |
44 | cbi(HX711_OUT, HX711_SCK); |
45 | _delay_us(0.5); |
46 | }
|
47 | chandata >>= 1; |
48 | |
49 | sbi(HX711_OUT, HX711_SCK); |
50 | _delay_us(0.5); |
51 | cbi(HX711_OUT, HX711_SCK); |
52 | _delay_us(0.5); |
53 | }
|
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?
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.
1 | value=value<<8>>8; |
Sieht kryptisch aus. Ein Compiler kann daraus machen:
1 | mov r27,r26 ;2. Byte zum MSB kopieren |
2 | add r27,r27 ;Bit 7 nach Carry |
3 | sbc r27,r27 ;Carry achtfach = korrekte Vorzeichenerweiterung |
Oder auch:
1 | clr r27 ;MSB Null |
2 | sbrc r26,7 ;bleibt Null wenn positiv |
3 | dec r27 ;wird 0xFF wenn negativ |
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
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
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
Hallo Sven, könntest Du bitte Deine Antwort ein wenig präzisieren? >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 Welchen (SMD?) Ferrit hast Du verwendet ? Wo/Wie hast Du den Ferrit denn "eingebaut" -> in Bezug auf das Chinesenmodul (ev. Bild)? Danke. Chris.
Sven schrieb: > Wie oben schon geschrieben haben die Layouter vergessen das Ground zu > verbinden, deswegen habe ich bei mir überall ein Ferit drinne und gut > ist. Wahrscheinlich haben sie ganz im Gegenteil weiter gedacht, um dem Anwender nicht in sein Erdungskonzept rein zu pfuschen. Der schönste 24-Bit Wandler nützt nicht, wenn einem die Gnd-Ströme des Digitalteils das Analogsignal versauen.
Moin, um nochmal auf das Datenblatt und das darin enthaltene Referenz Design zu verweisen. Der HX711 besitzt kein separaten Eingang für Digital Ground. Was genau ich für einen Ferit eingebaut habe weiß ich nicht mehr. Die Dinger sind nun lange schon fest verbaut und verrichten ihre Dienste. Der Ferrit ist zwischen AGND,E- und dem Rest der Schaltung, inklusive Serial Ground. Selbst mit 80Hz abtastrate bleiben die Werte stabil. Gruß Sven
Sven F. schrieb: > Der Ferrit ist zwischen AGND,E- und dem Rest der Schaltung, inklusive > Serial Ground. Dein "Serial Gnd" ist gar nicht vernünftig angeschlossen. Der auf J2 mit "Gnd" bezeichnete Pin geht (zumindest bei meinen Modulen, Kauf 2019/03) einzig an die Pins XI (14) und Rate (15) vom HX711. Eine Versorgung des Moduls über J2 führt im Originalzustand des Moduls dazu, dass das IC über die Schutzdioden der beiden Eingänge rückwärts versorgt wird. /J2.Gnd/ und /J1.E-/ gehören verbunden - ohne irgendwelchen Ferrit-Zirkus.
Hallo, ich habe zwei Fragen bzgl. dieses Moduls: 1.: Wenn ich das ganze per SPI regeln wollte, dann würde ich doch für das Auslesen 3x Kommando 0xAA schicken und im Anschluss einmal Kommando 0x01, sofern ich Kanal A mit 128 Gain nutzen will. ...bzw. wenn für den Fall, dass das MSB zuerst auf den Bus gegeben wird wären es die Kommandos 3x mal 0x55 und einmal 0x80. Korrekt? 2.: Der Mininmalwert beträgt 0x800000 Der Maximalwert beträgt 0x7FFFFF jeweils im 2er Komplement, allerdings bei nur 24 Bit Auflösung. Was entspricht denn nun einer gemessenen 0,0kg Gewicht? Welche Zahlenbereiche würde ich erhalten, wenn ich die Waage belaste Welche Zahlenbereiche würde ich erhalten, wenn ich an der Oberfläche der Waage ziehe, sie also negativ auslenke. Ich würde jetzt erwarten, dass ich bei Belastung eine Repräsentation von 0 bis 4095 erhalte und bei Zug die Dezimalwerte 4096 bis 8192, also 12 Bit pro Auslenkung, was ja dann einer 24Bit-Komplenentärdarstellung entsprechen würde und eigentlich den Zahlenbereich -1 bis -4096 repräsentiert. Gehen diese Überlegungen in die richtige Richtung?
SPI schrieb: > Ich würde jetzt erwarten, dass ich bei Belastung eine Repräsentation von > 0 bis 4095 erhalte und bei Zug die Dezimalwerte 4096 bis 8192, also 12 > Bit pro Auslenkung, was ja dann einer 24Bit-Komplenentärdarstellung > entsprechen würde und eigentlich den Zahlenbereich -1 bis -4096 > repräsentiert. > > Gehen diese Überlegungen in die richtige Richtung? Wie kommst du von 24 Bit plötzlich auf zwei mal 12 Bit. Zwei mal der Wertebereich von 12 Bit ergibt 13 Bit.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.