Skocz do zawartości

Enkoder & jego obsługa


Pomocna odpowiedź

7 godzin temu, ethanak napisał:

Chcesz powiedzieć, że w loop wywołujesz attachInterrupt???

Na odwrót. attachInterrupt przerywa loop. Jeszcze nie znam wszystkich możliwości tych opcji. Opis biblioteki jest strasznie skromny. Arduino trzeba poznawać na przykładach innych kodów. W przypadku gdybyś obydwa przerwania odwołał do obsługi enkodera, a stopkę do loop, to nie byłoby dość profesjonalnie. 

 

7 godzin temu, _LM_ napisał:

To się robi na sprzętowych peryferiach mikrokontrolera, avr mają wyjścia pwm sterowane bezpośrednio z timera. Także tam stan zatrzaśnięty będzie tak długo jak długo jest ustawiony jego interwał.

A z funkcją micros nie da rady precyzyjnie odmierzyć milisekund w pętli przerwania zawężonego?

 

7 godzin temu, ethanak napisał:

ATmega na pracuje z zegarkiem 16 MHz, czyli dla funkcji zgrzewarki wejście przerwania od enkodera będzie praktycznie niezauważalne. A podade 10µs to taka długaśna procedura przerwania 😉

No ale jeżeli w trakcie zgrzewania dłużej zakręcisz enkoderem, to będzie więcej niż 100us. Dla dużego prądu 100us w przypadku zgrzewarki aż tak dużej różnicy nie robi, ale jak coś zamuli pętle na kilka ms, to może być nieciekawie. 

Kolego, to naprawdę nie jest PLC. Piszesz totalne bzdury. Nie masz zielonego pojęcia o co chodzi ale wmawiasz nam, że wiesz lepiej i my wszyscy robimy to źle, a Ty masz super sposób...

Zacznij może od pierwszej lekcji kursu Arduino. I nie próbuj rozwiązywać nieistniejących problemów - bo to co napisaleś to (wybacz szczerość) jedna wielka bzdura.

(edytowany)
23 minuty temu, ethanak napisał:

Zacznij może od pierwszej lekcji kursu Arduino. I nie próbuj rozwiązywać nieistniejących problemów - bo to co napisaleś to (wybacz szczerość) jedna wielka bzdura.

Zobaczymy jak to wyjdzie w praktyce. Umieszczę dla przykładu obsługę stopki w środku czasochłonnej pętli loop i zobaczę co spowoduje 10 ms przerwanie. Sprawdzę jak szybko program powróci do miejsca w pętli w którym został przerwany. Sprawdzę też jak zachowa się układ pod względem fizyki, bo przy tak ogromnym prądzie nawet 10us wprowadzi do układu swoje indukcyjności oraz spadek jego wartości. Jeżeli nie będzie większych zakłóceń impulsu prądowego, to masz u mnie "+"  Mogę dodać tylko tyle, że w tych zgrzewarkach które widziałem w momencie aktywowania stopki klawiatura czy też enkodery są nieaktywne.  

Edytowano przez rafal220

Jakie przerwanie 10 ms? Wejscie do przerwania to ok. 350ns dla Arduino, wyjscie drugie tyle, to co jest w procedurze ISR powinno się zmieścić w w kilku - kilkunastu mikrosekundach. O czym Ty w ogóle mówisz (już nie sugeruję tego że nie masz zielonego pojęcia jak to działa bo nie chcę się powtarzać).

 

1 minutę temu, ethanak napisał:

Jakie przerwanie 10 ms?

us (przejęzyczenie)

Po prostu uważam, że w profesjonalnym sprzęcie tj. zgrzewarki nie powinno być żadnych przerwań w czasie trwania impulsu. I nie jest to mój wymysł. 

5 minut temu, ethanak napisał:

już nie sugeruję tego że nie masz zielonego pojęcia jak to działa bo nie chcę się powtarzać

A ty kolego po 2 tygodniach przygody z elektroniką od razu wszystko wiedziałeś? 

(edytowany)

Nie. Wtedy jeszcze nie było Internetu. A potem, kiedy już był, to nie udowadniałem wszystkim naokoło jaki to ja jestem mądry.

A zresztą Twoja sprawa. Jak nie chcesz się nic nauczyć (bo to Forum do tego w sumie służy) to moze spróbuj na Onecie? Też mają forum...

Edytowano przez ethanak
  • Nie zgadzam się! 1
1 godzinę temu, ethanak napisał:

Nie. Wtedy jeszcze nie było Internetu. A potem, kiedy już był, to nie udowadniałem wszystkim naokoło jaki to ja jestem mądry.

Ja jak zaczynałem też nie miałem Internetu, Arduino itp.  z tą różnicą że to była czysta elektroenergetyka, elektronika, później logika CMOS, sterowniki PLC, ponieważ łatwiej to wszystko  było samodzielnie ogarnąć bez pomocy kursów i  fachowej literatury. Może źle to odbierasz, ale nie chodzi tu o udowadnianie jakiś wyższości, tylko zrozumienie Arduino czy też C na podbudowie sterowników PLC. Nie jest to samo, ale sporo rzeczy robi się naprawdę podobnie. To co można zaobserwować w C, to mega większa kontrola nad mikrokontrolerami. W sterownikach PLC co prawda widzisz jak kompilator tworzy pętle, ale nie masz nad tym 100% kontroli tj. w C. Myślę, że potrzebuję trochę czasu, a w szczególności pracy i obserwacji jak to wszystko działa w realu na żywym układzie. Sama teoria beż praktyki mało daje. 

