Ik heb op samenkopen.net een IR afstandsbediening gekocht met een sc6122 controller erin.
Deze transmitter werkt met een carrie freq van 38 kHz. ieder waveform heeft 1 leader, 16 bits custom code, 8 bits data code.
linkje naar datasheet;
http://pdf1.alldatasheet.com/datasheet-pdf/view/84873/SILAN/SC6122.htm…
Nu wil ik graag deze waveform decoderen zodat ik er functies aan kan knopen. Ik heb eerder met Proton en de rc5.rc6 decoderen voorbeelden gespeelt, maar weet niet hoe ik het hiervoor moet aanpakken.
Heeft iemand suggesties hoe dit aan te pakken met een pic en proton.
Alvast bedankt
Als je weet met welke bitrate de data wordt verzonden is het eigenlijk heel eenvoudig:
1) demoduleer de IR zodat je geen draaggolf meer hebt
2) detecteer de leader
3) begin op een halve bittijd te samplen
4) sample steeds iedere bittijd, dit zorgt er voor dat je steeds halverwege een bit samplet
5) decodeer de data die je hebt ontvangen.
Zo maak ik ook softwarematige seriele communicatie.

www.uploadarchief.net/files/download/waveform01.jpg
mbbneon, bedankt voor je reaktie.
Bijgaande heb ik een afbeelding uit de datasheet van de waveform.
leader van 9ms dan 4,5ms space, 16 bits custom code, 8 bit key data.
Nu staat in de waveform aangegeven een bit time van 1.125 of 2.25 ms.
Is het nu zo dat ik moet wachten op de leader en vervolgens op 0.563ms moet gaan samplen?
Wat bedoel je vervolgens met punt 4? hoe doe je zoiets....
Alvast bedankt
Weer een klein stapje verder... De sc6122 maakt gebruik van pulse distance modulation. Ofwel er wordt onderscheidt gemaakt tussen een '0' of '1' door de tijdsduur van flank naar flank. Als deze 2,25ms id dan 1 en 1,12 ms dan 0.
Aangezien ik geen logic analyser heb heeft het even geduurd voordat ik hier achter kwam... gelukkig bestaat er google.
Nu nog een stukje code schrijven welke de 32 verzonden bitjes als 0 of 1 bestempelt...
Iemand suggesties?
Bart Hiddink
Bart Hiddink is Ideetron; electronics and projects, http://www.ideetron.nl. LoRaWAN Nutcase.
Ik heb wel eens een PPM decoder geschreven met een cyclisch buffer.
Die was nodig voor een reparatie van een ontvanger van een afstandsbediening met een 40 MHz RC.
De ingang wordt gesampled met een frequentie die 4x hoger is dan de hoogste frequentie in het PPM frame.
Dan elke sample in het cyclische buffer schuiven.
Daarna elke sample het hele buffer vergelijken met de waarde die je hebt opgeslagen als referentie.
Elke juiste waarde laat een teller 1 optellen. Bij een onjuiste waarde doe je niets.
Als het buffer een 1:1 kopie bevat van de referentie, en je hebt bijv. 100 samples, dan staat de teller dus op 100.
Als je bijv. 10 bitfouten hebt dan staat je teller op 90.
Je kunt dus een drempel instellen op hoe goed je decoder werkt, bijv. op 80 of 90.
Als je dan niet 1 referentie maar voor elke functie een referentie maakt en daar je buffer mee vergelijkt, dan kun je heel eenvoudig kiezen tussen de functie de je op dat moment ontvangen hebt.
Voor de PPM decoder (op een 40 MHz RC ontvanger) werkte het beter en sneller dan de originele decoder! 