Pytanie:
Jak mogę kontrolować 128 (lub więcej) elektrozaworów?
goodguys_activate
2010-12-05 05:48:26 UTC
view on stackexchange narkive permalink

Muszę indywidualnie włączać lub wyłączać 128 elektrozaworów, kilka razy na sekundę. Chciałbym to prowadzić z komputera PC lub urządzenia wbudowanego.

Jak poleciłbyś mi to zrobić? Być może istnieje sposób, w jaki mogę włączyć adresowanie grupy (8 lub 16) solenoidów i wysłać do nich polecenie włącz lub wyłącz ?

Biorąc pod uwagę, co tam jest, jaki jest najłatwiejszy sposób, aby to zrobić? Jaki jest najlepszy lub najbardziej preferowany sposób?

Patrzę na te elektrozawory, które kosztują około 50 dolarów każdy. Dziel się informacjami, jeśli znasz jakieś tańsze / lepsze. Celem jest kontrolowanie wewnętrznego wodospadu. Jest pod niskim ciśnieniem, więc cała woda ścieka w dół.

http://www.ascovalve.com/Applications/ProductSearch/ProductInfo.aspx?productid=8262H001AC120/60,110/50D&userAction=view

Czy zadziałałby zawór spryskiwacza? Czy potrzebujesz elektrozaworu do korzystania z cewki 120 V, czy możesz użyć niższego napięcia (np.6 V, 12 V)?
Mogę użyć niższego napięcia ... ale czysto mechaniczny (nie sterowany komputerowo) zawór zraszacza prawdopodobnie go nie przerwie. Co określi moje wymagane napięcie?
Zawory zraszaczy nie są takie proste. W rzeczywistości nie będą działać bez znacznej presji, a ich zamknięcie również zajmuje trochę czasu.
To może dać lepsze wyobrażenie o tym, nad czym pracuję: http://physics.stackexchange.com/questions/1642/low-pressure-pulsating-series-of-water-droplets
Nie sądzę, aby gotowe zawory były wystarczająco szybkie, aby to osiągnąć, chyba że są na wystarczająco dużą skalę, aby małe zmiany czasu aktywacji nie miały znaczenia. Myślę, że powinieneś przyjrzeć się bardziej wyspecjalizowanym zaworom zaprojektowanym specjalnie do szybkich i stałych czasów włączania / wyłączania. Jak je wyłączyć, prawdopodobnie będzie najmniejszym z twoich problemów.
tutaj inny pistolet do cewek?
Patrząc na alibaba.com dla dostawców z Dalekiego Wschodu, niektórzy oferują zawory elektromagnetyczne do wody za 7 USD w górę przy minimalnym zamówieniu 100. Tylko jedna myśl. np .: http://www.alibaba.com/product-gs/249331163/Water_engineer_solenoid_valve.html
Dzięki @Linker3000! - Ciekawe, jak te zawory pasują do komentarza @mikeselectricstuff. Jaki rodzaj zaworu byłby wystarczająco precyzyjny (i wystarczająco chłodny fizycznie), aby obsłużyć częstą, precyzyjną zmianę. Z punktu widzenia kosztów najbardziej podoba mi się Twój link!
„Szybka sukcesja” może być myląca. Nie można przełączać elektrozaworów na tyle szybko, aby obciążyć szybkość interfejsu cyfrowego; Problem dotyczy kosztów sprzętu i projektu.
@reemrevnivek - rozumiem. Może powinienem otworzyć nowe pytanie. Czy możesz pomóc mi poprawnie sformułować pytanie? Myślę, że to forum (elektronika) może nadal pasować. Daj mi znać, jeśli myślisz inaczej.
To świetne forum; elektronika to coś więcej niż tylko interfejs cyfrowy. Dokonałem edycji, która powinna pomóc skupić się na interfejsie, a nie na ograniczeniach szybkości.
Trzeba wiedzieć, jak duże są elektrozawory - napięcie / prąd.
Patrzę na te, które pobierają od 6 do 8 W. Jeśli znasz lepszy / tańszy, który będzie kontrolował uwalnianie kropelek wody, podziel się nim. 50 USD / za sztukę jest drogie http://www.ascovalve.com/Applications/ProductSearch/ProductInfo.aspx?productid=8262H001AC120/60,110/50D&userAction=view
Siedem odpowiedzi:
markrages
2010-12-05 07:37:23 UTC
view on stackexchange narkive permalink

