Sida 1 av 1

Varför "kontaktstuds" när jag tittar på elmätardiod?

Postat: 22 februari 2015, 14:09:05
av ie
Hej.

Jag försöker läsa av elmätarens diod. Konstigt nog läser jag ofta flera pulser fastän det bara ska vara en. Jag förstår inte varför. Det borde inte fungera som en knapp där man får kontaktstuds.

Jag har en fototransistor i en darlingtonkoppling och använder AVRmega'ns komparator för att generera ett interrupt på lysdiodens uppgående flank (läses på nedåtgående flank då transistorkopplingen inverterar signalen). OBS! Fel symbol för fototransistorn.
Fotokoppling.JPG
Nu har jag byggt upp en exprimentkoppling på labbplattan, där jag genererar blinkande pulser från AVR'en, så jag vet när de kommer och att de är rena. Jag får dock fortfarande fler pulser än en. (Alltså samma resultat i två helt separata uppkopplingar.) Nedan ses antalet registrerade interrupts per puls. (Jag har eliminerat ev störade bakgrundsljus.)

Kod: Markera allt

1, 2, 2, 1, 2, 1, 2, 2, 3, 2
2, 4, 2, 1, 2, 1, 2, 2, 3, 2
1, 2, 1, 2, 4, 2, 4, 2, 3, 3
2, 4, 4, 2, 2, 2, 2, 2, 2, 2
4, 2, 3, 3, 1, 2, 4, 3, 1, 3
1, 1, 1, 2, 1, 2, 4, 3, 2, 1
2, 1, 3, 2, 1, 1, 1, 3, 3, 3
2, 2, 2, 1, 1, 1, 2, 2, 3, 3
3, 1, 2, 3, 2, 1, 1, 3, 3, 1
Nedan är relevant kod för initiering och interruptrutin.

Kod: Markera allt

<Initiering>

	//Set Analog comparator to issue interrupt on negative flank
	ADCSRB = 0;											// Use AIN1 for negative input
	ACSR = (1 << ACIE) | (1 << ACIS1) | (0 << ACIS0);	// Enable interrupt on falling edge
	DIDR1 = (1 << AIN1D) | (1 << AIN0D);				// Disable digital input

<Interruptrutin>
ISR(ANALOG_COMP_vect,ISR_BLOCK)	//Analog comparator IRQ
{
	count++;
}
Fn genererar jag en 100ms lång puls var 800'e ms. 500 ms efter pulsen kollar jag värdet på Count. Efter tio pulser skriver jag ut de tio senaste resultaten.

Pulserna är tyvärr för korta för att ge en bra bild på oscilloskopet, men jag har svårt att se varför jag får multipla läsningar även om flankerna inte är så branta.

Förslag på vad som kan vara "fel"? Vill helst slippa "fula" lösningar som att bara läsa första pulsen inom en vis tid, vill hellre förstå varför det blir så här.

Re: Varför "kontaktstuds" när jag tittar på elmätardiod?

Postat: 22 februari 2015, 14:21:29
av Swech
Koppla pulsen till komparatorn direkt för
att felsöka om felet är i fototransistorn eller i mjukvaran.

kanske 50Hz från någon belysning spökar för dig

Swech

Re: Varför "kontaktstuds" när jag tittar på elmätardiod?

Postat: 22 februari 2015, 14:23:01
av sodjan
Är alltså den optiska kopplingen helt isolerad från eventuellt
ljus som kommer från 50Hz matningen? Är den valda pinnen
på AVR'en av typ "Schmitt-trigger". Du kanske ska sätta ett
extra steg mellan fototransistorn och AVR'en för att buffra
och "städa" signalen? T.ex en buffer av schmitt-trigger typ.

Re: Varför "kontaktstuds" när jag tittar på elmätardiod?

Postat: 22 februari 2015, 14:25:45
av ie
Koppla pulsen till komparatorn direkt
Bra tips, det ska jag kolla.

Nej, inte 50Hz från belysning, då det blir samma i mörker. Däremot kanske 50Hz kan tas upp från något annat.

Re: Varför "kontaktstuds" när jag tittar på elmätardiod?

Postat: 22 februari 2015, 14:31:09
av ie
Är den valda pinnen
på AVR'en av typ "Schmitt-trigger".
Nej, och det kan/ska den inte vara då den är kopplad till en komparator i AVR'en.

Jag har kört uppkoppling i elskåpet på natten, så inget ljus som stör. (I lab-kopplingen har jag tejpat ihop lysdiod/fototransistor med eltape, så minimalt med ljus som kan störa. Ingen skillnad om jag släcker omkring heller.)

Om jag ska ha extern buffring, så kan jag lika väl "avkoda" externt, i stället för med den inbyggda komparatorn. Hoppas slippa det :) .

