Fernsteuerung 10 Meter

Begonnen von picass, 18.03.2023, 12:44:10 CET

Vorheriges Thema - Nächstes Thema

picass

Es quarzt so schön!

Die Reichelt'er haben über 2 Nächte geliefert und – is klar – da musste doch sofort ein erster Quarz eingestielt werden, der mit 10.240.000 Hz. Das ging hardwaremäßig äußerst robust zur Sache: ein Splitter einer Lochrasterplatine, der Quarz, zwei über den Daumen interpolierte Kondensatoren mit je 22 pF, kein Längs- und auch kein Parallel-R. Die ganze Winzigkeit dann schlicht auf das geliebte ,,PICkit Low Pin Count Demo" – Board mit seinen verzweigten Montagemöglichkeiten an jedem Port-Pin......
Is klar, im ersten Anlauf lief nichts. Wunderte mich aber nicht, noch NIE hatte ich jemals einen PIC mit Quarz betrieben, wohl schon mal mit Keramik-Resonator, aber das war Jahrzehnte her und damit lief dann ein PIC16F84. Die Konfigurationseinstellungen, rsp. die rechte Auswahl für die Oszillator-Einstellung war mir keineswegs klar. Da gab es Low- und weniger Low-Power-Modusse (gibts das Wort?). Im zweiten Anlauf wurde dann von "XT" auf ,,HS"-Modus umkonfiguriert und – Tusch: es quarzt!

Was mich schwer wundert, ist, dass mit dieser frugalen Hardware-Ausstattung (Splitter-Platine) und den nicht wirklich kurzen Verbindungen des Schwingkreises und auch unter Verzicht auf Widerstände und der Wahl der C's auf Verdacht eine derart saubere Schwingungsform sich ergab - die Frequenz ist ja so niedrig nicht gerade. Auf Bilder davon habe ich verzichtet, aber jeder, der weiß, wie eine ideale Sinus-Schwingung aussehen sollte, der weiß jetzt auch.....
In meinem Winzig-Prog, in dem ausschließlich eine Loop sitzt, welche 10 Taktzyklen ausmacht, wird eine LED getoggelt. Das wäre dann Takt-Cyclus geteilt durch Zwanzig. Also die Theorie: 10.240.000 erst geteilt durch vier gleich 2.560 . Das dann durch Zwanzig müsste 128.000 Herz bringen. Der Digi-Oszi rechnet 128 kHz aus! >:D Jetzt muss nur noch ein Prog-Teil her, welches auf 40 kHz runter bricht.
Grüße, picass

pic18

was ich nicht ganz verstehe, warum nimmst Du so einen komische Taktfrequenz? Du kannst doch die Timer programmieren und bekommst dann eigentlich die passende Frequenz.

picass

Ist für mich einfacher, einen Quarz zu nehmen, welcher ein sehr schlichtes Teilerverhältnis zulässt, und nebenher für Genauigkeit sorgt. Die Timer hebe ich mir lieber für das Protokoll und Weiteres auf.
Grüße, lippe1audi

PICkel

Ich habe interessehalber mal einen 10MHz-Quarz an einen 16F883 geklemmt und einen 5-Zeiler in mikroBasic geschrieben:
program pwm
main:

pwm1_init(40000)    '40kHz PWM
pwm1_set_duty(85)   'Tastgrad 85/255 = 1/3
pwm1_start()

end.

Das ergibt eine PWM von 40,32kHz bei 33% Einschaltdauer. Im von mir am 23.3.23 verlinkten Artikel wird eine ED von 1/4...1/3 empfohlen.
Die Frequenzabweichung von 320Hz (ca. 1%) ist m.E. unerheblich.

Man hat nun 4 Möglichkeiten (2. und 4. im Schaltplan dargestellt):

1. Nur die IR-LED mit Vorwiderstand an den PIC anschließen und die PWM ein-und ausschalten.
2. Die PWM durchlaufen lassen und die LED über LL-MOSFET ein- und ausschalten.  (im Schaltplan dargestellt)
3. Einen LL-MOSFET an den PIC anschließen und die PWM ein-und ausschalten. Die LED mit Rv liegt an der Betriebsspannung.
4. Die PWM durchlaufen lassen und die LED über 2 LL-MOSFETs ein- und ausschalten.  (im Schaltplan als Alternative dargestellt)

Während die Versionen 1 und 2 abgesehen von unterschiedlicher Programmierung nur ca. 20mA aus dem PIC an die LED liefern können, kann mit Ver.3 und 4 der zulässigen LED-Strom voll ausgereizt werden.

PICkel 
IR_FB.jpgPWM.jpg 


picass

