Hi, ich hab folgendes Problem: 1 ATMega via USB am Rechner mit 8 digitalen Eingängen x ATMegas mit jeweils weiteren 8 digitalen Eingängen die minimale Entfernung zwischen dem ersten und zweiten Mega beträgt 50cm am zweiten hängt der dritte Mega, USW... Welche Datenübertragung sollte ich wählen??? Größtes Problem: die gesamte Schaltung muss über den USB Bus gespeist werden, die Verbindungen zwischen den Megas sollten kostenneutral sein, netzwerkkabel, oder sowas und das ganze sollte so günstig wie möglich sein... Macht mal bitte ein Brainstorming, bringt mich auf Ideen... Gruß Blackmore
Ich vergaß: maximal sollen es ca 6-8 Platinen sein, jeweils 8 Eingänge...
Hi >Macht mal bitte ein Brainstorming, bringt mich auf Ideen... Statt der ATMegas, PCF8574 und I2C. MfG Spess
Blackmore schrieb: > die minimale Entfernung zwischen dem ersten und zweiten Mega beträgt Die max. Entfernung ist wichtiger. Wie wäres mit RS232 und einer CRC über die Daten? Ist billig, erprobt, störfest, leicht erweiterbar. Printbuchsen und Kabel gibts bei allen Versendern.
UART zzgl. +5V vom USB, das ganze Daisy-Chainen. Dann müssen zwar alle Daten immer durch alle Knoten, das sollte mangels entsprechender Anforderung aber kein Problem darstellen. Dafür ists günstig/billig/einfach/..
Hi
>8€ pro bauteil ist aber auch gut happig??
Das ist wohl die Luxusausführung mit Platineinfassung oder ein 10-ner
Pack. Ansonsten z.B. bei Ex-Angelika 1,25/0,97€.
MfG Spess
Ich werf jetzt einach mal Porterweiterung & SPI ein... dann haste nur einen Atmega und quasi fast unendlich Ports
Ersetze die zusätzlichen Atmegas durch Schieberegister 74HC589. Ist billiger, Du brauchst nur an einer Stelle Software, und Du kannst alles synchron abtasten. Wenn die Entfernungen zu groß werden, nimm RS422/485-Transceiver. Insbesondere für die Shift-Clock und Register-Clock empfehle ich das. Wenn Du den 74HC589 nicht bekommst, nimmst Du halt 74HC166. fchk
Simon K. schrieb: > 74HC595 sollte auch gehen als Schieberegister. Der hat 8 AUSgänge, keine 8 EINgänge. fchk
Oh, da habe ich wohl nicht aufgepasst. Entschuldigt! ;-) Dachte das wär hier der "Klassiker" der Porterweiterung.
Simon K. schrieb: > Dachte das wär > hier der "Klassiker" der Porterweiterung. Isser auch, aber eben für Ausgänge.
Frank K. schrieb: > Ersetze die zusätzlichen Atmegas durch Schieberegister 74HC589. Ist > billiger, Du brauchst nur an einer Stelle Software, und Du kannst alles > synchron abtasten. > Das war mein erster Gedanke, als Schieberegister die 165er nehmen... Jedoch hab ich Angst wegen Störeinstrahlungen.... Die Bits werden jede Sekunde vom PC abgefragt. Ich dachte mir, ich bastel die Schaltung, lasse sie vom ATMega in einer Endlosschleiffe abfragen... Wenn der PC dann ruft, dann unterbricht der Mega seine Arbeit und übersendet die Bits dem System... Nur ein Problem habe ich: Ich weiß letztlich nie, wieviele dieser Karten angeschlossen ist, aber der Mega muss bei Abfrage jedesmal einen String von 48 Bits übertragen... also: 2 165 angeschlossen, string besteht aus 16 Bits mit dem original Status, und die restlichen 32 Bits sind nur 0... oder 4 165 angesschlossen, also die ersten 32 Bits geben den richtigen Status wider, die restlichen 16 Bits interessieren nicht und sind bei der Übertragung zum PC 0... wie kann ich das realiasieren??? Oder übergeben die Schieberegister der Reihe nach und wenn keines mehr angeschlossen ist, kommt halt nichts mehr??? oder wie soll muss ich das verstehen??? Und die Bits dürfen nicht Flattern. Also, ein Mögliches Entprellen ist ja nicht das Problem, jedoch darf ein Bit nicht zwischendurch einfach den Pegel wechseln, obwohl gar nichts mit dem Bit passieren dürfte... Frank K. schrieb: > Wenn die Entfernungen zu groß werden, nimm RS422/485-Transceiver. > Insbesondere für die Shift-Clock und Register-Clock empfehle ich das. Bitte mehr Input - wie soll ich das verstehen??? wie viel ist zu große Entfernung - wie muss ich den Tranceiver verstehen??? (Links?) Gruß Blackmore
Jadeclaw Dinosaur schrieb: > Simon K. schrieb: >> Dachte das wär >> hier der "Klassiker" der Porterweiterung. > > Isser auch, aber eben für Ausgänge. Ich meinte nicht den Chip, sondern den Thread. Dachte der Thread wäre der "Klassiker". Habe es heute irgendwie nicht so mit Lesen :-/.
Hi >Nur ein Problem habe ich: >Ich weiß letztlich nie, wieviele dieser Karten angeschlossen ist, aber >der Mega muss bei Abfrage jedesmal einen String von 48 Bits >übertragen... Immer wieder lustig, wenn der Fragesteller nach längerer Zeit mit dem eigentlichem Problem herausrückt. MfG Spess
Sorry, aber da ich nur ausführendes Organ bin und der Planer, bzw. Anforderer selbst nicht wirklich weiß was er will... Er denkt sich halt: wenn es funktioniert... ... ... Ich dagegen versuche vorraus zu denken, das drumherum zu sehen, was evtl noch wichtig wäre... In sofern könnten noch weitere Infos vorhanden sein. allerdings kenn ich die selbst noch nicht...
Die "Problem"-Stellung ist total UNDEFINIERT, da der Thread-op (bzw der Planer, Anforderer) keinerlei Angaben über die nötige ÜbertragungsRate macht.
Blackmore schrieb: > Jedoch hab ich Angst wegen Störeinstrahlungen.... Dagegen hilft geeignete Schaltungstechnik. > Nur ein Problem habe ich: > Ich weiß letztlich nie, wieviele dieser Karten angeschlossen ist, aber > der Mega muss bei Abfrage jedesmal einen String von 48 Bits > übertragen... Wenn Du eine Schleife machst, an einen Ende genau eine 1 und dann nur 0'en reintaktest, dann kannst Du einfach mitzählen, wann Deine 1 wieder am anderen Ende der Schieberegister rausfällt. > Und die Bits dürfen nicht Flattern. Also, ein Mögliches Entprellen ist > ja nicht das Problem, jedoch darf ein Bit nicht zwischendurch einfach > den Pegel wechseln, obwohl gar nichts mit dem Bit passieren dürfte... Die Schieberegister haben einen Takteingang zum Laden der Register aus den Eingängen (HC589) oder einen Eingang, der zwischen Laden und Schieben umschaltet (HC166). Du sendest den Ladeimpuls, die Schieberegister werden über ihre parallelen Eingänge geladen, und dann ist egal, was an den Eingängen passiert. >> Wenn die Entfernungen zu groß werden, nimm RS422/485-Transceiver. >> Insbesondere für die Shift-Clock und Register-Clock empfehle ich das. > > Bitte mehr Input - wie soll ich das verstehen??? wie viel ist zu große > Entfernung - wie muss ich den Tranceiver verstehen??? (Links?) Bei RS422 und RS485 nimmt man nicht eine Leitung pro Signal, sondern zwei. Der Empfänger misst die SpannungsDIFFERENZ. Störungen von außen wirken idealerweise auf beide Leitungen (deswegen werden die verdrillt, damit das auch in der Ralität so ist) und ändern nichts an der Differenz. Es gibt passende Sende- und Empfangsbausteine. Ein Google nach RS422 und Transceiver bzw Transmitter/Receiver zeigt Dir die. fchk
Ich werfe einfach mal Lin in den Raum. Einfach, Störsicher, schnarchlangsam, günstig (1€ / Treiberbaustein)
Ich sag dann mal: 6 adrige Modularkabel ungeschirmt (Reichelt: ~1 Euro für 10 Meter) Point to Point Übertragung Braucht keine zusätzlichen Treiber und ist günstig, dafür aber nur für kleine Geschwindigkeiten ausgelegt. Da du ja sagtest nur 1mal/Sekunde dürfte es aber durchaus reichen. Das einzigste ist die Störstrahlung, diese dürfte aber hier seeehr gering ausfallen, allein schon wegen der Verschlatung. Marc
Frank K. schrieb: >> Nur ein Problem habe ich: >> Ich weiß letztlich nie, wieviele dieser Karten angeschlossen ist, aber >> der Mega muss bei Abfrage jedesmal einen String von 48 Bits >> übertragen... > > Wenn Du eine Schleife machst, an einen Ende genau eine 1 und dann nur > 0'en reintaktest, dann kannst Du einfach mitzählen, wann Deine 1 wieder > am anderen Ende der Schieberegister rausfällt. Beim 165 geht des auch??? muss ich mir nachher doch mal des Datenblatt genauer durchlesen... sehr gut... >> Und die Bits dürfen nicht Flattern. Also, ein Mögliches Entprellen ist >> ja nicht das Problem, jedoch darf ein Bit nicht zwischendurch einfach >> den Pegel wechseln, obwohl gar nichts mit dem Bit passieren dürfte... > > Die Schieberegister haben einen Takteingang zum Laden der Register aus > den Eingängen (HC589) oder einen Eingang, der zwischen Laden und > Schieben umschaltet (HC166). Du sendest den Ladeimpuls, die > Schieberegister werden über ihre parallelen Eingänge geladen, und dann > ist egal, was an den Eingängen passiert. Das Problem mit dem Flattern ist folgendes: wenn ein Eingang auf L ist, und ich frage ab, habe ich dann auch L.. klar... Aber ich frage jede Sekunde ab, und solange der Eingang L ist, MUSS auch am PC L ankommen... und nicht - durch Störungen außerhalb ab und zu mal auf H gehen... Erst wenn der Eingang wirklich H ist... Dabei kommt es nicht so sehr drauf an, ob der L oder H Pegel nach einer Sekunde ankommt, oder nach 3, aber er muss "Zeitnah" ankommen, und darf sich erst wieder ändern, wenn der entsprechnde Eingang sich ändert... Gruß Blacky
Blackmore schrieb: > Beim 165 geht des auch??? muss ich mir nachher doch mal des Datenblatt > genauer durchlesen... > sehr gut... ok... beim 165 kann ich nicht löschen, müsste also erstmal 48x L reinjagen, danach kann ich mit dem Zählen beginnen... Wäre auch noch machbar... - und wenn ich beim 'löschen' nen H Pegel bekomme, dann stimmt was nicht... wäre auszutesten...
Nur mal so aus Neugier, was möchtest du eigendlich damit machen ? Hausautomatisierung? Alarmanlage? oder vieleicht etwas für eine Modelbahn? Ich kann mir vieles Vorstellen, aber interessant währe es schon zu wissen ;-)
Ganz grob: das dient als Abrechnungssystem eines Billardcafes die Kugeln sind in schubladen untergebracht, und beim herausziehen einer Schublabe fängt die Zeit an zu laufen...
Und ich sag schon so etwas wie Point-to-Point. Würde nicht auch ein normales SPI vom jedem Mega zu Host reichen ? (Notfalls auch über einen anderen Mega, welcher als eine Art Switch dient) Oder würde das Kabelsalat dann stören ? ^_^
Eine Sternverkabelung wollen wir vermeiden, teilweise sieht man die Schränke auch von hinten und ist nicht wirklich schön... Ein Schrank bedeutet 8 Tische, die überwacht werden... Multi-Megas ist denke ich letztlich sinnbefreit - SPI kann ich auch über einen Mega machen, halt die einzelnen 74xx166er in den verschiedenen Schränken... Hauptsache die Bits ändern sich beim schieben nicht plötzlich auf dem Weg zum Mega (fliegen aus der Kurve, wenn's Kabel zu arg gebogen ist, etc...) Deswegen den einen Mega, damit ich ohne PC schon das Multibyte den Gegebenheiten entsprechen formatieren kann... Die Übertragung an den pc ist dann einheitlich und der Betreiber nervt mich dann nicht mit irgendwelchen Fragen... Aber wieso Mega - kennt jemand nen AVR mit serieller Schnittstelle, evtl sogar USB und SPI, ansonsten recht klein, günstig, wenig Stromhungrig und für den obigen Programmaufwand genug Speicher??? Mit'm Handy suchen ist etwas umständlich, und auf Arbeit ist's nicht so mit Internetmöglichkeit... Gruß Blacky
Du könntest einen FT2232 einsetzen und diesen im SPI-Modus betreiben. Doku und Treiber gibts auf der FDTI-Seite. Dann entfällt der Microcontroller-Programmieraufwand ganz und Du musst Dich nur noch um das PC-Programm kümmern. Zu den RS422 Treibern: Die 26LS31/26C31 (4 Sender) und 26LS32/26C32 (4 Empfänger) gibts seit Jahrzehnten und von verschiedenen Herstellern, da solltest Du keine Probleme haben, die zu beschaffen. fchk
Nen FT2232 im SPI Mode wäre schon toll - aber an das PC Programm komm ich nicht dran -das rückt der Anforderer nicht raus... Also muss ich letztlich so handhaben, das ich ihm sage, sende du mir ne Anforderung, die so aussieht, und du bekommst nen 48bit Text zurück - was du damit machst ist mir egal... Er gehört zu den Typen, die alles wollen, nur nicht investieren... Ich gehöre zu den Typen, die alles irgendwie mal getestet haben wollen - und wenn es dann funzt, bin ich glücklich... Außerdem lerne ich wieder etwas mehr das Programmieren... Gruß blacky
Blackmore schrieb: > Multi-Megas ist denke ich letztlich sinnbefreit - SPI kann ich auch über > einen Mega machen, halt die einzelnen 74xx166er in den verschiedenen > Schränken... Hauptsache die Bits ändern sich beim schieben nicht > plötzlich auf dem Weg zum Mega (fliegen aus der Kurve, wenn's Kabel zu > arg gebogen ist, etc...) Jetzt wo deine eigentliche Aufgabenstellung ein wenig klarer ist, tendiere ich dann doch dazu, eine 'Mulit-Mega' Anwendung vorzuschlagen. Der Hintergrund: Ich denke es wäre in deinem Fall eine extrem gute Idee, jeden deiner Schränke als autonome Einheit anzusehen. Auch wenn es zum jetzigen Zeitpunkt vielleicht noch nicht angedacht ist, könnte sich das in der Zukunft als sehr nützlich erweisen. Ich denke da zb an die Erweiterung mit einem LCD und einem Drehschalter pro Kasten, an dem sich die Kunden ihre 'Lade' einstellen können und auf dem LCD sehen, wie lange sie schon spielen (ev. auch die Kosten noch mit dazu), aktuelle Uhrzeit etc. Von daher finde ich, dass jeder Kasten erst mal einfach nur eine autonome Einheit sein sollte, die ihre 8 Laden für sich selbt 'verwaltet'. Der übergeordnete PC ist dann nur noch das Tüpfelchen auf dem i: dort liefern alle Kästen auf Anfrage ihre Statusmeldungen und Zeiten ab und der PC bereitet sie dann entsprechend auf, um dem Betreiber einen Überblick zu geben. PS: Ich würde auch die Zeit beim Schrank selber erfassen und nicht auf dem PC. PCs, besonders unter Windows, schmieren gerne schon mal ab. Die aktuell laufenden Zeiten sind dann futsch. Einen Mega hingegen kannst du speziell in so einer einfachen Aufgabenstellung, ganz leicht so programmieren, das der in 2 Jahren vielleicht höchstens einmal abschmiert, und das auch nur weil der Strom ausgefallen ist. Meine Meinung zu der Aufgabenstellung.
Karl heinz Buchegger schrieb: > Blackmore schrieb: >> Multi-Megas ist denke ich letztlich sinnbefreit - SPI kann ich auch über > Jetzt wo deine eigentliche Aufgabenstellung ein wenig klarer ist, > Erweiterung mit einem LCD und einem Drehschalter pro Kasten, an dem sich > PS: Ich würde auch die Zeit beim Schrank selber erfassen und nicht auf > programmieren, das der in 2 Jahren vielleicht höchstens einmal Erweiterungen sind insofern angedacht, das irgendwann mal eine Schaltung mit Ausgabeports realisiert werden soll, sowas wie die bekannten Relaisplatinen. Derzeit braucht man sowas nicht. Vielleicht braucht man irgendwann mal, aber eher unwahrscheinlich... bla bla bla... Ich glaub sogar, das Du, Karl Heinz, mal in einem anderen Fred geschrieben hattest, der Satz "brauchen wir nicht" sollte einen hellhörig machen... Genau daran habe ich mich gehalten... deswegen bekommt der Typ auch nur diese Schaltung für Eingänge... Will er Ausgänge, mach ich ihm eine neue Schaltung, will er Displays, ok - wieder eine - ich habe damit kein Problem, er will es so... :) Wobei ich sogar schon soweit bin, das er eine Hauptplatine bekommt, mit einem ATMega mit USB Anbindung und zwei Steckern - einer für Eingänge, einer für Ausgänge. An diese Stecker schliesse ich dann die jeweiligen Schieberegister an und bei Eingängen soll er mir ein "GET" schicken und er bekommt seine 48 bits - bei Ausgängen soll er mir ein "POST10010010101" schicken und die Ausgänge werden gesetzt... LCD würde ich ihm dann entweder an diese Ausgänge hängen, oder sogar einen extra "Controller" mit Mega geben... Zum Thema alles auf den Mega verlagern... Das System wie es jetzt ist, existiert jetzt schon seit ca. 20 Jahren, basierend auf einer ISA-Karte mit 32 Eingängen. Das Programm wurde damals unter DOS entwickelt, erweitert um eine Gastronomie-Abrechnungssystem, umgebaut auf Windows, erweitert um Internetcafe Funktionalität... Auch wenn ich die Programmierkenntnisse des Erstellers nicht kleinreden will - aber er hat keine Ahnung, jedoch, das Programm ist genial - selbst ich habe nach einer 10 Minütigen Einweisung verstanden, wie es funktioniert, und einmal bei deren Weihnachtsfeier dort bedient... Aufgrund der ISA-Karte ist der Betreiber etwas abhängig, bzw. aufgeschmissen, die ISA-Karte wird nicht mehr hergestellt... deswegen sucht er nach einer Möglichkeit, alles auf zukunftsorientierte Systeme umzustellen... Weiterhin sind diese Schubladen nicht für die Gäste einfach so zugängig. Die Gäste MÜSSEN sich bei der Bedienung melden, und bekommen dann eine Schublade ausgehändigt. Damit gehen sie zum Tisch und spielen. Am Ende der Partie geben sie die Kugeln wieder ab und die Berechnug wird gestoppt... Jetzt werde ich erstmal die Schaltung mit Eingängen via SPI probieren, wenn das klappt, evtl auch die Ausgänge... Dann bekommt der Typ seinen Controller und seine Testeingänge und soll dann entscheiden, ob er es gebrauchen kann, oder nicht... Will er mehr, bekommt er mehr - muss aber auch mehr dafür tun... ... ... Dem muss man nicht die Ideen bringen, sondern ihn dazu veranlassen, das er selbst auf diese Ideen kommt... Gruß Blackmore PS: ich hatte ihm vor ca. nem halben Jahr schon mal vorgeschlagen, das man das so machen könnte - darauf meinte er, das er ja schon Karten hat, und das alles super funktioniert... Dann bastelte ich ihm eine Eagle Karte mit Eagle3D Bild, und sein Cafe stand dort als Text drauf... Das hat sein Ego getroffen - jetzt will er die Karte haben, die vor nem halben Jahr noch viel zu teuer war und vollkommen unnötig... fg
Die Muli-Mega(/Tiny/PIC/MSP/..)-Lösung hätte zu den schon genannten noch einen nicht zu unterschätzenden Vorteil: Die kann aufwandsarm Prüfsummen mitschicken zur Sicherstellung der Datenintegrität. Wenn dann bei der Übertragung mal ein Bit (aus)flippt, dann forderst Du den Datensatz einfach erneut an und schickst nicht unbemerkt fehlerhafte Informationen ins Abrechnungssystem.
Beitrag "SPI Reichweite" Hab hier nochwas interesantes zum Thema SPI gefunden... Nach deren Tests kann man bei 125KHz und 100 Ohm Serienterminierung am Sender sogar über 40 Meter kommen.
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.