Hallo. Ich hoffe, ihr könnt mir weiterhelfen. Habe mich schon die ganze Zeit gefragt, wie das funktioniert mit 2 Leitungen. Ein Elektroniker hat mir heute erklärt, das die eine Leitung immer minus ist und die andere Leitung z.B. immer 5 Volt. Wenn dann Daten gesendet werden sollen, dann wird einfach bei den 5 Volt z.B. 3 Volf dazu aufmoduliert, was dann (8 Volt) eine logische 1 ergeben würde. Wenn es 5 Volt sind, dann wäre es eine logische 0. Stimmt das so? Wie schaut es da bei den Takten aus? Ist da bei GND noch irgendein Clocksignal drinnen, oder reicht es, wenn beide µC mit z.B. 16 MhZ laufen, damit das Sendesignal mit der Zeit übereinstimmt? Ach ja, wie heißt eigentlich dieser Bus, damit ich vielleicht mal selber im Forum nach Informationien suchen kann? Wäre das dann ein CAN-Bus? Vielen dank im voraus Gruß Florian
Wenn du daten und Spannung über zwei gleiche leitungen übertragen willst, machst du das indem du ne Wechselspannung auf die Gleichspannung modulierst (Wie es dein kumpel erklärt hat) im empfänger filterst du die gleichspannung mit hilfe eines Kondensators einfach raus, (der lässt nämlich nur wechselspannungen durch) und gleichzeitig hast du dioden, welche die wechselspannung filtern, damit das dtensignal nicht zur spannungsversorgung gelangt Ein extra datensignal ist meist nicht notwendig, da der empfänger und der sender die Gleiche Zeitbasis benutzen, du überträgst dann zwar einsen und nullen, aber die eigentlich daten werden anhand der abstände der flanken errechnet.. Wie sich das bei den Bussystemen (CAN etc) verhält weiss ich nicht. Darüber gibts aber massig Anleitungen im netz.
Dein Kumpel hat das richtig erklärt. Das fehlende Taktsignal ist kein Problem, das ist quasi im Datenstrom enthalten. Vereinfach kannst Du Dir das wie Disco-Musik vorstellen: Da klopft der Bass auch ständig, und dazu gibts noch irgendein Gejole. Der Bass wäre dann der Takt und das Gejole sind die Daten. Der Fachbegriff dafür heißt "Modulation". Es gibt hunderte, wenn nicht tausende, Modulationsarten. Bei manchen benötigt man eine separate Taktleitungen, bei manchen nicht.
Vielen Dank erstmal für die Antworten. Dann muß das nicht unbedingt Wechselspannung sein? Das klingt mir zu kompliziert. Also einen hohne Datenstrom bräuchte ich ja nicht. Ich dachte es mir so: Der Sender "Atmega 8" legt die Versorgungsspannung für den Empfänger "Atmega 8" von 5 auf 12 Volt... also von low auf high. Auf der Empfängerseite kommt dann ein Spannungsteiler hin, der z.B. aus 5 Volt 0,8 Volt und aus 12 Volt 1,8 Volt macht.(<----geht das?) So... Diese positive Flanke könnte ich am INT0 dranhängen, die mir dann den ext. Interupt auslöst. Sofort nach der positiven Flanke wechselt der Sender entweder auf 5 Volt (0) oder er bleibt auf 12 Volt. Zur Sicherheit vieleicht 5 Takte, damit der Empfänger das Bit auch sicher erreicht.Der Empfänger liest den zustand in der int-schleife aus und speichert ihn. Das dann mal 8, dann hat man ein byte drüben. Würde das so gehen? Allerdings wie könnte ich mit dem ATMEGA 8 aus 5 Volt 12 Volt machen. Ist das mit Transistoren irgendwie möglich? Gruß Florian
Sagen wir mal so, es geht in die richtige Richtung: a.) Der Empfänger-Atmega verträgt keine 12 Volt. Also musst Du da noch einen Spannungsregler einbauen. b.) Mit dem entsprechend dimensioniertem Spannungsteiler gehst Du auf den Analogkomparator der Empfänger-Atmega. An einem normalen Eingang geht das nicht so einfach ohne weitere Elektronik. c.) Wenn der Sender nur 5 Takte wartet, sind die Impulse viel zu Kurz. Du könntest Dir z.B. überlegen, das ein Bit 1/1000 Sekunden, also 1 ms lang sein soll. Dann kannst Du 1000 Bits pro Sekunde übertragen. Um nun die 0-Bits und die 1-Bits zu unterscheiden, könntest Du Dir überlegen, dass für ein 0-Bit die Spannung für 0,25 ms auf 12 Volt gehen muss und danach für 0,75 ms auf 5 Volt sein muss. Für das 1-Bit hebst Du dann die Spannung für 0,5 ms auf 12 Volt und danach für 0,5 ms auf 5 Volt. Dann dauern beide Bits exakt eine Millisekunde. Damit sich der Empfänger syncronsieren kann, könntest Du Dir z.B. überlegen, dass 10 ms lang keine Bits gesendet werden, dann 5 Eins-Bits kommen bei der der Empfänger die Länge messen kann, und dann ein Null-Bit und danach die 8, 16, 32, oder ... Bits Deiner Bytes, also das Datenpaket. d.) Nur mit Transistoren kann man keine 12 Volt erzeugen. Am leichtestens ist es, aus vorhanden 12 Volt entweder 5 Volt erzeugen oder 12 Volt durchzulassen.
Also ich weiss ja nicht was du vor hast AABER: Die meisten systeme haben eh 12V als versorgungsspannung. Im nimmst du nen 7809 und nen 7805 hintereinander sieh zu das du ordentlich 100nF dranbaust :-)) Jetzt kannst du mit zwei einfachen PNP transistoren entweder 9V auf die Leitung geben, oder 12V auf der anderen Seite (am empfänger) nimmst du dir erstmal wieder zwei spannungsregler (dann ist die ausgansspannung stabiler) und erzeugst die 5V betriebsspannung für das gerät. Jetzt koppelst du aber vor dem ersten Spannungsregler das signal mit nem Optokoppler aus (wenn du nen spannungsteiler davormachst wird er bei 12V am Ausgang durchschalten aber bei 9V aber nicht. Der rest dürfte dann so software sein. Als Problem sehe ich die Kabellänge. Wie lang soll es denn werden?
Achja, den 7805 hatte ich noch vergessen. Das mit den Transistoren habe ich so gemeint: Versorgungsspannung:12 V 2X 7805 für Atmega Datenleitung fix auf 5 V So, wenn der Senderausgangspin auf 0 ist, dann sollten die 5 Volt auf der Daten-Spannungsleitung bleiben und wenn er auf 1 ist, dann sollte ein Transistor 12 V durchschalten. Das einzigste Problem wäre dann, wenn ich auf die 5 Volt Leitung 12 Volt anlege, dann schalte ich mit 7 Volt einen kurzen, oder nicht? Verstehst du, was ich meine? Das mit der einen ms klingt sehr interessant. Darüber werde ich mir mal Gedanken machen. Gruß Florian
Das mit dem Optokoppler klingt auch gut. Die Länge des Kabels wird max. 3m. Gruß Florian
du brauchst für den empfänger mindestens 2V mehr als die ausgangsspannung des spannungsreglers, sonst kann er nicht regeln!
Hallo Florian, das geht mit einer Schmitt Trigger Schaltung sehr einfach. Mit der Schaltung werden Nadelimpulse(Datensignal) erzeugt die im Empfänger wieder rausgefiltert werden. Man braucht dazu nur eine 5V Versorgung. Funktioniert locker 90m mit einer Datenrate von 4800Baud. http://www.mikrocontroller.net/forum/read-1-263716.html#new
Hallo Peter. Hast du da zufällig einen Schaltplan? Das wäre sehr interessant. Gruß Florian
Würde das eventuell funktionieren? (Bild im Anhang) Anstatt den 5 Volt könnte ich auch 9 Volt nehmen. Gruß Florian
Ersetze R4 durch eine Diode, und mach R3 größer, so ca. 4,7 Kiloohm.
Gäbe es da eventuell auch einen Trick, damit ich die GND Leitung als Clockleitung hernehmen kann, so wie bei SPI? Ich dachte, einfach die GND Leitung (0V) auf 1 Volt hochziehen. Geht das? Gruß Florian
Hallo, das mit der Wechselspannung muss nicht unbedingt sein. Auf: http://ls12-www.cs.uni-dortmund.de/rock/info/endbericht.pdf gibt es ein Beispiel, wie mit Hilfe des sog. RockWire auch bidirekional Daten übertragen werden können. Der Trick besteht darin, dass Sender und Empfänger sich einig sind, wann Daten zu senden sind und dann der Bus nur durch einen Pull-Up hochgezogen wird. Dann kann wie bei einem Open Collector o.ä. jeder Teilnehmer den Bus auf 0 V ziehen. 0 und 1 werden wie oben erwähnt dadurch markiert wie lange man den Bus "kurzschließt". Der Rockwire Client bekommt seinen Strom auch über diesen Bus, damit das Laden des Stützkondensators im Client nicht so lange dauert wird während der Ladezeit der Pul-Up Widerstand überbrückt. Damit es nicht zu einem echten Kurzenkommt muss in Softwarre sicher gestellt werden, dass dann kein Teilnehmer sendet. Die Schaltung ist recht einfach aus Mosfets aufgebaut. Grüße, Thorsten Wilmer
Hallo, wo wir gerade bei dem thema sind, kann ich auch gleich mal meine frage stellen, die mich zu diesem thema beschäftigt. was ist wenn die hauptbetriebsspannung (die also bei keiner datenübertragung anliegt) mit einem hohen strom 1-3A belastet ist. Muss meine Datenspannung dann auch diesen strom liefern? gruß
Yep, muß sie. Wie sonst sollte es zu einem merklichen Spannungsanstieg auf der Versorgungsleitung kommen?
Oder Du modulierst Dein Datensignal auf einen Träger, z.B. mit 100 kHz. Dann musst Du am Verbraucher eine kleine Spule einbauen, die die 100 kHz teilweise blockt, so dass die Impedanz des Verbrauchers bei 100 kHz geringer ist wie bei DC. Naja, dann blässt Du den Träger auf die Versorgungsleitung, und der Verbraucher dämpft den trotzdem relativ stark, so dass Du ihn beim Empfänger wieder verstärkst.
Die Impedanz des Verbraucher soll bei 100 kHz natürlich größer sein, als bei DC. Ist ja logisch... Wann kommt die Edit-Funktion?
Hi, habe die oben genannte Schaltung mit der Diode jetzt aufgebaut. Mein Problem momentan ist, wie kann ich aus den 5/12V nun 0/5V machen, damit ich direkt an den Port des µC Empfängers fahren kann. Mit einem Spannungsteiler hab ich es schon probiert, doch das haut nicht ganz hin. Wie könnt ich das sonst noch realisieren? Gruß Florian
Kann mir da niemand weiter helfen? Ich weiß wirklich nicht, wie ich das machen soll. Gruß Florian
Spannungsteiler und interner Analogkomp. sollten gehen.
Hi, habe leider noch nie mit dem Analogkomperator gearbeitet. Laut Datenblatt des Atmega 8 und das schlechte Englisch von mir, ist dabei das rausgekommen. Ich möchte zur Probe einfach eine Led an Port B ein und ausschalten, wenn sich die Spannung ändert. Kann man das im AVR Studio überhaupt simulieren? Hier das Programm.....würde das so funktionieren, oder fehlt da noch was? .include"m8def.inc" .def temp = r16 .org $000 rjmp reset .org $010 rjmp ana_comp ana_comp: com temp out portb, temp reti reset: ldi temp, low(ramend) out spl, temp ldi temp, high(ramend) out sph, temp ser temp out ddrb, temp clr temp out ddrd, temp ldi temp, (1<<acme) out sfior, temp ldi temp, (0<<acd)|(0<<acbg)|(0<<aco)|(0<<aci)|(1<<acie)|(0<<acic)|(0<<acis1)|(0<< acis0) out acsr, temp ser temp out portb, temp main: rjmp main Vielen Dank für Eure Hilfe Gruß Florian
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.