Die erste Lichtbrücke trägt! Es ist wirklich nur die Fundamental-Version, aber immerhinque!
Die im Bild rechts zu sehende rüne LED leuchtet, sobald das Signal eintrifft. Dieses wird ebenfalls äußerst schlicht erzeugt, was selbst für Assembler gilt: der Quarz-Takt von 10,24 MHz wird intern ja zunächst durch 4 geteilt, es ergibt sich für einen Takt-Cylus der Wert von 2,56 MHz. Das Prog besteht aus exakt diesen ,,Bauteilen", welche in der Summe eine 64-Teilung des Takt-Cyclusses bewirken:
- ein Toggle-Befehl für den Portausgang, welcher die IR-Sendediode ansteuert
- 29 x NOP's
- ein Rücksprungbefehl an den Anfang.
Das wars und der DigiOszi berechnet die erhofften 40 kHz! Is klar, das ist nur der Anfang, aber lass' ma!

Danke für die zugedachten Hilfen. Räusper...., musste erst nachschlagen, was LL Mosfet bedeutet. In der im Inet gefundenen ausführlichen Beschreibung gab es eine Liste empfehlenswerter MFets und dort wurde u.a. der IRF540 aufgeführt. Just der rangierte in meiner Box an vorderster Front. Dann noch die Schaltung aus dem Bild von PICkel und gut wars. Jetzt wirds natürlich erst interessant, die Codierung muss folgen. Das gehe ich auch mal erst schlicht an: es sollen 20 Impulse abgezählt werden, die stehen dann für einen ,,Burst", der die logische ,,1" repräsentiert. Mal sehen....
Grüße, picass

picass

#20
Die erste, dokumentierte Datenübertragung! Die geht so:
Das oben vorgestellte Kürzest-Unterprog zur Erzeugung einer 40 kHz Frequenz wurde umgebaut in ein Unterprog, welches genau 64 Cyclen enthält. Gleich zu Anfang wird die IR-Diode eingeschaltet, nach 20 der 64 Cyclen wieder ausgeschaltet, sodass ein Tastverhältnis von ca. 1/3 entsteht, also 1/3 an und der Rest aus.
Von dieser Schwingung werden genau 20 Stück abgezählt und hintereinander weg ausgestrahlt, was dann die 40 kHZ Frequenz repräsentiert. Nach den 20 Schwingern gibts eine Pause vom ca. 6 mS, dann schwingts wieder 20x, dann....

Auf dem Oszi-Display ist oben/gelb das Ausgangssignal am PIC, welcher die IR-Diode antreibt, zu sehen und unten/blau das Signal, welches sich am Empfängerbaustein einstellt. Die Darstellung ist aus welchem Grunde auch immer invertiert. Die Sendezeit müsste "1" sein und entsprechend die Pause "0". So'n Digi-Oszi hat auch ein geheimnisvolles Innenleben. >:D  :(
Grüße, picas

picass

Nachdem nun klar ist, wie die Übertragung stattfinden könnte, wäre zu klären, was denn mit den übertragenen Signalen anzufangen wäre. Is klar, die sollten im besten Falle in eine Folge von "Einsen" und "Nullen" verwandelt werden. Eine "Null" zu erkennen, muss nicht wirklich schwierig sein. Aber was ist mit der "Eins" in diesem Fall, denn die besteht mitnichten aus einem eindeutigen "1"-Pegel. Im Gegenteil schwurbelt es innerhalb des Burstes zwanzigmal rauf und runter.
Die Startflanke zu erkennen, wäre noch "wie üblich". Bei einer statischen "1" kann man bei einem Signal, dessen Länge bekannt ist, z.B. einfach in der zeitlichen Mitte den Pegel ablesen, bei Bedarf auch mehrfach. Die Signallänge ist ja hoch genau bekannt, aber die "1"-Amplitude ist ein Sieb mit vielen Löchern. Wo oder wie also hier sicher den Status erkennen?
Ach ja: an der Signal-Länge soll nicht geschraubt werden, das Signal überträgt ja die 40 kHz. Ohne Einhaltung der Frequenz unterdrückt der Empfänger das Signal.
Grüße, picass

^Cobra

Moin, ich dachte immer solche Empfänger wandeln die Impulse auf 1 bzw 0 setzt. 
Meine auf der Homepage von Sprut stand das mal... 
Aber in Endeffekt:
Am den start Impuls ist dir Länge von allem bekannt. Quasi 'messen' wie viele Impulse mit welcher Pause kommt? Ich meine bei 1 Pegel war zuerst high pulse 0 waren es zuerst die pausen. Als Start immer 2 bits mit 1 also zuerst high.
Gebe aber zu: habe ich nur in der Theorie alles mal gelesen. Wie so vieles ist es dabei geblieben.
P. S. Aber meine Fräse nimmt Gestalt an. Liege krank im Bett wenn ich aber wieder fit bin geht's da weiter und ihr könnt euch auf Fotos, Video, und selbst gebastelts freuen. 
Gruß 
Cobra

PICkel

Hallo picass,

der TSOP liefert logisch 0 bei Empfang Deiner 40kHz-Impulse.

AAAABER:
Die Anzahl der Impulse/Burst ist begrenzt, "Dauerfeuer" wird unterdrückt!
Nach einem Burst bestimmter Länge ist eine Pause mit einer entsprechenden Mindestlänge nötig.
(Steht alles im Datenblatt, wer hätte das gedacht?  ;D )

Die Übertragung basiert also darauf, nach einem Start-Burst unterschiedliche Burst- Pausenlängen auszuwerten. Also beispielsweise kurzes Signal, danach lange Pause -> Null,
langes Signal und kurze Pause -> Eins.

Gruß
PICkel


picass

Was? Wie?
Datenblatt: Watt is'n dat? Hätte ja auch mal früher gesagt werden können! >:(  >:(  >:(

Aus der Formel (signal1) mit den teils nicht erklärten Größen werde ich nicht wirklich schlau. Die Zweite mit der Angabe von 60 mS macht es nicht besser. Da kann ich nur raten. Auch das Lesen des kompletten DBs - vor einer Woche >:D - machte es nicht besser.
Grüße, picass

PICkel

Dann erzeuge doch mal eine Impulsfolge gem. signal2.jpg.
Also 24 Impulse+Pausen mit zusammen 25us (entspr. 40kHz) = 600us. Danach genausolange Pause.
Und das mehrere Male hintereinander. Dann beenden oder längere Pause.

Dann sollte sich am TSOP-Ausgang ein entsprechendes Rechtecksignal ergeben.

 

picass

#26
So getan!
Und das – auf den Bildern – kam dabei raus:
gelb/oben : das orig-Ausgangssignal am PIC-Port
blau/unten: das Empfangssignal direkt am IR-Empfänger abgegriffen

Bild 1 : ein Burst
Bild 2 : zwo davon
Bild 3 : ein Burst mit Zoom-Funktion vergrößert, wobei die ersten Schwingungen nicht auf den Schirm passten.

Das Empfangssignal ist verzögert dargestellt, warum auch immer. Ist aber wurscht, solange die Timings sonst passen.
Wichtige Erkenntnis: Der Empfänger gibt einen Burst mit seinen 24 Einzel-Schwingungen tatsächlich – wie du beschriebst – als eine ,,1" aus. In bebilderten Beispiel ist es eine ,,0", aber das ist ebenso wurscht. Das hatte ich anders erwartet, nämlich derart, dass solch Burst auch nach dem Empfänger mit all seinen (hier 24) Schwingungen aufgelöst wird.

Dieses Nicht-Auflösen und stattdessen einen Burst zu einer ,,Eins" zusammen zu fassen, macht die weitere Auswertung nun um Etliches einfacher – zumindest für mich. Das ist schon mal ein gutes Ergebnis. Für eine Codierung probiere ich jetzt mal etwas. Aber da schrieb ich schon: besonderen Aufwand wie etwa einen NEC- oder sonstigen prof. Code halte ich für unnötig. Mir würden schon 5 Bits als ausreichend erscheinen.
Danke für Beratungen, es wird auch weiter gehen. Könnte sein, um einiges langsamer. Denn für die Empfangsseite müsste ja nun auch ein PIC eingestielt werden. Das ruft dann doch nach einer extra Platine, damit IR-Empfänger und PIC vernünftig verbandelt werden. Und Platine dauert.... Aber so bischen rum machen wird auch noch gehen. Es liegen ja nun auch Versuche zur Reichweite an.
Grüße, picass

PICkel

Gratuliere, die erste Hürde ist genommen!

Und wenn Du Dir die Bilder signal1.jpg und signal2.jpg anschaust wirst Du sehen, dass das IR-Signal tatsächlich erst nach einigen 40kHz-Pulsen am Ausgang wirksam wird.

Der Ausgangstransistor im TSOP ist (siehe Block-Diagramm im Datenblatt) in Emitterschaltung mit 30kOhm gegen Plus geschaltet und negiert deshalb ein eingehendes IR-Signalpaket. Also alles wie es im Oszillogramm und in den Signalbildern zu sehen ist.

Gruß
PICkel

picass

Wenn du das Datenblatt, rsp. Teile davon noch weiter erklärst, hat selbst ElNixRaffo es demnächst verstanden.
 >:D
Grüße, picass

picass

Nur super kurz: mit der Reichweite werden wir wohl Null-Komma-Null Probleme bekommen.
Ein erster Test gerade: bei nur berchnet 1,4 mW "funkte" das über gut 5 Meter in meinem Arbeitsraum. Der "Strom" durch die Sendediode betrug 2,8 mA. Zulässig sind "normal" max. 100 mA und gepulst bis 1 A. Au man, ist diese Empfangseinheit empfindlich. Husch, weg.
Grüße, picass

Schnellantwort

Achtung: In diesem Thema wurde seit 120 Tagen nichts mehr geschrieben.
Wenn Sie nicht absolut sicher sind, dass Sie hier antworten möchten, starten Sie ein neues Thema.

Name:
Verifizierung:
Bitte lassen Sie dieses Feld leer:
Geben Sie die Buchstaben aus dem Bild ein
Buchstaben anhören / Neues Bild laden

Geben Sie die Buchstaben aus dem Bild ein:

Tastenkürzel: Alt+S Beitrag schreiben oder Alt+P für Vorschau