Bau eines einfachen Laborbussystem

Gast #3204978
Lesenswert?

Hi,
um in einem Labor Temperatur, Luftfeuchte etc. an verschiedenen Stellen 
zu messen, sowie zeitunkritsche Sachen wie Venile zu schalten, habe ich 
mir vorgenommen einen Laborbus zu bauen.
Geplant ist eine RS485 Kommunikation über die auch die Versorgung läuft.
Die maximale Kabellänge liegt so um die 30m.

Der Basis-Slave, so wie ich mir den immoment vorstelle, habe ich mal 
angehängt.
Da ich recht neu bin in der Elektronik würde ich mich über konstruktive 
Kritik über den Schaltplan/Layout freuen.

Mfg Repo
Angehängte Dateien:
#3204984
Lesenswert?

Habs nur flüchtig angeschaut:
- Der Reset-Eingang benötigt einen Pull-Up.
- Pull-Downs an den Eingängen PC0 bis PC3 fehlen.
- Löcher für Befestigungsschrauben vergessen (falls nötig).
- Abblockkondensatoren könnten besser geroutet sein (beim LT1785 fehlt 
er?).
- Masseführung, vor allem beim Quarz, könnte besser sein.

http://www.lothar-miller.de/s9y/categories/14-Entkopplung
http://www.lothar-miller.de/s9y/categories/33-Quarz
#3205022
Lesenswert?

Ich hätte an deiner stelle noch ein paar pins zusätzlich auf den db-9 
stecker gerouted, für einen interrupt-channel oder plug-in detection 
(man könnte auch über den stecker teile der adresse vergeben, dann kann 
man die module in ihrer position im labor bestimmen (ausgehend von der 
idee einer festen verkabelung)....
(Firma: EleLa - www.elela.de) #3205106
Lesenswert?

Wenn das was universellen werden sollte, das alles mögliche kann, dann 
empfehle ich gleich einen STM32 zu nehmen.
Der hat alle möglichen Schnittstellen, AD und DA Wandler schon drin. 
Auch genügend RAM um mal was aufzeichnen zu können.

Als Bus-System empfehle ich CAN zu nehmen.

Lese mal hier im Artikel: STM32
Gast #3205122
Lesenswert?

be stucki schrieb:
> - Der Reset-Eingang benötigt einen Pull-Up.
> - Pull-Downs an den Eingängen PC0 bis PC3 fehlen.
> - Löcher für Befestigungsschrauben vergessen (falls nötig).
> - Abblockkondensatoren könnten besser geroutet sein (beim LT1785 fehlt
> er?).
> - Masseführung, vor allem beim Quarz, könnte besser sein.

Habs versucht zu verbessern, danke.

Konrad S. schrieb:
> Oder billiger: Schalter gegen GND und interne Pull-Ups verwenden.
>
> Ist das Absicht, dass X3 kein GND bekommt?
>
> AREF mit AVCC zu verbinden macht keinen Sinn. Dann lieber einen
> Kondensator von AREF nach GND.

Ah, so spart es noch ein wenig Platz :)

Max D. schrieb:
> Ich hätte an deiner stelle noch ein paar pins zusätzlich auf den db-9
> stecker gerouted,

Gute Idee.

Siebzehn oder Fuenfzehn schrieb:
> Was soll das sparen an der Cpu. Die kleinste... nimm was groesseres. N'
> mega16 oder so.

Mh, dachte schon eher dass ein Tiny reicht. Hauptsächlich soll diese 
Schaltung dazu dienen einen Sensor über IC2, ISP auszulesen oder einfach
mit I/O Signale langsame Sachen zu Steuern. Dazu kommt halt noch das 
RS485 Protokoll welches sicher sehr einfach ausfallen wird. Also mehr 
Pins bräuchte ich nicht. Meinst du das die 8K Flash bei den Dingen 
schnell weg sind wenn man mit C programiert. (asm wollte ich mir jetzt 
nicht antun)
Angehängte Dateien:
Gast #3205128
Lesenswert?

