Skocz do zawartości
PiotrB

Licznik cyfrowy

Pomocna odpowiedź

Witam, 
po zakończeniu kursów elektroniki oraz techniki cyfrowej zwieńczeniem nauki jest układ, zbudowany dla maszyny w firmie mojego ojca.

Maszyna wytwarza elementy. Próbowałem zaprojektować zadanie wartości + wyłączenie (maszyny) po osiągnięciu zadanej wartości.

Praca układu:

  1.  Zadanie wartości (dla licznika binarnego oraz wyświetlacza 7-seg.
  2. Zliczanie kolejnych sygnałów (24V cyklicznie po wytworzeniu jednego elementu)
  3. Wyświetlenie uzyskanej wartości.
  4. Porównanie obu wartości.
  5. Wyłączenie maszyny jeśli obie wartości są zgodne.

Pytanie: Czy muszę dobierać rezystory/ kondensatory do linii komunikacyjnych pomiędzy sygnałami z układów cyfrowych? Intuicyjnie nie zrobiłem tego, ale też nie wgłębiałem się w noty katalogowe oraz prądy znamionowe.

Zdaję sobie sprawę,  że mikrokontroler pasował by tu o wiele lepiej, chciałbym jednak spróbować stworzyć "samodzielnie" taki układ logiczny.

Jest to mój pierwszy raz z tego typu konstrukcjami. Chciałbym również zamówić płytkę i samodzielnie zlutować układ.

Naprawdę liczę na pomoc bardziej doświadczonych w temacie 🙂

Załączam mój projekt układu stworzony w programie Eagle, oraz dokumentacje użytych układów logicznych.

Schemat układu podzieliłem na coś na kształt bloków funkcyjnych:

1. Zasilanie:
Zasilanie

2. Wyświetlanie zadanej wartość:

413691988_Ukadzadajcywartoc.thumb.png.e456445fa58ede1f03ce4f41c4456c42.png

3. Zadawanie wartości:

1965604688_Zadawaniewartoci.thumb.png.bf57dc304d01650ba008a79dc8ed46ee.png

4. Naliczanie wartości + reset wartości:

 2133974755_Naliczniewartoci.thumb.png.0d54ec6fe134b8499704e623f45e1e4d.png

5. Wyświetlenie wartości:

1017026570_Wywietleniewartoci.thumb.png.77ab1a9fcb7fd3eb99f3594df4e74b2c.png

6. Porównanie wartości:

752821558_Komparatorsygnaubinarnego.thumb.png.3c0ac9ae4befaa23cfa34ceff5b97bd3.png

7. Wyłączenie maszyny:

1021101059_Wyczeniemaszyny.thumb.png.292eaf4068e136766ae92e91edb0e2b3.png

Wyświetlacz 7-seg: https://botland.com.pl/index.php?controller=attachment&id_attachment=1610

Licznik 8bit: http://www.ti.com/lit/ds/symlink/sn74hc688.pdf

Komparator 8bit:  http://www.ti.com/lit/ds/sdls004/sdls004.pdf

Sterownik wyświetlacz 7-seg: https://botland.com.pl/index.php?controller=attachment&id_attachment=778


Pozdrawiam,
Piotr l.17

 

 

Edytowano przez PiotrB

Udostępnij ten post


Link to post
Share on other sites

@Piotr.B, witam na forum 😉 Widzę, że to Twoje pierwsze kroki na Forbocie, oto najważniejsze informacje na start:

  • Chcesz przywitać się z innymi członkami naszej społeczności? Skorzystaj z tematu powitania użytkowników.
  • Opis najciekawszych funkcji, które ułatwiają korzystanie z forum znajdziesz w temacie instrukcja korzystania z forum - co warto wiedzieć?
  • Poszczególne posty możesz oceniać (pozytywnie i negatywnie) za pomocą reakcji - ikona serca w prawym dolnym rogu każdej wiadomości.
3 godziny temu, PiotrB napisał:

Załączam mój projekt układu stworzony w programie Eagle, oraz dokumentacje użytych układów logicznych.

Zamieść proszę schemat w formie pliku graficznego i umieść go bezpośrednio w wiadomości - pamiętaj tylko, aby grafikę wgrać na nasz serwer, a nie linkować ją z zewnętrznego źródła. Na pewno więcej osób zerknie wtedy na Twój projekt - nie każdy ma zainstalowanego EAGLE 🙂

Udostępnij ten post


Link to post
Share on other sites

Tak, tak, czekamy na jadalny schemat bo mało tu projektów na tego rodzaju scalakach. Ciekaw jestem jak wykombinowałeś działanie całości więc popieram prośbę o czytelną grafikę typu gif czy pdf. Czy układ jest w formie pomysłu, czy już coś zmontowałeś, czy działa?

Udostępnij ten post


Link to post
Share on other sites

Zgodnie z zaleceniem @Treker zmieniłem formę na bardziej przystępną.
 

9 godzin temu, marek1707 napisał:

Czy układ jest w formie pomysłu, czy już coś zmontowałeś, czy działa?

@marek1707 Układ jest w formie projektu i to takiego "niepewnego"..., i dlatego tu jestem 😄
Mam jednak nadzieję, że sprawę uda się doprowadzić do końca.
Chciałbym stworzyć płytkę, przylutować elementy oraz zamontować na maszynie. 
pozdrawiam 🙂

 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

OK, schemat nie jest narysowany przejrzyście, ale komentarze pomagają. Z tego co zrozumiałem zrobiłeś dwa zestawy liczników. Jeden to łańcuch dwóch dekad połączonych szeregowo a więc zliczających modulo 100. Ten zlicza impulsy z maszyny. Drugi to w zasadzie dwa osobne osobne liczniki niezależnie "pompowane" impulsami z osobnycvh przycisków - to służy do ustawiania liczby końcowej. Ponieważ nie masz dostępu do stanu liczbnuków a jedynie wyjścia na wyświetlacz, zdecydowałeś się na dwa 8-bitowe komparatory porównujące stany segementów. Logicznie w porządku, oczywiście tylko wtedy gdy chcesz znaleść równość dwóch liczb. Do tego wszystkiego w sumie trzy RESETy, dwa przyciski inkremetacji nastawów dziesiątek i jedności i stabilizator liniowy 5V. A teraz złe wieści:

1. Nie możesz taktować układów cyfrowych sygnałem wolnozmiennym. Dobrze, że odkłócasz przyciski filtrem RC, ale potem musisz obowiązkowo wrócić do ostrych zboczy sygnału prostokątnego. Dlatego wszystkie trzy zegary przed podaniem ich na wejścia CLK liczników musisz przepuścić przez bramki Schmitta, (np. 74HC14) regenerujące wolne zbocza do poprawnych czasów rzędu pojedynczych ns. Oczywiście wyjście z jednej dekady podłączone bezpośrednio do drugiej jest OK.

2. Komparatory (miały być popularne 74HC688 a tu są jakieś z kosmosu) potrzebują sygnałów cyfrowych a Ty wziąłeś ich wejścia zza oporników. Tam poziomy napięć są takie jak na LEDach i nie mają wiele wspólnego z wymaganiami wejść układów HC. Komparatory podłącz bezpośrednio do wyjść liczników a i tak sprawdż, czy te obciążone prądem (jakim?) segmentów wciąż zapewnią poprawne poziomy logiczne. Widzę tam oporniki 3.3k co da prąd czerwonych LEDów ok. 1mA. Czy naprawdę masz tak dobre wyświetlacze czy raczej w tym pokoju jest tak ciemno? To nie jest dobre inżyniersko rozwiązanie.

3. Sprawdź tabele prawdy komparatorów, tj. co trzeba podać na wejście by na wyjściu "=" do stać stan aktywny (jaki?) w momencie równości. Moim zdaniem ten fragment spaprałeś - zauważaj kółka przy symbolach pinów, one nie są od parady.

4. Jak rozumiem przekaźnik ma się wyłączać, gdy nastąpi komparacja. Po to komparatory mają wejście przeniesienia z poprzedniej pozycji byś nie musiał robić takich cudów na tranzystorach. połącz oba komparatory szeregowo. A w tej konfiguracji tranzystorów musisz dać przekaźnik na 3V - pomyśl jak działa wtórnik emiterowy.

5. Jeżeli nawet masz wyświetlacze z prądem segmentów 1mA, to mamy ich w sumie 28. Do tego prąd całości, powiedzmy 5mA i dostajesz 33mA, a 33mA * (24-5V) daje 0.6W ciepła na 7805. Przykręć mu jakąś blaszkę. A wcześniej daj mu jeszcze jakieś 10-22uF na wejściu i z 10uF na wyjściu.

6. Układ kondycjonowania sygnału z maszyny jest dla mnie niezrozumiały. Rysuj zawsze tak, by masa była na dole a plus na górze. Przerysuj go jak ludzie i zastanów się co chciałeś uzyskać a potem przesymuluj w głowie napięcia wyjściowe w stanie 0V i 24V na wejściu - bo tyle chyba ma być, czy tak?

7. Przydałby się globalny RESET od włączenia zasilania, inaczej wyświetlacze po odpaleniu urządzenia będą pokazywały przypadkowe wartości, co gorsza nie zawsze poprawne, bo np. stan jednego licznika będzie wynosił 1100 a drugiego 1111. Zobacz co w tych sytuacjach pokazuje się na wyjściach LED.

8. Czy jeśli podczas ustawiania niechcący będziesz najeżdżał na obecny stan tych drugich liczników i przekaźnik będzie cykał to dobrze?

I jeszcze pomyśl o zamianie całego jednego zestawu liczniki-wyświetlacze na dwa proste zadajniki kodów BCD:

https://www.tme.eu/pl/details/z-48_bcd/zadajniki-kodu/

Takie coś jest czysto mechaniczne: ma dwa przyciski "w górę" i "w dół" i oddaje 4 bitową liczbę z zakresu 0-9. Musisz wtedy użyć prawdziwych liczników/dekad i osobnych dekoderów wyświetlaczy, ale taki zadajnik ma tę zaletę, że pamięta co było ostatnio. Nie będziesz musiał zawsze po włączeniu od nowa ustawiać liczby. 

No to tak na szybko..

  • Lubię! 1
  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites

Wow. Ktoś jeszcze dzisiaj podejmuje taki temat ?

Szacun, gotowy układ przemysłowy kosztuje ok 200zł. Ale nie chce cie zniechęcać do budowy własnego układu. Jakbyś chciał to uprościć do minimum to kiedyś istniał też gotowy układ licznika mianowicie ICM 7217 i jego pobratyńcy 7225 itp, który integruje właściwie wszystkie bloki funkcjonalne  jednym scalaku. Nie wiem czy dzisiaj jeszcze do zdobycia, ale na pewno upraszcza sprawę i PCB.

  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites

A ja kolegę PiotraB rozumiem - można kupić gotowe, ale nie ma to jak samemu zrobić. Niezapomniane wrażenie jak pierwsze urządzenie ze zrobioną własnoręcznie płytką zaczyna działać. A jaki Tato będzie dumny... 🙂 

  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites

@marek1707 serdeczne podziękowania za włożony czas i profesjonalną pomoc. To naprawdę wiele dla mnie znaczy 🙂 
 

Dnia 28.09.2018 o 22:21, BlackJack napisał:

Nie wiem czy dzisiaj jeszcze do zdobycia, ale na pewno upraszcza sprawę i PCB.

Dziękuję, faktycznie wiele by uprościł. Do zdobycia,  niestety za dolary, więc nie skorzystam.

Zastosowałem się do otrzymanej pomocy w efekcie schemat nieco... się zmienił.
1. Mechaniczny zadajnik wystawia kod BCD.
2.  Licznik BCD clock = impuls z krańcówki. (czy teraz sygnał jest poprawnie przetworzony?)
3. Konwerter wartości licznika na wyświetlacz. (dobiorę odpowiedni rezystor maszyna stoi na dworze)
4. Komparator porównuje sygnały BCD. (tu również wprowadziłem poprawki)
5. Jeżeli obie wartości się zgadzają komparator podaje stan wysoki = zwarcie styku = wciśnięcie przycisku wyłączającego maszynę (monostabilny)
Praca maszyny nie rozpocznie się ponownie dopóki nie zostanie włączona innym przyciskiem monostabilnym.
Zmiana stanu przekaźnika może dać efekt tylko przy zwarciu i jest to wyłącznie zatrzymanie maszyny.

1. Zasilanie / Komparator / Reset / Krańcówka / Przekaźnik
850869126_Komparatorsygnaresetprzekanikzasilanie.thumb.png.1f821e6344365e4fd20de258c0a1793a.png

2. Zadajniki (mechaniczne) BCD / Liczniki BCD / Konwertery BCD - 7seg
1186174667_ZadajnikBCDLicznikBCDKonwerter7seg.thumb.png.295d7ceb83202d829c2474aee49f3fce.png

Liczę na dalszą pomoc i serdecznie wszystkim dziękuję za poświęcony czas 🙂

Udostępnij ten post


Link to post
Share on other sites

Trochę błądzisz, trochę brak doświadczenia, ale każdy kiedyś zaczynał. Kilka kolejnych uwag do nowej wersji licznika:

1. Staraj się nie mieszać rodzin układów CD4000 i bipolarnych LS - pisałem o tym w którymś wątku o obciążalności bramek. W tym przypadku możesz użyć licznika 74LS390 i zrobić wszystko na serii LS lub zdecydować się na CMOS i wtedy licznik może zostać (lub dajesz 74HC390), ale pozostałe układy też powinieneś zamienić na wersje CMOS. Nie wiem czy istnieją dekodery 74HC47 - nigdy się czymś takim nie spotkałem.

2. Zadajnik na Twoim schemacie podaje jedynkę logiczną przez zwarcie wejscia kompratora do plusa zasilania. Co podaje zero gdy dany zestyk jest rozwarty? Nigdy nie zostawiasz wejść CMOSów wiszącyh w powietrzu.

3. Układ dopasowania sygnału z zestyku trapeziarki wciąż jest zły. Po pierwsze napisz, czy jest to styk pasywny czy jest to linia podająca 24V z maszyny bo bez tej informacji nie wiemy co chcesz zrobić. Widząc jakąś diodę Zenera zakładam, że chcesz jednak dopasować przychodzące 24V do wejścia układu cyfrowego. Czy tak? Zacznij więc od zwykłego, rezystorowego dzielnika napięcia.

4. Anody wyświetlacza muszą dostać plus zasilania.

5. Coś co wprowadziłeś szeregowo z zasilaniem 24V jest jak rozumiem jakimś przyciskiem na chwilę zabierającym zasilanie. To niczego nie zmienia - układ nadal nie będzie poprawnie wstawał po włączeniu, bo nie generujesz sygnału zerowania do liczników impulsów. Tak jak zrobiłeś przycisk RESET do kasowania ręcznego, to równolegle do niego daj kondensator. To może udawać wciśnięty przycisk w chwili włączania zasilania. Uważaj na polaryzację sygnału zerowania przy ew. zmianie typu licznika.

6. Komparator 688 daje zero gdy wykryje równość - ma kółko na pinie "P=Q", prawda? Musisz zrobić inny układ włączania przekaźnika i  narysuj go wreszcie masą (i emiterem) do dołu. Przecież nie mieszkamy w Australii..

7. Dekodery 7447 mają wejście RBI które umożliwia wygaszanie zera nieznaczącego. Jeżeli wejście tylko starszego dekodera (tego od dziesiątek) podepniesz do masy, nie będzie wyświetlał swojego zera i zamiast "08" dostaniesz ładniejsze " 8".

8. Zastanów się czy licznik ma się inkrementwać w chwili zwierania czy rozwierania styku maszyny - ja tego nie wiem jak ma być, ale może to być zrobione tylko w jeden sposób. Akurat w tych licznikach masz możliwość wyboru zbocza. W innych (np. 74HC390) musisz odpowiednio podłączyć zestyk z maszyny lub dać inwersję sygnału po drodze. Nadal z resztą nie widzę bramki Schmitta na wejściu zegarowym pierwszego licznika.

9. Pojemności jakie dospawałeś przy stabilizaotrze są OK, ale powinny być oprócz tych które były a nie zamiast. Każdy scalak cyfrowy musi dostać swoje 100nF na zasilaniu.

10. Szeregowo z wejściem zasilania 24V możesz dać diodę gdyby kiedyś przyszło Ci do głowy podłączyć odwrotnie zasilanie do układu.

11. Kropkę najmłodszego wyświetlacza możesz użyć do monitorowania stanu wejścia z maszyny. Niech się zapala gdy przychodzi impuls (zwarcie? +24V?). Wstaw tam jakiś tranzystor lub bramkę - to są tanie rzeczy a czasem przydaje się jakaś szczątkowa diagnostyka wbudowana w sprzęt.

 

  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites
Gość es2

Zabawa w pojedyncze układy cyfrowe była dobra 30 lat temu. Skoro jednak chcesz poznać działanie bramek, liczników itp, to zrób to po nowemu czyli na CPLD lub FPGA. Nie narobisz się przy PCB, będzie mała, łatwa do wykonania (chyba, ze zechcesz BGA). Łatwo wprowadzić zmiany, oprogramowanie ma symulatory, zanim zrobisz PCB to wszystko można zasymulować.

Jeśli już robisz na układach o małej czy średniej skali integracji to zapomnij o LS czy CMOS 4000, 45xx. Wszystko to znajdziesz w szybkich C-MOS (74LS-> 74HC, 4000 - 74HC4000).

Udostępnij ten post


Link to post
Share on other sites

Racja, od tej chwili Piotrze nie używaj nigdy przestarzałych zapałek. Wszystko co potrzebujesz do zapalenia cygara czy rozpalenia ogniska w ogródku znajdziesz w kiosku w formie plastikowej zapalniczki lub wojskowego miotacza ognia z demobilu. Papier? O shit, przecież pies go może zjeść a dziecko zmemłać lub podrzeć - jaki jest sens kupować zeszyty, notatniki itp starocie i używać ołówka i gumki do szkicowania swoich pomysłów? Wszystko czego potrzebujesz to tablet z rysikiem. Możesz robić notatki w tysiącu kolorów setką grubości kresek. A gdybyś chciał pójść na spacer? Nigdy, przenigdy nie zatrudniaj do tego własnych nóg! O wiele szybszy spacer wykonasz używając elektrycznej deskorolki lub hulajnogi - zmarnujesz mniej czasu, pokonasz dłuższy dystans a całą trasę możesz zaplanować wcześniej na wbudowanej nawigacji. Zaoszczędzony czas możesz przeznaczyć np. na czytanie, no ale przecież nie książek - to obciach - tak się robiło lata temu. Dziś powinieneś poszukać sobie jakiegoś korka w dużym mieście i słuchać audiobooka lub pochłaniać kilka tekstów jednocześnie wybranych z biblioteki 1000 pozycji w e-papierowym czytniku. I nie jest ważne, że się uczysz i  że masz radochę z kombinowania układu z tanich klocków albo że zliczasz impulsy co minutę. Użyj 100MHz FPGA albo poszukaj innych - jak to było? - "szybkich  C-MOS" bo tak. Nawet nie patrz w stronę układów serii 4000 czy 74LSxxx których dopiero się uczysz i które wciąż są w użyciu, bo to pokryte kurzem starocie których dziś się wręcz wstydzimy i nie tykamy nawet kijem.

Na szczęście z Twojego podejścia i postępów w projektowaniu tego licznika widzę, że masz własny rozum. Czasem droga do celu może być dużo ciekawsza i satysfakcjonująca niż samo jego osiągnięcie (stare przysłowie chińskie wymyślone na poczekaniu .

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites
Gość es2
(edytowany)
1 godzinę temu, marek1707 napisał:

Racja, od tej chwili Piotrze nie używaj nigdy przestarzałych zapałek (..)

Racja 🙂 Możesz zbudować taki np 4026 z tranzystorów a może lepiej lamp. Wywody marek1707 są,delikatnie mówiąc, kiepskie.

Naturalnie, jeśli masz nadmiar czasu możesz robić to z bramek, tranzystorów lamp i przekaźników. Pytanie po co?  Jak hobby, to ok, ale to ma być użyteczne urządzenie.

Nie zależy Ci na niezawodności? Na rozsądnym poborze ciągle drożejącego prądu? Masz za dużo czasu? Zrobisz kilka wersji PCB bo będą błędy,  które w układzie programowalnym poprawiasz w kilka minut a na PCB błąd może być wręcz niemożliwy do usunięcia. A jak w trakcie realizacji projektu będziesz chciał dodać jakąś opcję? Nowe PCB? Nie prościej kilka zmian w CPLD czy FPGA?

Tego co robisz, tak jak i Arduino do CV sobie nie wpiszesz. To, że zrobisz ten projekt będzie świadczyć o tym, że, jak się nauczysz używać układów programowalnych, to będziesz mógł robić poważne projekty. Jak się nauczysz! Czy nie lepiej od razu się nauczyć?

Edytowano przez es2

Udostępnij ten post


Link to post
Share on other sites

Raportowane posty niezwiązane z tematem zostały ukryte. Proszę o trzymanie się głównego tematu i nie wywoływaniu "afer". Jeśli ktoś się nie zgadza z jakimś postem to zachęcam do wyrażania swojej dezaprobaty reakcjami (ikonka serca w prawym dolnym rogu wiadomości) - można tam przyznać również negatywną opinię. Publiczne sprzeczki ma tematy nieelektroniczne nie są tutaj potrzebne. 

1 godzinę temu, es2 napisał:

Naturalnie, jeśli masz nadmiar czasu możesz robić to z bramek, tranzystorów lamp i przekaźników. Pytanie po co?  Jak hobby, to ok, ale to ma być użyteczne urządzenie.

@es2, autor tematu wyraźnie napisał dlaczego chce to zrobić, cytuję dla pewności:

Dnia 26.09.2018 o 18:47, PiotrB napisał:

po zakończeniu kursów elektroniki oraz techniki cyfrowej zwieńczeniem nauki jest układ, zbudowany dla maszyny w firmie mojego ojca. [...]  Zdaję sobie sprawę,  że mikrokontroler pasował by tu o wiele lepiej, chciałbym jednak spróbować stworzyć "samodzielnie" taki układ logiczny.

 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Dziękuję obu panom za chęć pomocy. Obie opinie są dla mnie cenne. Przyznam, że do tej pory żyłem w nieświadomości o układach tj. FPGA. Oczywiście kurs na forbocie już czeka w kolejce, zaraz za raspberry :) . Przemyślałem sytuację i doszedłem do wniosku, że spróbuję dokończyć układ w "pierwotnej" formie. Pomimo bezsprzecznej przewagi innych układów, chcę choć raz stworzyć taki "prymitywny" układ, ponieważ jest to bardzo pouczające. 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Jeśli cie interesuje seria układów CD4000 jest jeszcze taki układ CD4553, Jest to 3 cyfrowy licznik BCD, czyli obsługuje 3 cyfry. Tak w skrócie to bardzo uproszczona wersja ICM7217, właściwie tylko sam licznik do 999, z multipleksowanym wyjściem BCD, wejściem DISBLE, wejściem i wyjściem przeniesienia. Cena ok 8zł, aczkolwiek trzeba by to obudować kilkoma scalakami, jak dekoder BCD (1 szt), 3 tranzystory do sterowania wyświetlaczy, i parę innych.

Ogólnie przejrzyj sobie katalog układów 4000, czasami są "pół gotowce" do takich zastosowań.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...