Hallo Forumsgemeinde, ich bräuchte mal einen Tipp von euch, wie ihr folgendes lösen würdet (unten meine Überlegungen) Ich plane den Garten ein bisschen zu "digitalisieren" - also Bodenfeuchtesensoren, Temperatursensoren, Regenmesser etc. In Summe werden es 12 Sensoren sein, die vom "zentralen Punkt" ca. je 10-40 Meter weg sind (Kabellänge). Sensoren liefern fast alle ein Spannungssignal. Wie würdet ihr die Sensordaten aufbereiten, um Sie dann relativ störungssicher, mit ca. 1Hz auslesen/übertragen zu können? Meine Idee: a) Jeden Sensor mit Chip (kleinen Atmel etc.) ausstatten, dass er seriell senden kann - der zentrale uC hat einen MUX und ließt dann ab und zu mit (1Hz) => habe noch keinen MUX gefunden ... zur Not müsste ich den selbst bauen (Tipp?) b) SPI nutzen und verstärken c) Sensor in Frequenzsignal umsetzten und dann am uC die Frequenzen messen Habt ihr bessere Ideen ?
Frank schrieb: > SPI nutzen und verstärken SPI ist wie I2C ein Bus für AUF der Leiterplatte. Frank schrieb: > Sensor in Frequenzsignal umsetzten und dann am uC die Frequenzen > messen Habe ich auch schon gemacht war ganz ok, würde ich aber nicht nochmal machen. Ich würde etwas wie CAN vorschlagen, das ist auch beinahe beliebig skalierbar.
Frank schrieb: > Habt ihr bessere Ideen ? Seriell ist schon ok, nicht aber RS232C, das hat ausser dem Nachteil, dass man multiplexen muss die Beschränkung auf offiziell 15 m - ich würde einen Bus wie z.B. RS485 verlegen. Dann kann man von Sensor zu Sensor verlegen und braucht nur 1 Anschluss an der Zentrale. Georg
Die grundlegende Frage: wie willst du verdrahten? Wenn eh jeder Sensor seine eigene Leitung bekommt, kannst du auch das Spannungssignal verwenden, 12 Spannungseingänge sind kein Problem. Wenn dir aber eher eine lineare Verdrahtung von Sensor zu Sendsor vorschwebt dann RS485. CAN bringt hier keine Vorteile (reiner master/slave möglich).
Frank schrieb: > Meine Idee: > a) Jeden Sensor mit Chip (kleinen Atmel etc.) ausstatten, dass er > seriell senden kann - der zentrale uC hat einen MUX und ließt dann ab > und zu mit (1Hz) > => habe noch keinen MUX gefunden ... zur Not müsste ich den selbst bauen > (Tipp?) Dann nimm doch Halbduplex-RS485-Transceiver (z.B. MAX3483) an jedem Kabel-Ende. Jeder Transceiver hat ein DE (Driver Enable) und ein /RE (Receiver Enable) Signal, und damit und beispielsweise einem 74HC138 (für die /RE) bzw 74HC238 (für die DE) kannst Du dann den einzelnen Sensor selektieren. Und RS-485 geht einige 100m weit. Abschluss- und Failsafe-Widerstände nicht vergessen! fchk
Wenn der Stromverbrauch der CAN Tranceiver nicht stoert, ist CAN auch eine gute Wahl.
Was spricht gegen RS485 und Modbus?
Ich würde einen Kleinst-µP, für jeden Teilnehmer, verwenden und dann einen offenen Ring mittels RS485 - notfalls RS232 - aufbauen. Bei so geringer Belastung kannst Du die Daten jeweils "Durchleiten". D.h. der jeweilige µP empfängt die Daten und leitet sie, gefolgt von dem eigenen Datenpaket weiter. Hat der µP keine zweite serielle Schnittstelle, so reicht auch eine, durch Software emulierte, Schnittstelle aus. Der letzte Mohikaner bekommt dann alle Daten, hübsch der Reihe nach und hat somit auch keine Probleme mit irgendwelchen Kollisionen und ähnlichem Schweinkram. Die Reihenfolge richtet sich nach der physikalischen Reihenfolge, oder jeder Teilnehmer packt eine/seine Adresse dazu.
:
Bearbeitet durch User
Also ich würde CAN den Vorzug geben, da jeder Knoten beliebig ohne große Absprache senden und empfangen kann. Bei RS485 muss man sich ja immer ein wenig Gedanken um die Koordinierung machen. Immer wieder gerne genommen für solche kleinen Sensorknoten: LPC11C24, im Grunde den STM32 sehr ähnlich. Als Besonderheit hat der den CAN-Transceiver gleich mit eingebaut. Oder den STM32F042 im SSOP20, dazu ein MAX3051 als CAN-Transceiver, der ist schön klein (SOT23-8) und sparsam.
Harald schrieb: > Bei RS485 muss man sich ja immer > ein wenig Gedanken um die Koordinierung machen. Es gibt das schon eine fertige Lösung, die sich um die Koordinierung kümmert: Modbus.
Uwe Bonnes schrieb: > Wenn der Stromverbrauch der CAN Tranceiver nicht stoert, ist CAN auch > eine gute Wahl. Harald schrieb: > MAX3051 als CAN-Transceiver, der > ist schön klein (SOT23-8) und sparsam. Dafür gibt es vielen CAN Transivern mit sleep Pin, um in einen low power Modus zu gehen. Microchip hat auch einige die sehr günstig sind unter anderem auch im QFN Package, falls interessant.
100Ω W. schrieb: > Es gibt das schon eine fertige Lösung, die sich um die Koordinierung > kümmert: Modbus. Ja, habe ich auch schon mit gearbeitet. Muss man halt alles nur in SW ausführen, aber funktionieren wird das, keine Frage! War auch nur als meine persönliche Meinung zum Thema gedacht, ohne dabei andere Vorschläge schlecht machen zu wollen. Was der OP daraus macht ist mir eigentlich egal.
Harald schrieb: > LPC11C24 Ja hätte ich vermutlich auch genommen. CAN ist doch ziemlich einfach. Und Single Chip kann auch seinen Charme haben. RS485 würde auch gehen. Würde ich mir wahrscheinlich einen Controller suchen der den Multiprocessor Mode unterstützt. Dann kann man relativ leicht adressieren und der Controller kann zu 99.9% im Sleep verbringen. Muss man sich halt etwas Gedanken zu Protokoll und Sicherung (z.B CRC) machen. Kollisionen könnte man bei so langsamen Daten so gut wie ausschließen. Das nimmt einem CAN halt größtenteils ab.
Ich würde mir ja ein 8-Pinner AVR mit internem CAN-Transceiver wünschen. Aber bis dahin könnte man das hier probieren: Beitrag "mehrere MC seriell über Datenbus verbinden (1Draht)"
Bei nicht differentiellen Übertragungen (RS232, 1-Draht) kann man auf den Strecken schnell ein Problem durch die unterschiedlichen Massepotentiale bekommen. Von daher würde ich etwas Differentielles vorziehen. Zusätzlich dann noch die Störsicherheit. Peter D. schrieb: > Ich würde mir ja ein 8-Pinner AVR mit internem CAN-Transceiver wünschen. Das wäre mal gut, dann muss der Quarz aber gleich mit drin sein. Ich habe mir auch schon mehrere Male Gedanken um einen besonders kleinen CAN-Knoten gemacht, der auf dem Tisch mit Hausmitteln noch bequem zu bauen ist (jaja, ich weiß, dass das hier nicht gefordert wurde): LPC11C24 oder STM32F042 mit MAX3051, dazu ein Quarz im 2016 Package. Als Netzteil den MAXM15064 (MAXM, nicht MAX), der macht 5V/300mA aus bis zu 65V(!) in einem unglaublich kleinen Package. Funktioniert sehr gut!
Harald schrieb: > Ich habe mir auch schon mehrere Male Gedanken um einen besonders kleinen > CAN-Knoten gemacht, der auf dem Tisch mit Hausmitteln noch bequem zu > bauen ist Was sollte der denn deiner Meinung nach so können? Ich überlege auch schon lange sowas zu bauen, als Auflötplatine ähnlich einem ESP, nur bin ich immer unschlüssig was an sonstiger Perepherie so Sinn macht. Ein paar Analogeingänge, SPI, I2C, etc.
Was auch ginge wäre ein LIN Bus. Als Slaves dann jeweils nur einen UJA1023 verwenden, dann musst du die Slaves nicht mal seprat programmieren sondern nur vom Master konfigurieren.
Kevin M. schrieb: > als Auflötplatine ähnlich einem ESP, nur bin ich immer unschlüssig was > an sonstiger Perepherie so Sinn macht. Ein paar Analogeingänge, SPI, > I2C, etc. Vor allem ist ein ESP nicht nur ein WLAN Knoten sondern der uC darin PROGRAMMIERBAR. Das macht den Reiz aus. Ob dann 1 Analogeingang oder 4 ist eher egal, klug wäre es sowieso den CAN auf mehreren unterschiedlichen Prozessoren einer Familie (eben allen mit on board CAN) laufen lassen zu können.
MaWin schrieb: > Vor allem ist ein ESP nicht nur ein WLAN Knoten sondern der uC darin > PROGRAMMIERBAR. Klugscheißer, darum geht es doch.... Einen mini CAN Knoten auf Basis eines programmierbaren uC mit einem Transüber und Versorgung, der noch andere Schnittstellen bereitstellt. So kann man ihn standalone benutzen oder in einem größeren Projekt bei dem man noch etwas Analogaufbereitung o.ä. braucht. Oder eben um einen Sensor auszulesen.....
Der UJA1023 macht genau das für LIN. Eine single-Chip-Lösung mit parametrierbarer Peripherie, LIN Transcheiver und Spannungsregler.
Kevin M. schrieb: > Was sollte der denn deiner Meinung nach so können? Einfach nur der uC mit allen sinnvollen Pins rausgeführt. Nur dass, was man immer braucht (Quarz, Reset, Power, Transceiver) auf einem eigenen Board.
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.