MD_REncorder (encoder bibliotek till Arduino)

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Användarvisningsbild
PeterH
Inlägg: 8614
Blev medlem: 15 mars 2006, 15:57:10
Ort: Gävle/Valbo

MD_REncorder (encoder bibliotek till Arduino)

Inlägg av PeterH »

Är det någon av er som använder eller har använt ett bibliotek som heter "MD_REncorder"? Skall enligt informationen vara baserad på ett annat encoder bibliotek från en kille som heter Ben Buxton. Jag har svårt att hitta vilka funktioner som finns och kan användas i biblioteket, jag har öppnat upp exemplen som finns (både MD och Buxtons) men det känns ytterst oklart vad som finns och kan göras(?) åtminstone för mig som är novis på kodning... :vissla:

Det jag vill kunna göra är att läsa en encoder (quadrature med A och B utgång) utan att missa steg och enligt uppgift jag fått behöver man antingen ingångar som har "äkta" räknare (Arduino har bara en sån ingång) eller en dedikerad krets som exempelvis LS7366R via SPI för att inte riskera att missa några pulser. Men enligt Ben Buxton's sida har han lyckats lösa detta genom att använda två av Arduinos ingångar med interrupt(?) istället. Jag tänkte göra ett försök med hans kod men hittar inte så mycket på hans sidor, jag ska använda encodern för att mäta avstånd (räkna pulser frammåt och bakåt) och det exempel jag hittar visar hastighet och vinklar om jag inte missar något.

Från Ben Buxton's kod har sedan denna Majid gjort MD_REncoder biblioteket men där finns inte heller den information jag söker (eller så är det helt enkelt för att jag är kass på kodning som sagt). Är det någon här som har lust att knuffa mig åt rätt håll, kanske det fins andra sätt att läsa av encoder utan att missa steg? Det ska till en massa annan kod också så det är viktigt att försöka undvika att encoder läsningen inte blir lidande när koden växer...

Tacksam för den hjälp jag kan få 8)
Användarvisningsbild
Icecap
Inlägg: 26148
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: MD_REncorder (encoder bibliotek till Arduino)

Inlägg av Icecap »

Jag har läst 3 st manuellt betjänat encoders helt utan interrupts eller speciella kretsar.

Och det var lätt som en plätt.

En timer-interrupt på 1000 Hz och läsning av portpinnar klarade saken.

Resultatet var 3 värden, en för varje encoder.

Interrupt-rutinen klarade allt med sekvens osv. och hade även med en accelerator så om man vred snabbt stegades det större steg så att säga.

Det användes till att ställa var sin encoder-utgång så att de kunde ge ut frekvenser mellan 125mHz och 50kHz - eller vara av.
Användarvisningsbild
hawkan
Inlägg: 2636
Blev medlem: 14 augusti 2011, 10:27:40

Re: MD_REncorder (encoder bibliotek till Arduino)

Inlägg av hawkan »

Det är en pollande funktion. Det sker bara kontroll av pinsens status när .process() körs.
Det han gör är att sätta en interrupt till de två input-pinnarna från enkodern, och i ISR gör han process().
Det fungerar väl, säkert finns det någon hastighetsgräns, Titta interrupt.ino. https://github.com/buxtronix/arduino/bl ... errupt.ino
Användarvisningsbild
Icecap
Inlägg: 26148
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: MD_REncorder (encoder bibliotek till Arduino)

Inlägg av Icecap »

Javisst körde jag en pollande funktion. Jag har lärt mig att om man har en fysisk kontakt encoder (metall mot metall i kontaktpunkter) får man - som alltid - kontaktstuds.
Detta kan ställa till massor av problem så en debouncer (t.ex. LP-filer) är nödvändigt.
Användarvisningsbild
Klas-Kenny
Inlägg: 11344
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: MD_REncorder (encoder bibliotek till Arduino)

Inlägg av Klas-Kenny »

Det allra enklaste för att få det helt oberoende av övrig programkod är ju att lösa det med hårdvara. Många processorer har ingångar för kvadraturenkoder.

Och Arduino är ju så stort nu för tiden att det finns stöd för en massa olika processorer. Finns det ingen som kan göra jobbet?
Någon STM32 tex.
PeterH skrev: 7 oktober 2023, 13:39:10 Arduino har bara en sån ingång
Kan ju omöjligen vara en total sanning, eftersom att "Arduino" kan vara nästan vilken hårdvara som helst idag.
Användarvisningsbild
mankan
EF Sponsor
Inlägg: 908
Blev medlem: 18 juli 2015, 11:23:22
Ort: Linköping

Re: MD_REncorder (encoder bibliotek till Arduino)

Inlägg av mankan »

Användarvisningsbild
PeterH
Inlägg: 8614
Blev medlem: 15 mars 2006, 15:57:10
Ort: Gävle/Valbo

Re: MD_REncorder (encoder bibliotek till Arduino)

Inlägg av PeterH »

Du har rätt Klas, det finns en massa olika "Arduino", jag avsåg "orginalet" dvs. UNO 8)

Ska man vara petig så hade det varit mer rätt att skriva ATMEGA328 eftersom jag i slutändan kommer att cadda ett eget kort med den processorn på, men i utvecklingsstadiet använder jag UNO och då kändes det rätt att fråga om Arduino för att få hjälp att få till en encoder avläsning. Gärna utan extra hårdvara som LS7366R :)

Icecap, detta var en av dom intressanta sakerna med biblioteket från Ben Buxton, problemen med kontaktstudsar skulle redan vara löst i biblioteket så detta var en av dom saker som fångade mitt intresse, att lösa allt i ett bibliotek så att säga (kontaktstuds, kvadratur och riktning på encoder utan att tappa pulser fast man inter använder räknaringångar). Visst går det att skriva koden själv, men frågan var om någon använt biblioteket "MD_REncorder" som är baserad på Ben Buxtons kod eftersom jag inte förstår hur man kan använda biblioteket fullt ut... (det kan ju vara så att det blir både lättare och bättre att skriva koden utan biliotek, men då måste man vara vassare på programmering än jag är :vissla: )

Edit: tack mankan, jag ska kolla dina länkar och se om jag kan greppa något?
Skriv svar