Czip FTDI USB + łańcuch przesuwny 595. Umieść osobny tranzystor na każdym przekaźniku.

Więcej szczegółów:

Łańcuch 74hc595 jest opisany tutaj: http: //www.arduino .cc / pl / Tutorial / ShiftOut (Pokazane są tylko dwa, ale pojęcie można rozszerzyć do dowolnej liczby '595s.)

Aby napędzać łańcuch, potrzebne są trzy sygnały, dane, zatrzask i zegar.

Możesz użyć części FTDI w trybie „bitbang” do wygenerowania trzech sygnałów ze sterowania komputerem. Aby korzystać z FTDI w trybie bitbang, użyj libftdi (możesz również użyć oficjalnych sterowników FTDI, ale libftdi jest mniej kłopotliwe z mojego doświadczenia). FT232R ma wystarczającą liczbę pinów, aby to zrobić. FTDI sprzedaje przełamanie DIP, a Sparkfun sprzedaje też kilka wybić.

alt text

Zauważ, że będziesz potrzebować 128 2N2222 i 128 330 omów rezystorów. (możesz dostać tablice rezystorów, które mogą być łatwiejsze w zarządzaniu).

Narysowałem obwód zakładając zasilanie 12 V dla twoich przekaźników i nie mniej niż 24 omy cewek. Jeśli tak nie jest, możesz potrzebować mocniejszego tranzystora lub tranzystorów MOSFET na poziomie logicznym. 2222 jest mniej więcej tak tanim tranzystorem, jaki znajdziesz, a kiedy kupujesz 128 sztuk, to robi różnicę.

Nie pokazałem zaślepek obejścia ani dokładnego podłączenia 232R. Przeczytaj arkusz danych.

OK, właśnie zobaczyłem elektrozawór, którym próbujesz sterować. 2N2222 nie będzie działać. Musisz przełączyć 120VAC na cewkę. Możesz więc albo mieć mały przekaźnik (z 2N2222) do przełączania 120 V, albo użyć przekaźnika półprzewodnikowego, który może przyjmować wejścia logiczne i podłączyć go bezpośrednio do wyjścia '595.

OK, oto kod do sterowania tym za pomocą libftdi. Przypisania pinów w kodzie źródłowym. apt-get install libftdi-dev, a następnie skompiluj w ten sposób: "gcc test_595.c -lftdi"

  / * Ten program jest rozpowszechniany na licencji GPL, wersja 2 * / # include <stdio.h> #include <ftdi.h> # define HC595_CT (1) // liczba '595 chipsint main (int argc, char ** argv) {struct ftdi_context ftdic; int f, i;
