Enkodér

Sperhak
Příspěvky: 46
Registrován: 22 čer 2018, 19:49
Reputation: 0

Enkodér

Příspěvek od Sperhak » 15 dub 2021, 10:23

Snád sa to považuje za senzor:D Mám trocha špecifický enkodér a potreboval by som pomôcť s napísaním kódu. Našiel som si tento kód

Kód: Vybrat vše

 
 #define outputA 6
 #define outputB 7
 int counter = 0; 
 int aState;
 int aLastState;  
 void setup() { 
   pinMode (outputA,INPUT);
   pinMode (outputB,INPUT);
   
   Serial.begin (9600);
   // Reads the initial state of the outputA
   aLastState = digitalRead(outputA);   
 } 
 void loop() { 
   aState = digitalRead(outputA); // Reads the "current" state of the outputA
   // If the previous and the current state of the outputA are different, that means a Pulse has occured
   if (aState != aLastState){     
     // If the outputB state is different to the outputA state, that means the encoder is rotating clockwise
     if (digitalRead(outputB) != aState) { 
       counter ++;
     } else {
       counter --;
     }
     Serial.print("Position: ");
     Serial.println(counter);
   } 
   aLastState = aState; // Updates the previous state of the outputA with the current state
 }
Ale je písaný na iný typ enkodéru Na tejto stránke je tenkód aj priebehy enkodéru ako by to malo vyzerať https://howtomechatronics.com/tutorials ... e-arduino/
Lenže môj enkodér má takéto priebehy
DS1Z_QuickPrint4.png
DS1Z_QuickPrint3.png
Vedeli by ste poradiť ako ten kód upraviť aby spolupracoval s mojim enkodérom? Pretože teraz to občas opakuje čísla napr takýto výpis z toho dostanem
Position: 53
Position: 54
Position: 55
Position: 56
Position: 57
Position: 56
Position: 57
Position: 56
Position: 57
Position: 58
Position: 57
Position: 58
Position: 57
Position: 58

Uživatelský avatar
Caster
Příspěvky: 380
Registrován: 11 zář 2019, 09:02
Reputation: 0

Re: Enkodér

Příspěvek od Caster » 15 dub 2021, 13:00

Bylo by dobré napsat, jaký encoder používáš a dát sem taky jeho fotku. "Mám trocha špecifický enkodér" nic neříká. Nevypadá to, že by jsi použil encodér "breakout board and it has five pins", jak je uvedeno v příkladu ;) .

Sperhak
Příspěvky: 46
Registrován: 22 čer 2018, 19:49
Reputation: 0

Re: Enkodér

Příspěvek od Sperhak » 15 dub 2021, 13:12

Enkodér má 3 piny, je to tento https://www.aliexpress.com/item/32848718506.html Myslel som že priebehy stačiť budú.

ohruska
Příspěvky: 235
Registrován: 08 pro 2017, 20:56
Reputation: 0

Re: Enkodér

Příspěvek od ohruska » 15 dub 2021, 14:12


ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: Enkodér

Příspěvek od ondraN » 15 dub 2021, 14:53

Řekl bych, že je problém v příliš uzkém pásmu mezi přechodem úrovní a MCU to při rychlejším pohybu dekóduje zpožděně. Ta sekvence pulsů odpovídá tomu enkodéru, co jsem daval ohruska, ale na oscilogramu je vidět velmi malý posun průběhů z obou kanálů.

Sperhak
Příspěvky: 46
Registrován: 22 čer 2018, 19:49
Reputation: 0

Re: Enkodér

Příspěvek od Sperhak » 15 dub 2021, 15:35

Vdaka ohruska skúsil som to a je to lepšie, ale stále to robí to že to občas zablbne a tie čísla a tam opakujú. Deje sa to však už menej častejšie. Je to stále problém pretože to používam v spojení s motorom a takto mi to stále pristane na inom mieste.

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Enkodér

Příspěvek od kiRRow » 15 dub 2021, 15:55

Pull up/down rezistory tam jsou? Jinak udělej debounce stejně jako na tlačítku.

Sperhak
Příspěvky: 46
Registrován: 22 čer 2018, 19:49
Reputation: 0

Re: Enkodér

Příspěvek od Sperhak » 15 dub 2021, 16:10

Ano rezistory mám. No ten debounce bude problem takto akokeby na 2 tlacidla to jedno je tam vnorene do tej funkcie to asi nedam.

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Enkodér

Příspěvek od pavel1tu » 16 dub 2021, 07:57

Nedalo mi to, změřil jsem to a mám také takový encoder (v krabici z prototipu) - posun o necelých 10% (bráno z délky prvního pulzu).

Co jsem koukal do kodu (je to z netu a jednoznačně je použit jako základ kod z odkazu co dal ohruska), ale očesané,
v kodu se čeká na stav 00, následující stav 01/10 udává kterým směrem se točí.
Ale i tak to trochu blbne.

Vyřešil jsem nákupem encoderu za 4EUR a ten tam chodí s klasickou knihovnou už více jak rok, ale je o dost větší.
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Sperhak
Příspěvky: 46
Registrován: 22 čer 2018, 19:49
Reputation: 0

Re: Enkodér

Příspěvek od Sperhak » 16 dub 2021, 09:39

Diki za to zmeranie, no nepotešil si ma že to blbne aj tebe. Tento enkoder som bral hlavne kôli jeho velkosti a jaksi som nečakal že bude iný oproti tým klasickým. Asi mi ostáva len nájst iny typ.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 6 hostů