Re: Varför "kontaktstuds" när jag tittar på elmätardiod?

Postat: 22 februari 2015, 14:40:17
av ie
Testade att koppla ihop lysdiodspulsen med komparatoringången. Då blir läsningen rätt, dvs en läsning per puls.

Alltså ligger problemet i den externa signalen.

Re: Varför "kontaktstuds" när jag tittar på elmätardiod?

Postat: 22 februari 2015, 14:54:13
av sodjan
Är alltså ingången på AVR'en uppsatt som komparator?
I så fall blir den ju väldigt känslig för brum på signalen.
Även den andra ingången (hur är den konfigurerad?) blir
känslig för brum på t.ex matningsspännigen, om det är
den som är referens till komparatorn. Man kan inte
konfigurera komparatorn med hysteres?

Du har ingen digital ingång som är schmitt-trigger?

> Alltså ligger problemet i den externa signalen.

Ja, om den bara är "tillräckligt" snabb så spelar ju
brum mindre roll.

Re: Varför "kontaktstuds" när jag tittar på elmätardiod?

Postat: 22 februari 2015, 15:17:04
av ie
Ingångarna går till komparatorn och de digitala delarna är bortkopplade. Som ses på schemat i första inlägget går signalen in på AIN0. På AIN1 kopplas referenssignalen, från pot'en, som komparatorn slår om vid.

Jag har inte sett något i databladet om hysteres för komparatorn.

Tyvärr är signalen för långsam för att fångas på oscilloskopet, så jag kan inte se om det finns ev brum. Vad jag kan ana är att signalen är tämligen brant i början och ganska flack mot slutet.

Som du säger, så hade jag inte räknat med att "lite" brum skulle störa då flanken borde vara tillräckligt brant. Men det tycks tyvärr inte vara så.

EDIT: Verkar som digital input har schmittriggerfunktion. Vet dock inte om mina signaler är tillräckliga för att köra digitalt. Får testa det.

Re: Varför "kontaktstuds" när jag tittar på elmätardiod?

Postat: 22 februari 2015, 15:48:06
av grym
sådant här förutsätter man inte massa saker, man mäter med skop, rättar till det efterhand som man ser felen, svårare än så är det inte

ex lågpassfilter och liknande detta fallet

Re: Varför "kontaktstuds" när jag tittar på elmätardiod?

Postat: 22 februari 2015, 16:00:49
av ie
Har som sagt inget minnesskop, så det är svårt att mäta.

Testade med digital ingång i stället för komparator och det verkar funka. Några hundra korrekta läsningar i följd nu.

Det som stör mig med denna lösning är att jag slösat bort en pot helt i onödan :)

Re: Varför "kontaktstuds" när jag tittar på elmätardiod?

Postat: 22 februari 2015, 16:04:54
av sodjan
Jag noterar att komparatorerna i XMega serien har programmerbar
hysteres i två steg. Man kanske inte den AVR du har just nu.

Re: Varför "kontaktstuds" när jag tittar på elmätardiod?

Postat: 22 februari 2015, 16:16:20
av ie
Kör med AVRmega328p och den har inte det vad jag kan se. Signal verkar dock tillräckligt "stark" för att kunna köra digitalt. Annars är ju fördelen med komparatorn att det är lätt att justera "arbetspunkten" för att kunna klara sig med mindre (svagare) signaler, t ex 2.5-3.3 istf 0-3.3 V (med fast omslagspunkt på ca 1.65V).

EDIT: Över 1000 korrekta mätningar i följd nu.

Re: Varför "kontaktstuds" när jag tittar på elmätardiod?

Postat: 22 februari 2015, 19:26:22
av MiaM
Brum kan finnas i det utstrålade ljuset från lysdioden. Eftersom du inte lär slakta elmätaren för att kolla hur den är byggd så kan man inte lita på något mer än att "det kommer ett blink".

I princip kanske du kan undvika en del störningar med ett RC-filter.

Enklast är väl att fixa det hela i mjukvara, en puls ska inte kunna komma tidigare än ett visst ögonblick efter senaste puls detekterats.

Re: Varför "kontaktstuds" när jag tittar på elmätardiod?

Postat: 22 februari 2015, 19:30:27
av ie
Ja, RC-filter hade kanske också fungerat. Nu kan jag som tidigare nämnt utesluta elmätaren, då jag i min testuppsättning själv blinkade dioden (från AVR). Vet mao att det var "rena" pulser på dioden.

Re: Varför "kontaktstuds" när jag tittar på elmätardiod?

Postat: 22 februari 2015, 19:31:58
av Icecap
Mitt förslag är samma som MiaM: Diskriminera pulserna med tid.

Är det avkänd en puls accepteras nästa inte om inte det går en viss tid innan.