unsigned char buf [2 * 8 * HC595_CT + 1]; // impuls zatrzaskowy, 8 * impulsów zegara HC595_CT if ((f = ftdi_init (&ftdic)) < 0) {fprintf (stderr, "ftdi_init failed \ n"); return f; } f = ftdi_usb_open (&ftdic, 0x0403, 0x6001); if (f < 0 && f! = -5) {fprintf (stderr, "nie można otworzyć urządzenia ftdi:% d (% s) \ n", f, ftdi_get_error_string (&ftdic)); wyjście (-1); } printf ("otwarcie ftdi powiodło się:% d \ n", f); // Przypisania kabli FTDI: #define BIT_DATA (1<<0) // 1: pomarańczowy. TXD, „dane” // 2: żółty. RXD, nieużywany # define BIT_CLOCK (1<<2) // 4: zielony. RTS, „zegar” #define BIT_LATCH (1<<3) // 8: brązowy. CTS, "latch" ftdi_enable_bitbang (&ftdic, BIT_DATA | BIT_CLOCK | BIT_LATCH); // ustaw zero * buf = 0; f = ftdi_write_data (&ftdic, buf, 1); bez znaku char * b = buf; dane bez znaku; stan bez znaku; if (argc == 2) {data = atof (argv [1]); } else {dane = 0x5a; } printf ("wysyłanie danych% d \ n", dane); for (i = 0; i<8; i ++) {state = (dane & (128L>>i))? BIT_DATA: 0; * b ++ = stan; stan | = BIT_CLOCK; * b ++ = stan; } * b ++ = BIT_LATCH; f = ftdi_write_data (&ftdic, buf, (b-buf)); ftdi_disable_bitbang (&ftdic); ftdi_usb_close (&ftdic); ftdi_deinit (&ftdic);}  

A oto zdjęcie mojej konfiguracji testowej:

alt text

(użyłem Kabel TTL-232R-3V3.)

Jestem w tym wszystkim trochę nowy i prawie wszystkiego uczę sam. Możesz powiedzieć mi trochę więcej? Produkty specyficzne dla IE lub inne wskazówki. Przeglądam teraz wszystkie produkty FTDI i szukam odpowiedniego rozwiązania USB.
Naszkicuję dla ciebie obwód później.
FT245 jest prawdopodobnie lepszy niż FT232
Jaką przewagę daje 245 nad 232R?
Ten solenoid jest dostępny w szerokim zakresie napięć cewki, od 6 V do 240 V. Prawdopodobnie wybrałbym cewkę 12V, taką jak 8262G002 12 / DC. Jednak cewka 120 V miała 6-8 W, więc coś nieco większego niż 2n2222 może być bezpieczniejsze.
@markrages - FT245 ma więcej IO. Ponieważ tryb bit-bang aktualizuje wszystkie IO jednocześnie, można równolegle uruchamiać wiele rejestrów przesuwnych.
Ponadto powyższy schemat wymaga nakładek obejściowych na każdym układzie scalonym (ceramika 0,1 uF).
Może się zdarzyć, że trzeba będzie przekroczyć 0,1 uF lub mieć dodatkowe ograniczniki, ponieważ obwód przełącza dość duże prądy.
FT245 może bit-bang 8 linii we / wy. FT232R może bit-bang 8 linii we / wy. Czy źle liczę?
+1 - Bardzo fajnie. Wymagane minimum części i doświadczenia, aby uzyskać wiarygodny wynik.
A co z użyciem triaków do sterowania elektromagnesami?
@Thomas, nadal potrzebujesz optoizolatora do napędzania triaka. Innymi słowy, kręcisz własnym przekaźnikiem półprzewodnikowym. Robiłem to już wcześniej i działa, ale gotowe pakiety SSR są teraz naprawdę konkurencyjne: http://www.futurlec.com/RelSS.shtml
Aby rozwinąć to, co powiedział W5VO: 2N2222 po prostu nie będzie działać w tej aplikacji.Zakładając ~ 9 watów na cewkę, przy 12 woltach oznacza to 750 mA prądu cewki, a obwód, jak pokazano, nie zapewni takiego prądu, jak poziom nasycenia.A kiedy patrzymy na rzeczy, dioda flyback 1N4148 jest WAAAY za mała.Wreszcie, zastanawiam się, czy myślałeś o wymaganiach systemowych.Jeśli z jakiegoś powodu musisz włączyć wszystkie zawory na raz, będzie to wymagało 128 x 0,75 lub 96 amperów.To całkiem spory zasilacz 12 woltów.
Connor Wolf
2010-12-06 11:27:58 UTC
view on stackexchange narkive permalink

Wyczyszczono schemat z dodatkami (ograniczniki obejścia, numery pinów itp.):

alt text

Z FT245 możesz użyć wiele krótszych łańcuchów rejestrów przesuwnych, ponieważ masz więcej IO.

Nie narysowałem tego w ten sposób, ale tak jest. W każdym razie schemat jest wykonywany w Altium Designer. Jeśli chcesz pliki schematów, mogę ci je wysłać, ale potrzebujesz oprogramowania, aby je otworzyć.

To jest ulepszony schemat odpowiedzi Markragesa, prawda? Prawdopodobnie powinieneś po prostu umieścić to tam jako edycję.
mój przykładowy kod zajmuje 1 + 2 * 8 * N okresów FTDI na pełną zmianę. Zatem szesnaście 595 zajmie 257 okresów. FT232R po prostu używa asynchronicznej szybkości transmisji do taktowania próbek bitbang. Tak więc przy 115200 bodów aktualizacja rejestru trwa 2,24 ms.
Idealnie tak, ale interfejs USB jest wolną częścią. Mam projekt oparty na FT245 w trybie bit-bang i otrzymuję ~ 10 aktualizacji na sekundę. Teraz robię to w Pythonie, więc prawie na pewno jest trochę narzutu interpretera, ale mam problem z wyobrażeniem sobie, że uzyskujesz lepsze niż 1000 aktualizacji na sekundę, biorąc pod uwagę, że każda aktualizacja zajmuje pełny pakiet USB. O ile nie robisz czegoś innego w C niż wywołanie polecenia FT_Write ze sterownika, nie widzę, aby było to znacznie szybsze.
Wiesz, że możesz zapisać więcej niż jeden bajt na raz, prawda?
W trybie bit-bang? Nie, nie zdawałem sobie sprawy. Cóż, nieważne. Bzdury.
Hahahahaha. Nie czuję się mądry. W każdym razie używam ich w aplikacji, w której jest wiele połączeń międzysystemowych, więc ważnym aspektem jest czas propagacji do pinów IO, a nie surowa przepustowość. Zasadniczo zapis sprzętowy powoduje, że urządzenie odpowiada przez inny kanał, a czas odpowiedzi był wszystkim, na co patrzyłem.
Tak. opóźnienie jest zabójcze dzięki USB, 1 msek w najlepszym przypadku. Nie jestem pewien, o jaki interwał odpytywania żądają chipy FTDI.
Podobnie jak w przypadku obwodu markrages, 2N2222 nie spełnia swoich wymagań.Jasne, arkusze danych mówią o bezwzględnym maksymalnym natężeniu 1 A, ale to po prostu za blisko.Ponadto do nasycenia przy prądzie ~ 750 mA potrzebujesz 75 mA prądu podstawowego i nie ma mowy, aby 74HC595 to zapewnił.Akceptuję jednak ulepszoną diodę flyback.
@WhatRoughBeast - Jeśli potrzebujesz więcej prądu, użyj darlington lub FET.Nie wybrałem tranzystora zbyt blisko.
krapht
2010-12-05 12:08:59 UTC
view on stackexchange narkive permalink

Czy jest jakiś powód, dla którego dekoder od 7 do 128 nie byłby odpowiedni? Używanie układu FTDI i szeregowego rejestru przesuwnego wydaje się przesadą.

Tak. za pomocą czystego dekodera można otworzyć tylko 1 zawór na raz.
Ile kosztują przekaźniki zatrzaskowe?
akohlsmith
2011-02-21 09:26:27 UTC
view on stackexchange narkive permalink

