Witam,
Tym razem chciał bym przedstawić bardzo prosty, tani, i dokładny liniał, który można zastosować w różnych majsterkowych wynalazkach. Wystarczy tania Chińska suwmiarka, i elektronika dopasowana do swoich potrzeb.
Moje urządzenie pracuje jako liniał imaka, w tokarce sąsiada ;)
Program(Bascom)
W napisaniu programu bardzo pomógł mi artykuł zamieszczony w czasopiśmie EDW z 03/2014r na stronie 21, gdzie autor projektu podobnie wykorzystał suwmiarkę, z tą różnicą że program napisał w języku C. Kwestie zasilania oraz konwerterów napięć również rozwiązał nieco inaczej. Artykuł ten okazał się na tyle obszernie napisany, że z niewielką pomocą bascomowego helpa udało mi się przenieść działanie programu na język Bascom.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
"]$regfile = "m8def.dat" $crystal = 14745600 $hwstack = 40 $swstack = 16 $framesize = 32 '=== LCD HD44780 === Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portd.6 , Db5 = Portd.5 , Db6 = Portc.0 , Db7 = Portc.1 , E = Portd.7 , Rs = Portb.0 Clock_pin Alias Pind.2 'Pin uC, do którego została podłączona suwmiarka (uwaga wymaga konwertera napięć!) Data_pin Alias Pind.3 'Pin uC, do którego została podłączona suwmiarka (uwaga wymaga konwertera napięć!) config clock_pin = input config Data_pin = input Dim data_in as long 'Zmienna przechowuje 24 bity odebrane z suwmiarki dim data1 as long 'Zmienna operacyjna dim flaga as bit 'Flaga znaku dodatniego/ujemnego dim wynik as string * 6 'Zmienna z gotowym wynikiem cls Do Shiftin Data_pin , Clock_pin , data_in , 7 , 24 , 130 'Te bity są niepotrzebne więc zostają wyzerowane data_in.20 = 0 'w niektórych suwmiarkach ten bit oznacza czy jest to wart. dodatnia czy ujemna 0 gdy ujemna, 1 gdy dodatnia 'data_in.21 = 0 'w moim egzemplarzu ten bit świadczy o znaku data_in.22 = 0 'nie używany data_in.23 = 0 'ten bit pokazuje jednostkę (inch/mm) - u mnie nie działa data_in.24 = 0 'nie używany 'Oznacza flagę gdy wartość dodatnia, następnie zeruj bit 21 if data_in.21 = 1 then flaga = 1 data_in.21 = 0 Else flaga = 0 end if data_in.21 = 0 '*********WAŻNE!!!********* data1 = data_in - 1048574 'tyle suwmiarka ma gdy wyzerowana w pozycji zsuniętej (należy wpisać!) data1 = data1 / 2 'wynik dzielimy przez dwa (z inch na mm) 'Wskazania dodatnie i ujemne if flaga = 1 then data1 = data1 * -1 end if 'Formatowanie wyniku Wynik = Str(data1) Wynik = Format(wynik , "0.00") '*************************************************************************** locate 1,1 lcd data_in ; " " 'Zmienna pokazuje dane odebrane (według tych wskazań należy wpisać liczbę w linijce 67) locate 2,1 lcd wynik ; " " 'Zmienna pokazuje gotowy wynik '*************************************************************************** Loop End |
Podłączenie
Typowe wyprowadzenia dla Chińskich suwmiarek:
Piny Clock oraz Data należy podłączyć do mikrokontrolera poprzez konwerter podbijający napięcie stanów logicznych. Pin Vneg to masa. a Vpos to +1,5V.
Jeżeli suwmiarka ma pracować bez baterii (tak jak w moim przypadku) można zasilić ją przez port komunikacyjni.
Schemat zasilania, oraz konwertera napięć dla komunikacji.
Poniżej oscylogram przedstawiający transmisję.
Na zielono Clock, na żółto Data.
Dane wysyłane są 24 bitowych paczkach, po 4 bity co ok 130ms.
UWAGA!!! KONKURS ;)
Pozostał mi jeszcze jeden egzemplarz gotowego interfejsu do tokarki.
Funkcje:
– Wskazania z suwmiarki
– Zerowanie wskazań
– Dodawanie (dolna linijka) wszystkich wskazań po wyzerowaniu
– Zerowanie przyciskiem zewnętrznym
Całość zapakowana w solidną, estetyczną aluminiową obudowę, do której doprowadzony jest elastyczny metalowy peszel.
Pierwsza osoba, której uda się stworzyć program do obsługi suwmiarki, w środowisku Arduino, otrzyma ode mnie wyżej opisany zestaw, wraz z wszystkimi źródłami. Program wygranego zostanie opublikowany w tym artykule ;)
aaa no i najważniejsze ;) Konkurs trwa do Sylwestra ;P
Niestety termin konkursu upłynął 01.01.1018, ale zawsze możemy się dogadać ;)
Pozdrawiam,
Łukasz Górecki
Od kilku dni sam pracuję nad pewnym zautomatyzowanym robotem pomiarowym, w którym dwie suwmiarki będą dokonywały pomiarów i wysyłały dane do PC :D Właśnie przed chwilą zapuściłem do druku całą bazę z mocowaniami do suwmiarek i innych dupereli. Teraz tylko muszę upolować drugą suwmiarkę ze złączami, bo ze wszystkich moich suwmiarek tylko jedna je ma :/
Te najtańsze Chińskie komunikują się najlepiej. Możesz wysyłać dane np przez ft232 i to z kilku suwmiarek. Do tego oczywiście proc i zestaw gotowy 😉 dodam jeszcze że wszystkie mają tylko nie wszystkie wprowadzone na zewnątrz.
No, no – wiem, że wszystkie mają, ale chciałbym to zrobić w miarę estetycznie i bez rozbebeszania obudowy :D Ta jedna, w której mam dostęp do pinów, jest akurat z Lidla, więc najchętniej będę polował na drugą identyczną. Tym bardziej, że tym lidlowym produktom ufam bardziej od jakiejś chińszczyzny noname, a do tego są dosyć tanie (tą jedną kupiłem 39,99 zł).
Te suwmiarki z Lidla niczym się nie różnią od chińskich NoName. Zapewne są produkowane w tej same fabryce, a różnica jest taka że na jednej jest napis Cion-Ciang a na drugiej Parkside.
Osobiście na Parkside się przejechałem i nikomu nie polecam. Ale dla zwykłego amatora gdzie precyzja itd. nie ma znaczenia to wystarczy.
Pozdrawiam
No to faktycznie ;)
A w jaki sposób chcesz je skomunikować z PC ?
QrD… Muszę sprawdzić swoją suwmiarkę, czy ma odpowiednie łącze. Nie zależy mi na zrobieniu liniału, ale przydałoby się podłączenie tego czegoś do syntezatora mowy… Na razie mam woltomierz i omomierz, ale gadająca suwmiarka bardzo by mi się przydała!
Dzięki za pomysł!