Sida 2 av 2
Re: Filtrera bort störning på enkel 433 MHz mottagare
Postat: 13 februari 2013, 10:04:36
av PHermansson
Vid varje nivåändring på Int-pinnen (void pinChange) så sparas aktuell tid (timer-värde, ges av micros() ). Det aktuella timervärdet minus det förra timervärdet = tiden mellan att pinnen har ändrat nivå = pulslängden.
Kod: Markera allt
long currentTime = micros();
microsSinceLastChange = (currentTime - timeOfLastPinChange);
timeOfLastPinChange = currentTime;
Re: Filtrera bort störning på enkel 433Mhz mottagare
Postat: 13 februari 2013, 11:15:07
av floppen
ankan skrev:Har testat nu och det fungerade inget vidare tyvärr.
Med motståndet blev signalen så pass svag så jag inte fick några avbrott längre och kondingen vet jag inte om den gjorde någon skillnad.
Tycker tyvärr inte att filtret gjorde någon skillnad annars.
Kollade med oscilloskopet och det ser ut som att jag får mest störningar runt 0-10khz.
Antar att du kör med pull-upp i processorn, Det fungerar inte med 10k i serie så om du har pull-upp så sätt som nedan.
En bild säger mer än 1000 ord, testa detta.
Namnlös.jpg
Re: Filtrera bort störning på enkel 433 MHz mottagare
Postat: 13 februari 2013, 12:53:36
av Icecap
Problemet är att det mellan sändningarna tas emot brus. Och då det i grunden är en skit-mottagare går det inte att filtrera bort.
En rå sändning ska börja med preamble som dels används för att ställa in data-slicerns signalnivå och dels för att synkronisera sändningstart. Om inte sändaren gör detta måste mottagaren ha en fast data-slicer och begränsat AGC för att det ska ha en chans att fungera.
Men grundläggande är det enda som kan rädda en dålig situation (som det redan är) att använda Capture-enheten och sedan signalbehandla pulserna. Inte enklast men klart möjligt.
Sedan är det ju viktigt att sändare och mottagare har samma frekvens och moduleringsprincip...
Re: Filtrera bort störning på enkel 433 MHz mottagare
Postat: 13 februari 2013, 13:15:36
av ankan
PHermansson skrev:Vid varje nivåändring på Int-pinnen (void pinChange) så sparas aktuell tid (timer-värde, ges av micros() ). Det aktuella timervärdet minus det förra timervärdet = tiden mellan att pinnen har ändrat nivå = pulslängden.
Kod: Markera allt
long currentTime = micros();
microsSinceLastChange = (currentTime - timeOfLastPinChange);
timeOfLastPinChange = currentTime;
Problemet är att någon micros() inte finns i mikroC som jag skriver i så jag måste ta hjälp av timern snurrar i en viss hastighet.
Provade att TMR0 snurrar runt va 50:e uS och då stegade upp ett värde som jag kunde kolla mot, men jag vet inte om jag får för mycket avbrott då för det fungerar inte i alla fall.
Kör en PIC16F877A i 8Mhz.
Alternativt skulle vara att jag låter TMR0 snurra på och sedan läsa av värdet vid puls och sedan konvertera det värdet till uS. Då får jag bort det avbrottet i alla fall.
Nu tar jag avbrott på ingången vid positiv flank, borde jag kanske ta båda flankerna för att få bättre filtrering kanske?
Re: Filtrera bort störning på enkel 433 MHz mottagare
Postat: 13 februari 2013, 13:17:29
av calmar
Det finns ingen signalstyrke-utgång från modulen som du kan använda?
Re: Filtrera bort störning på enkel 433 MHz mottagare
Postat: 13 februari 2013, 13:17:53
av Icecap
Det är klart att du måste fånga båda flanker för att det ska fungera alls. Och allt detta trams med att använda en timer är för dom som inte kan använda en µC.
Använd Capture-enheten, fånga båda flanker och då har du alla tider per automatik.
Re: Filtrera bort störning på enkel 433 MHz mottagare
Postat: 13 februari 2013, 13:28:12
av ankan
Har inte använt capture enheten tidigare men ska kolla på den.
Hoppas mikroc har vettigt stöd för den.
Re: Filtrera bort störning på enkel 433 MHz mottagare
Postat: 13 februari 2013, 16:18:21
av ankan
Capture var ju precis vad jag behöver.
Är det någon nackdel att koppla ihop ccp1 och ccp2 så den ena tar positiva flankar och den andra tar negativa flankar. Då behöver man inte ändra vid varje flank.
Re: Filtrera bort störning på enkel 433 MHz mottagare
Postat: 13 februari 2013, 20:19:34
av PHermansson
Icecap skrev:Och allt detta trams med att använda en timer är för dom som inte kan använda en µC.
Tack du, jag kan allt använda en uC. Lärde mig Pic med Asm i slutet av 90-talet med hjälp av datablad och genom att analysera färdiga program.
Min usla kod ovan fungerar, och det är väl ändå huvudsaken?
Re: Filtrera bort störning på enkel 433 MHz mottagare
Postat: 14 februari 2013, 23:00:19
av Icecap
PH: Så du menar att det är bättre att använda en "lös" timer och interrupt-on-change med okänd responstid än att ta den inbyggda hårdvara till just sånt?
Ja ja, du får gå den vägen om du vill, en dålig lösning är det likaväl!
ankan: det är klart att du kan använda var sin CCP-enhet till var sin flank så länge de använder samma timer som tidbas. Dock är det inget problem att "bara" byta flank men smak och tycke...
Re: Filtrera bort störning på enkel 433 MHz mottagare
Postat: 15 februari 2013, 09:44:43
av PHermansson
Nej jag menar inte att det är bättre. Jag menar att det är tillräckligt bra för att det ska räcka med det.