Markus Müller schrieb:
> Wenn das was universellen werden sollte, das alles mögliche kann, dann
> empfehle ich gleich einen STM32 zu nehmen.
> Der hat alle möglichen Schnittstellen, AD und DA Wandler schon drin.
> Auch genügend RAM um mal was aufzeichnen zu können.
>
> Als Bus-System empfehle ich CAN zu nehmen.
>
> Lese mal hier im Artikel: STM32

Mh, auch wenn ich generell dazu tendiere die eierlegende Wollmilchsau zu 
bauen wollte ich es dieses mal einfacher angehen. Jedenfalls der 
BasisSlave sollte einfach einfach sein. Mal schaun evtl. bekommt der 
Extended Slave einen STM32.

CAN find ich schön, weil es standardisiert ist. Aber alles was ich 
darüber gelesen habe fand ich schon recht kompliziert und das wurde 
schnell zu viel für mich.
Gast #3205139
Lesenswert?

Ich würde unbedingt die Leitungen RE DE auf getrennte Portleitungen 
anschließen. Falls Du den Bus "abhorchst" solltest Du nicht den Buspegel 
bestimmen.
Eine Lösung:
Horchen immer bestimmen. Also /RE immer auf LOW.
/DE auf LOW falls Du auf den Bus schreiben willst.
(Firma: EleLa - www.elela.de) #3205143
Lesenswert?

Repo schrieb:
> Markus Müller schrieb:
>> Wenn das was universellen werden sollte, das alles mögliche kann, dann
>> empfehle ich gleich einen STM32 zu nehmen.
>> Der hat alle möglichen Schnittstellen, AD und DA Wandler schon drin.
>> Auch genügend RAM um mal was aufzeichnen zu können.
>>
>> Als Bus-System empfehle ich CAN zu nehmen.
>>
>> Lese mal hier im Artikel: STM32
>
> Mh, auch wenn ich generell dazu tendiere die eierlegende Wollmilchsau zu
> bauen wollte ich es dieses mal einfacher angehen. Jedenfalls der
> BasisSlave sollte einfach einfach sein. Mal schaun evtl. bekommt der
> Extended Slave einen STM32.

Genau diese Eierlegende Wollmilchsau vermute ich auch anhand Deiner 
Projektbeschreibung.

>
> CAN find ich schön, weil es standardisiert ist. Aber alles was ich
> darüber gelesen habe fand ich schon recht kompliziert und das wurde
> schnell zu viel für mich.

CAN ist wohl zu einfach um zu verstehen ;-)
Die ganze Kommunikation, incl. Buscollision übernimmt die HW und auch 
den entsprechenden Resend.
Es gibt eine Telegramm-ID 11 oder 29 Bit und 8 Byte Nutzdaten.
Somit kannst Du Parameter mit 11/29 Bit breite definieren mit 
entsprechenden Daten Bit, Byte, Integer, 64Bit Integer usw. Oder einen 
String mit 8 Byte länge.
(Firma: EleLa - www.elela.de) #3205645
Lesenswert?

Du hast 4 DIP-Schalter vorgesehen, damit könnte man z.B. 16 Devices 
adressieren (ginge natürlich auch per Programmierung).

eine 11-Bit ID würde ich damit folgendermaßen aufbauen:

Bit 10..7 = Dip-Schalter
Bit 0..6 = Parameter-Nummer 0..127

Parameter-Nr:
0..9:  Reserviert.
10:    Port A, B, C, D (4x 16 Bit)
11:    Port E, F, G, H (4x 16 Bit)
12:    Port I
15:    AD-Wandler CH1, CH2, CH3, CH4 (4x 12Bit)
16..n: Weitere AD-Wandler
20..n: Temp-Wert 1..n
25:    Feuchte
50:    DA-Wandler Ausgabewert

