Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 18 kwi 2024, o 08:07


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 22 ] 
Autor Wiadomość
PostNapisane: 12 lip 2015, o 09:37 
Offline
Nowy

Dołączył(a): 25 lip 2014
Posty: 4
Lokalizacja: Wyszków
Pomógł: 0

Witam.
Czy ktoś z szanownych kolegów próbował napisać bibliotekę do obsługi układu HX711 tj. przetwornika ADC stworzonego do współpracy z czujnikami tensometrycznymi.
Link do dokumentacji układu HX711



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lip 2015, o 10:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 sty 2014
Posty: 243
Pomógł: 9

No a na samym dole dokumentacji nie masz gotowego kodu źródłowego w C do obsługi tego układu?

_________________
http://www.ate-zbaszyn.eu



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lip 2015, o 13:00 
Offline
Nowy

Dołączył(a): 25 lip 2014
Posty: 4
Lokalizacja: Wyszków
Pomógł: 0

Tak zgadza się, tylko sporo jest napisane w asm. A dla mnie było by idealnie aby ktoś podzielił się kodem napisanym w C pod AVR najlepiej z projektu wagi.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lip 2015, o 19:29 
Offline
Użytkownik

Dołączył(a): 01 sty 2014
Posty: 116
Pomógł: 14

Po przeczytaniu dokumentacji i lekkim przerobieniu programu na końcu masz szkielet programu. Musiałbyś jeszcze sprawdzić czy sygnał zegarowy mieści się w tym co pisze dokumentacja. Ale dla częstotliwości taktowania 8MHz powinno być w porządku.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 sie 2015, o 14:16 
Offline
Nowy

Dołączył(a): 25 lip 2014
Posty: 4
Lokalizacja: Wyszków
Pomógł: 0

Dziękuję za gotowy kod.
Wszystko ruszyło, tylko trzeba było poprawić jedną linijkę.
Zamiast:
Kod:
while(!(PINx & DATA_PIN));     //oczekiwanie na stan niski na DATA

trzeba zmienić na:
Kod:
while(PINx & DATA_PIN);     //oczekiwanie na stan niski na DATA



Dręczy mnie jeszcze jedna rzecz, mianowicie stabilność pomiaru tych układów (HX711).
posiadam ten układ:
Obrazek
schemat tego układu:
Obrazek
Wykorzystuję wejście A i wzmocnienie równe 128. 24 bity to dziesiętne max. 16777215.
Podczas odczytu nawet przy zwartych ze sobą (IN+) i (IN-) wynik pomiarów pływa ciągle w zakresie ok. 200 max. 300 jednostek.
Skoki są ciągłe po 80, 50 jednostek, różnie.
I tutaj pytanie czy tak po prostu ma być czy coś robię nie tak?



Ostatnio edytowano 28 sie 2015, o 20:32 przez Adam_Kot, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 sie 2015, o 14:32 
Offline
Użytkownik

Dołączył(a): 01 sty 2014
Posty: 116
Pomógł: 14

Pierwsza sprawa: Jak zasilasz układ? W tym przypadku jest to ważniejsze niż zwykle.

Druga sprawa: Spróbuj odczytać trochę danych i sprawdzić jaki rozklad wartości otrzymasz. Mógłbyś spróbować zastosować nadpróbkowanie zeby otrzymać stabilniejszą wartość albo zastosować jakiś filtr dolnoprzepustowy.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 sie 2015, o 20:50 
Offline
Nowy

Dołączył(a): 25 lip 2014
Posty: 4
Lokalizacja: Wyszków
Pomógł: 0

Zasilanie zrobiłem oddzielne na uC i na HX711 na LM78L05 .
A oto schemat:
Obrazek
I zdjęcie gotowej płytki PCB:
Obrazek
Jak na razie zastosowałem średnią geometryczną z 6 pomiarów. Jest nieco lepiej.



Ostatnio edytowano 28 sie 2015, o 20:25 przez Adam_Kot, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 paź 2015, o 10:40 
Offline
Nowy

Dołączył(a): 13 maja 2014
Posty: 9
Lokalizacja: Kraków
Pomógł: 0

