Rotationsgivare/Pulsgivare med AVR

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
gurgalof
EF Sponsor
Inlägg: 1311
Blev medlem: 18 februari 2004, 22:15:06
Ort: Göteborg
Kontakt:

Rotationsgivare/Pulsgivare med AVR

Inlägg av gurgalof »

Jag har en sån här.

Men har inte lyckats klura ut hur jag ska få den att fungera med min AVR (ATTiny2313).

Jag vet att man ska använda interupt iallafall (har aldrig använt interupt tidigare).

Sen ska man ju klura ut åt vilket håll den snurrar också...



Just det ja, jag programmerar i C.


Snälla hjälp mig, jag är nybörjare på det här...
Användarvisningsbild
Rohan
Inlägg: 1065
Blev medlem: 7 april 2004, 08:24:39
Ort: Eksjö, Småland
Kontakt:

Inlägg av Rohan »

Ett sätt att göra det på är att koppla in den ena signalen på ett ben med avbrott och den andra signalen på en vanlig ingång. Sedan är det bara att läsa av den andra signalen varje gång du får ett avbrott.
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Inlägg av thepirateboy »

Det finns många olika sätt att läsa av en sådan. Kolla på avr-freaks så hittar du många implementeringar. Man kan polla, man kan använda interrupt. Man kan använda lågpassfilter och man kan filtrera i mjukvaran.

Själv använder jag interrupt och lågpassfilter. En av utgångarna från givaren är kopplad via lågpassfilter till en interruptingång. Genom att kolla status på utgångarna från givaren (hög eller låg) avgör man med eller moturs.

Kod: Markera allt

//--------------------------------------------------//
// Interrupt när man VRIDER på rotationsgivaren
//--------------------------------------------------//

ISR(INT0_vect)
{

	if(PINC & (1<<2))				// Kollar nivån på pinnarna för att avgöra medurs/moturs
	{
		if(PINC & (1<<3))
		{
			rotation--;
		}
		else
		rotation++;
	}
	else
	{
		if(PINC & (1<<3))
		{
			rotation++;
		}
		else
		rotation--;			
	}
}
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Interrupt har sina fördelar (ingen kod körs förrens man faktiskt rör på den) men
också en del nackdelar (kontaktstudsar bl.a).
Med extra extern hårdvara (filter) kan man minska problemen.

När jag skrev kod för en rot.enkoder (för PIC, men det spelar i detta
fall mindre roll) så hade jag en rutin i ett timer-avbrott som kollade läget.
Om det avvek från föregående läge, så jämfördes de för att få riktningen.
Jag har för mig att den pollades med ca 400 Hz. Det tar liten tid även om
enkodern står still, men blir det bara en avläsning och än jämförelse med
föregående läge (lika) och så return från timer-interruptet. Jag har för mig
att overheaden bara var någon % av tillgängliga cykler.

I de flesta applikationer har man i alla fall ett timer-interrupt av andra
orsaker, och då kan man bygga ihop det med denna funktion.
Användarvisningsbild
gurgalof
EF Sponsor
Inlägg: 1311
Blev medlem: 18 februari 2004, 22:15:06
Ort: Göteborg
Kontakt:

Inlägg av gurgalof »

Jag kan inte!!! Jag är helt värdelös!!!

Jag kan verkligen inte koda....


Lägger ner det här...
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

Inlägg av oJsan »

Självförtroendet på topp märker jag :(
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Jag kan inte!!! Jag är helt värdelös!!!

Hur vet du det ?
Användarvisningsbild
gurgalof
EF Sponsor
Inlägg: 1311
Blev medlem: 18 februari 2004, 22:15:06
Ort: Göteborg
Kontakt:

Inlägg av gurgalof »

Glöm det jag skrev innan...
Jag har bytt uC till ATMega16, eftersom jag fick den av skolan...

Är det någon som kan hjälpa en relativ nybörjare som mig?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

OK.
Beskriv vad du behöver hjälp med.
kimmi
Inlägg: 221
Blev medlem: 13 april 2007, 12:25:00

Inlägg av kimmi »

Användarvisningsbild
gurgalof
EF Sponsor
Inlägg: 1311
Blev medlem: 18 februari 2004, 22:15:06
Ort: Göteborg
Kontakt:

Inlägg av gurgalof »

Ska titta på det mer imorgon...

Inte min dag idag, migrän + att man har varit sjuk i en vecka.
Tur att EF finns!
Skriv svar