Wenn die Haupt-Steuerung ein RTR Telegramm mit der ID (ohne Daten) 
schickt, so ist das eine Anfrage "Hole Wert".

Ansonsten würde jede Einheit automatisch jede 1..5 Sekunden die 
Parameter einfach losschicken, der Master (und jede andere Einheit) 
würden diese Werte automatisch empfangen.

Ich habe mit ein keines Haus-Bus System aufgebaut mit einigen 
Display-Einheiten, Heizungssteuerung, Außensensor usw. Alles geht über 
CAN, die Display-Einheiten können beliebig eingesteckt/ausgesteckt 
werden. Alles funktioniert asynchron, nach dem "Chaos" Prinzip. Jede 
einzelne Einheit empfängt das Telegramm mit den Infos (Temperatur usw.) 
das wird, sofern es benötigt wird, im RAM abgelegt, sowie bekommt es 
einen Zeitstempel. Wenn der Wert länger als 10..60 Sec. nicht mehr 
empfangen wird, so gilt die Messstelle als ausgefallen (Berechnet jede 
Einheit selbst, die einen Wert benötigt).

Somit kannst Du Deinen Laborbus problemlos erweitern und ändern, ohne 
jedesmal den Master umprogrammieren zu müssen. Es gibt nämlich keinen 
Master.

Die 8 Byte Daten kann mach auch unterteilen in z.B.:
Byte 0: Variablentyp
Byte 1..3: Reserve
Byte 4..7: Wert
Und somit nur einen Wert mit einer Variable übertragen.
(Firma: EleLa - www.elela.de) #3213706
Lesenswert?

JP2 - Löschen >> R2 auf GND verdrahten (47KOhm)
S1  - Löschen, sowas hatte ich noch nie gebraucht.
Signal CAN_CTRL - braucht es nicht. In der Regel 47K auf GND
R1  - Löschen

Einen JTAG-Stecker würde ich auf das Board packen, schaue Dir mal meine 
Belegung/Beschreibung an:
http://www.mikrocontroller.net/articles/JTAG#Der_10-polige_JTAG_Stecker_von_mmvisual
Entweder nur die 5 Pins 1/3/5/7/9 oder doch alle. Der gezeigte 
Schaltplan ist ein Ausschnitt aus einem STM32 Plan von mir. PA9/10 ist 
ein UART, über den man auch laden könnte. Somit ist auf diesem 
10-Poligen Stecker der SWD/JTAG und ein UART (als LV TTL) verfügbar und 
man kann diese kleine Platine auch direkt proggen ohne 
Main-Trägerplatine.

Als Steckerbelegung für CAN würde ich mich an eine Norm anlehnen, so wie 
z.B. hier:
http://www.mmvisual.de/Hilfe/BinTerm/T042.htm

Ich würde einen mit 64 Pins nehmen, dann könnte man auch Upgraden auf 
einen STM32F4xx falls die Wollmilchsau doch dicker wird ;-)

Oder mal kontrollieren ob der 48-Pinner auch Pinkompatibel mit einem 
STM32F73x ist, damit könnte man Touch realisieren.
(Firma: EleLa - www.elela.de) #3216167
Lesenswert?

- den X2 14 Polig machen, denn ein 12-Poligen Flachband-Kabel/Stecker 
ist ziemlich schwer zu bekommen. Man kann da z.B. PC13 oder CAN_L/H noch 
drauf legen (oder X3 löschen?).
- Die Bauteile die unten sind alle nach oben legen, denn:
  - günstiger da nur einseitig Bestückungsdruck
  - günstiger bei automatischer Bestückung
- als kleinstes Gehäuse 0805 verwenden, ist leichter von Hand zu löten
- Leiterbahn kann problemlos auf 0,25 mm herabgesetzt werden (Signale).
- Ja, die CAN Terminierung kann/sollte man machen

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren