Hallo, ich bin noch recht neu in der Welt der Mikrocontroller und C. Ich habe mir schon einige Bücher zu den Themen gekauft und bin am einarbeiten, jedoch mein Problem ist folgendes: Ich möchte später mehrere Microchips ansteuern (Schalter auslesen und an eine Zentrale stelle senden und von dort dann die richtige Reaktion von einem anderen Mikrocontroller ausführen lassen. Dazu werde ich einen BUS brauchen, jedoch habe ich schon viel bei Google und co gesucht, aber noch keine brauchbare Seite gefunden wo beschrieben steht wie ich das realisieren kann. Ich hoffe ihr könnt mir da ein wenig helfen. (PS: die Seite wo beschrieben ist was ein Bus ist usw. von Mikrocontroller.net habe ich mir schon durchgelesen). Kennt ihr vielleicht irgendwo eine Anleitung oder einen guten Quellcode (vll. mit dokumentation/Beschreibung)? Danke Lg Thomas
Das kommt ganz darauf an, welche Eigenschaften der Datenbus haben soll. Ggeschwindigkeit, Leitungslänge, Anzahl der Teilnehmer, Datenmenge, etc. sind interessante Infos. Ein Beispiel ist der CAN-Bus. Da gibt es entweder Controller, die CAN-Funktionalitäten bereits implementiert haben (z.B. AT90CAN128), oder Controller, die mit CAN-Controllern über SPI kommunizieren (z.B. ATmega8 + MCP2515) Wenn nicht CAN, gibt es die Möglichkeit zur seriellen Schnittstelle. Man könnte sich aber auch ein eigenes Bussystem mit eigenem, selbst ausgedachten Protokoll aufbauen.
Hallo, also Geschwindigkeit ist in erster Linie zweitrangig. Leitungslänge: Vom "verarbeitendem" Controller-MC zu den "Slave" (Ausführenden oder Meldenden) MC's rund 1-2 Meter, mehr nicht. Anzahl der MC's: grob geschätzt 40-45 (auf jeden Fall unter 100) Datenmenge: Die Slave's sollen lediglich Schalter auslesen und Eingänge schalten bzw. Temperatursensoren auslesen. Daten sollen eigentlich nur dann gesendet werden von den Sklaven wenn sich etwas ändert, also nicht nach jedem mal auslesen. Dürfte sich also in grenzen halten. Über CAN-Bus habe ich schon viel gelesen, bin aber noch nciht so richtig schlau geworden. Würde als MC's gerne die kleineren Atmel nehmen die aufs STK500 drauf passen (ATmega8 usw.) nehmen. Lg Thomas
auch wenn ich jetzt gesteinigt werde: Suche einmal nach Elektor BUS. Da wird die Erstellung einer Vernetzung step by step erklärt und umgesetzt.
Um es nicht zu Geheimnisvoll zu machen: Ich möchte eine Haussteuerung (früher oder später) auf die Beine stellen, die rund 180 Relais schalten kann und ebenfalls rund 180 Schalter beinhaltet. Das ganze soll dann auch über eine Webseite ansteuerbar sein (über einen Raspberry Pi als Webserver) und auch eine selbstentwickelte Alarmanlage beinhalten sowie eine Zutrittskontrolle für mehrere Türen. Sollte nicht so extem schwer sein da vieles nur Schalter einlesen und passende Befehle ausgeben ist. Lediglich der Bus bereitet mir noch sorgen. Danke für den Tipp, werde ich mir sicher durchlesen. Hoffe das es direkt für C anwendbar ist, da ich ja die anderen Sprachen bisher auch nur deuten kann. Lg Thomas
Thomas S. schrieb: > Über CAN-Bus habe ich schon viel gelesen, bin aber noch nciht so richtig > schlau geworden. warum, woran haperts? Vielleicht ist das ja dein passender Bus. Ganz grob sendet man mithilfe der zahlreichen CAN-Bibliotheken für C, die es im Internet gibt, CAN-Frames mit den "Eigenschaften" Adresse, Länge und bis zu 8 Datenbytes. Häufig für digitale Stationen mit 8 Ein-/Ausgängen auch nur das erste Byte. Eventgesteuertes senden heißt dann, dass der Teilnehmer sein Prozessabbild in das erste Byte legt und absendet. Anhand der Adresse ist zu erkennen, von wem das kommt. Willst Du ihn aber ansprechen, sendest Du ein Frame an eine Adresse, die er verarbeitet.
Aber für das Atmel STK-500 Entwicklungsboard gibt es glaube ich keinen Mikrocontroller der auch das CAN-Bus System/Protokoll unterstützt oder irre ich mich da jetzt komplett? Lg Thomas
Ja, aber die sind bisweilen leider sehr teuer. Deswegen würde ich es bei Möglichkeit vermeiden. Ich habe zwar schon einige Adapter gesehen (z.b.: https://dx.com/p/ic-socket-plcc20-plcc24-plcc28-plcc32-plcc40-with-plcc-extractor-tool-117717?rt=1&p=2&m=2&r=3&k=1&t=1&s=124488&u=117717 ), weiß aber nicht ob das Funktionieren kann. Lg Thomas
>Aber für das Atmel STK-500 Entwicklungsboard gibt es glaube ich keinen >Mikrocontroller der auch das CAN-Bus System/Protokoll unterstützt oder >irre ich mich da jetzt komplett? AT90CAN128? Aber CAN ist nichts für dich. >Hoffe das es direkt für C anwendbar ist, Ich hoffe das die Sonne morgen aufgeht und es keinen Regen oder Glatteis gibt.
Ich hab keine Ahnung von nix, will aber mein Haus vernetzen. Helft mir. Manche Dinge ändern sich nie.
Ich denke da hast du was in den falschen Hals bekommen. Ich möchte ja gerne etwas lernen und habe ja auch nur gefragt ob ihr irgendwelche Seiten o.ä. kennt wo man das lernen kann wie man einen Bus programmiert. Ich will nicht einfach copy- and paste-Quellcode haben, sondern ich will es sehr wohl verstehen was ich mache. Dachte ja eigentlich das ein Forum für das stellen von Fragen da ist, aber da hab ich hier vielleicht ja das falsche Forum gefunden? Lg Thomas
Ich hätte jetzt fast auch den CAN-Bus empfohlen, aber letztlich ist er doch zu kompliziert für dein Vorhaben. Du kommst mit einem Master aus, der die Slave-Mikrocontroller der Reihe nach abfragt. Also ist keine Kollisionsbehandlung bzw. Kollisionsvermeidung notwendig. An deiner Stelle würde ich das LIN-Bus-Protokoll verwenden. Das ist schön einfach, die einzelnen Knoten brauchen nichtmal ein Quarz, weil die Synchronisation mitgesendet wird. Das Protokoll kannst du selbst programmieren, so dass du keine zusätzlichen Bibliotheken und auch auch keine zusätzliche Hardware (z.B. Buscontroller usw.) brauchst.
Danke, das klingt interessant, werd mal schauen das ich im Netz etwas dazu finde wie man das am besten programmiert und wie die Hardware vernetzt wird. Lg Thomas
Lieber Thomas, Du bist schon richtig hier. Erlaube mir Dir zu sagen, das die Art Deiner Fragestellung und der Reaktion auf die fachlichen Antworten hier, einen deutlichen Mangel an Erfahrung und Problemverständnis offenbaren. Ich will das hier aber nicht im Einzelnen belegen. Für den Erfahrenen Elektroniker/Programmierer ist das offensichtlich. Selbstverständlich sagt das weder etwas über Deinen Wert als Person noch über Deine vorhandene oder potentielle Fähigkeit aus, Dein Vorhaben zu verwirklichen und das Fehlende zu lernen. Aber in Summe muss man Dir doch deutlich machen, das Du noch mindestens Monate wenn nicht Jahre davon entfernt bist, diese Dinge zu verstehen und die Antworten hier nachzuvollziehen. Dir ist, meiner Wahrnehmung nach, auch nicht gewärtig, das Du bis zu einem, nach Deinen Vorstellungen laufenden System, eine Unmenge an Einzelfragen zu beantworten hast von denen Du (noch) nichts weisst. Letztes stellt wiederum uns vor ein Problem. Wir können Dir hier, einfach wegen der Menge und der durchaus nicht einfachen Zusammenhänge, nicht alle und jedes Problem einzeln erklären, so das Du mit Deinem heutigen Wissensstand Dein Projekt verwirklichen kannst. Im Gegenteil: Du wirst, wie wir auch, Schritt für Schritt vorgehen müssen. Erstmal hier die Tutorien durchlesen. C lernen. Ein LED zum leuchten und dann zum blinken bringen. Grundlagen der Elektronik lernen. Mal eine Schnittstelle programmieren (z.B. RS-232). Ein Menüsystem. Eine Sortierroutine. Etcpp. Jeder einzelne dieser Punkte ist eine Herausforderung für den Anfänger. Das ist einfach so und es gibt keine Abkürzung. Die etwas launigen Kommentare hier, wollen Dir genau das vermitteln. Es gibt einfach keinen kurzen Weg.
Thomas S. schrieb: > Ich möchte ja gerne etwas lernen und habe ja auch nur gefragt ob ihr > irgendwelche Seiten o.ä. kennt wo man das lernen kann wie man einen Bus > programmiert. Es gibt nicht "einen Bus". Das ist ein Oberbegriff. Mach dir also erstmal keine Sorgen um die Programmiersprache. Das ist sekundär.
Das ich noch viel zu lernen habe ist mir klar, jedoch habe ich zu den meisten anderen Themen die mit meinem Projekt zu tun haben schon infos sammeln können, aber zum Thema Bus habe ich wie schon erwähnt nicht wirklich etwas finden können (zu den anderen jedoch schon). Jedoch finde ich so tolle Kommentare wie: "Ich hab keine Ahnung von nix, will aber mein Haus vernetzen. Helft mir." oder "Ich hoffe das die Sonne morgen aufgeht und es keinen Regen oder Glatteis gibt." für absoluten Schrott. Ich verlange von niemanden das er sich hier beteiligt wenn ihn das nicht interessiert oder er mir nicht helfen möchte, jedoch kann ich dennoch erwarten zumindest keinen Mist auf ernst gemeinte Fragen zu bekommen. Wenn es jemanden nicht interessiert soll er einfach zu einem Thema posten welches ihn interessiert und mich in ruhe lassen. Lg Thomas
Thomas S. schrieb: > Ich möchte eine Haussteuerung (früher oder später) auf die Beine > stellen, Dann ist vielleicht das Hausbus Forum die richtige Quelle für Ideen http://www.mikrocontroller.net/forum/hausbus
Es geht jetzt aber nicht nur um die Haussteuerung für mich, sondern ich will wissen wie das funktioniert, was da dahinter steckt und etwas bei der entwicklung davon lernen (über Bauelemente a'la ULN 2803, Mikrocontroller usw., Programmieren). Sonst könnte ich mir ja so ein bescheidenes Fertigkonstrukt zulegen das aber absolut keinen (lern-)Spaß mit sich bringt. Lg Thomas
Lieber Thomas,
verzeih' mir bitte, wenn ich mich nochmal kritisch zu Deiner Frage
äussere.
Verstehst Du, das Du hier eine Frage stellst, die äusserst abstrakt und
global ist?
>wie das funktioniert, was da dahinter steckt...
Wie "was" funktionert?
Was "wohinter" steckt?
Frag' uns bitte etwas Konkretes. Und beachte dabei das soetwas wie "Bus"
wiederrum ein abstrakter Begriff ist. Zum Beleg nenne ich mal ein paar
Busse:
USB
SCSI
Firewall
Daten-/Adressbus bei Prozessor (intern/extern)
ATA
S-ATA
CAN
LIN
I2C
Jeder davon hat seinen eigenen Einsatzzweck und besondere Eigenschaften,
die ihn für seinen Einsatzzweck geeignet scheinen lassen.
Wenn Du uns also fragst: Wie funktioniert ein Bus, müssen wir Dir
mindestens Neun, können Dir aber noch viel mehr Busse erklären. Das
ganze wird dann so ein paar Tausend Buchseiten füllen.
Dann kommt dazu, das Busse sich über zwei Dinge definieren: Das
physische Interface, das die Anzahl Leitungen, die Strom- oder
Spannungspegel, evtl. Steckverbinder etc. definiert und ein Protokoll,
d.h. den genauen Ablauf des Austauschs von Informationen definiert.
Was willst Du also genau wissen. Wie gesagt, keine Rundumfragen, bitte!
Beschäftige Dich mit den einzelnen Bussen und frage nach Details. Alles
andere findest Du in Büchern und im Internet.
Damit Du in die Lage versetzt wirst, unter Verwendung von üblichen Begriffen zu fragen und damit Du die in der Technik üblichen Unterscheidungen kennelernst, empfehle ich Dir Lektüre über das OSI-Schichtenmodell. Zur Einführung hier Z.B. : http://de.wikipedia.org/wiki/OSI-Modell
Ja, ich verstehe was du (Hmm) meinst. Wie gesagt, ich habe leider nur den allgemeinen begriff Bus gekannt leider nicht die unterarten. Werde mich mal mit dem empfohlenen LIN-Bus auseinander setzen und mich bei Fragen nochmals melden. Nach der oben geposteten Beschreibung scheint das ganz gut für mein Projekt zu passen. Danke schonmal an alle hilfreichen Helfer. Lg Thomas
Thomas S. schrieb: > Ja, ich verstehe was du (Hmm) meinst. Ich glaube nicht dass du wirklich irgendwas verstanden hast von dem was Hmm gesagt hat. > Wie gesagt, ich habe leider nur > den allgemeinen begriff Bus gekannt leider nicht die unterarten. q.e.d Es geht nicht um spezielle Unterarten, es geht darum dass Bus so irre allgemein ist dass man nicht einfach Bus sprechen kann. > > Werde mich mal mit dem empfohlenen LIN-Bus auseinander setzen Wie soll das gehen ohne entsprechendes Vorwissen beim Thema Elektronik, Microcontroller und Programmierung? Das wäre so als ob du dich mal schnell über Space Shuttles informierst weil du morgen gerne in den Weltraum starten willst. > Danke schonmal an alle hilfreichen Helfer. Mich meinst du dabei bestimmt nicht. Liegt aber daran dass dir mit dieser herangehenweise niemand auf der Welt helfen kann.
Ein Bus ist nur ein Kommunikationskanal, der kann von einem Teilnehmer zum nächsten oder von vielen Teilnehmern genutzt werden. Beispiel Luft, wäre so ein Kommunikationskanal. Du kannst ein 4-Augengespräch führen oder in einem Saal Deine Information an hunderte übertragen. Die Art der Daten, deren Information, ist vom Übertragungsmedium unabhängig. Oft werden Busse in der Elektronik verwendet um die Schaltungen möglichst einfach halten zu können. Vereinfachtes Beispiel, im PC z.B. hast Du verschiedene Speicher und Ein-Ausgabe-Medien (CD, HDD, Graphikkarte, USB-Maus Tastatur, RAM etc.) würdest Du nun alle Komponenten fest mit der CPU verdrahten wollen, dann bräuchte die CPU 2000 Pins für alle Verbindungen und die Platine wäre groß und teuer. Man geht daher hin und hängt die Komponenten auf einen Bus parallel, alle Komponenten teilen sich physikalisch die Leiterbahnen auf der Platine miteinander, aber, es quatscht immer nur einer auf der Leitung. Was da jede einzelne Komponente quatscht ist dabei physikalisch zunächst mal zweitrangig.
weinbauer schrieb: > Vereinfachtes Beispiel, im PC z.B. hast Du verschiedene Speicher und > Ein-Ausgabe-Medien (CD, HDD, Graphikkarte, USB-Maus Tastatur, RAM etc.) > würdest Du nun alle Komponenten fest mit der CPU verdrahten wollen, dann > bräuchte die CPU 2000 Pins für alle Verbindungen und die Platine wäre > groß und teuer. Man geht daher hin und hängt die Komponenten auf einen > Bus parallel, alle Komponenten teilen sich physikalisch die Leiterbahnen > auf der Platine miteinander, aber, es quatscht immer nur einer auf der > Leitung. Leider ein unglückliches Beispiel. Im PC werkelt nicht der BUS für alle Teilnehmer, sondern verschiedene BUSse. Je nach Einsatzzweck: Daten-/Adressbus I/O Ports SATA/IDE/SCSI/... USB/FireWire/RS232/... und in den komplexen Bridges mit CMOS-RAM, RTC & Co. sind noch andere vorhanden. Der PC ist ein gutes Beispiel, dass der Anwendungszweck den geeigneten BUS bestimmt.
also wenn Du AVRs verwenden willst dann schau mal was die an vorhandenen Schnittstellen haben, TWI = I2C hat z.B. der Mega88 usw. schon drin. Bevor Du nun losbastelst schreieb Dir genau auf was Du alles abfragen willst, was Du alles steuern willst und wie schnell das von statten gehen muß. Dann suchst Du dir anhand Deiner aufgestellten Daten den Bus heraus der diese Anforderungen doppelt erfüllt und bist damit schonmal auf der sicheren Seite.
Biertrinker schrieb: > Für Hausautomation einen Geräte-internen BUS? >:-((( Gibt es hier sogar einen eigenen Artikel drüber: http://www.mikrocontroller.net/articles/I2C_als_Hausbus Aber das war ja nur als Anregung gemeint, er soll sich erstmal Gedanken machen was er braucht und dann passend auswählen. Er könnte auch alles mit Bluetooth oder WLAN oder den "billigen Chinesen aus'm Kühlschrank" (die die immer das Licht ausschalten) realisieren ;-P
Du brauchst in dem Fall einen Multiuser fähigen Bus. Also bei dem 1. im Protokoll eine Adressierung der Teilnehmer enthalten ist. 2. die gerade passiven Busteilnehmer nicht stören. In Frage kommen da Can Lin I2C ( bei sehr begrenzter Buslänge ) Ethernet Ich würde Can bevorzugen, alleine schon wegen aktiven transeiver die bereits einen Teil der Fehlerüberwachung und Übertragung in HW selbstständig übernehmen.
Hmm, wenn doch eher Can jetzt empfohlen wird, dann sollte ich nochmal genau die Vor und Nachteile der einzelnen Bus-Systeme vergleichen. Lg Thomas
Thomas S. schrieb: > Hmm, wenn doch eher Can jetzt empfohlen wird, dann sollte ich nochmal > genau die Vor und Nachteile der einzelnen Bus-Systeme vergleichen. > > Lg Thomas Lass doch erstmal eine LED blinken bevor du dich mit sowas beschäftigst.
Hi >In Frage kommen da >Can >Lin >I2C ( bei sehr begrenzter Buslänge ) >Ethernet RS285 vergessen. MfG Spess
scherzkeks schrieb: > Aber das war ja nur als Anregung gemeint Klar, es gibt auch Bobbycars mit Motor. Demnächst Wettbewerber für Smart und Co als City Car. ;-))) Spess53 schrieb: > RS485 war gemeint Das schließt CAN nicht aus, oder?
Spess53 schrieb: > RS485 RS485 ist nichts anderes als der kabelbebundene Übertragungweg für z.b. CAN Man kann CAN allerdings auch über LWL schicken, dann brauch man allerdings andere Transeiver als die Standard Teile.
Ralph schrieb: > RS485 ist nichts anderes als der kabelbebundene Übertragungweg für z.b. > CAN > > Man kann CAN allerdings auch über LWL schicken, dann brauch man > allerdings andere Transeiver als die Standard Teile. OSI, Mädels, OSI, das ist doch nicht so schwer, oder???
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.