Zresztą teraz ostatnio jest wiosenna wyprzedaż za grosze różnych wyświetlaczy, przetworników i innych gadżetów pod Arduino, tak więc będzie na czym ćwiczyć. 

Gość
2 godziny temu, _LM_ napisał:

W datasheet z linku powyżej timery zaczynają się od rozdziału 14 tam masz wyszczególnione wszystkie konfiguracje z rozpiską rejestrów sam zobacz jak funkcjonalny to jest moduł 

To o czym piszesz ma sens, ponieważ z tym tematem można się spotkać także w sterownikach PLC. Tam też są bloczki odnoszące się do funkcji sprzętowych mikrokontrolera. Plusem jest to, że nie musisz poznawać na start skomplikowanych teorii, a minusem jest to, iż peryferia z których korzystasz są ograniczone.  Weźmy dla przykładu wyświetlacz 240x400 albo podobny. W PLC masz podstawowy edytor wyświetlaczy. Można np. w Paint zrobić plik graficzny bmp. 240x400 a edytor w kompilatorze to konwertuje na HEX i wkleja. Sam wyświetlacz też masz w postaci bloku ze zmienną która go aktywuje + zmienne "x" które wywołują z pamięci obrazy wklejone z Paitna. Możesz też łatwo zrobić sterowanie dotykiem. Np. robisz ikonkę przycisku w Paint wrzucasz do edytora pod ustaloną zmienną x, zaznaczasz jej położenie na wyświetlaczu oraz nakładasz z położeniem zmiennej obszaru pod zmienną "x" w jakim ma działać dotyk uzyskując w prosty sposób przycisk dotykowy na ekranie LCD. Do przycisku możesz zadeklarować jakąś zmienną wyjściową odnoszącą się do programu który zrobiłeś. Z tego co zaobserwowałem w Arduino będzie trochę trudniej, ponieważ trzeba mieć jakiś specjalistyczny program który przekonwertuje grafikę na HEX. Do tego trzeba będzie zapoznać się z jakąś konkretną biblioteką, aby nie uczyć się kilku różnych, których obsługa oraz nazewnictwo zmiennych może się różnić. 

Ale zanim dojdę do kolorowych wyświetlaczy LCD, oraz przycisków dotykowych (grubszy temat) na początku do zapoznania się z obsługą sprzętowej magistrali I2C, oraz SPI kupiłem dosłownie za kilka zł taki zestaw; 

1.thumb.jpg.ab9978d55fe150150444639da1a3fa24.jpg

W PLC obsługa tego standardowego zestawu jest intuicyjnie prosta. Zobaczymy jak to pójdzie w Arduino po drobnych schodach z czujnikami DS18B20.  

Niestety musisz przestawić myślenie plckowe na to czym teraz chcesz się zająć. W mikrokontrolerach mamy większą swobodę jeśli chodzi dostęp do peryferii i funkcjonalności ale wymaga to obeznania z jego peryferiami w istocie nie jest to aż tak trudne. Co do wyświetlaczy można stosować kolorowe i graficzne pod warunkiem że nie brakuje pamięci. Zaś do UI lepiej używać dedykowanych bibliotek typu lvgl, adfruit i toucj gfx, wszystko przed tobą 

  • Lubię! 1
Gość
1 godzinę temu, FlyingDutch napisał:

Niestety zgadzam się w tej ocenie z kolegą @ethanak. Jak zaczynałem się uczyć programować PLC (z jakiś rok temu) to pomyślałem sobie: "Przecież programowanie PLC musi być podobne do programowania mikrokontrolerów bo ich CPU jest oparte na mikrokontrolerach ARM (przeważnie dwurdzeniowe ARM A9)". Teraz po roku doświadczeń z PLC wiem, że analogie są pozorne.

Może gdyby bardziej się zagłębić w zawansowane peryferia C, to faktycznie macie rację. Jednak na chwilę obecną to co ćwiczę od ponad 2 tygodni naprawdę przypomina język graficzny, tylko wirtualizacja kodu jest przedstawiona w nieco inny sposób. A że środowiska graficzne mają takie czy inne ograniczenia techniczne, to jest już rozmowa na inny wątek. 

 

2 godziny temu, ethanak napisał:

A o przerwaniach i ich wpływie na resztę programu pogadamy, jak zobaczę wyniki zadań z kursu z lekcji o przerwaniach.

Ze wszystkim się zgodzę, ale pomysł ładowania przerwań w momencie wykonywania zgrzewania na czas 10us przy prądzie 10000A średnio mi się podoba. Bardziej profesjonalna jest propozycja kolegi  @_LM_ z wykorzystaniem sprzętowych timerów.

(edytowany)
29 minut temu, rafal220 napisał:

10us przy prądzie 10000A

Prototyp i tak uruchamia się bez obciążenia, badając jak układ się zachowuje na biurku. I wiadomo że w ostatecznym urządzeniu mogą jeszcze wyjść inne problemy choćby z uwagi na duże prądy i zakłócenia. Zgrzewarkę niedawno budowałem tyle że z trafa od mikrofalówki mam tam zarówno lcd2*16 jak i enkoder. Uruchamianie transformatora synchronizowane z przebiegiem napięcia sieci 230V. Działa bez zarzutu 

IMG_20230227_222414.thumb.jpg.31dcb6c142f36b2d1dafec4366912eca.jpg

Edytowano przez _LM_

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...