Hallo, ich bin gerade dabei für einen Warenausgabeautomat (sicher kennt ihr die "Zigarettenautomaten" wie sie in Supermärkten stehen) umzubauen. Der Automat hat 60 "Auswerfer". In jedem Auswerfer ist eine kleine Platine. Auf der Platine sind im Prinzip nur 2 Taster: einer ist geschlossen wenn Ware im Schacht vorhanden ist, der andere gibt an ob sich der Auswerfer in der Endposition befindet. Außerdem ist an der Platine noch der Motor des Auswerfers angelötet. Die Schaltung mit der aktuellen Verdrahtung hat den Nachteil das die Hauptplatine erst mitbekommt ob ein Schacht leer ist wenn Ware aus diesem angefordert wird. Nach dem Befüllen des Entsprechenden Schachts muss dem Automaten dies auch erst durch Tastendruck mitgeteilt werden das nun wieder Ware vorhanden ist. Was ich nun vorhabe: Ich möchte im Prinzip die komplette Steuerung des Automaten ersetzen (Hauptplatine stellt kein Problem dar). Für die Auswerfer möchte ich kleine Platinen fertigen lassen. Auf die Platine soll ein kleiner µC. Die µCs haben dabei folgende Aufgabe: - Auf Anforderung vom Master-µC den Motor einschalten - Motor laufen lassen bis der Schieber wieder in Endposition ist - Schieber nach X Sekunden nicht in Endposition -> Motor aus, Bericht an Master - Schacht leer -> Bericht an Master - Schacht wieder gefüllt -> Bericht an Master Die µCs möchte ich dabei über ein BUS-System verbinden. Welchen µC würdet Ihr hierfür verwenden? Ob AVR oder PIC ist mir eigentlich relativ egal. Sollte nur "günstig" sein (um nicht zu sagen "billig" :D) Und welches BUS-System? Stehe hier gerade n bisschen auf dem Schlauch :D
Beitrag "mehrere MC seriell über Datenbus verbinden (1Draht)" Ich würde den ATtiny24 oder ATtiny261 empfehlen. Dann hat man reichlich Pins.
:
Bearbeitet durch User
Martin schrieb: > Für die Auswerfer möchte ich kleine Platinen fertigen lassen. > Auf die Platine soll ein kleiner µC. Solange da nur digitale Signale notwendig wären, würdens auch Port-Expander o ähnlich tun. Möglicherweise gibts sogar Motortreiber mit I/O Hätte den Vorteil das die "Platinen" keine eigene Software haben müssen. Wenn man die Software mal ändern muss, kannste 60uC's updaten..
Hallo, Die Beschreibung kommt mir sehr bekannt vor. Darf ich fragen, um welchen Automaten es geht (Hersteller, Typ, Baujahr)? Würde mich mal so nebenbei interessieren. Peter D. schrieb: > Ich würde den ATtiny24 oder ATtiny261 empfehlen. Dann hat man reichlich > Pins. Die schwirrten mir auch sofort im Kopf rum. Johnny S. schrieb: > Wenn man die Software mal ändern muss, kannste 60uC's updaten.. Ein weiteres Problem, dass bedacht werden muss. Dabei ist dann noch die Frage, wie du die Module adressieren willst? Soll jedes Modul eine feste Adresse bekommen, weil es nur der eine Automat ist? Soll das vielleicht größer werden, sodass man eine eigenständige (aber konsistente und reproduzierbare) Adressierung der Module mithilfe des Masters vorsieht. - Was ist mit "ausgebauten" Modulen? (Schacht zu schmal) Gruß
LPC11C24 Kleiner Cortex-M0 mit CAN und(!) integriertem CAN-Transceiver. D.h., du hast keine weiteren Aufwand für die CAN-Anschaltung. Preis liegt bei 1,50€ bei 100 Stück vom Distributor. Durch CAN hast Du einfache und flexible Möglichkeiten der Kommunikation. Adressierung der Module über einen zusätzlichen Draht zwischen den Platinen (Daisy Chain) zur Adressvergabe oder normale DIP-Schalter
Die Adressvergabe könnte man wie folgt lösen: 1. Die Modul Adresse liegt im EEPROM bzw. in einem durch den µC selbst dauerhaft beschreibbaren Speicher (Flash etc.) 2. Neben der vergebenen Adresse hört der Slave immer unter einer weiteren Adresse (0xFF) = Basisadresse. 3. Beim Adressieren hängt immer nur derjenige Slave am "Bus", der eine neue Adresse bekommen soll; alle andere sind entweder nicht angeschlossen oder im RST. Dieser Slave wird auf der Basisadresse angesprochen und seine Adresse als Parameter über den Bus gesetzt. So kann man die Adresse eines jeden (einen nach dem anderen) setzen. Firmware update via Bootloader. Die meisten Programmer können eine EEPROM Zelle (=Adresse) auch direkt beschreiben, damit könnte diese Zelle auch direkt ausgelesen und beschrieben werden.
Wie ist das denn bisher gelöst? Wie kommt es, daß die Hauptplatine den "Schacht leer"-Taster nicht zu jeder beliebigen Zeit abfragen kann? Adressvergabe sollte am besten automatisch über die Hardware gehen, also entweder mit einer daisy-chain-Leitung zu diesem Zweck oder indem der Bus selber als daisy-chain ausgelegt ist (WS2812 läßt grüßen). Alles andere provoziert Fehler bei der Montage oder spätestens bei Wartung/Reparatur im Feld.
Mach dir einen großen SPI Ring. Jeweils MOSI and MISO, den Clock und CS parallel an alle. Damit bekommst du ein großes Schieberegister mit 8Bit ( Schiebregisterbreite) * Anzahl der Platinen. Auf dem Main macht du dir einen Puffer mit Größe Schiebregisterbreite * Anzahl der Platinen. Die Position im Puffer entspricht der Position der Platine im Ring, damit hast du die Adressierung ohne zusätzlichen Aufwand. Eine Erweiterung ist sehr einfach durch hinzufügen im Ring und Anpassung des Puffers. Zu Kommunikation dann CS auf Aktiv ( jede Platine legte ihren Datenwert ins Schiebregister), dann alle Bytes durch takten, danach CS auf Pasiv und damit die Daten die gerade aktuell im Schiebregister sind in die Platinen übernehmen. Danach hast du im Eingangsbuffer alle Daten der Platinen und jede Platine hat das für sie vorgesehene Byte. Noch einfacher geht es wohl nicht. Ich denke nicht das du für die paar Informationen mehr als ein Byte benötigst. Gruß, Ralph
Die Idee ist Klasse, nur mit einem Hacken. Wann weiß einer der Clients: Wann er an der Reihe ist mit schreiben / Welche Position er beim Schreiben hat?? Deine Überlegung macht durchaus Sinn, wenn es eine einseitige Kommunikation ist, die vom Master zu den Clients geht. Möglich wäre aber, wenn sie im Daisy Chain hängen. Das jeder, wie im Schieberegister, mit DIN DOUT CLK alle am Anfang eine eigene Adresse zugewiesen bekommen, und mit dieser dann Rekursiv Antworten.
Ralph schrieb: > Mach dir einen großen SPI Ring. Meine Erfahrung ist, daß SPI extrem störempfindlich ist und für große Leitungslängen unbrauchbar ist. Ich benutze SPI nur innerhalb einer Platine. Schon die Führung über eine Backplane auf mehrere Platinen machte eine Filterung auf jeder Platine erforderlich. Den Cortex-M0 mit CAN intern finde ich recht interessant. Zur Adressierung würde ich einfach die Module der Reihe nach an den Bus anschließen und der Master vergibt dann jedem neuen Modul eine Adresse, die es sich im EEPROM merkt. Damit ist dann automatisch auch die Lage der Module festgelegt. Bei einer Reparatur setzt man das neue Modul auf jungfräulich und der Master stellt fest, welche Moduladresse fehlt.
Draco schrieb: > Wann weiß einer der Clients: > Wann er an der Reihe ist mit schreiben / Welche Position er beim > Schreiben hat?? Gar nicht und ist auch egal. Nur der Master muss wissen wer wo ist. Auf CS Aktiv legt jeder Slave seine Datenwort ins Schieberegister. Damit ist die Position im Ring vorgegeben. Nach dem durch takten aller Bytes hat jeder Slave SEIN Datenwort im Schieberegister liegen und der Master die Daten aller Slaves in seinem Puffer. Die Slaves lesen gar nicht alle Bytes ein, die werden nur durch geschoben. Die Übernahme im Slave erfolgt mit CS auf Passiv. Empfindlichkeit ist so eine Sachen. Da ist CAN auch nicht ganz ohne. Wir haben auf der Arbeit eine 10 Mbit SPI Verbindung über 10 m Kabel laufen. Die Verbindung steht 1a stabil. Kommt immer drauf an wie man das macht. Wenn man hier eine Verbindung mit 10 Kbit nimmt ( dürfte bei der Datenrate locker reichen) sollte das nu wirklich stabil stehen.
Hallo miteinander, war leider einige Tage nicht zuhause und hab eben erst die ganzen Antworten gelesen. M. P. schrieb: > Die Beschreibung kommt mir sehr bekannt vor. > Darf ich fragen, um welchen Automaten es geht (Hersteller, Typ, > Baujahr)? > Würde mich mal so nebenbei interessieren. Das ist eine "Smokythek SMT 60" von Harting.... Baujahr hab ich gerade nicht im Kopf Hmmm... Ich dachte (nach der ersten Antwort von "Jürgen") an I2C. Ich hätte das dann so ungefähr gelöst: ATtiny25 (würde von den PINS her genau reichen und ist für unter 1€ zu haben^^)... Jeder davon bekommt beim Flashen gleich eine eindeutige ID mit in den EEPROM und einen entsprechenden Aufkleber mit auf die Platine. So kann ich dem Master später mitteilen "Slave 21 sitzt in Schacht 45". Der Master soll dann einfach der Reihe nach von den bekannten IDs den Status abfragen oder sagen "Slave 21: Wirf mir bitte eine Schachtel aus" So uuuuungefähr hatte ich mir das nun gedacht - noch keine Ahnung ob das dann in der Praxis auch genauso gut funktioniert wie in meinem Kopf :D
Ralph schrieb: > Da ist CAN auch nicht ganz ohne. Ähm... hab gehört CAN wird in der Automobilindustrie eingesetzt.... CAN ist einer der störunempfindlichsten Busse überhaupt. Das ist schließlich überhaupt der Vorteil von CAN. Wenn es wirklich µC für 1,50€ mit CAN-Controller und Transceiver gibt, dann macht das für mich am meisten Sinn. Adressierung könnte natürlich auch auf jedem Board mit Jumpern vorgenommen werden. Bei 60 Schächten reichen dann ja 6 Jumper aus. Würde aber dann gleich 8 Jumper spendieren, damit 256 Schächte adressierbar sind. Der Cortex wird vermutlich genug IOs haben um die 8 IOs einzulesen.
Ralph schrieb: > Empfindlichkeit ist so eine Sachen. > Da ist CAN auch nicht ganz ohne. Kann ich überhaupt nicht bestätigen. CAN funktioniert selbst über Klingeldraht problemlos, selbst wenn man die 2. Terminierung am anderen Ende vergißt. Selbst billigstes unverdrilltes ungeschirmtes DB9-Kabel geht. Wir hatte auch ein Fremdgerät, wo SPI über differentielle RS-485 Treiber geleitet wurde. Das ganze war hochgradig störempfindlich. Das Kabel durfte nur max 10m lang sein und mindestens geschirmtes und paarig verdrilltes Ethernetkabel. Schau Dir mal das Datenblatt der CAN-Transceiver an. Die funktionieren selbst bei +/-5V GND-Shift. D.h der Receiver funktioniert immer noch, wenn CANL/H beide unter GND oder über VCC liegen. CAN führt ähnlich wie RS-232 eine Mehrfachabtastung je Bit durch. Wenn bei SPI eine kurze Störnadel auf SCK auftritt, sind die Daten nur noch Müll. Oder bei einem Übersprechen des SCK auf die Datenleitungen.
:
Bearbeitet durch User
Timo N. schrieb: > Ralph schrieb: > > Adressierung könnte natürlich auch auf jedem Board mit Jumpern > vorgenommen werden. Bei 60 Schächten reichen dann ja 6 Jumper aus. Würde > aber dann gleich 8 Jumper spendieren, damit 256 Schächte adressierbar > sind. > Der Cortex wird vermutlich genug IOs haben um die 8 IOs einzulesen. Natürlich hat so ein CAN-Treiber eine maximale Anzahl Nodes. Bei dem in dem LPC11C24 verwendeten Transceiver (musste mal ein wenig suchen, irgendwo steht das (aber nicht im Datenblatt)). Ich meine, dass die Grenze hier bei 64 liegt. Notfalls zweiten Strang aufmachen.
Martin schrieb: > Das ist eine "Smokythek SMT 60" von Harting.... Baujahr hab ich gerade > nicht im Kopf Interessant was sich manche Leute so ins Wohnzimmer stellen ;) Mal im Ernst: > Hmmm... Ich dachte (nach der ersten Antwort von "Jürgen") an I2C. Einige haben es schon angedeutet: Störsicherheit. Du schreibst irgendwo, dass an den Platinen auch die Motoren befestigt sind. Ein Bus, wie CAN, der differenziell betrieben wird, kann dort eventuell viel Kummer ersparen. Vernünftige Entstörung der Motoren, gute Leiterbahn- und Kabelführung auch.
Hallo, so ein Automat muß ggf. viel mehr aushalten als die Störungen von so kleinen Motörchen. Der Standardfall in der Automatenindustrie ist daß irgend so ein Spaßvogel mit einem Elektroschocker mit 100-200 kV oder einem EMP-Generator alle Ausgabeschächte auf einmal öffnet. Alles was nicht differentiell und ohne CRC-Checksumme arbeitet fällt damit als Bus aus. Gruß Anja
Hannes J. schrieb: > Interessant was sich manche Leute so ins Wohnzimmer stellen ;) Das Teil steht nicht bei mir im Wohnzimmer, sondern in einem "Tante-Emma-Laden" einer bekannten... Diese hat den Automaten vor einigen Wochen gebraucht für wenige Euros gebraucht gekauft und er steht seitdem ungenutzt in einer Ecke bei Ihr im Abstellraum... Die Motoren etc funktionieren alle, nur die Steuerung hat wohl mit der Zeit irgendwie gelitten :) Anja schrieb: > Der Standardfall in der Automatenindustrie ist daß irgend so ein > Spaßvogel mit einem Elektroschocker mit 100-200 kV oder einem > EMP-Generator alle Ausgabeschächte auf einmal öffnet. Wie gesagt... Es handelt sich um einen Automaten wie er IN Supermärkten steht... Also kein Zigarettenautomat wie er am Straßenrand steht. Sollte sich an diesem wirklich einer mit einem Elektroschocker zu schaffen machen hat Sie (denke ich) ganz andere Probleme.... :)
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.