Niezależnie od tego, jakiego rozwiązania ostatecznie użyjesz, polecam przyjrzeć się zasilaczowi tej bestii. Masz potencjał, aby przez przypadek naprawdę pobierać dużo prądu (zwarcie tranzystora z powodu stanu przejściowego, usterka zegara ustawiająca `` 1 '' na wielu, wielu wyjściach itp.) - Indywidualne PTC na każdej cewce chronią pojedynczą cewkę i zasugerowałbym również albo niskonomowy (0,1?) rezystor bocznikowy, albo czujnik prądu Halla, który odetnie zasilanie całej sekcji sterownika, jeśli wykryte zostanie przeciążenie. Wzmacniacz operacyjny, który integruje przeciążenie w czasie, jest prawdopodobnie dobrym projektem wyzwalania sprzętowego, ale możesz to zrobić w mikro, jeśli to też twoja sprawa.

kenny
2010-12-05 07:14:01 UTC
view on stackexchange narkive permalink

Umieściłbym 16 z tych lub czegoś podobnego w serii, które mogłyby prowadzić. Nie wiem, jak chcesz określić włączanie / wyłączanie, ale low-end 8-pinowy PIC (

Tim Williscroft
2011-02-21 07:47:15 UTC
view on stackexchange narkive permalink

Napęd matrycowy.

Mutiplex zarówno źródła, jak i zlewozmywaki.

Połącz solenoidy w tablice. (wiersze &, kolumny)

znacznie mniej elektroniki.

Obwody mogą być takie, jak to przedstawiono, ale możesz sobie poradzić z dużo mniejszą ilością, jeśli zastosujesz to w matrycy.

Umożliwiłoby to zaadresowanie dowolnego pojedynczego elektromagnesu. Ale OP chce kontrolować wszystkie elektrozawory w tym samym czasie.
@markrages czy elektrozawór zauważy różnicę?
Zobaczmy, powiedzmy, że masz multipleks 9x8 i sterujesz elektromagnesem 1/9 czasu. Z diodą zatrzaskową na elektromagnesie, prąd może płynąć przez chwilę, utrzymując elektromagnes zamknięty. Załóżmy, że straty są zerowe, wtedy chcemy umieścić równoważną energię w solenoidzie jako wartość znamionową prądu stałego solenoidu. Więc napędzaj go napięciem znamionowym * 9. (aby uzyskać prąd znamionowy, di / dt = v / L). Zatem solenoidy 24 V wymagałyby sterowników 216 V. Jeśli pozostaniesz poniżej napięcia, przy którym cewka wygina się łukiem, może to zadziałać.
Diody LED są łatwo multipleksowane, ponieważ mają otwarty obwód, gdy są spolaryzowane odwrotnie. Z tego powodu każdy z elektromagnesów będzie potrzebował rezystora szeregowego.
@markrages: Gdyby każdy elektrozawór miał zarówno diodę szeregową do zasilania, jak i diodę zapadkową, multipleksowanie powinno być rozsądne, chociaż 9: 1 wydaje się trochę za dużo. Gdyby aplikacja na to pozwalała, wolałbym użyć multipleksu przewodowego 4: 1 z cyklem pracy 12,5% dla większości elektromagnesów; każdy rząd, który miał elektrozawory, które były na nowo zasilane, przez krótki czas otrzymywał 62,5% cyklu pracy. Wymagałoby to nieco oszałamiających operacji „chwytania” solenoidu, ale pozwoliłoby na niezłą redukcję obwodów.
W zależności od napięcia, możliwe jest również „chwytanie” dwóch rzędów z 37,5% cyklem roboczym lub po prostu podawanie do wszystkich rzędów 25% cyklu roboczego i sprawdzanie, czy mogą się tym „chwycić”.
user3045
2011-02-21 08:55:37 UTC
view on stackexchange narkive permalink

Alternatywnie, jeśli masz trochę funduszy do spalenia, zawsze możesz zainwestować w Fez Domino i rozszerzyć magistralę I2C do 320 we / wy.

Fez Domino to i wbudowane urządzenie C #, jednak płyta IO wspomniana w pliku PDF używa standardowej magistrali I2C, która jest powszechna w większości uC.



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 2.0, w ramach której jest rozpowszechniana.
Loading...