Witam
Zmontowałem podobny układ ale ponieważ nie mam z czym porównać, czy mógłbym się dowiedzieć jaką wartość przesyła HX711 przy zwartych wejściach. U mnie jest to chyba połowa zakresu ale chciałbym się upewnić czy jest to poprawna wartość.

Interesuje mnie jeszcze co robi poniższa linijka programu do obsługi HX711
Składnia: [ Pobierz ] [ Ukryj ]
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Programowo wiem że jest to XOR, ale jaką funkcję spełnia w programie - wygląda jakby przy zwartych wejściach ustawiał wynik na "środek" zakresu, czyli 8388608.

Pozdrawiam
Robak



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 paź 2015, o 19:27 
Offline
Użytkownik

Dołączył(a): 06 maja 2014
Posty: 415
Lokalizacja: Kraków
Pomógł: 26

Cześć.
Aktualnie też pracuję nad hx711. Dzisiaj polutowałem płytkę i właśnie próbuję ją oprogramować.

Na pewno należy zwrócić uwagę, że przetwornik ten dokonuje pomiaru +/-, czyli musi przesyłać także liczby ujemne. Dlatego wynik zakodowany jest w kodzie U2(dopełnienie dwójkowe), które potem trzeba sobie przeliczyć na dziesiętny. Czyli ten Twój "środek zakresu", to tak na prawdę okolice 0 :)
Dodatkowo w karcie katalogowej jest informacja: Input offset drift = 0.2mV (0.4mV w zależności od wzmocnienia) - czyli jeśli dobrze rozumiem, już na starcie można się spodziewać takiego niezrównoważenia. Nie wiem tylko, czy jest ono stałe dla konkretnej sztuki przetwornika, czy może pływać w każdej chwili w tym zakresie :( A tak się składa, że 0,2mV to dla mnie bardzo dużo.

Edit: siedzę kolejną godzinę i nie wiem, jak wyliczyć rzeczywiste napięcie na podstawie odczytu z HX711 - coś mi matematyki i myślenia brakuje :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 paź 2015, o 19:44 
Offline
Użytkownik

Dołączył(a): 06 maja 2014
Posty: 415
Lokalizacja: Kraków
Pomógł: 26

Panowie, potrzebuję pomocy.

Zmontowałem układ jak na schemacie:
Obrazek
Tutaj karta katalogowa HX711: http://www.dfrobot.com/image/data/SEN0160/hx711_english.pdf.
Napisałem sobie program komunikujący mikrokontroler z tym przetwornikiem i na moje oko działa poprawnie. Tak wygląda przebieg z komunikacji:
Obrazek

Mam 25 taktów zegara - z czego w trakcie 24 odczytuję wartość przetwornika, natomiast 25 konfiguruje przetwornik w tryb pomiaru kanału A, wzmocnienie 128.

I teraz pierwszy problem: nie potrafię sobie otrzymanej wartości przeliczyć na wartość zmierzonego napięcia. Przetwornik jest 24 bitowy, czyli teoretycznie wartość 0V - 4,096V (napięcie odniesienia) powinien podzielić na 2^24 stopni. Ale jak to jest w momencie, gdy przetwornik jest różnicowy, czyli może podawać także napięcie ujemne? W dokumentacji wyczytałem, że HX711 wynik przesyła w kodzie U2. Czy z tego wynika, że wartość 0V -4,096V prześle na 23 bitach?
Dodatkowo należy uwzględnić wzmocnienie x128, czyli tak na prawdę na tych 24(23?) bitach będę miał pomiar napięcia z zakresu 0V-32mV (a może -16mV - 16mV ? ). Pogubiłem się.

Kolejny problem jest taki, że w momencie gdy zmieniam temperaturę PT100 (skok napięcia zmierzony multimetrem wynosi 1,5mV) - odczyty z przetwornika zmieniają się tylko dość nieznacznie, podczas gdy te 1,5mV to jest około 5% zakresu pomiarowego ...

Czy ktoś mógłby wyjaśnić mi dokładniej tą sprawę i wskazać ewentualne błędy, które popełniam w schemacie podłączeń / logice przeliczania odczytu? A może coś źle w karcie katalogowej zrozumiałem?

Krzysiek.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2015, o 13:52 
Offline
Nowy

Dołączył(a): 13 maja 2014
Posty: 9
Lokalizacja: Kraków
Pomógł: 0

Hej
A czy napięcie wejściowe na przetwornik nie powinno się mieścić w zakresie +- 20mV lub +- 40 mV na kanale A w zależności od przyjętego wzmocnienia?
Co prawda to są rozważania czysto teoretyczne i to przy zasilaniu z 5V.

"Channel A can be programmed with a gain of 128 or 64, corresponding to a full-scale differential input voltage of ±20mV or ±40mV respectively, when
a 5V supply is connected to AVDD analog power supply pin"

Ciekawy jestem czy dopuszczalne napięcie wejściowe na kanałach A i B jest zależne od napięcia zasilania zasilania części analogowej.
Dopuszczalne napięcie zasilania układu i jak mam rozumieć również jego części analogowej wynosi od 2.6V do 5.5V.
Mniemam że jeżeli na wejście A przy mnożniku 128 podamy wartość napięcia 20mV to otrzymam cyfrowo wynik 7FFFFF niezależnie z jakiego napięcia będę zasilał układ HX711.
Przydałoby się to sprawdzić namacalnie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lis 2015, o 18:39 
Offline
Użytkownik

Dołączył(a): 06 maja 2014
Posty: 415
Lokalizacja: Kraków
Pomógł: 26

Bardzo się męczyłem z tym układem. Po iluś dniach ślęczenia i denerwowania się doczytałem w karcie:

Common mode input - min: AGND+1.2 max: AVDD-1.3

Podniosłem napięcie wyjściowe z mostka do tego poziomu i zaczęło działać.
Co do wzmocnienia - chodzi o to, żeby napięcie różnicowe, przemnożone przez dane wzmocnienie nie przekroczyło napięcia odniesienia.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sty 2016, o 10:13 
Offline
Nowy

Dołączył(a): 20 sie 2014
Posty: 16
Pomógł: 0

Hej
Meczę się już parę dni z modułem HX711 i nie mogę odczytać nic innego jak 8388608 nie wiem czy moduł jest uszkodzony czy ja coś źle robię.
oto mój kod
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Ostatnio edytowano 13 sty 2016, o 15:01 przez pyszny21, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2016, o 22:15 
Offline
Moderator zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 18 lip 2012
Posty: 3187
Lokalizacja: Kraków - obok FAB5 ATMEL'a
Pomógł: 89

topic7402.html



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 wrz 2016, o 13:19 
Offline
Nowy

Dołączył(a): 13 maja 2014
Posty: 9
Lokalizacja: Kraków
Pomógł: 0

W linii 62 zamiast
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

powinno być:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Poprzedni zapis będzie działał ale jedynie w wypadku gdy DATA_PIN to PB0.
Mi też bardzo długo zajęło zanim udało mi się uruchomić poprawną komunikację z tym układem, ale teraz wygląda że wszystko działa dobrze.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sty 2017, o 19:56 
Offline
Użytkownik

Dołączył(a): 09 gru 2016
Posty: 46
Pomógł: 4

W tym natłoku informacji pogubiłem się. Czy ktoś może mi zrobić tak w jednym komentarzu kompleksowo najprostszy program do modułu z hx711 (Czyli takie coś: https://pl.aliexpress.com/item/HX711-Weighing-Sensor-Dual-Channel-24-Bit-Precision-A-D-Module-Pressure-Sensor/1886314503.html?spm=2114.13010608.0.0.lni1fj.), bo tu wiedzę każdy z jakimś defektem, opisanym w komentarzu niżej. Tylko odbiór danych z wyświetleniem sobie poradzę. Plus oczywiście schemat, najprostszy jak podłączyć belkę tensometryczną (posiadam zemic l6e), bo tu kolega krzysssztof pisał coś o podnoszeniu napięcia wejściowego.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 lut 2017, o 14:50 
Offline
Nowy

Dołączył(a): 29 mar 2014
Posty: 2
Pomógł: 0

Hej
Czy komuś udało się poprawnie odczytywać dane z HX711? Męczę się z tym modułem od kilku dni i jedyne co mogę odczytać to ciągła wartość 8388623 ;/ Prosiłbym o jakąś podpowiedź



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 paź 2017, o 00:53 
Offline
Nowy

Dołączył(a): 28 paź 2017
Posty: 2
Pomógł: 0

Temat trochę stary, ale jako że widzę, że niektórzy mają nadal z tym problem + sam trochę włosów powyrywałem szukając błędu...

miors i reszta, szukająca błędu w skutek którego HX711 zwraca ciągle 8388623 itp.

W powyższych kodach jest parę błędów - a przynajmniej tak mi się wydaje :P
Mój, poniższy kod, działa idealnie.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Gdzie to
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
w 40. linii to kalibracja wagi.. Może nie najlepsza, ale dla mnie działa. Ten minus też jest istotny, bo inaczej po nałożeniu ciężaru na sztangę wartość maleje. ;)

Błędy z poprzednich postów:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
- Daniel880, bez tej negacji sam AND nie zeruje CLK_PIN, a zgodnie z DS, powinien być zerowany w tym miejscu.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
- Adam_Kot, nie wiem jak Tobie to tak działało, bo to bez negacji szuka "1", czyli stanu kiedy HX711 nie jest gotowy do przesyłu danych :P
A resztę, jak brak przesunięć bitowych zostały opisane już przez kolegów wyżej.

Pozdrawiam!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lis 2017, o 18:16 
Offline
Użytkownik

Dołączył(a): 09 gru 2016
Posty: 46
Pomógł: 4

W sumie to nie chce mi się analizować twojego kodu z moim (też po wielu próbach udało mi się uruchomić wagę). Jednak moją uwagę przykuła jedna kwestia:
endlesik napisał(a):
Ten minus też jest istotny, bo inaczej po nałożeniu ciężaru na sztangę wartość maleje.

Tutaj mogę Ci podpowiedzieć, że prawie, że na pewno masz belkę tensometryczną na odwrót podpiętą. Kiedyś montowałem wagę na mierniku axis se-02 i tam w instrukcji jest takie mądre zdanie:
Cytuj:
Jesli podczas podłaczania belki tensometrycznej brakuje opisu wyprowadzen, należy wykorzystac omomierz w celu
identyfikacji wyprowadzen. +Exc i +Ref (+Sens) sa zwarte ze soba (od strony belki), –Exc i –Ref (-Sens) – również.
Jeżeli belka nie ma sygnałów +Ref i –Ref, w celu wyróżnienia +Exc i –Exc należy wybrac pare wyprowadzen,
pomiedzy którymi jest najwieksza opornosc (pomiedzy +Signal oraz –Signal opornosc jest mniejsza, gdyż nie ma
tam elementu kompensacji temperaturowej). Polaryzacje pozostałych połaczen +I oraz –I należy ustalic metoda
próby (dwie możliwosci). Przy wzroscie obciażenie wskazanie wagi bezposrednio z A/C (monitoring) powinno sie
zwiekszac.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 gru 2017, o 16:11 
Offline
Nowy

Dołączył(a): 28 paź 2017
Posty: 2
Pomógł: 0

O, super! Mój błąd, że kierowałem się głównie kolorem kabelków, myślałem, że to standard ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 sie 2018, o 14:15 
Offline
Nowy

Dołączył(a): 08 sie 2018
Posty: 1
Pomógł: 0

Cześć, napisałem program do obsługi hx711. pod wpływem nacisku odczytywane dane się zmieniają i ogólnie mam komunikację, lecz niestety mam duży problem z przeliczeniem wartości odczytanych z hx711 na gramy. Czy mógłby ktoś pomóc??



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 gru 2018, o 09:36 
Offline
Użytkownik

Dołączył(a): 09 lis 2014
Posty: 78
Pomógł: 0

Witam !!!
Uruchomiłem wagę na podstawie programu kol endlesik. Chcialbym do tej samej atmegi podłączyć drugi tensometr. Jak to będzie w programie
Czy się da obsłużyć procem dwa przetworniki ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 22 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO