Përmbajtje:

Tutorial i koduesit rrotullues me Arduino: 6 hapa
Tutorial i koduesit rrotullues me Arduino: 6 hapa

Video: Tutorial i koduesit rrotullues me Arduino: 6 hapa

Video: Tutorial i koduesit rrotullues me Arduino: 6 hapa
Video: Управление 16 серводвигателями с использованием модуля PCA9685 и Arduino V2 2024, Nëntor
Anonim
Tutorial i koduesit rrotullues me Arduino
Tutorial i koduesit rrotullues me Arduino

Kodifikuesi rrotullues është një komponent elektronik i aftë për të monitoruar lëvizjen dhe pozicionin kur rrotullohet. Kodifikuesi rrotullues përdor sensorë optikë që mund të gjenerojnë impulse kur kodifikuesi rrotullues rrotullohet. Zbatimi i kodifikuesit rrotullues zakonisht si një monitor lëvizës mekanik ose robotik mund të përdoret gjithashtu për përzgjedhjen e menysë në ekran. Kodifikuesi rrotullues ka dy dalje në mënyrë që të mund të bëjë dallimin midis rrotullimit negativ (CW) dhe pozitiv (CCW) dhe gjithashtu ka një buton të vetëm.

Hapi 1: Rrjedha e pulsit të kodifikuesit rrotullues

Rrjedha e pulsit të kodifikuesit rrotullues
Rrjedha e pulsit të kodifikuesit rrotullues

Rrjedha e pulsit e krijuar nga kodifikuesi rrotullues i mëposhtëm është si fotografia e mësipërme.

Hapi 2: Pinout i Rotary Encoder

Pinout i Kodifikuesit Rotary
Pinout i Kodifikuesit Rotary

Shpjegim:

  • GND GND
  • + + 5V
  • Butoni SW i koduesit rrotullues kur shtypet
  • Të dhënat DT
  • CLK Të dhënat 2

Një nga kunjat DT ose CLK duhet të lidhet me këmbën e ndërprerjes të Arduino Uno, ose të dyja nga DT dhe CLK janë të lidhura me kunjin e ndërprerjes.

Hapi 3: Skematike

Skematike
Skematike
  • GND à GND Arduino Uno
  • + à + 5V Arduino Uno
  • SW à PIN 4 Arduino Uno
  • DT à PIN 3 Arduino Uno
  • CLK à PIN2 Arduino Uno

Hapi 4: Kodi

Kodi
Kodi

Në tutorialin e mëposhtëm, i cili do të përdoret si një ndërprerje është PIN 2 i Arduino Uno, ndërsa PIN 3 përdoret vetëm si një hyrje e rregullt.

#përcakto koduesin0PinA 2 #përcakto koduesin0PinB 3 #përcakto koduesin0Btn 4 int kodues0Pos = 0; void setup () {Serial.begin (9600); pinMode (kodifikuesi0PinA, INPUT_PULLUP); pinMode (kodifikuesi0PinB, INPUT_PULLUP); pinMode (kodifikues0Btn, INPUT_PULLUP); attachInterrupt (0, doEncoder, CHANGE); } int valRotary, lastValRotary; lak void () {int btn = digitalRead (encoder0Btn); Serial.print (btn); Serial.print (""); Serial.print (valRotary); if (valRotary> lastValRotary) {Serial.print ("CW"); } if (valRotary {

Serial.print ("CCW");

} lastValRotary = valRotary; Serial.println (""); vonesë (250); } void doEncoder () {if (digitalRead (encoder0PinA) == digitalRead (encoder0PinB)) {encoder0Pos ++; } else {encoder0Pos--; } valRotary = kodifikues0Pos/2.5; }

Në rreshtin 10 të skicës së mësipërme përdoret për të mundësuar ndërprerjen e pin 2 Arduino Uno. Në funksionin "doEncoder" llogaritet nga koduesi rrotullues. Nëse vlera e DT dhe CLK (ndërprerja e pinit e Arduino Uno) është e njëjtë, atëherë ndryshorja "encoder0Pos" do të rritet / shtohet, përveç asaj gjendjeje, ndryshorja "encoder0Pos" zvogëlohet.

Hapi 5: Shpjegimi

Vlera ValRotary është vlera e numrit të hapave që janë ekzekutuar. Vlera ValRotary merret nga vlera e leximit të koduesit të sensorit rrotullues pjesëtuar me 2.5. Një vlerë prej 2.5 merret nga testi, pasi një hap i koduesit rrotullues mund të kalojë 1, kështu që ndajeni me 2.5 për vlerën e tij sipas perspeptit dhe gjithashtu shtimin e vonesës së leximit.

Ndërsa në linjën 19 - 25 është një program për të përcaktuar nëse kodifikuesi rrotullues rrotullues CW ose CCW. Shpjegimi i rreshtave 19 - 25 është kur leximi aktual i koduesit rrotullues është më i madh se të dhënat e mëparshme rrotulluese të shprehura më pas si CW. Ndërsa nëse leximi aktual është më i vogël se leximi i mëparshëm atëherë ai deklarohet si CCW.

Hapi 6: Dalja

Dalje
Dalje

1 = vlera e butonit të fillimit të rrotulluesit kur nuk është shtypur

Recommended: