Poniższy projekt wykonałem samodzielnie aczkolwiek na zlecenie kolegi i zastanawiałem się czy publikować ten projekt czy też nie. Doszedłem jednak do wniosku, że skoro prawa autorskie zostały u mnie to jednak podzielę się nim z wami. Projekt do celów dydaktycznych dla studentów :).
Pewnie wielu z was wśród swoich projektów bawiło się czujnikami temperatury, czasu, ciśnienia, Czas najwyższy zająć się pomiarem masy. Czujnikiem pomiarowym służącym do tego jest belka z mostkiem tensometrycznym ( nie będę opisywać zasady działania bo w sieci jest duża liczba publikacji na ten temat wystarczy wpisać słowo “Tensometr” u wujka Googla)
OK przejdźmy do założeń projektu:
- układ ma składać się z belki pomiarowej do 3 kg
- układ musi dokonywać pomiaru przynajmniej 1-2 razy na sekundę
- układ musi zapisywać dane na karcie SD w pliku CSV z markerami czasowymi !!!
- układ powinien wyświetlać wykres zmiany w czasie rzeczywistym na wyświetlaczu
Aby zrealizować powyższe założenia zdecydowałem się zaprojektować płytkę i wykorzystać następujące moduły :
- Arduino NANO V3
- belka tensometryczna do 5kg
- wzmacniacz operacyjny do w/w mostka hx711
- Zegarek czasu rzeczywistego ds1307
- czytnik kart microSD card module
- Przetworniczkę DC-DC Step Down
- moduł Bluetooth HC-05
- parę kondensatorów i rezystorów, stabilizator 5V
- zasilacz 5A 12V
Rolę wyświetlacza przejął stary tablet HP Slate 7 bez baterii z Androidem 4.4
Schemat układu pomiarowego przedstawia poniższy rysunek:
OK SPYTACIE TYLKO PO CO KOMU POMIAR WAGI I TYLE ZACHODU O NIC ????
Jak możecie się domyślić poniższy układ nie służy do pomiaru samej wagi, ale bazuje na jej działaniu – generalnie bada zmianę siły nacisku na materiał w trakcie tarcia. (klocki hamulcowe itp)
Wracając do projektu
Połączenia drucików, projekt pcb itd ,nie stanowią właściwe problemu bo jak większość majsterkowiczów radzę sobie w tym bez większych problemów. Obudowa powstała z paru profili do lamp ledowych oraz wydruków na drukarce 3D. ( projekty dołączone poniżej ) W wersji złożonej sterownik wygląda następująco:
Można by ten PCB jeszcze udoskonalić, ale dla pojedynczego projektu sądzę, że nie warto.
Jak pisałem powyżej mechaniczno-elektryczne sprawy nie były problemem w tym projekcie. Choć i tu zdarzył się mały zgrzyt wynikły nie z mojej winy ( a może i z mojego założenia, iż użyję Arduino NANO). Myślałem, że Nano “wymiękło” ( tak mi się wydawało ) ze względu na ilość pomiarów małej ilości pamięci itp i bardzo wolno działało nie spełniając założeń projektu. Co ciekawe to nie ono było problemem, ale układ HX711, który domyślnie ustawiony jest na 10Hz i zrównoważenie mostka zajmuje mu ok 2-4s. Układ ten może jednak pracować z częstotliwością 80HZ trzeba jednak dokonać na płytce zmiany:
Uwaga nóżka 15 standardowo jest podpięta do masy więc nie radzę robić kleksa z cyny aby połączyć nóżkę 15 i 16
Po dokonaniu w/w przeróbki układ potrafi wykonać bez problemu 2-3 pomiarów na sekundę.
Beleczka pomiarowa wygląda tak :)
Problemem największym okazało się napisanie “wsadu ” do ARDUINO.
Zajęło mi to sporo godzin , najwięcej czasu straciłem na zrobieniu logera z danymi ( oraz to aby po restarcie Arduino tworzyło nowy plik – obudowa zyskała przycisk RESET),
finalnie plik tworzony wygląda tak w Excelu:
komunikację bluetooth ściągnąłem z własnego projektu “Rain 2018” opublikowany tu zresztą :) ( który bazuje częśćiowo na komunikacji Marcina Grunta ze sterownika AQma LED) .
W między czasie pojawił się problem z ilością pamięci operacyjnej w procku i myślałem, że nano to jednak nie najlepszy pomysł ( okazuje się jednak, że można pamięć oszczędzić w przypadku wyświetlania komend na serial wystarczy dodać literę F serial.print(F(“tekst”)) aby procek nie utrzymywał tych danych w pamięci operacyjnej. Tak więc wycisnąłem nano jak cytrynę no i udało się :).
Kolejną rzeczą którą musiałem wykonać to aplikacja do monitorowania danych w czasie rzeczywistym. Jak wspomniałem wcześniej służy do tego tablet HP bez baterii. Aby go zasilić wykorzystałem przetwornicę DC-DC zbijając za jej pomocą napięcie do 4,3 V i podłączając ją w miejscu pinów baterii. dodatkowo guzik Power wyciągnąłem na wierzch aby łatwo dawał się włączyć.
Aplikacja na Androida powstała przy użyciu darmowego oprogramowania:
MIT App Inventor 2
oto kilka screenów z niej.
Przy powstawaniu aplikacji pojawił się problem z przesyłaniem danych po BT bo nie napływały one ze stałym czasem (a raczej Android 4,4 ma z tym problem bo na Oreo ten efekt nie występował) i program musi dodatkowo interpretować dane napływające i odrzucać błędne wyniki. Ale finalnie sukces.
Jeżeli ktoś potrzebuje dokładną wagę z pomiarem 2-3 /s to ma tutaj gotowy projekt.
Jeszcze jeden mały szczegół:
Każda belka tensometryczna ma swój moduł, który należy wyznaczyć przy pomiarze znanej masy ( szkic Arduino ma zachaszowany gotowy szkic do wyznaczenia w/w modułu – wystarczy wgrać go osobno do arduino a na belkę wsadzić znaną masę (ciężarek) aby wyznaczyć poszukiwany moduł)
Załączony plik zawiera kompletny projekt ze schematami, płytkami PCB, wsadem do Arduino, aplikacją na Androida oraz instrukcją obsługi.
To dziwne że układ HX711 rzyga ci rekordami co 2-4 sekundy bo mi 10 razy na sekundę przy ustawieniu 10Hz.
Tak sam HX711 “rzyga” dane z taką prędkością ale jak napisałem “domyślnie ustawiony jest na 10Hz i zrównoważenie mostka zajmuje mu ok 2-4s.”
Dodatkowo projekt ma zapisywać dane na karcie SD i wysyła dane po bluetooth na tablet , a nano nie jest demonem prędkości.